Skip to main content
Glama

Void invoice

o2c_void_invoice
Destructive

Void an invoice that should never have been issued. Only an invoice with no cash applied to it can be voided, and voiding puts the quantities back to uninvoiced so the order can be billed correctly. An invoice the customer has already paid against is corrected with a credit note, never voided — the money moved, and the record has to keep saying so. Effects: invoice.status -> void; order_line.qty_invoiced released.

Input Schema

NameRequiredDescriptionDefault
reasonYesWhy it is being voided.
invoice_idYesThe invoice. An existing invoice id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark this as destructive and not read-only, but the description adds essential context beyond them: the no-cash precondition, the exact effects on invoice status and qty_invoiced, and why paid invoices must not be voided. That is a strong disclosure profile for a destructive mutation.

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

Conciseness5/5

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

The description is short but front-loaded with purpose, precondition, alternative, and effects. The rationale about money having moved earns its place because it prevents a dangerous misuse of the tool.

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

Completeness5/5

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

For a destructive mutation with no output schema, it supplies the preconditions, correct alternative, and resulting state changes an agent needs before invoking it. Nothing critical about safe invocation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds a substantive invocation constraint on invoice_id by requiring that no cash be applied, though it does not add meaning beyond the schema for the reason parameter.

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?

The description uses a specific verb and resource ('Void an invoice') and immediately scopes the purpose to invoices that should never have been issued. It distinguishes this action from correcting a paid invoice with a credit note, so an agent can tell it apart from related O2C tools.

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 states the core precondition ('Only an invoice with no cash applied to it can be voided') and the exclusion with an explicit alternative: a paid invoice is corrected with a credit note, never voided. This gives clear when-to-use and when-not-to-use guidance.

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.