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 |
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.
Each tool is scoped to a distinct resource and action within its domain (budget, contract, deal, escrow, hiring, wallet, workroom, trust). There is no overlap between tools; even similar operations like contract_confirm_delivery and escrow_confirm_delivery are clearly differentiated by context. A model can reliably select the correct tool for a given task.
Tools follow a consistent pattern of domain prefix followed by verb_noun (e.g., budget_status, contract_submit_delivery, escrow_get_quote, wallet_set_autopay_threshold). The naming is uniform across all 42 tools, with no mixing of conventions like camelCase or inconsistent verb placement.
With 42 tools, the server is heavily overloaded. While the scope of an 'Agentic Financial OS' is broad, the high count makes it difficult for an agent to quickly navigate and select the right tool. Many tools could be consolidated (e.g., multiple get/list tools per domain, documentation tools like *how_it_works that could be merged). The count exceeds the recommended range and feels excessive.
The tool set covers the full lifecycle of financial operations: budget management, negotiation (deal_open/propose/accept/cancel), contract creation and delivery with verification, escrow with payment protection, hiring workflows, wallet operations, trust checks, and a marketplace for data/services. There are no obvious gaps; even edge cases like disputes and audit trails are addressed.