Skip to main content
Glama
690,665 tools. Updated 2026-10-23 12:33

"A tool for editing documents" matching MCP tools:

  • Save a template’s draft. Both kinds take structured `content` — see create_document_template for the node format; notifications use its EMAIL profile (no image, no pageBreak) — or, for a template still on the legacy HTML engine (check get_template_draft’s `engine`), a `body`; a structured draft refuses body-only writes. Notifications also take subject and recipients; documents also take `settings`. Editing a live template’s draft does not change what sends until publish_template. A document on the SVG facsimile engine (engine "SVG") is edited with edit_svg_template, never here. Requires notification:write or document:write.
    Connector
    Destructive
    API key
  • List canvas documents in a workflow run. Canvas documents are collaborative markdown files that multiple agents can edit in parallel. Omit run_id to list documents across all runs. Read-only. Use read_canvas for content and get_canvas_toc for section IDs. There is no get_run; list_runs returns run records. Pass playbook_id as the UUID or GUID of the playbook this call should target.
    ConnectorAPI key
  • Discover sheet names and used dimensions before reading or editing a WorkPaper. Returns metadata only; use read_range or read_cell for values.
    ConnectorNo auth
  • Reserve an upload for one document a request hands to its recipient through the form's Documents block. Returns { id, uploadUrl, expiresAt, name, contentType, size }. Bytes never pass through this tool: PUT the raw file to `uploadUrl` (one hour) with the declared Content-Type, then pass { "documentId": id } in request_create's `documents`, which verifies it. One upload serves any number of requests. See load_skill("requests").
    ConnectorOAuth
  • Run an Australian identity check over a SET of identity documents. A vision model reads each document (which ID it is, which fields it shows — name/photo/address/signature — and its issue date); a deterministic engine then tallies them against a scheme and reports whether identity is established, and exactly what's still missing if not. USE THIS WHEN someone needs to verify a person's identity from their documents — KYC / onboarding / "do these documents satisfy the 100-point check?" Pass ALL the person's documents together (a passport alone is 70 points; the check needs >= 100). `documents` is a list, each item ONE of: {"url": "https://..."} (public link, fetched server-side) or {"bytes_b64": "...", "filename": "passport.pdf"} (inline). Up to 10. `scheme`: "afp_100_point" (points, default) or "austrac_safe_harbour" (category combinations). Returns `{established, points/target or satisfied_path, documents[] (per-document: type, fields shown, whether it counted and why-not), reason, accepts, ...}`. This is identity COVERAGE, not a forgery judgment — run verify_document for authenticity. Documents are never stored.
    ConnectorNo auth
  • Documents in the DeepLedger library and on QuickBooks records: list… looks, get… returns readable files, upload puts a file on a record. list (default): library documents by folder, status, fileType, monthYear, upload dates, name search or attachedToTaskId; listFolders for the folders. INCOMPLETE means more pages: continue with offset. get: documentIds, each with a 1-hour link to read the file. listAttachments: entityType + entityId, what is attached to that QuickBooks record (names, types, notes, ids; a NOTE with no file is isNote:true). getAttachments: the same files copied into the library, each with a 1-hour link; from then on list and get see them, and a repeat reuses the copies. upload: entityType + entityId + fileName, TWO steps: this call checks the record and returns curlCommand; run it before expiresInSeconds (single-use token). The file is attached only when the curl reply says "attached": true; QuickBooks answers failures with HTTP 200, so trust that field. Max 10 MB. Nothing here deletes. An "Expense" is entityType Purchase.
    ConnectorOAuth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    面向 Codex、WorkBuddy 等 AI 工具的知你AI助手合并版 Skills,涵盖当前会话分诊、客户查询与画像、历史会话检索、客户分群和 API Key 用量查询,并连接个微、企微、视频号、微信小程序、公众号、服务号、微信客服、微信小店、抖音号、小红书、微博、网站及H5客服等渠道。
    MIT No Attribution
  • A
    license
    A
    quality
    C
    maintenance
    Enables clients to access 21 cloud-hosted financial tools via a token-authenticated forwarding layer that relays tool calls to the Silkj E-Investment skill gateway. Supports stdio, Streamable HTTP, and hosted deployment modes without embedding any financial algorithms locally.
    21
    1
    MIT

