Skip to main content
Glama

CiviCRM MCP by usefulapi

Get contact

civicrm_get_contact
Read-only

One contact by id: name, type, job title, source, communication preferences (do not e-mail, opted out, ...), dates, plus all their e-mail addresses, phone numbers and postal addresses. APIv4 Contact.get, Email.get, Phone.get, Address.get.

Input Schema

NameRequiredDescriptionDefault
contact_idYesCiviCRM contact id (the cid in the contact's URL).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered and the description doesn't need to repeat it. It adds real value beyond that by disclosing the fan-out scope of the read: base contact fields plus all Email, Phone and Address records, which tells the agent to expect a wide payload. It omits what happens for a missing/invalid id, but the core behavioral shape is clear.

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

Conciseness5/5

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

Two tight sentences: the payload is front-loaded, the related-record list follows, and the trailing APIv4 entity list concisely signals implementation scope. No filler.

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

Completeness4/5

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

For a one-param read tool with no output schema, enumerating the returned fields is exactly the right compensation and it is present here. Minor gaps remain around not-found behavior and whether permissions/site scoping limit results, but nothing essential for invoking it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the schema description already explains contact_id as the cid in the contact's URL. The description only restates 'by id' and adds no format, range, or scoping detail beyond the schema. Baseline 3 is appropriate since the schema carries the semantics.

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?

Specific verb+resource ('One contact by id') followed by an enumeration of the fields and related records returned, which makes it clearly distinct from list/search siblings. It never names civicrm_search_contacts or civicrm_list_* explicitly, so the differentiation is inferential 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?

'One contact by id' implies the usage condition (you must already have a contact id) and implicitly contrasts with search tools, but there is no explicit when-to-use/when-not or named alternative. Adequate but leaves the agent to infer the routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.