Skip to main content
Glama

CiviCRM MCP by usefulapi

Update contact

civicrm_update_contact
DestructiveIdempotent

WRITE: changes basic fields of ONE existing contact (name, job title, source, preferred language) and/or its communication preferences (do not e-mail, do not phone, do not mail, do not SMS, opted out of bulk mail). Only the fields you give are changed. Setting a do-not flag to false re-enables contact the person may have declined, so only do that on the person's request. APIv4 Contact.update.

Input Schema

NameRequiredDescriptionDefault
sourceNo
job_titleNo
last_nameNo
contact_idYesCiviCRM contact id.
do_not_smsNo
first_nameNo
is_opt_outNoOpted out of ALL bulk mailings.
do_not_mailNo
do_not_emailNo
do_not_phoneNo
household_nameNo
organization_nameNo
preferred_languageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds non-obvious behavior: only supplied fields are mutated (so unspecified data is untouched), and flipping a do-not flag to false re-enables a contact the person may have declined. That last warning is a consent-safety nuance no structured field conveys.

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?

Three tight sentences with the write nature front-loaded, the field inventory second, and the safety caveat last. No filler, and the highest-risk instruction is placed where it will be read.

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 13-parameter mutation tool with no output schema, it covers scope, partial-update behavior, and the consent hazard, which is most of what an agent needs. It leaves household_name/organization_name unexplained and says nothing about the return payload or validation failures (e.g., contact_id not found).

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?

With only 15% schema coverage across 13 parameters, the description must compensate, and it does: it names first/last name, job title, source, preferred language, and all four do-not flags plus bulk-mail opt-out, explaining what the opt-out means. It omits household_name and organization_name, which are in the schema but unmentioned, leaving a real gap given the low coverage.

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

Purpose5/5

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

Opens with an explicit 'WRITE:' marker, states the verb (changes), resource (ONE existing contact), and enumerates the affected field groups, plus names the underlying APIv4 method. An agent can distinguish this at a glance from civicrm_create_contact, civicrm_get_contact, and the list_* siblings.

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

Usage Guidelines4/5

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

The 'ONE existing contact' scope plus partial-update semantics make clear this is for modifying rather than creating, and the do-not-flag caution gives an explicit when-you-should-not rule. It stops short of naming civicrm_create_contact as the alternative for new records or stating prerequisites like contact existence.

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.