Skip to main content
Glama

Create an invoice

invoice_create

Create an invoice from line items and return the record with its next, never-reused number. unit_price is in MAJOR units; lines are rounded then summed. One currency per invoice. Free: 3 a month.

Input Schema

NameRequiredDescriptionDefault
itemsYesLine items. Amounts are held as integer minor units and every line is rounded first, then summed, so the printed lines can never disagree with the total. A line may carry its own currency
notesNoFree text printed under the totals
clientYesClient name or id. Unknown names are added automatically
currencyNoInvoice currency, 3-letter ISO code. Defaults to the one currency every item agrees on, else your business default. Every line on one invoice must agree with it; a mix is refused with the exact conversion argument to pass rather than billed as if it were one currency
due_daysNoDays until due, defaults to your payment terms
issue_dateNoYYYY-MM-DD, defaults to today
discount_percentNoDiscount percent applied to every line before tax, 0-100

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / items / items / additionalProperties
      Removed value: -false
    • removedInput schema / properties / items / items / properties / vat / $ref
      Removed value: -"#/properties/items/items/properties/tax_rate"
    • addedInput schema / properties / items / items / properties / vat / maximum
      Added value: +1000
    • addedInput schema / properties / items / items / properties / vat / minimum
      Added value: +-100
    • addedInput schema / properties / items / items / properties / vat / type
      Added value: +"number"
    • removedInput schema / properties / items / items / properties / vat_rate / $ref
      Removed value: -"#/properties/items/items/properties/tax_rate"
    • addedInput schema / properties / items / items / properties / vat_rate / maximum
      Added value: +1000
    • addedInput schema / properties / items / items / properties / vat_rate / minimum
      Added value: +-100
    • addedInput schema / properties / items / items / properties / vat_rate / type
      Added value: +"number"
  2. First observed

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-readonly, non-destructive, non-idempotent, closed-world write. The description adds real value beyond that: a never-reused invoice number is returned, rounding happens per line before summing, mixed currencies are refused, and there is a free-tier limit of 3 per month. It still does not say whether the invoice is issued/finalized on creation or what a failed call leaves behind, which matters for a non-idempotent write.

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?

Four short, front-loaded sentences that each carry a distinct fact: return value, units/rounding, currency constraint, quota. The telegraphic style is efficient, though fragments like 'Free: 3 a month' would read better as an explicit quota statement.

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 create tool with no output schema, the description covers the return shape (record plus number), monetary units and rounding, currency agreement, and a rate limit. It is close to complete; the main omission is the lifecycle state of the created invoice and any consequences of auto-adding unknown clients.

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 the schema already documents every parameter, including unit_price in major units and the currency-agreement rule. The description reinforces the major-units convention and the round-then-sum ordering, which is a useful correctness cue, but adds little syntax or meaning the schema does not already carry.

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?

'Create an invoice from line items' states a specific verb and resource, and the 'from line items' framing implicitly separates it from invoice_from_hours. It never names a sibling outright, so the differentiation is inferable rather than explicit.

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?

There is no explicit when-to-use or when-not-to-use statement; the agent must infer that hour-based billing belongs to invoice_from_hours and that retrieval belongs to invoice_get. The 'one currency per invoice' rule gives some prep guidance, but nothing routes the caller between siblings.

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.