Get invoice
mercoa_get_invoiceGet a single invoice (bill) by ID. GET /invoice/{invoiceId}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID (e.g. in_...) or foreign ID. |
mercoa_get_invoiceGet a single invoice (bill) by ID. GET /invoice/{invoiceId}.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice ID (e.g. in_...) or foreign ID. |
Changes observed during successful MCP inspections.
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which fully covers the safety profile for this call. The description adds nothing beyond the annotation and schema — no mention of error behavior for a missing ID, auth requirements, or what the response contains — so it earns little credit for behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core purpose front-loaded. Nothing could be cut without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with readOnlyHint, the definition is minimally sufficient — there is no output schema, but the description doesn't need to explain return values. It stops short of distinguishing behavior from the sibling read tools or covering lookup failure, leaving it adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's format (in_... or foreign ID) is already documented in the schema. The description only echoes 'by ID' and adds no syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single invoice (bill) by ID'), and the word 'single' implicitly distinguishes it from the list/search sibling mercoa_find_invoices. However, it never names a sibling explicitly, so the distinction is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch one invoice when you already have its ID. There is no explicit guidance on when to prefer this over mercoa_find_invoices or mercoa_get_invoice_events, and no stated prerequisites or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.