CRM v2: people and companies for agents and integrations

Status: on by default. Per-org switches (an org override turns any off; its routes then answer 404 and its tools are not registered):

SwitchGives
crm.api.enabledAPI keys and MCP may reach the crm family at all (sessions do not need it)
crm.v2.recordsrecords, flags, tags, notes, search, external keys, upsert, batch upsert; 10 record tools
crm.v2.lifecycleslifecycles, applicability rules, transitions, history, overdue (stage SLA); 7 tools
crm.v2.relationshipsrelationship types, relationships, neighbors, paths; 11 tools
crm.v2.webhooksthe ten crm.* webhook events; 1 read-only tool

A runner key can never name crm. Export, import, segment materialize, mailer sync, erase and registering a webhook receiver stay session only.

The rules that matter

  • Every write is retry-safe: Idempotency-Key header (or body clientRequestId); same key + same body replays (Idempotent-Replayed: true), same key + different body is 422 idempotency_key_reused.
  • Use your own ids: PUT /v1/orgs/{orgId}/crm/external/{kind}/{externalKey} creates or updates THE record holding that key.
  • 409 crm_duplicate_record names the existing record in details.existing: update it or ask; never guess.
  • Flags and tags you send are set exactly; POST .../flags adds or removes.
  • Changed-since sync: GET .../crm/records?kind=person&updatedSince=...&includeArchived=true, keep nextCursor.
  • Batch: POST .../crm/records:batchUpsert (up to 100, per-item results).

Reference

  • API reference: tag crm in /v1/openapi.json.
  • MCP tools: the crm_* record, lifecycle, relationship and webhook tools, see the MCP tool reference.
  • Agent skill: CRM skill.
  • Runbook and design: CRM design, "CRM events" in webhooks, switch rows in feature switches.

We use essential cookies to keep you signed in. See our Privacy Policy for details.