Skip to main content
Glama

Add or remove tags on contacts

tag_contacts
Idempotent

Add and/or remove tags across a set of contacts in one call — the fast path for "tag everyone who came from the September campaign". Give contact ids from list_contacts. Adds and removes are applied to each contact's existing tags, so untouched tags survive. Tags are what segments filter on, so this changes who is in a saved segment.

Input Schema

NameRequiredDescriptionDefault
addNo
removeNo
site_idYesThe site the contacts belong to
user_goalNoOptional: the user's goal behind this call, in one short sentence of plain words (e.g. "add a page so customers can book tables"). No names, emails or other personal details.
contact_idsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / user_goal
      Added value: +{
      +  "description": "Optional: the user's goal behind this call, in one short sentence of plain words (e.g. \"add a page so customers can book tables\"). No names, emails or other personal details.",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing additive semantics — 'Adds and removes are applied to each contact's existing tags, so untouched tags survive' — and a real side effect, that membership in saved segments changes. Annotations already cover idempotency and non-destructiveness, so the remaining gap is conflict behavior when a tag appears in both add and remove, and what happens to invalid or unknown ids.

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 operation, then the id sourcing, then the state semantics. Every sentence carries distinct information; nothing restates the name or title.

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?

No output schema exists, and the description does not say what comes back (counts of contacts/tags modified, per-contact failures), which matters for a bulk mutation over up to 500 contacts. Everything else an agent needs to invoke it correctly — id source, additive semantics, segment side effect — is present.

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 only 40% (add, remove, contact_ids are undescribed in schema). The description partially compensates by explaining where contact_ids come from and that add/remove operate on existing tag sets, but it never mentions the maxItems caps, that 'remove' only strips the listed tags, or whether empty add/remove arrays are valid.

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?

States a specific verb pair and resource ('Add and/or remove tags across a set of contacts in one call'), plus the scope constraint of operating on many contacts at once. An agent can distinguish it from siblings like create_contact_segment or upsert_contacts without opening the schema, and the example use case pins down intent further.

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 concrete usage context ('the fast path for "tag everyone who came from the September campaign"') and routes the agent to list_contacts to obtain the required contact ids. It lacks an explicit when-not or an alternative route (e.g., when to build a saved segment instead of tagging), which keeps it from a 5.

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.

Resources