Get person
copper_get_personGet a single person (contact) by id. Copper REST: GET /people/{id}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The person id. |
copper_get_personGet a single person (contact) by id. Copper REST: GET /people/{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The person id. |
Changes observed during successful MCP inspections.
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safe-read profile is covered by structured data. The description adds only the REST endpoint mapping, which is implementation trivia rather than behavior; it says nothing about 404/not-found handling, permission requirements, or what the returned object contains beyond 'a person'.
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 purpose front-loaded and no filler. The second sentence (Copper REST path) is mildly redundant implementation detail that does not help selection or invocation, keeping it below 5.
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 one-parameter getter this is nearly sufficient, and the schema covers the parameter. But with no output schema, the description could usefully sketch the returned person shape and note not-found behavior; it leaves those gaps for the agent to discover.
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?
There is a single parameter with 100% schema description coverage ('The person id.'), so the schema fully carries parameter meaning. The description's 'by id' merely restates this, which is the baseline 3 case.
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?
States a specific verb (Get) and resource (a single person/contact) scoped 'by id', which cleanly separates it from copper_create_person, copper_update_person, and copper_search_people. It does not explicitly name those siblings as alternatives, so it falls short of 5.
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 phrase 'by id' implicitly tells the agent the required precondition (you must already know the person id), hinting that search_people is the tool to use when you don't. However, no when-to-use or when-not-to-use guidance is stated explicitly, so usage is only implied.
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.