Skip to main content

Scopes

Expedify uses coarse, least-privilege scopes of the form {resource}:{action}. A key holds a set of them; every operation declares the one it needs. Default-deny: no scope → no access. This model is shared by the REST API and MCP.

write / author / run imply read on the same resource — you never grant the read counterpart separately.

CRM

Per entity — contacts, companies, deals, tasks, notes, activities, products, deal_payments, deal_payment_schedules:

ScopeGrants
<entity>:readView and list; get; list associations
<entity>:writeCreate, update, delete; link / unlink (implies read)

Associations require the scope on both sides — linking a contact to a company needs contacts:write and companies:write.

Generic records

The entity-agnostic MCP toolssearch_records, get_record, create_record, update_record, delete_record, link_records, and batch_*_records, where the entity is a parameter rather than part of the path — are gated by one coarse pair instead of the per-entity scopes:

ScopeGrants
records:readSearch/get any CRM record of any entity type
records:writeCreate/update/delete/link any CRM record, including batch writes (implies read)
REST batch uses the per-entity scope

The REST batch endpoints (POST /v1/objects/{entity}/batch/*) name the entity in the path, so they take the ordinary {entity}:writenot records:write. Only the entity-agnostic MCP tools above use the records:* pair.

Workflows

ScopeGrants
workflows:readList nodes, read/list workflows, validate, read executions
workflows:authorCreate, edit, import, activate/deactivate, delete (implies read)
workflows:runRun and test workflows and single nodes (implies read)

author and run are separate so a key can be "build only" or "run only". Runs are additionally confirm-gated.

Knowledge Base

ScopeGrants
knowledge:readList KBs, read documents, search, ask (RAG)
knowledge:writeCreate/update/delete KBs and documents (implies read)

Analytics

ScopeGrants
analytics:readList/read datasets, charts, dashboards; run queries/charts; NL→SQL; inspect schema
analytics:writeCreate/update/delete datasets, charts, and dashboards (implies read)

Channels

ScopeGrants
templates:read / templates:writeList/read marketing templates; create, update, delete (implies read)
assets:read / assets:writeList/read marketing assets; upload, update, delete (implies read)
segments:read / segments:writeList/read segments, evaluate & preview audiences; create, update, delete (implies read)
campaigns:read / campaigns:writeList/read campaigns; create, update, cancel (implies read)
campaigns:sendLaunch campaigns — real, mass, billable outbound (implies read)
communications:readRead voice calls, WhatsApp conversations & messages, and SMS activity logs (read-only)

campaigns:send is deliberately separate from campaigns:write — a key can build and schedule campaigns without ever being able to fire one. Sends are additionally confirm-gated.

Settings

ScopeGrants
integrations:readBrowse the integration catalog and list/read the org's connected integrations (never exposes credentials)
integrations:writeRun live connection tests — makes a real outbound call to the provider with stored credentials (implies read)
webhooks:readList/read incoming & outgoing webhooks, their logs, and event types
webhooks:writeCreate, update, delete, and test webhooks — returns generated secrets once; outgoing URLs are SSRF-validated (implies read)

Automation (Blueprints)

ScopeGrants
blueprints:readRead/list a workflow's visual Blueprint and validate it
blueprints:writeCreate, replace, and clear a workflow's Blueprint (implies read)
ScopeGrants
search:readCross-entity find-by-name over workflows, charts, dashboards, and datasets

Choosing scopes

Grant the narrowest set that does the job:

  • A reporting integration → the relevant …:read scopes.
  • A data-entry integration → add the …:write it needs.
  • An automation runnerworkflows:run (+ any entity reads it needs).

You pick these in the scope picker when minting a key (Settings → API Keys). Each operation in this reference and each tool in the MCP catalog states its required scope.