Skip to main content
Glama

Create personal contact

create_contact_personal

Save a person to the caller's OWN contact book (never a company CRM — for a company contact use erp_create_contact, for a lead create_lead). Provide 'name' and/or 'phones'/'emails'; optional 'company', 'position', 'note' and the person card: 'aliases' (other spellings), 'birthday' (YYYY-MM-DD, or --MM-DD when the year is unknown — keeps ONE yearly birthday reminder), 'how_met', 'tags', 'summary' (one line «who this is»), 'starred', 'keep_in_touch_days' (7/30/90/180/365) and 'relations' [{contact_id, relation}] — what THIS person is to an existing contact (spouse, partner, parent, child, sibling, relative, friend, colleague, manager, report, introduced_by, introduced, other). Same phone/email = merged into the existing card (deduplicated=true). A similar NAME is never merged: the card is created and 'possible_duplicates' lists look-alikes — call find_contact_personal first when unsure. Undo with delete_contact_personal. CONFIRMATION: this tool runs immediately when the caller asks for it — it writes only their own record, and they can undo it from this same surface, so the request is taken as the instruction. You get an ordinary result, not a plan_token. Everything destructive, outbound or financial still proposes and waits.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "create_contact_personal"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNo
noteNo
tagsNo
emailsNo
phonesNo
aliasesNo
companyNo
how_metNo
starredNo
summaryNo
birthdayNoYYYY-MM-DD, or --MM-DD when the year is unknown; null clears.
positionNo
relationsNo
keep_in_touch_daysNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare it is a non-read-only, non-destructive, closed-world write; the description goes well beyond that with dedup semantics ('Same phone/email = merged into the existing card'), the anti-dedup rule for similar names and the resulting 'possible_duplicates' output, and the undo path. It also resolves the biggest behavioral ambiguity for a write tool — that it executes immediately without a plan_token, with an explicit rationale and a contrast against destructive/outbound/financial tools.

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 critical scoping sentence is front-loaded and the whole thing is one dense paragraph with no filler sentences. It is, however, long and parenthesis-heavy, and the closing CONFIRMATION passage restates the execution policy at more length than strictly needed.

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 14-parameter, zero-required create tool with no output schema, this covers the essentials: the minimum required input ('name' and/or 'phones'/'emails'), the write behavior, the merge/duplicate outcome fields, and how to reverse it. Nothing an agent needs to call it safely is missing.

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?

Schema description coverage is only 7%, so the description carries nearly the full burden — and it does, covering name, phones, emails, company, position, note, aliases, how_met, tags, summary, starred, keep_in_touch_days (with its 7/30/90/180/365 values) and relations. It adds meaning the schema cannot, e.g. the '--MM-DD' birthday format for unknown years and its side effect of keeping exactly one yearly reminder, plus the directionality of relations ('what THIS person is to an existing contact') and the allowed relation values.

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 ('Save a person to the caller's OWN contact book') and immediately delimits scope against named siblings: 'never a company CRM — for a company contact use erp_create_contact, for a lead create_lead'. An agent can choose correctly without opening any 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 (own contact book), explicit when-not-to-use with the exact alternative tool for each case, and a pre-check rule ('call find_contact_personal first when unsure'). It also names the undo path (delete_contact_personal), covering the full lifecycle.

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