Matching MCP Connectors

  • Use for multiple explicitly selected documents that need the same action; for one document prefer the matching single-document tool. Accepts 1–25 IDs for automation compatibility. Supports move, set_category, add_tag, remove_tag, trash, restore, or refresh_index. Processes sequentially through the existing API with a permission check per document and a per-ID result; partial success is possible. Stops after authentication or rate-limit failure. Never expands a search result or permanently purges documents; version restore is separate.
    Connector
    Destructive
    API key
  • Get a paginated list of the documents available to the current user. Use this tool when: - You need to find a document_uuid to use as input for another tool - You need to know which documents the current user has access to - You want to search for a specific document By default, returns all active (non-archived) documents that the user has access to, with the most recently updated documents first. sort_by and sort_direction arguments can be used to control the sorting. Archived documents are included or targeted using the filter_archived_state parameter. To keep responses small, each document is returned as a compact summary by default. Use the include parameter to request additional sections (parties, teams, tags, details, signing_settings, timestamps) when the user's question needs them, and prefer get-document-info when you need full information about a single document. When you need particular metadata values for several documents, name those fields in include_metadata and they are returned for every document in the response. Do not call get-document-info once per document to collect the same fields — one list-documents call with include_metadata answers the whole question. When you already have the UUIDs of the documents you care about, pass them as filter_document_uuids and combine that with include or include_metadata to gather information about exactly those documents in a single call. # Each account has its own vocabulary — discover it before filtering Accounts classify their documents using structures they define themselves: tags, document types, metadata fields (and their select options), teams and parties. The words a user puts in a question are usually the words their own account already uses as labels. "our customers", "suppliers", "key accounts", "renewals", "EMEA" and "high value" all sound like descriptions of content, but each is far more likely to be a tag, a document type, or a metadata field or option in this account. Tags in particular are the account's own free-form classification labels, commonly covering relationship type (customer, supplier, partner, reseller), commercial significance (key account, strategic), lifecycle or region. A plain category noun in a question very often corresponds to a tag rather than to anything in the document text — so check list-account-tags whenever a question groups documents into a category that isn't available as a document type. These lookups are cheap and return small, complete lists, so look rather than guess: - list-account-tags: the account's classification labels - list-account-document-types: e.g. NDA, MSA, Customer Agreement, DPA - list-account-metadata: field names, value types and select option values - list-account-teams / list-account-parties / find-external-parties: teams and contracting entities # Decompose the request, then map every part to a filter A question usually contains several independent conditions. Handle each one separately: 1. Split the request into its conditions. "what logo usage rights do we have for our largest customers?" is three: "logo usage rights", "largest", "customers". 2. For each condition, ask what kind of structured thing it could be: a tag, a document type, a metadata field or option, a party (account or external), a document user, a team, a template, an automation, an import, a stage, or an origin. 3. Look up the candidates with the companion tools above, then filter with the matching filter_ parameter. 4. Only leave a condition to filter_query once you have confirmed that no structured filter covers it. Finding a structured filter for one condition does NOT mean you are done — work through every condition before answering. In the example above, "largest" is a currency metadata field such as contract value (filter_metadata range, or sort_by that field), "customers" is very likely a tag or a document type, and "logo usage rights" may also be available from a metadata. Answering with just one of the three silently answers a different question than the user asked. # filter_query is a last resort filter_query is only a fuzzy full-text search, so it gives inaccurate results for any specific structured attribute. This holds even when the request is phrased loosely or topically ("documents about product variant Alpha", "anything to do with Acme") — topical phrasing does NOT mean the term is free-text rather than a structured field or value. Prefer filter_query only for genuinely free-text conditions, or when the user is clearly searching by document name. If filter_query returns no results, do not conclude that no matching documents exist before checking whether the search term corresponds to a tag, a document type, a metadata field or value, or a party. If it does, retry with the matching filter_ parameter instead. # Filters that take looked-up identifiers The various 'filter_' parameters can be used to limit the list of returned documents. Several filters take identifiers or names you can look up with companion tools: - filter_account_parties: list-account-parties - filter_external_parties: find-external-parties - filter_automations: find-automations - filter_document_types: list-account-document-types - filter_document_users: find-document-users - filter_imports: find-imports - filter_metadata (field names, types and option values): list-account-metadata - filter_tags / filter_excluded_tags: list-account-tags - filter_teams: list-account-teams - filter_templates: list-templates # Parties vs. people, and account vs. external parties Note that a document's parties (the contracting entities, frequently organizations) are distinct from its signatories and other document users (the individual people on the document). A named person commonly signs or is involved on behalf of a party without being a party themselves — so to find documents involving a specific person, use filter_document_users rather than a party filter. Parties also come in two kinds. Account parties are the account's OWN entities — the company the user belongs to and its subsidiaries, group or parent companies; phrasing like "our", "we", "us", "my company" or "our subsidiary" points to an account party (look them up with list-account-parties and filter with filter_account_parties). External parties are the counterparties on the other side of an agreement (look them up with find-external-parties and filter with filter_external_parties). When it is not clear which kind a named entity is, or when one lookup returns nothing, check the other kind before concluding that no matching party or documents exist. # Active vs. archived documents Only active — i.e. not archived — documents are returned by default, so a default call silently leaves archived documents out of the answer. Archiving is not deletion: an archived document still exists, and for questions about past, completed or superseded contracts it may be the document being asked about. - Set filter_archived_state=all whenever the answer is meant to cover a complete set or a count — "all our NDAs", "how many contracts do we have with Acme", "which suppliers have we signed with", "what is our total contract value". A default call answers such a question with a number that is too low, and nothing in the response reveals that. - Set filter_archived_state=archived only when the user asks specifically about archived documents. - If a call returns no results, retry with filter_archived_state=all before concluding that no matching documents exist — alongside the other checks above, i.e. whether a term you passed to filter_query is really a tag, document type, metadata field or party, and whether a named entity is the other kind of party. When an answer draws on results that include archived documents, say which ones are archived. Request include=["timestamps"] to see this: archived_at is set on archived documents and null on active ones.
    ConnectorOAuth
  • Get a paginated list of the documents available to the current user. Use this tool when: - You need to find a document_uuid to use as input for another tool - You need to know which documents the current user has access to - You want to search for a specific document By default, returns all active (non-archived) documents that the user has access to, with the most recently updated documents first. sort_by and sort_direction arguments can be used to control the sorting. Archived documents are included or targeted using the filter_archived_state parameter. To keep responses small, each document is returned as a compact summary by default. Use the include parameter to request additional sections (parties, teams, tags, details, signing_settings, timestamps) when the user's question needs them, and prefer get-document-info when you need full information about a single document. When you need particular metadata values for several documents, name those fields in include_metadata and they are returned for every document in the response. Do not call get-document-info once per document to collect the same fields — one list-documents call with include_metadata answers the whole question. When you already have the UUIDs of the documents you care about, pass them as filter_document_uuids and combine that with include or include_metadata to gather information about exactly those documents in a single call. # Each account has its own vocabulary — discover it before filtering Accounts classify their documents using structures they define themselves: tags, document types, metadata fields (and their select options), teams and parties. The words a user puts in a question are usually the words their own account already uses as labels. "our customers", "suppliers", "key accounts", "renewals", "EMEA" and "high value" all sound like descriptions of content, but each is far more likely to be a tag, a document type, or a metadata field or option in this account. Tags in particular are the account's own free-form classification labels, commonly covering relationship type (customer, supplier, partner, reseller), commercial significance (key account, strategic), lifecycle or region. A plain category noun in a question very often corresponds to a tag rather than to anything in the document text — so check list-account-tags whenever a question groups documents into a category that isn't available as a document type. These lookups are cheap and return small, complete lists, so look rather than guess: - list-account-tags: the account's classification labels - list-account-document-types: e.g. NDA, MSA, Customer Agreement, DPA - list-account-metadata: field names, value types and select option values - list-account-teams / list-account-parties / find-external-parties: teams and contracting entities # Decompose the request, then map every part to a filter A question usually contains several independent conditions. Handle each one separately: 1. Split the request into its conditions. "what logo usage rights do we have for our largest customers?" is three: "logo usage rights", "largest", "customers". 2. For each condition, ask what kind of structured thing it could be: a tag, a document type, a metadata field or option, a party (account or external), a document user, a team, a template, an automation, an import, a stage, or an origin. 3. Look up the candidates with the companion tools above, then filter with the matching filter_ parameter. 4. Only leave a condition to filter_query once you have confirmed that no structured filter covers it. Finding a structured filter for one condition does NOT mean you are done — work through every condition before answering. In the example above, "largest" is a currency metadata field such as contract value (filter_metadata range, or sort_by that field), "customers" is very likely a tag or a document type, and "logo usage rights" may also be available from a metadata. Answering with just one of the three silently answers a different question than the user asked. # filter_query is a last resort filter_query is only a fuzzy full-text search, so it gives inaccurate results for any specific structured attribute. This holds even when the request is phrased loosely or topically ("documents about product variant Alpha", "anything to do with Acme") — topical phrasing does NOT mean the term is free-text rather than a structured field or value. Prefer filter_query only for genuinely free-text conditions, or when the user is clearly searching by document name. If filter_query returns no results, do not conclude that no matching documents exist before checking whether the search term corresponds to a tag, a document type, a metadata field or value, or a party. If it does, retry with the matching filter_ parameter instead. # Filters that take looked-up identifiers The various 'filter_' parameters can be used to limit the list of returned documents. Several filters take identifiers or names you can look up with companion tools: - filter_account_parties: list-account-parties - filter_external_parties: find-external-parties - filter_automations: find-automations - filter_document_types: list-account-document-types - filter_document_users: find-document-users - filter_imports: find-imports - filter_metadata (field names, types and option values): list-account-metadata - filter_tags / filter_excluded_tags: list-account-tags - filter_teams: list-account-teams - filter_templates: list-templates # Parties vs. people, and account vs. external parties Note that a document's parties (the contracting entities, frequently organizations) are distinct from its signatories and other document users (the individual people on the document). A named person commonly signs or is involved on behalf of a party without being a party themselves — so to find documents involving a specific person, use filter_document_users rather than a party filter. Parties also come in two kinds. Account parties are the account's OWN entities — the company the user belongs to and its subsidiaries, group or parent companies; phrasing like "our", "we", "us", "my company" or "our subsidiary" points to an account party (look them up with list-account-parties and filter with filter_account_parties). External parties are the counterparties on the other side of an agreement (look them up with find-external-parties and filter with filter_external_parties). When it is not clear which kind a named entity is, or when one lookup returns nothing, check the other kind before concluding that no matching party or documents exist. # Active vs. archived documents Only active — i.e. not archived — documents are returned by default, so a default call silently leaves archived documents out of the answer. Archiving is not deletion: an archived document still exists, and for questions about past, completed or superseded contracts it may be the document being asked about. - Set filter_archived_state=all whenever the answer is meant to cover a complete set or a count — "all our NDAs", "how many contracts do we have with Acme", "which suppliers have we signed with", "what is our total contract value". A default call answers such a question with a number that is too low, and nothing in the response reveals that. - Set filter_archived_state=archived only when the user asks specifically about archived documents. - If a call returns no results, retry with filter_archived_state=all before concluding that no matching documents exist — alongside the other checks above, i.e. whether a term you passed to filter_query is really a tag, document type, metadata field or party, and whether a named entity is the other kind of party. When an answer draws on results that include archived documents, say which ones are archived. Request include=["timestamps"] to see this: archived_at is set on archived documents and null on active ones.
    ConnectorOAuth
  • Read one Public Library document by document_id from search_public_library sources. Returns metadata, summary, and tags. Pass with_contents=true to include raw text in contents for non-Research documents. Research documents omit full text (provider terms) and set contents_omitted. Omit with_contents to keep the payload small. This tool does not search. Call search_public_library first.
    ConnectorOAuth
  • Load a domain-knowledge skill — themes, settings, analytics, logic-rules, editing-flows, question-types, etc. Returns markdown reference content. Use when the task touches a domain whose conventions or constraints are not obvious from the surrounding tools. For loading additional MCP tool catalogs (deferred tools by bundle name) use `load_tools` instead. Available skills: - toon-format: TOON format reference for reading and parsing form document structure - question-types: All question types with parameters, validation, and when to use each - logic-rules: Conditional logic conditions, actions, patterns, and examples - editing-flows: Editing workflows, node chaining, batch operations, and best practices - form-best-practices: Form design best practices for question design, ordering, and type selection. - analytics: Form analytics interpretation, metrics, and actionable insights - form-settings: Form configuration options, security, notifications, email customization, and data retention - form-themes: Form visual theming system — schema, constraints, design guidelines, and examples - requests: Requests: asking named people to fill a form — field keys, prefill shapes, building the form in the same call, delivery, callbacks, polling
    ConnectorOAuth
  • List the documents stored for a company in Osome that the user can see, in the order they were added (oldest first), one page at a time. Returns documents, each with only its Core document id and name, and no total count: request the next page until one returns fewer than perPage documents. Use get-document to look up one document by ID, list-invoices for sales invoice details, or prepare-document-upload to add a file.
    ConnectorOAuth
  • List tool category families (Convertors, Documents, SEO Tools, etc.). Use before discover_tools to narrow search — e.g. discover_tools('pdf', category: 'Documents'). Free — not billed.
    ConnectorAPI key
  • Upload up to 25 documents and screen them as one batch. Waits for text extraction, then starts scoring and returns job ids; poll get_bulk_status until the batch is finished. Each item is {title, content_base64 | text, filename?}. The 25-document limit is not the binding one for large files: the whole call must stay under 32 MB including base64 overhead, so send fewer, larger documents per batch rather than filling all 25 slots. Exceeding it is a bare HTTP 413 from the transport, before this tool runs. To RESUME a batch that was uploaded but not scored — this tool timed out waiting for extraction, or scoring failed to start — call it again with 'bulk_job_id' instead of 'documents'. That re-uses the existing upload and does NOT spend the account's quota a second time. If the batch is rejected because one or more documents are too large for the plan's scan engine, retry with force_precision=true to scan those documents truncated to the recall window (coverage beyond it is excluded).
    ConnectorNo auth
  • USE THIS WHEN you have up to three documents (receipt, invoice, purchase order - any subset) and need a discrepancy list: reference, item, quantity, price, or arithmetic mismatches between them. This is the default choice for 'does this receipt match the invoice' or 'do these documents agree' questions. Links use explicit line references, exact product codes, or conservative normalized descriptions. DO NOT USE THIS if the actual question is a quantity-allocation question - how much of a PO has been invoiced, or resolving partial/split invoice lines against PO quantities. This tool does not allocate billed quantities or calculate remaining PO quantities: partial quantities are reported as plain differences, and any many-to-one (split) link is flagged ambiguous_many_to_one rather than resolved. For that, call match_invoice instead (paid, 0.50 USDC) - but you never need to call it before or after this tool; each works standalone. Free, no wallet authorization, no payment metadata accepted. Missing documents or fields are marked needs_review, never inferred. No OCR, retrieval, saved analyses, paid service calls, delivery verification, payment approval, or accounting writes. Human review required.
    ConnectorNo auth
  • USE THIS WHEN you have up to three documents (receipt, invoice, purchase order - any subset) and need a discrepancy list: reference, item, quantity, price, or arithmetic mismatches between them. This is the default choice for 'does this receipt match the invoice' or 'do these documents agree' questions. Links use explicit line references, exact product codes, or conservative normalized descriptions. DO NOT USE THIS if the actual question is a quantity-allocation question - how much of a PO has been invoiced, or resolving partial/split invoice lines against PO quantities. This tool does not allocate billed quantities or calculate remaining PO quantities: partial quantities are reported as plain differences, and any many-to-one (split) link is flagged ambiguous_many_to_one rather than resolved. For that, call match_invoice instead (paid, 0.50 USDC) - but you never need to call it before or after this tool; each works standalone. Free, no wallet authorization, no payment metadata accepted. Missing documents or fields are marked needs_review, never inferred. No OCR, retrieval, saved analyses, paid service calls, delivery verification, payment approval, or accounting writes. Human review required.
    ConnectorNo auth
  • Attach a document or image to a standalone task. Max 25MB. Supported types: PNG/JPEG/GIF/WEBP/SVG images, PDF, Word/Excel documents, plain text/markdown/CSV. Use create_standalone_comment instead for plain text notes — this tool is for actual files.
    ConnectorOAuth
  • Email a sales document (Invoice, Estimate, SalesReceipt, CreditMemo, RefundReceipt) to the customer through QuickBooks. The ONLY tool that emails a customer: recording never sends, and emailStatus:"NeedToSend" on qbInvoice/qbEstimate only queues the document for a human to send. An email cannot be unsent: confirm with the user first, never send to test, and never re-send to be sure (every call delivers again). Needs documentType and documentId. Delivery is confirmed only by delivered:true and deliveryTime, not by emailStatus. Voided documents and documents with no address are refused. ERRORS: getGuide(guideType:"error_recovery", tool:"qbSendEmail").
    Connector
    Destructive
    OAuth