Skip to main content
Glama

Send document

send_document

Email a document (invoice, quote, credit note, etc.) to its contact. Works on any document id. This actually sends the email — to flag a document as sent without emailing use mark_document_sent, and to log a payment against it use record_document_payment. Find the id yourself with list_documents (query by number or contact); never ask the user for an id. Its reply's destination is every address the email went to: say who received it from that, never a guess.

Input Schema

NameRequiredDescriptionDefault
idYesId of the document (invoice, quote, credit note, etc.) to email (required).
emailNoOverride recipient address; defaults to the document contact's email on file.
messageNoA note shown in the email above the document.
sendcopyNoSend me a copy: BCC the signed-in user who sends this, and nobody else. Off by default. Only a signed-in person gets a copy; an API, agent or MCP token sends none.
attachpdfNoAttach the document's own PDF, drawn at send time from the saved document. Off when absent: stub-web sends true by default. If the PDF cannot be drawn, the email goes without it. The view-online link always stays.
attachrebilledNoAttach the receipt of every expense rebilled on this document's lines. Off by default. Files that do not fit are sent as download links.
attachmentfileidsNoAttach these files: a rebilled receipt's file id (or the expense id for a legacy receipt), or the id of any business file when the sender may read Files. A file in a locked folder never goes. With attachrebilled, adds to the rebilled receipts. At most 20.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / attachpdf
      Added value: +{
      +  "description": "Attach the document's own PDF, drawn at send time from the saved document. Off when absent: stub-web sends true by default. If the PDF cannot be drawn, the email goes without it. The view-online link always stays.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / sendcopy
      Added value: +{
      +  "description": "Send me a copy: BCC the signed-in user who sends this, and nobody else. Off by default. Only a signed-in person gets a copy; an API, agent or MCP token sends none.",
      +  "type": "boolean"
      +}
  3. Changed4 schema fields changed
    • addedInput schema / properties / attachmentfileids
      Added value: +{
      +  "description": "Attach these files: a rebilled receipt's file id (or the expense id for a legacy receipt), or the id of any business file when the sender may read Files. A file in a locked folder never goes. With attachrebilled, adds to the rebilled receipts. At most 20.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedInput schema / properties / attachrebilled
      Added value: +{
      +  "description": "Attach the receipt of every expense rebilled on this document's lines. Off by default. Files that do not fit are sent as download links.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / includereceipts
      Removed value: -{
      -  "description": "Attach the receipts of expenses rebilled on this document's lines. Off by default; receipts that do not fit are sent as download links.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / receiptfileids
      Removed value: -{
      -  "description": "With includereceipts, send only these files: a rebilled receipt's file id (or the expense id for a legacy receipt), or the id of any business file when the sender may read Files. A file in a locked folder never goes. Omit for every rebilled receipt; an empty list sends none. At most 20.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "maxItems": 20,
      -  "type": "array"
      -}
  4. Changed2 schema fields changed
    • changedInput schema / properties / receiptfileids / description
      Previous value: -"With includereceipts, send only these receipts (file ids, or the expense id for a legacy receipt). Omit for all; an empty list sends none."New value: +"With includereceipts, send only these files: a rebilled receipt's file id (or the expense id for a legacy receipt), or the id of any business file when the sender may read Files. A file in a locked folder never goes. Omit for every rebilled receipt; an empty list sends none. At most 20."
    • addedInput schema / properties / receiptfileids / maxItems
      Added value: +20
  5. Changed1 schema field changed
    • addedInput schema / properties / message
      Added value: +{
      +  "description": "A note shown in the email above the document.",
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • addedInput schema / properties / includereceipts
      Added value: +{
      +  "description": "Attach the receipts of expenses rebilled on this document's lines. Off by default; receipts that do not fit are sent as download links.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / receiptfileids
      Added value: +{
      +  "description": "With includereceipts, send only these receipts (file ids, or the expense id for a legacy receipt). Omit for all; an empty list sends none.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / properties / email / description
      Added value: +"Override recipient address; defaults to the document contact's email on file."
    • addedInput schema / properties / id / description
      Added value: +"Id of the document (invoice, quote, credit note, etc.) to email (required)."
  8. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and openWorldHint=true, so safety is partly covered; the description still adds real value by stressing "This actually sends the email" — i.e. an external, irreversible side effect rather than an internal state change. It does not cover rate limits, auth/permission requirements, or what happens on delivery failure, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and its immediate distinction from siblings, with no filler sentences. The closing sentence about the reply's destination is useful but awkwardly phrased ("Its reply's destination is every address the email went to"), costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation tool with no output schema, the description covers the action, alternatives, id-discovery workflow, and even how to interpret the send result (who actually received it). Delivery-failure or permission behavior is left implicit, but nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter (email override, message, sendcopy, attachpdf, attachrebilled, attachmentfileids) is already fully documented in the schema, including defaults and edge cases like locked folders and non-fitting files. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Email a document") and immediately scopes it with examples (invoice, quote, credit note) and the note that it works on any document id. It also names the two sibling tools it must not be confused with (mark_document_sent, record_document_payment), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: use this to actually email, use mark_document_sent to only flag as sent, use record_document_payment to log payment. It additionally prescribes the lookup procedure (find the id via list_documents by number or contact) and forbids asking the user for an id — both strong when-to-use instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources