Skip to main content
Glama

contacts_update

✏️ Update a contact's profile: name, notes, role, capabilities, birthday, preferred channel.

When to use:

  • User wants to add notes about a contact

  • User wants to set/update role or capabilities for a contact

  • User wants to rename a contact or update birthday

Requires contact_id — the entity_id returned by contacts.find or contacts.sync. At least one optional field must be provided.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
roleNoContact role (e.g. developer, client, partner). Empty string clears role.
notesNoFree-text notes/context about this contact. Empty string clears notes.
contact_idYesentity_id from contacts.find or contacts.sync
birthday_dayNoBirth day 1-31 (must be set together with birthday_month)
capabilitiesNoList of capabilities (e.g. ['backend', 'design'])
display_nameNoNew display name (max 255 chars)
in_workspaceNoRun this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.
birthday_yearNoBirth year 1900-2100 (optional, standalone)
birthday_monthNoBirth month 1-12 (must be set together with birthday_day)
preferred_channelNoPreferred channel for contacting this person. OMIT to leave the preferred channel unchanged.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / in_workspace
      Added value: +{
      +  "description": "Run this one call in this workspace id instead of the session's. Nothing is stored; other sessions are not affected.",
      +  "type": "integer"
      +}
  2. Added
  3. Removed
  4. Changed1 schema field changed
    • changedInput schema / properties / contact_id / description
      Previous value: -"entity_id from contacts.find"New value: +"entity_id from contacts.find or contacts.sync"
  5. First observed

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, non-destructive, non-idempotent, closed-world mutation, so the safety profile is covered. The description adds one genuine behavioral rule not present in the annotations ("At least one optional field must be provided") and partial-update framing, but says nothing about permissions, whether the update is reversible, or how unspecified fields behave beyond what the schema already states.

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

Conciseness4/5

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

Front-loaded with the verb and affected fields, then a scannable "When to use" list, then the required-parameter constraint — a sensible ordering with no filler prose. The field enumeration in the opening sentence is partially duplicated by the bullets below, and the leading emoji is decorative, keeping it from a 5.

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 10-parameter partial-update tool with annotations covering the safety profile and no output schema, the description supplies the essentials: what is mutable, how to obtain contact_id, and the at-least-one-field rule. It does not describe the response or failure modes (e.g., invalid or unknown contact_id), which is a minor gap given no output schema exists.

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 100%, so the baseline is 3. The description's field list and the contact_id provenance note largely restate what the schema already documents, including the clearing semantics ("empty string clears") and the omit-to-leave-unchanged rule for preferred_channel. No additional syntax, coupling, or interaction detail is contributed beyond the schema.

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?

The description gives a specific verb and resource ("Update a contact's profile") and enumerates the mutable fields (name, notes, role, capabilities, birthday, preferred channel), which separates it from sibling writers like contacts_add_channel or contacts_merge. It also pins down the entity being mutated via the contact_id provenance note. It stops short of an explicit "not this tool, use X instead" statement, so it lands just under top marks.

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?

A dedicated "When to use" block lists three concrete user intents (add notes, set role/capabilities, rename or set birthday), and a precondition is stated: contact_id is required and at least one optional field must be supplied. What's missing is the negative side — no guidance on when to prefer contacts_merge, contacts_profile, or contacts_capture_lead over this update.

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.