Skip to main content
Glama

People: Import contacts from a file

import_contacts_personal
Destructive

Import people into the caller's OWN contact book from a file THEY exported themselves: vCard .vcf (phone, Google Contacts, iCloud, Outlook), a CSV (Google Contacts / Outlook / any sheet with name, phone, e-mail columns) or LinkedIn Connections.csv. Two steps. mode=preview (DEFAULT, writes no contact): pass the file as 'content_base64' (+ 'filename', ≤5 MB) or 'document_id' of a file the person uploaded via request_upload_link / upload_document_base64; 'format' auto|vcard|csv|linkedin. Returns counts — new / merge (same phone, e-mail or an earlier import of the same person) / unchanged / similar (same name, different person maybe) / invalid —, the first rows, LinkedIn job changes («Олег: CTO → CEO у X») and a 'token'. Show the person the counts. mode=apply with that 'token' saves it (one confirmation); 'similar_names' create (default: a separate card, listed in possible_duplicates) | skip | merge. Re-importing the same file changes nothing. Birthdays get one yearly reminder each. CONFIRMATION: this tool is PROPOSED, never performed directly. You get status='confirmation_required' with an action_id and a plan_token, and the write happens only after confirm_action.

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": "import_contacts_personal"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNopreview
tokenNo
formatNo
sampleNo
filenameNo
document_idNo
similar_namesNo
content_base64No

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only flag destructiveHint=true and readOnlyHint=false; the description adds the real behavior an agent needs: preview performs no write, apply requires one confirmation, re-importing the same file is a no-op, and similar_names=merge can consolidate cards. It further discloses the confirmation gate (status='confirmation_required', action_id, plan_token, confirm via confirm_action) and the 5 MB limit, none of which the annotations convey.

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-loads purpose, then the two-step procedure, then behavior, then the confirmation caveat, so the critical routing information comes first. It is dense and long as a single block, and the 'Returns counts — new / merge / unchanged / similar / invalid' enumeration is verbose, but nearly every clause carries operational information.

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 an 8-parameter destructive import tool with no output schema, the description covers the full lifecycle: input acquisition, preview results, the classification categories an agent must relay to the user, apply semantics, duplicate handling, and the mandatory confirmation step. Nothing an agent needs in order to invoke it safely is missing.

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?

With 0% schema description coverage, the description carries the burden well: it explains mode (preview default vs apply + token), content_base64 vs document_id as alternative file sources, filename, format (auto|vcard|csv|linkedin), and all three similar_names values with the default. The only gap is the 'sample' parameter, which is only obliquely referenced as 'the first rows' without stating that it controls how many rows are returned.

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 (import people into the caller's OWN contact book) and enumerates the accepted file types: vCard .vcf, CSV, LinkedIn Connections.csv. It is immediately distinguishable from create_contact_personal or merge_contacts_personal, which are single-record tools.

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?

Explicitly prescribes a two-step flow: preview first (the default, writing nothing), then apply with the returned token. It also names the sibling tools that produce the required input (request_upload_link / upload_document_base64 for document_id), so the agent knows how to obtain the file reference rather than guessing.

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