Statement
solo_statementOne client, chronological: every invoice and payment with a running balance.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The client. An existing customer id. |
solo_statementOne client, chronological: every invoice and payment with a running balance.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The client. An existing customer id. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuine behavioral value with 'chronological' ordering and a 'running balance', which is the only signal about the shape of the output given no output schema. It does not state how far back the statement reaches or how missing/unissued documents are handled.
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?
A single front-loaded sentence with zero waste; the scoping and ordering arrive first. It is telegraphic to the point of being slightly cryptic ('One client' as an opener), but nothing is padded.
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 one-parameter read tool with full annotations this is close to sufficient, but it leaves open the reporting period question (since there is no date parameter, the caller must assume all history) and says nothing about behavior for an unknown customer id. Minimal but workable.
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 coverage is 100% and the single parameter is fully described ('The client. An existing customer id.'). The description's 'One client' merely confirms that customer_id selects a single client rather than filtering a list, adding little beyond the schema — the baseline 3 for high coverage 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?
The fragment 'One client, chronological: every invoice and payment with a running balance' clearly identifies the resource (a per-client statement), its scope (single client) and its content (invoices + payments with running balance). There is no explicit verb and no differentiation from the equally plausible sibling o2c_customer_statement, which keeps it below a 5.
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?
No when-to-use guidance at all, and no mention of when a caller would pick this over solo_outstanding, solo_get_invoice, or the near-identical o2c_customer_statement. The only hint is the 'one client' scoping, which the caller must infer.
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.