Skip to main content
Glama

QuoteBuild

Create invoice draft

create_invoice_draft

Creates an unsent invoice draft and calculates its amount from the supplied reviewed lines inside QuoteBuild.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "idempotencyKey": "<idempotencyKey>",
      "jobId": "<jobId>",
      "invoiceNumber": "<invoiceNumber>",
      "items": "<items>"
    },
    "name": "create_invoice_draft"
  }
}

Input Schema

NameRequiredDescriptionDefault
itemsYes
jobIdYes
notesNo
dueDateNo
quoteIdNo
invoiceNumberYes
idempotencyKeyYes

Output Schema

NameRequiredDescriptionDefault
okYes
dataNo
errorNo
warningsYes
provenanceNo
assumptionsYes
nextActionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare non-read-only, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real value by stating the invoice is not sent and that the amount is derived from the lines rather than supplied. It says nothing about idempotency behavior, duplicate invoiceNumber handling, or what happens to unlisted fields.

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?

A single tight sentence with the core action front-loaded and no filler. It is perhaps too terse given seven undocumented parameters, but nothing in it is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. Still, for a seven-parameter mutation whose required idempotencyKey and invoiceNumber semantics are unexplained, the description is thinner than the complexity warrants.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet it only gestures at items ("supplied reviewed lines") and never explains idempotencyKey, jobId, invoiceNumber, quoteId, dueDate, notes, or the scopeStatus/category enums. An agent must infer required-field meaning entirely from bare parameter names.

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 names a specific verb and resource ("Creates an unsent invoice draft") and adds a distinguishing behavior: the amount is calculated from supplied reviewed lines. The word "unsent" implicitly separates it from send_invoice, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

"Unsent" implies this is the pre-send step and that a separate send action follows, which is useful implied guidance. However there is no explicit when-to-use/when-not or comparison against create_quote_draft or prepare_invoice_send.

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