Skip to main content
Glama

track_intro

Destructive

Track a promised introduction — someone offered to connect the user with a person they haven't met yet. Creates (no intro_id) or updates (intro_id) a pending intro tied to the connector, so the offer doesn't evaporate in notes. Partial info is fine ('still waiting on their name'). When the intro lands: add the person to the network, then pass resolved_person_id here to graduate it (marks done).

Input Schema

NameRequiredDescriptionDefault
notesNoContext — where the offer happened, why it matters.
statusNowaiting (default: still missing info) · ready (ready to ask) · requested (intro asked) · done (it happened) · dropped.
intro_idNoExisting intro id (from list_intros) to update. Omit to create.
offered_onNoDate the intro was offered (YYYY-MM-DD).
target_orgNoTheir company/org, if known.
target_nameNoThe person being offered, as known so far — partial is fine.
missing_fieldsNoWhat's still needed before asking (e.g. ['name','linkedin']).
resolved_person_idNoThe real contact's person id once the intro happened — implies status done unless you pass a status explicitly.
connector_person_idNoWho offered the intro (their person id from search_people).

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 / resolved_person_id / description
      Previous value: -"The real contact's person id once the intro happened — implies status done."New value: +"The real contact's person id once the intro happened — implies status done unless you pass a status explicitly."
  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": {
      +        "intro": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "connector_name": {
      +              "type": "string"
      +            },
      +            "connector_person_id": {
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "notes": {
      +              "$ref": "#/properties/data/properties/intro/properties/target_org"
      +            },
      +            "resolved_person_id": {
      +              "$ref": "#/properties/data/properties/intro/properties/target_org"
      +            },
      +            "status": {
      +              "type": "string"
      +            },
      +            "target_name": {
      +              "type": "string"
      +            },
      +            "target_org": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "intro"
      +      ],
      +      "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.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=true, and the description's 'create or update' language is consistent with that. It adds real behavioral detail about the done-state transition via resolved_person_id. However, with destructiveHint=true on a zero-required-param upsert, it never says whether a partial update overwrites existing notes/status, which is the risky behavior an agent would need warned about.

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 sentences, front-loaded with the purpose, then the create/update mechanic, then the completion path. The parenthetical example ('still waiting on their name') earns its place by showing tolerance for partial data; nothing is redundant.

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?

With an output schema, full annotation coverage and 100% schema coverage, the definition supplies what an agent needs to pick the right mode and finish the workflow. The one gap is upsert merge behavior — whether unspecified fields are preserved on update — which matters for a 9-param tool with no required fields.

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 genuinely adds cross-parameter meaning: presence/absence of intro_id toggles create vs update, and resolved_person_id implies status=done unless status is passed explicitly. That mode-switching semantics is not obvious from the schema alone.

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 and resource ('Track a promised introduction') and immediately names its scope: someone offered to connect the user with a person they haven't met. It also distinguishes the create vs update modes inline via 'no intro_id' / 'intro_id', so an agent can tell it apart from list_intros and add_to_network without opening a schema.

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 explicit when-to-use conditions: capture an offer so it 'doesn't evaporate in notes', and update an existing record when an intro_id exists. It also sequences the follow-up workflow ('add the person to the network, then pass resolved_person_id here to graduate it'), naming the sibling call that must precede it.

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