en un clic
document-editor
// Rich text document editor with collaborative editing tools — create, read, update, and annotate documents
// Rich text document editor with collaborative editing tools — create, read, update, and annotate documents
Ingest and process media files (video, audio, image)
Read, search, send, and manage messages across Gmail, Outlook, Telegram, and other platforms
Join a Google Meet call to take notes; only when the user explicitly asks.
Migrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum primitives. Handles single-source and multi-source migrations with a unified, deduplicated inventory.
Send notifications through the unified notification router
Analyze and reduce LLM spend by mapping call-site overrides to managed profiles (Balanced / Quality / Speed). Covers spend analysis, profile assignment, and config correctness.
| name | document-editor |
| description | Rich text document editor with collaborative editing tools — create, read, update, and annotate documents |
| compatibility | Designed for Vellum personal assistants |
| metadata | {"emoji":"📄","vellum":{"display-name":"Document Editor","activation-hints":["User asks to write, draft, or collaborate on long-form content — use the document editor for a better editing experience","When content will be iterated on, reviewed, or exported, prefer the document editor over inline markdown","When a file attachment contains a draft or document the user wants to iterate on, open it in the editor"]}} |
Create and edit long-form documents using the built-in rich text editor. Documents open in workspace mode with chat docked to the side.
surface_id. Use this when a document exists but isn't visible in the editor — for example after the user switches devices, refreshes the page, or when the editor panel was closed. Fetches the document from storage and sends it to the client.surface_id for subsequent updates.surface_id. Supports replace (overwrite) and append (add to end) modes.surface_id when it belongs to the current conversation, or when the current actor is the guardian/local user. Use to verify content before editing.query, lists the current conversation's documents. With query, searches by title; guardian/local users can search across conversations, while other actors are scoped to the current conversation.surface_id. Use to clean up unwanted documents.When the user asks to see, open, or pull up a document:
<active_documents> block in your context — it lists all documents in this conversation with their surface_id and title.<active_documents>, call document_list with a query matching the document title. For guardian/local users, this searches across previous conversations and sessions.surface_id, call document_open to open the editor panel. This both surfaces the editor on the client and returns the document content. If the user only needs the text (not the editor), use document_read instead.Never search the filesystem, conversation history, or archives to find a document. Always use document_list with a query.
If the user says they can't see a document you know exists (e.g. after switching from macOS to web, or after a page refresh), call document_open with the surface_id to re-surface the editor panel on their current client.
document_create with a title (inferred from the request). Call the tool immediately, not after conversational preamble. Capture the surface_id from the response — every subsequent document_update call must reference it.# for titles, ## for sections), bold, italic, code blocks, tables, lists, blockquotes as appropriate.document_update MULTIPLE times, not just once. Break content into logical chunks (paragraphs, sections, or every 200-300 words). Call document_update with mode: "append" for EACH chunk separately. The user experiences real-time content appearing as you write.If a document_update call fails with an Invalid input error (for example because surface_id was missing), do NOT call document_create again. The surface_id you need is in the tool result of the most recent document_create call in this turn. Retry document_update with that surface_id and the same content. Creating a second document with the same title produces a duplicate for the user.
When the user requests changes to a document:
surface_id from the <active_documents> context block.document_update with the existing surface_id — do NOT call document_create again.document_update with mode: "append" — adding new content to the end.document_update with mode: "replace" — ONLY for full rewrites where the majority of the document is changing.document_find + document_replace_text — for everything else. Fixing typos, renaming terms, swapping sections, reordering content, adjusting formatting, or any edit that touches only part of the document. This is the default choice for edits. It avoids rewriting the entire document and eliminates the risk of accidentally dropping content.document_update with mode: "replace" for targeted edits. Rewriting the entire document to change a few words or rearrange sections is wasteful and error-prone.Use document_find and document_replace_text for surgical edits that target specific text patterns without rewriting the entire document.
Search a document for literal text or regex patterns. Parameters:
surface_id (required) — the document to searchquery (required) — the search string or regex patternregex (optional, default false) — treat query as a regular expressioncase_sensitive (optional, default false) — match case exactlyReturns a list of matches with line numbers, line content, match positions, and matched text. Use this to preview what will be affected before making replacements.
Targeted find-and-replace within a document. Parameters:
surface_id (required) — the document to modifyfind (required) — the search string or regex patternreplace (required) — the replacement string (supports $1, $2 backreferences when regex is true)regex (optional, default false) — treat find as a regular expressioncase_sensitive (optional, default false) — match case exactlymax_replacements (optional) — limit the number of replacements madeReturns the number of replacements made and whether the content changed.
document_find to preview matches and confirm the pattern is correct.document_replace_text to apply the changes.Examples:
"recieve", replace with "receive"."widget" (case-insensitive), replace with "component".(\d{2})/(\d{2})/(\d{4}) with regex: true, replace with $3-$1-$2 to convert MM/DD/YYYY to YYYY-MM-DD.document_read to get the content, identify the sections to swap, then call document_replace_text to replace the first section with the second and vice versa. For complex rearrangements, use multiple document_replace_text calls with max_replacements: 1.Users can leave inline comments on documents. Open comments are surfaced in a <document_comments> context block so you can see pending feedback.
surface_id. Use this to check for feedback before or after editing, especially when the user asks you to address comments.comment_id. Use this after you have addressed the feedback in the document content. Always edit the document first, then resolve the comment.comment_id. Use this to ask clarifying questions or explain why you made (or declined) a change before resolving.<document_comments> block or call comment_list to see open comments.comment_resolve on comments you have addressed.comment_reply to ask for clarification instead of guessing.app_create for blog posts, articles, or written content. Use document_create — apps are for interactive content with state/data.document_update with mode: "append" so users see progress in real time.mode parameter on document_update defaults to append.