Skip to main content
Glama
pitchmuc

Knowledge Graph MCP Server

by pitchmuc

search_contacts

Read-only

Find CRM contacts by keyword across name, job title, or account name, with optional role filter such as Champion or Economic Buyer.

Instructions

Search contacts by keyword matched against name, job title, or account name.

Args: keyword: Free-text keyword to search for (case-insensitive substring match). role: Optional exact match on contact role, e.g. "Economic Buyer", "Champion", "Influencer", "User".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
roleNo
keywordYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered by structured data. The description adds genuinely useful matching semantics (case-insensitive substring match for keyword vs. exact match for role), but says nothing about result limits, pagination, or truncation behavior on a read search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded summary sentence followed by a short parameter block; nothing is padded. The Args section restates parameter names but adds real semantics alongside each, so it earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the two parameters are well covered. What is missing is routing guidance against the many sibling search/lookup tools and any note on result-set size, which leaves the description minimally viable for an otherwise simple read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden and largely meets it: it explains that keyword is a free-text case-insensitive substring match and that role is an optional exact match, supplying example values ('Economic Buyer', 'Champion') that appear nowhere in the schema. Only the empty-string default for role is left unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search contacts') and names the three fields the keyword is matched against (name, job title, account name), which distinguishes it from sibling lookups like get_contact. It does not explicitly contrast itself with search_accounts or list_contacts_for_account, so sibling differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the search framing but there is no explicit when-to-use or when-not guidance, and no alternatives are named despite several overlapping siblings (list_contacts_for_account, get_contact, search_accounts). An agent must infer that this tool is for keyword discovery rather than targeted lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.