Contact
crm_get_contactOne person: identity, provenance, gap state, the activity that touched them.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact, e.g. P-0001. |
crm_get_contactOne person: identity, provenance, gap state, the activity that touched them.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | The contact, e.g. P-0001. |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered and the bar is lower. The description adds the one thing annotations cannot: what the response payload contains (identity, provenance, gap state, activity). It omits behavior on an unknown contact_id and any permission/scoping caveats.
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 terse clause with no filler, but the compression is excessive: 'provenance' and 'gap state' are undefined jargon, and there is no front-loaded verb telling the agent what action is performed. Short at the cost of clarity rather than through economy.
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?
No output schema exists, so the description does the right thing by sketching the return payload's four content areas, but it stops there. For a lookup tool it never states what happens when the contact is not found or how large the embedded 'activity' can be.
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?
Single required contact_id parameter with 100% schema description coverage (the schema even gives an example, 'P-0001'), so the schema fully carries parameter meaning. The description adds nothing about the identifier's format or behavior for unknown IDs, which is the expected baseline when the schema is complete.
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 is a noun phrase enumerating contents ('identity, provenance, gap state, the activity') rather than a verb+resource statement like 'retrieve a single CRM contact'. An agent can infer it fetches one person's record, but the tool name is doing most of the work, and nothing distinguishes it from crm_list_contacts or hunt_get_contact.
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 indication of when to call this versus crm_list_contacts (lookup by id vs browse) or rim_gaps/crm_coverage which also expose gap state. The agent must guess the selection rule from names alone.
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.