Skip to main content
Glama

business_invoice_totals

Read-onlyIdempotent

Invoice totals

Input Schema

NameRequiredDescriptionDefault
linesYes
notesNoNotes printed at the bottom of the document.
termsNoPayment terms line, for example 'Net 30. Pay by bank transfer.'
taxPctNo
dueDateNoYYYY-MM-DD, a real date on or after invoiceDate (422 otherwise).
clientNameNoWho the invoice is for. Needed with businessName for the document.
discountPctNo
includeDocxNotrue also returns the invoice as a Word file in result.docx (filename, contentType, base64). Needs businessName and clientName.
invoiceDateNoYYYY-MM-DD, a real date (422 otherwise).
businessNameNoYour business name. Sending businessName and clientName also returns the invoice as a document: result.document, result.text and, with includeDocx, a Word file.
invoiceNumberNoInvoice number printed on the document.
currencySymbolNoSymbol printed before amounts in the document. Default $. The totals themselves are plain numbers.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / businessName
      Added value: +{
      +  "description": "Your business name. Sending businessName and clientName also returns the invoice as a document: result.document, result.text and, with includeDocx, a Word file.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / clientName
      Added value: +{
      +  "description": "Who the invoice is for. Needed with businessName for the document.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / currencySymbol
      Added value: +{
      +  "description": "Symbol printed before amounts in the document. Default $. The totals themselves are plain numbers.",
      +  "maxLength": 4,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / dueDate
      Added value: +{
      +  "description": "YYYY-MM-DD, a real date on or after invoiceDate (422 otherwise).",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / includeDocx
      Added value: +{
      +  "description": "true also returns the invoice as a Word file in result.docx (filename, contentType, base64). Needs businessName and clientName.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / invoiceDate
      Added value: +{
      +  "description": "YYYY-MM-DD, a real date (422 otherwise).",
      +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / invoiceNumber
      Added value: +{
      +  "description": "Invoice number printed on the document.",
      +  "maxLength": 60,
      +  "type": "string"
      +}
    • addedInput schema / properties / notes
      Added value: +{
      +  "description": "Notes printed at the bottom of the document.",
      +  "maxLength": 2000,
      +  "type": "string"
      +}
    • addedInput schema / properties / terms
      Added value: +{
      +  "description": "Payment terms line, for example 'Net 30. Pay by bank transfer.'",
      +  "maxLength": 1000,
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / discountPct / minimum
      Added value: +0
    • addedInput schema / properties / lines / minItems
      Added value: +1
    • addedInput schema / properties / taxPct / minimum
      Added value: +0
  3. First observed

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. However, the description adds nothing at all — notably it fails to disclose that supplying businessName and clientName triggers generation of a rendered document and that includeDocx produces a Word file, which is behavior an agent cannot infer from the annotations.

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

Conciseness2/5

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

Two words are not concise — they are under-specified. There is no front-loaded statement of the operation, the inputs, or the output shape.

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

Completeness1/5

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

For a 12-parameter tool with an optional document/Word-file generation side effect and no output schema, a two-word description leaves the agent without any of the context needed to call it correctly.

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 coverage is 75% and the schema itself documents most fields richly, so the baseline would be near 3. The description supplies zero parameter meaning, leaving the surprising conditional relationship between businessName/clientName/includeDocx and document output entirely to the schema's prose.

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

Purpose2/5

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

'Invoice totals' merely restates the tool name; it does not say it computes invoice totals from a list of line items, nor does it distinguish the tool from siblings like business_receipt or calculate_sales_tax.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool, no alternatives named, and no mention of the preconditions (minItems:1 lines array) that define the use case.

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