READ, WRITE, or COST_BEARING — that determines both what scope it needs and whether it’s registered at all in a given deployment (see Configuration reference). A disabled class isn’t just blocked at call time — the tool never appears in the tool list, so a client can’t discover it either.
Two different things get called “idempotent” here, and they apply to disjoint sets of tools — don’t read one marker as the other:
- (idempotency_key) — the tool accepts an optional
idempotency_keyargument; retrying the same call with the same key returns the original result instead of repeating the effect. This is a best-effort, in-process safeguard against an agent retrying a call within one conversation — not a distributed guarantee (see Idempotency). Exactly five tools are in this set:create_account,create_contact,create_deal,log_activity,cx_start_run. - (idempotent) — the tool is naturally idempotent: repeating it converges on the same state rather than stacking up new records, which is exactly what the MCP
idempotentHintannotation advertises to your client. These tools do not accept anidempotency_key, and passing one anyway is silently dropped (the argument models ignore unknown fields) — so a retry genuinely re-runs the write and re-fires its side effects: stage history, notifications, follow-up workflows. If a retry must not double-fire those, guard it on your side.
Accounts
Contacts
Deals
Activities
Customer Intelligence — runs
Customer Intelligence — gates
A “gate” is a human-in-the-loop checkpoint a run pauses at until answered.Customer Intelligence — results & deliverables
A “result” is one target company within a run; a “deliverable” is a generated artifact about it (a research report, an outreach email draft, a stakeholder brief, an ROI model, etc.).Customer Intelligence — regeneration
These all call out to paid providers.Customer Intelligence — exports & config
Jobs
Every Customer Intelligence “spend redaction” mentioned above (and the superadmin-only tools) is based on the caller’s email domain matching the platform operator’s domain — it isn’t a scope, and no combination of
ak_/pat_ credential scopes can grant it. See Superadmin-gated tools.