Read a receipt
decode_receiptRead a receipt field by field, with stated limits. Does not check the signature.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| receipt | Yes | The receipt, as a JSON object or a JSON string. |
decode_receiptRead a receipt field by field, with stated limits. Does not check the signature.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt | Yes | The receipt, as a JSON object or a JSON string. |
Changes observed during successful MCP inspections.
Input schema / properties / receipt / descriptionAdded value: +"The receipt, as a JSON object or a JSON string."Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds one genuinely important behavioral boundary beyond them: it parses but does not perform cryptographic verification, which is exactly the fact an agent needs to avoid treating output as trusted. "With stated limits" is vague padding, but the signature caveat carries real value.
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 with the core action front-loaded and zero redundancy. The phrase "with stated limits" is the one soft spot, gesturing at a constraint without saying what it is.
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?
There is no output schema, so the description is the only place a caller could learn what a decoded receipt looks like or what happens on a malformed input. "Field by field" hints at the return shape but never enumerates fields or states error behavior, leaving a real gap for a single-purpose decoding tool.
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?
Only one parameter exists and schema description coverage is 100%, with the schema itself explaining the object-or-JSON-string duality. The description adds nothing further about the input, 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?
"Read a receipt field by field" names a specific verb and resource, and "Does not check the signature" implicitly separates it from the sibling verify_receipt. The scope is clear, though the sibling is not named outright.
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?
The exclusion "Does not check the signature" implies that signature validation belongs to verify_receipt, but the description never names that alternative or states positively when to call this tool versus it. The routing signal is inferable rather than explicit.
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.