contacts-create_research
Start asynchronous AI research for a contact using LinkedIn and other sources, then poll the research ID for results.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| __requestBody | Yes | Request body |
Start asynchronous AI research for a contact using LinkedIn and other sources, then poll the research ID for results.
| Name | Required | Description | Default |
|---|---|---|---|
| __requestBody | Yes | Request body |
Changes observed during successful MCP inspections.
Input schema / properties / __requestBody / properties / companyDomain / descriptionAdded value: +"Company domain (e.g., \"acme.com\")"Input schema / properties / __requestBody / properties / companyName / descriptionAdded value: +"Name of the contact's company"Input schema / properties / __requestBody / properties / contactProfileUrl / descriptionAdded value: +"Contact profile URL of the contact (e.g., LinkedIn or other professional profile, optional)"Input schema / properties / __requestBody / properties / firstName / descriptionAdded value: +"First name of the contact"Input schema / properties / __requestBody / properties / jobTitle / descriptionAdded value: +"Job title of the contact (optional)"Input schema / properties / __requestBody / properties / lastName / descriptionAdded value: +"Last name of the contact"Input schema / properties / __requestBody / properties / linkedInSalesNavigatorUrl / descriptionAdded value: +"LinkedIn Sales Navigator profile URL of the contact (optional)"Input schema / properties / __requestBody / properties / webhookUrl / descriptionAdded value: +"Optional webhook URL to receive notifications when processing completes"Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds key behavioral context beyond annotations: it emphasizes that the research is asynchronous and that polling is required. It also mentions external sources (LinkedIn). However, it does not disclose other behavioral traits such as potential costs, failure modes, or the option to receive webhook notifications (a parameter in the schema). Annotations already indicate non-read-only and non-idempotent, so there is no contradiction, but the description could provide more depth on side effects.
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 sentence that front-loads the primary purpose, then adds the crucial follow-up action. Every clause earns its place, with no wasted words. It is concise yet informative.
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 description provides a sufficient mental model: start async research, receive an ID, poll for results. Given the rich schema with all parameters documented, the description does not need to explain input details. It is slightly incomplete by not mentioning the webhookUrl alternative for completion notifications, but the schema covers that, so the overall context is reasonably complete.
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 100%, with each parameter having a clear description and example. The tool description does not add parameter-level meaning beyond the schema, but it reinforces the need for contact and company information. Since the schema carries the full burden, a baseline of 3 is appropriate.
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's purpose: 'Start asynchronous AI research for a contact using LinkedIn and other sources'. It specifies a distinct verb ('Start') and resource ('asynchronous AI research for a contact'), and differentiates from siblings like contacts-get_research by implying that this tool initiates research rather than retrieving results. The mention of 'poll the research ID' further distinguishes it as a kickoff action.
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 provides clear context: use this tool to start asynchronous research, then poll the returned ID for results. This implies the workflow and points to a separate polling step (likely via contacts-get_research). However, it does not explicitly name alternative tools or state conditions when not to use it, so it misses explicit exclusions.
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.