Skip to main content
Glama

Submit draft invoice and get document links

generate-invoice-pdf
Destructive

Return an invoice's document links. A draft is first submitted exactly like submit-invoice, using the invoice parameter plus the line items and recipient already set with update-invoice-draft; other invoices are returned unchanged. It does not render a PDF itself, and links can stay empty until Classic finishes generating the document. The sent status and document links do not mean a customer email was sent or delivered. Depending on stored invoice and company settings, submission can queue InvoiceNow delivery through PEPPOL and reporting to IRAS. Confirm the user intends to submit, including any configured external delivery and reporting. Use preview-invoice or get-invoice-document-links to read an invoice without submitting it.

Input Schema

NameRequiredDescriptionDefault
idYesInvoice ID
invoiceNoSubmission fields, required when the invoice is a draft; line items and recipient come from the stored draft. Omit it for other invoices: any object you send must be a complete submission, even though only a draft uses it.
companyIdYesCompany ID

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / invoice / description
      Added value: +"Submission fields, required when the invoice is a draft; line items and recipient come from the stored draft. Omit it for other invoices: any object you send must be a complete submission, even though only a draft uses it."
  2. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds substantial context beyond them: no PDF rendering, links may remain empty until Classic finishes, 'sent' status does not imply customer email delivery, and submission can queue InvoiceNow/PEPPOL delivery and IRAS reporting. These are real behavioral and side-effect disclosures an agent needs before invoking a destructive, externally-visible operation.

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?

The description is front-loaded with the core action and return value, then layers in behavioral caveats and the alternative path. It is on the longer side and some caveats (Classic generation timing, email delivery semantics) stack up, but each sentence carries distinct information and earns its place.

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 destructive, open-world tool with a nested-object parameter and no output schema, the description covers return value (document links, possibly empty), side effects (external delivery/reporting), and intent confirmation. It is close to complete; only minor gaps remain around any permission/auth prerequisites for submission.

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 description coverage is 100%, so the schema already documents all three parameters, including the invoice object and its nested fields. The description reinforces that the invoice object is only needed for drafts and that line items/recipient come from the stored draft, but this largely duplicates the schema's own invoice description, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific action ('Return an invoice's document links' plus submitting a draft 'exactly like submit-invoice') and explicitly distinguishes itself from siblings submit-invoice, get-invoice-document-links, and preview-invoice. The only friction is the name itself: 'generate-invoice-pdf' implies PDF rendering while the description says 'It does not render a PDF itself,' creating a small mismatch between name and purpose.

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?

It gives explicit when-to-use guidance ('Confirm the user intends to submit, including any configured external delivery and reporting') and names alternatives for the non-submitting case ('Use preview-invoice or get-invoice-document-links to read an invoice without submitting it'). Nothing is left to inference about when this tool is the right choice.

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