contract_get
Fetches a specific contract by ID — the permanent, immutable record of an accepted negotiation. Only visible to its two parties.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes |
Fetches a specific contract by ID — the permanent, immutable record of an accepted negotiation. Only visible to its two parties.
| Name | Required | Description | Default |
|---|---|---|---|
| contract_id | Yes |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context by noting the contract is 'permanent, immutable' and 'only visible to its two parties', implying access control and non-mutability. However, it does not disclose what happens if the caller is not a party, the return format, or potential errors. This leaves room for interpretation, so a 3 is appropriate.
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, concise sentence that immediately states the tool's purpose and adds two key qualifiers (immutable, visible to two parties). There is no redundant information or filler. Every word earns its place, making it highly efficient.
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 get-by-ID tool with one parameter and no output schema, the description covers the essential behavior and access constraints. It doesn't explicitly state the return format, but 'fetches a specific contract' implies the contract object is returned. Given the tool's simplicity and the absence of an output schema, the description is reasonably complete, though it could mention error behavior for non-parties.
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?
The schema has a single parameter contract_id with zero description coverage. The description only says 'by ID', which merely restates the parameter name without adding any new meaning such as format, source, or format. Given the low schema coverage, the description should compensate, but it does not. The parameter is self-explanatory, but the description adds no additional semantics beyond the parameter name.
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 clearly states the tool 'fetches a specific contract by ID', identifying both the verb and resource. It distinguishes itself from siblings like contract_list (which lists contracts) and contract_get_audit_trail (which retrieves audit trail) by focusing on a single contract record. The added context about it being a permanent, immutable record further clarifies its unique purpose.
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 that this tool is for retrieving one specific contract when you have its ID, which is a clear usage context. It doesn't explicitly name alternatives or when-not-to-use, but the specificity of 'by ID' and the visibility restriction give enough guidance for an agent to select it over list or audit trail tools. The lack of explicit exclusions prevents a 5.
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.