decline_offer
Decline an unaccepted gift; a compensating ledger transaction refunds its sender.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| idempotencyKey | Yes | ||
| expectedVersion | Yes |
Decline an unaccepted gift; a compensating ledger transaction refunds its sender.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| idempotencyKey | Yes | ||
| expectedVersion | Yes |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses a notable side effect: a compensating ledger transaction refunds the sender. However, it does not mention mutability, irreversibility, concurrency, or failure behavior, so transparency is partial.
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?
The description is a single tight sentence with no filler. The primary action is front-loaded, and the consequential side effect is added in one short clause.
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?
The tool has three required, undocumented parameters, no annotations, and no output schema. The description does not explain concurrency control (expectedVersion), idempotency (idempotencyKey), or what the caller should expect in return, so it is not complete enough to invoke confidently.
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 0%, so the description must compensate for the three required parameters. It provides no meaning for expectedVersion or idempotencyKey, and only indirectly implies that 'id' identifies the offer. This is insufficient for an agent to construct correct arguments.
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 description states a specific verb ('Decline') and a precise resource ('an unaccepted gift'), and the qualifier 'unaccepted' distinguishes it from accept_offer among siblings. It is immediately clear what operation this tool performs.
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 description implies when to use the tool: only for gifts/offers that have not been accepted. However, it does not explicitly name alternatives or state when NOT to use this tool, leaving sibling differentiation to inference.
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.