Skip to main content
Glama

update_person

DestructiveIdempotent

Update your notes, tags, custom_name, relationship_type, or the person's companies / role / emails / phones. What you set here are your own overrides — they win over whatever was imported/derived, wherever the person is shown (they're the same values the web relationship panel shows as chips) — so this is how you correct or fill in a relationship's contact details. A person can have SEVERAL emails, phones, and companies: pass the emails / phones / companies ARRAYS to record them all in one call — the first entry is the primary. Never stash a second email in notes. Each array REPLACES that field's current list (it does not merge, unlike tags), so include the values you want to keep; [] clears the override. The singular email / company are aliases for the primary. If they're not in your network yet, they're added first (upsert) — so it works on any search_people hit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
roleNoTheir role/title — your override, wins over the role derived from their headline. Pass null to clear.
tagsNoMerged with existing tags. Prefer an existing tag from your network over coining a near-duplicate (reuse `sf`, don't add `san-francisco`); lowercase, and use the event:/place:/topic: namespaces where they fit.
emailNoTheir PRIMARY email — alias for emails[0]; keeps any other addresses already recorded. Pass null to clear. Use `emails` to set several.
emailsNoALL of their email addresses, primary FIRST (e.g. work + personal). REPLACES the current list — pass every address you want to keep; [] clears the override back to the imported/derived emails. Wins over any imported email.
phonesNoALL of their phone numbers, primary FIRST. REPLACES the current list; [] clears the override.
companyNoTheir PRIMARY company — alias for companies[0]; keeps any other companies already recorded. Pass null to clear. Use `companies` to set several.
companiesNoALL companies they're at, primary FIRST. REPLACES the current list; [] clears the override.
person_idYesThe person's id (from search_people / get_person).
custom_nameNoYour display name for them.
default_notesNoFreeform notes.
relationship_typesNoHow you know this person, from the closed set: family, close_friend, friend, coworker, ex_coworker, advisor_investor, customer, vendor, acquaintance. Values outside this set are dropped.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYesWhether noticed completed the operation.
dataNoThe operation result when ok is true.
errorNoA human-readable error when ok is false.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "data": {
      +      "additionalProperties": true,
      +      "description": "The operation result when ok is true.",
      +      "properties": {
      +        "updated": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "updated"
      +      ],
      +      "type": "object"
      +    },
      +    "error": {
      +      "description": "A human-readable error when ok is false.",
      +      "type": "string"
      +    },
      +    "ok": {
      +      "description": "Whether noticed completed the operation.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations' idempotent/destructive hints, the description reveals critical behavioral details: overrides win over imported/derived values, array fields replace rather than merge (unlike tags), [] clears, singular fields are aliases for the primary array entry, and the upsert side effect when the person isn't in the network. These are all disclosed without contradicting the annotations.

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?

The description is long but every sentence carries operational weight. It is front-loaded with the core fields, then builds logically through override semantics, array replacement, aliases, and upsert. There is no filler; even the web-panel chip reference reinforces the override concept.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 11 parameters with replace/merge semantics and an output schema, the description is complete. It covers the non-obvious behaviors: upsert for non-network persons, primary selection from arrays, clearing via [], tag merging, and alias behavior. No critical omission remains for an agent to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all 11 parameters (100% coverage), so the baseline is 3. The description adds substantial meaning: alias relationships (email/company as primary), replace-vs-merge distinctions, primary-first ordering, null-clearing behavior, and the closed-set validation for relationship_types. This far exceeds what the schema alone provides.

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?

The description opens with a specific verb and resource ('Update your notes, tags, custom_name, relationship_type, or the person's companies / role / emails / phones') and clearly frames the tool as managing user overrides. This differentiates it from update_action, update_list, and update_view by resource, and from person-creation/add tools via the override semantics.

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 description gives clear context: 'this is how you correct or fill in a relationship's contact details' and even explains the upsert behavior so it works on search_people hits. It also provides internal guidance (use arrays for multiple values, never stash a second email in notes). However, it does not explicitly contrast with sibling tools such as add_note or add_profile_to_person, so it lacks explicit exclusions.

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.

TDQS

B3.4/5.0
Disambiguation3/5

The tool set is organized around distinct resources, and the descriptions work hard to separate them, but several close pairs remain easy to confuse: add_memory vs memory_save vs add_note, accept_identity_match vs suggest_identity_match, and dismiss_identity_match vs mark_different_people. An agent will often need to read very subtle signals (who originated the content, pending vs initiating a merge, soft vs durable rejection) to pick the right tool.

Naming Consistency3/5

Most tools follow a clear verb_noun snake_case pattern like create_list, update_person, and delete_view, which is readable and mostly predictable. However, the memory tools break the pattern (memory_save, memory_get, memory_search instead of save_memory/get_memory/search_memory), and a few noun-style names (my_profile, network_summary, account_status) add inconsistency.

Tool Count1/5

At 57 tools, this is an extremely large surface that exceeds the calibration threshold for an extreme mismatch. The scope is broad, but many tools are micro-specialized variations of the same concept, such as four memory-related tools and seven identity-match tools, which makes the count feel inflated rather than well-scoped.

Completeness4/5

The tool set provides thorough lifecycle coverage for the core domain: people can be added, updated, searched, and removed; lists, views, actions, and scheduled tasks have create/read/update/delete; and identity matching has accept, dismiss, differentiate, and suggest paths. Minor gaps exist, such as no direct memory/note deletion or intro deletion, but agents can generally complete workflows without hitting dead ends.

Resources