Skip to main content
Glama

add_to_network

Idempotent

Add someone to your network. Known (e.g. a search_people hit) → tracked; new → created/imported + tracked. Accepts person_id OR free_form:{name,…} + optional tags and relationship_types (how you know them — set it right here at add time, no follow-up update_person needed). Returns canonical person_id. DEDUPE: a new free_form contact that strongly matches someone you already have returns { created:false, potential_duplicates, confirmation_token } instead of creating — track the existing person, or re-call with the confirmation_token only if it's genuinely someone new. relationship_types passed on a call that returns potential_duplicates are NOT kept — re-supply them on the follow-up call.

Input Schema

NameRequiredDescriptionDefault
tagsNoInitial tags to apply. 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.
free_formNoA brand-new contact to create + track. Use when there is no person_id.
person_idNoperson_id of an existing search_people hit to start tracking.
custom_nameNoYour own display name for this person.
confirmation_tokenNoFrom a prior potential_duplicates response — pass it back to create despite the flagged duplicates (only after the user confirms it's a new person).
relationship_typesNoHow you know this person, from the closed set: family, close_friend, friend, acquaintance, coworker, alumni, customer, vendor, advisor, investor. Values outside this set are dropped. Coworker and Alumni may be inferred from reliable shared history; all other roles require an explicit user statement. Set it here at add time — no follow-up update_person needed.

Output 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.

  1. Changed1 schema field changed
    • changedInput schema / properties / relationship_types / description
      Previous value: -"How 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. Set it here at add time — no follow-up update_person needed."New value: +"How you know this person, from the closed set: family, close_friend, friend, acquaintance, coworker, alumni, customer, vendor, advisor, investor. Values outside this set are dropped. Coworker and Alumni may be inferred from reliable shared history; all other roles require an explicit user statement. Set it here at add time — no follow-up update_person needed."
  2. 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": {
      +        "confirmation_token": {
      +          "type": "string"
      +        },
      +        "created": {
      +          "type": "boolean"
      +        },
      +        "person_id": {
      +          "type": "string"
      +        },
      +        "potential_duplicates": {
      +          "items": {
      +            "additionalProperties": true,
      +            "properties": {
      +              "company": {
      +                "$ref": "#/properties/data/properties/potential_duplicates/items/properties/person_id"
      +              },
      +              "display_name": {
      +                "type": "string"
      +              },
      +              "headline": {
      +                "$ref": "#/properties/data/properties/potential_duplicates/items/properties/person_id"
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "person_id": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "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"
      +}
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations establish the safety profile (not read-only, not destructive, idempotent), and the description adds substantial behavior on top: the dedupe short-circuit returns `{ created:false, potential_duplicates, confirmation_token }` instead of creating, and relationship_types supplied on a dedupe-flagged call are discarded and must be re-supplied. Those are non-obvious side effects an agent would otherwise stumble into.

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?

The definition is front-loaded and dense with zero filler sentences — the known-vs-new rule comes first, then the dedupe caveat, which is the right priority order. It loses a point for repetition: "set it right here at add time, no follow-up update_person needed" appears in both the description and the relationship_types schema text, and the DEDUPE block is written in compressed shorthand that takes a second read.

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?

For a mutation tool with six optional parameters, a nested free_form object, and an output schema, the description covers the things an agent must know before calling: which identity path to take, what dedupe returns, and how to recover from it. Return-value shape is delegated correctly to the output schema.

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 the baseline is 3, but the description adds real semantics the schema cannot express: person_id and free_form are described as mutually exclusive alternatives ("Accepts person_id OR free_form"), which the schema's flat additionalProperties:false does not enforce or communicate. It also clarifies that relationship_types is set at add time and saved without a second call, though it largely restates the closed-set rule already documented in the schema.

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?

"Add someone to your network" states a specific verb and resource, and the description immediately splits the operation into two concrete modes: known person (person_id → tracked) and new person (free_form → created/imported + tracked). That two-path framing tells an agent exactly what the tool does and how it differs from siblings like update_person or search_people.

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?

It gives explicit routing rules: use person_id when you have a search_people hit, use free_form when there is no person_id, and set relationship_types at add time rather than follow-up with update_person. It also states the when-not path for creation — if you get potential_duplicates, track the existing person instead of re-calling, and only re-call with confirmation_token after user confirmation.

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