Skip to main content
Glama

Update contact

update_contact
Idempotent

Replace a contact's names, time zone, tags and attributes; the email never changes. Tags and attributes become exactly the sets sent, so read the contact with get_contact first and send back what should stay. Unsubscribing and blocking are separate tools (unsubscribe_email, block_email).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "contact_id": "<contact_id>",
      "first_name": "<first_name>",
      "last_name": "<last_name>",
      "timezone": "<timezone>",
      "tags": "<tags>",
      "attributes": "<attributes>"
    },
    "name": "update_contact"
  }
}

Input Schema

NameRequiredDescriptionDefault
tagsYes
timezoneYesIANA time zone.
last_nameYes
attributesYes
contact_idYes
first_nameYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations give the safety profile (non-read-only, non-destructive, idempotent), and the description supplies the crucial behavior the annotations cannot convey: tags and attributes are replaced wholesale, so anything omitted is dropped. That is exactly the 'what gets destroyed' disclosure an agent needs and is consistent with idempotentHint=true. It lacks notes on permissions or response body, keeping it just short of top marks.

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 replace semantics, then the operational prerequisite, then sibling routing. No filler and nothing repeated from the schema.

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 six-parameter, all-required mutation with a nested object and no output schema, the description covers the destructive-replacement risk and the read-before-write workflow well. The remaining gap is null/clearing semantics on the nullable name and timezone fields, which an agent must guess at.

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 description coverage is only 17%, so the description carries a real burden; it does explain that tags/attributes are whole-set replacements and that email is not a parameter. However, it says nothing about contact_id, about what passing null for first_name/last_name/timezone does (clear vs. unchanged), or about attribute key/value typing and tag constraints, leaving the most error-prone semantics undocumented.

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 ('Replace') and resource, enumerates the fields affected (names, time zone, tags, attributes), and pins the invariant 'the email never changes'. It also explicitly disclaims the adjacent operations by naming unsubscribe_email and block_email, so the agent can separate this tool from its closest siblings without reading schemas.

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

Usage Guidelines5/5

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

Gives an explicit precondition workflow ('read the contact with get_contact first and send back what should stay') tied to the replace semantics, and routes to alternative tools for unsubscribing and blocking. Both when-to-use and when-not-to-use are covered.

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