Skip to main content
Glama

CiviCRM MCP by usefulapi

Add contact to group

civicrm_add_contact_to_group
Idempotent

WRITE: adds ONE contact to ONE static group. If the group is used as a mailing list, the contact will receive future mailings sent to it, so only add people who agreed. Sends nothing by itself. Adding a contact who is already in the group changes nothing; a contact who was removed from it (or is pending) is set back to Added. APIv4 GroupContact.save matched on group and contact.

Input Schema

NameRequiredDescriptionDefault
group_idYesGroup id (from civicrm_list_groups).
contact_idYesCiviCRM contact id.

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?

Goes well past the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false): it discloses the mailing-list consequence, that no email is sent, that duplicate adds are no-ops, and that removed/pending contacts are reset to 'Added'. It even names the underlying APIv4 GroupContact.save upsert semantics.

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, front-loaded with the WRITE marker and cardinality, then consequences, then edge-case semantics. Every sentence carries decision-relevant information with 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 2-parameter write tool with annotations and no output schema, the description covers effects, side effects, and idempotency thoroughly. The one gap is what the response contains and whether permissions beyond API credentials are required, which the agent must discover at call time.

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 coverage is 100%, so baseline is 3, but the description adds real meaning: the group must be a static group (a constraint not implied by 'integer' in the schema) and the operation is one contact/one group at a time rather than a bulk list.

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 'WRITE: adds ONE contact to ONE static group' — a specific verb, resource, and cardinality/group-type constraint. This clearly separates it from read siblings like civicrm_list_group_contacts and from creating a contact or membership.

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?

Gives explicit consent criteria ('only add people who agreed') and rules out the misconception that mail is sent. It does not name an alternative tool (e.g., check membership with civicrm_list_group_contacts first), so it is strong context but not full when/when-not 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.