22 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Add a disposition
dispositions.createwriteadmin only
Add a call outcome to the end of the list. Attach actions from the shared Actions registry to have picking it fire them automatically — sending an SMS, tagging the contact, dropping a voicemail, enrolling in a campaign, and so on. Those actions send real messages and spend the account's own Twilio/Mailgun credit every time an agent picks the outcome, so an outcome with a send attached is a recurring cost, not a label. Created switched on unless is_active is false.
Parameters
Field
Type
Required
Description
name
string
required
The outcome label, e.g. “Callback requested”.
description
string
optional
What this outcome means, in your own words. Shown as the hint on the outcome and read by the AI when it suggests an outcome from a call transcript.
color
string
optional
Hex chip color shown next to the outcome. Default: "#64748b"
is_active
boolean
optional
The “Show in the dialer” switch. true offers the outcome to agents after a call; false creates it switched off, so it can be set up (actions and all) before anyone can pick it. Default: true
actions
object[]
optional
Actions to run when an agent picks this outcome. Default: []
actions[].type
string
required
Action type from the shared registry, e.g. send_sms.
actions[].config
map of string → object
optional
The action's own settings — see the Actions registry for its fields. Default: {}
Over MCP the same operation is the tool dispositions_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a disposition
dispositions.deletewriteconfirmadmin only
Permanently delete a call outcome and the actions attached to it. Calls already logged against it keep their record; the outcome just stops being offered.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool dispositions_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
List call dispositions
dispositions.listread
List the call outcomes agents pick after a call — “Connected”, “Left voicemail”, “Not interested”, and any custom ones — in display order, with the actions each one fires.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
active_only
boolean
optional
true hides dispositions that have been switched off. Default: false
Over MCP the same operation is the tool dispositions_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a disposition
dispositions.updatewriteadmin only
Rename a disposition, recolor it, switch it on or off for the dialer, or replace the actions it fires. Omitted fields are left alone; supplying `actions` REPLACES the whole list.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The disposition to edit.
name
string
optional
New outcome label, e.g. “Callback requested”. Must be unique in the account.
description
string
optional
What this outcome means, in your own words. Shown as the hint on the outcome and read by the AI when it suggests an outcome from a call transcript.
color
string
optional
New hex chip color shown next to the outcome, e.g. “#64748b”.
is_active
boolean
optional
The “Show in the dialer” switch. false hides it from the dialer without deleting it; calls already logged against it keep their record.
actions
object[]
optional
REPLACES the whole list of actions this outcome fires. Some of these send real SMS or drop real voicemails on its own provider account every time an agent picks the outcome — pass [] to strip them.
actions[].type
string
required
Action type from the shared registry, e.g. send_sms.
actions[].config
map of string → object
optional
The action's own settings — see the Actions registry for its fields. Default: {}
Over MCP the same operation is the tool dispositions_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Authorize a provider connection
integrations.authorizereadadmin only
Get an account-bound browser link for OpenRouter, Google Cloud, DigitalOcean, Cloudflare or Resend authorization. A signed-in account manager must review and consent at the provider. Approval replaces the previous connection; future AI, email and cloud operations bill the connected provider account. This call grants no access and incurs no provider charges.
Over MCP the same operation is the tool integrations_authorize at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect an integration
integrations.connectwriteadmin only
Save this account's own credentials for a provider's single canonical connection, creating the connection or updating it. Named, multi-account, agency-managed, and verify-before-store providers (the tenant's own Stripe) are rejected here and must use their dedicated manager, so the exact connection is explicit and its keys are checked with the provider before anything is written. Secret fields are encrypted with AES-256-GCM before storage and can never be read back; OMIT a secret to keep the one already stored. Connecting Twilio also auto-creates the API Key + Voice app the softphone needs, connecting Mailgun reconciles the inbound route and delivery webhooks in the tenant's Mailgun account, and connecting Cloudflare verifies the token and turns on automatic DNS for custom domains. Charges from these providers bill to the tenant's own account.
Field key → value, e.g. {"account_sid":"AC…","auth_token":"…"}. Call integrations.get for the field list. Omit a secret to keep the stored one; a blank non-secret clears it.
Over MCP the same operation is the tool integrations_connect at https://app.chirply.io/api/mcp, same bearer token, same input.
Provider connection methods
integrations.connection_methodsreadadmin only
Read the first-party connection audit: OAuth availability, API-key alternatives, setup links and provider restrictions. Reports registered Cloudflare/Resend apps separately from customer consent. Makes no provider changes and reveals no credentials.
Over MCP the same operation is the tool integrations_connection_methods at https://app.chirply.io/api/mcp, same bearer token, same input.
Diagnose incoming email
integrations.diagnose_emailreadadmin only
Check, end to end, why replies to this account's email are or aren't arriving in Conversations, and report each link in the chain: the Mailgun connection, whether receiving is switched on, whether the domain's MX actually delivers to Mailgun, whether the inbound route exists, whether another route in the Mailgun account outranks it and calls stop() (which silently swallows every reply), whether the webhook signing key is stored, and whether mail Mailgun recently accepted for the domain actually matched that inbound route. Read-only — it inspects the Mailgun account and changes nothing. Costs nothing and sends nothing. Run integrations.test on Mailgun afterwards to repair whatever this finds.
Over MCP the same operation is the tool integrations_diagnose_email at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect an integration
integrations.disconnectwriteconfirmadmin only
Delete this account's single canonical connection to a provider, including its stored credentials. Named, multi-account, and agency-managed providers are rejected here and must be disconnected in their dedicated manager so the target is explicit. Everything that runs on a removed connection stops immediately — disconnecting Twilio kills calling and SMS, Mailgun kills email, OpenRouter kills the AI features.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool integrations_disconnect at https://app.chirply.io/api/mcp, same bearer token, same input.
Open an integration
integrations.getread
Fetch one provider's connection status plus the exact fields its connect form takes — use this before integrations.connect so you know which keys to send. Never returns a stored credential, only whether each secret is set. When manageOnly is set, integrations.connect will refuse this provider and manageHref names the screen that owns its credentials: agency-supplied connections, providers with named or multiple connections, and providers whose keys are verified with the provider before they are stored (the tenant's own Stripe).
Over MCP the same operation is the tool integrations_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Get the Zapier invite
integrations.get_zapier_inviteread
Return the Zapier invite link this account is offered — Chirply's own, or the agency's white-labelled integration where one has been set up — plus how many triggers, actions and searches it exposes. Some accounts are offered no link at all: an agency decides whether the client accounts it creates are shown Zapier, and when that decision is off this reports so instead of returning a URL. That is a decision about what Chirply displays, NOT an access control — it revokes nothing and disconnects nothing, and anyone already holding the link keeps using the integration normally. Reading this costs nothing, connects nothing and grants nobody access on its own: after accepting an invite, an owner or admin still has to approve the connection to a specific account from inside Zapier, and Zaps then run against the REST API, which is plan-gated.
Over MCP the same operation is the tool integrations_get_zapier_invite at https://app.chirply.io/api/mcp, same bearer token, same input.
List integrations
integrations.listread
List every provider this account can connect — telephony (Twilio), email (Mailgun, Resend), AI (OpenRouter, ElevenLabs, fal.ai, Replicate, Firecrawl), commerce and marketing (the tenant's own Stripe, Shopify, Klaviyo, BookFunnel, GoHighLevel, Outscraper, PayPal, Facebook & Instagram), and infrastructure (Cloudflare for automatic DNS, Supabase app backends) — with whether it's connected, whether it's fully configured, its last status, and the callback URLs it needs. Stored credentials are NEVER returned — secrets are reported only as set/not set.
Over MCP the same operation is the tool integrations_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Request access
integrations.request_accesswriteconfirm
Ask the Chirply team to switch on an integration that isn't open to everyone yet — the “Request access” button on a limited-availability tile. Meta (Facebook / Instagram) is the case this exists for: until Facebook finishes reviewing Chirply it only works for accounts we have added to our developer list, so connecting it first requires a human at Chirply to add you. This FILES A REAL SUPPORT TICKET on behalf of the signed-in user AND EMAILS THE CHIRPLY TEAM, then answers back through Support. Asking twice is harmless: while a ticket for the same provider is still open it reports that and files nothing new — which is exactly why this exists rather than support.file_bug, whose free-text title would defeat that de-duplication and leave the team with a pile of identical requests.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
provider
string
required
Which provider to ask for, by its id from integrations.list — e.g. 'meta'. Providers that are generally available have nothing to request and are refused.
Over MCP the same operation is the tool integrations_request_access at https://app.chirply.io/api/mcp, same bearer token, same input.
Test an integration
integrations.testwriteadmin only
Verify this account's single canonical stored connection against the provider with a FREE, read-only call (account metadata, a domain list, a token check — it never sends a message, generates content, or spends the account's balance), then record the outcome on that connection (connected / error). Named, multi-account, agency-managed, and verify-before-store providers (the tenant's own Stripe) are rejected here and must be tested in their dedicated manager. Testing Mailgun also REPAIRS inbound email — it re-creates the missing route or webhook and re-checks the domain's MX. A dead Facebook grant is stamped 'needs_reauth' so the UI offers Reconnect. BookFunnel is webhook-only with no credential to check, so its result reports when the last reader event arrived rather than claiming verification.
Over MCP the same operation is the tool integrations_test at https://app.chirply.io/api/mcp, same bearer token, same input.
Account settings
org.getread
Read this account's profile: its name, URL slug, status, what kind of account it is (a plain Account, or a White-Label / Reseller / Agency Partner once those upgrades are bought), its entitlements, its own saved branding, the brand it is actually shown under (`effective_brand` — a white-label agency's own, its agency's for a client account, otherwise the platform's, with `white_labelled`), and its seat usage — members, owners, and pending invites.
Over MCP the same operation is the tool org_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Workspaces
org.listread
List every account the signed-in person can switch into — what the account picker in the sidebar shows — with each one's name, kind (a top-level account or a client account under one), the caller's role in it, and which one is currently active. org.get only ever describes the ACTIVE account, so this is the only way to find out what else exists. Soft-deleted (cancelled) accounts are left out, exactly as the picker leaves them out. Read-only.
Over MCP the same operation is the tool org_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Switch account
org.switchwrite
Move the signed-in person into a different account, the way picking one from the sidebar's account switcher does. Everything afterwards — records, settings, billing, every later action — belongs to the new account, so this changes what all subsequent work operates on. Only accounts the person is actually a member of are accepted, and a superadmin who was viewing a tenant stops doing so. THE APP MUST BE RELOADED for the change to show: the switch is stored in a cookie, but pages already open still hold the previous account's data in memory. Changes no records in either account.
Parameters
Field
Type
Required
Description
org_id
string (uuid)
required
The account to move into, from org.list. Must be one the caller belongs to.
Over MCP the same operation is the tool org_switch at https://app.chirply.io/api/mcp, same bearer token, same input.
Zapier for your clients
zapier.get_client_settingread
Read the one Zapier decision an agency makes for the client accounts it creates, and what it currently resolves to: off (no Zapier link on their screens), Chirply's own invite link, or the agency's white-labelled integration on the $50/month self-serve tier or the $100/month plus one-time $999 done-for-you tier. Also reports whether Chirply still owes a done-for-you setup and what the agency's own invite URL is. Reads configuration only — it changes nothing, charges nothing, and does not affect any Zap that is already running.
Over MCP the same operation is the tool zapier_get_client_setting at https://app.chirply.io/api/mcp, same bearer token, same input.
Zapier business recipes
zapier.list_recipesread
Read three practical Zapier build guides: assigning new inquiries, maintaining a booking ledger and handing won deals to delivery. Each includes field mapping, deduplication and a test-before-enable checklist. These are instructions, not installed Zaps. Reading them creates nothing, enables nothing, sends nothing and costs nothing; executing configured actions later may trigger account workflows or send data to other apps.
Over MCP the same operation is the tool zapier_list_recipes at https://app.chirply.io/api/mcp, same bearer token, same input.
Save your Zapier invite link
zapier.set_branded_appwriteadmin only
Record the agency's OWN Zapier integration — its name and the public-invite URL from their own Zapier developer account — so their client accounts are shown that link instead of Chirply's. Only accepted on a paid Zapier white-label tier, because on the free modes there is no integration of the agency's for the link to point at. Costs nothing and sends nothing; it changes which URL Chirply prints on a screen. The URL must be a zapier.com public-invite link, which is what Zapier's own Sharing screen gives you.
Parameters
Field
Type
Required
Description
invite_url
string
required
The agency's own integration's public-invite URL, copied from Zapier's Sharing screen — https://zapier.com/developer/public-invite/<id>/<key>/. Pass an empty string to clear it, which stops client accounts being offered any link until a new one is saved.
app_name
string
optional
What the agency's integration is called inside Zapier, used in the on-screen wording. Omit to leave it unchanged.
Over MCP the same operation is the tool zapier_set_branded_app at https://app.chirply.io/api/mcp, same bearer token, same input.
Save Zapier choice
zapier.set_client_modewriteconfirmowner only
Set the single Zapier choice an agency makes for the client accounts it creates. THIS SPENDS REAL MONEY on two of the three values. 'off' is free and shows no Zapier link on any client account's screens — it hides a link and nothing more: it does not revoke anything, does not disconnect existing Zaps, and anyone who already has the invite link can still use the integration. 'self_serve' COMMITS THE AGENCY TO $50 PER MONTH to white-label the integration and do all of the setup themselves in their own Zapier developer account, with Chirply providing instructions and no other help. 'done_for_you' COMMITS THEM TO $100 PER MONTH PLUS A ONE-TIME $999 SETUP FEE — $1,099 on the first charge — for Chirply to build the integration in their Zapier developer account and maintain it. The Stripe products for both tiers are not created yet, so this records the decision, marks it awaiting billing, and files a support ticket for a human to complete the sale; it does not charge a card by itself.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
mode
"off" | "self_serve" | "done_for_you"
required
What client accounts get. 'off' — no Zapier link on their screens, free, and the default under a white label. 'self_serve' — $50/month, the agency white-labels the integration and does every part of the setup themselves in their own Zapier developer account. 'done_for_you' — $100/month plus a one-time $999 setup fee, Chirply builds it in their Zapier account and maintains it.
accept_charges
boolean
optional
Required to be true for the two paid values, as an explicit acknowledgement of the recurring price and any one-time setup fee. Ignored for 'off', which is free. Default: false
Over MCP the same operation is the tool zapier_set_client_mode at https://app.chirply.io/api/mcp, same bearer token, same input.
Zapier setup instructions
zapier.setup_guideread
Return the step-by-step instructions for building a white-labelled Zapier integration in the agency's OWN Zapier developer account: the account to create, the OAuth endpoints and scopes to configure against Chirply, where the catalog of triggers, actions and searches comes from, the branding steps, and where to paste the resulting invite link back. This is what the $50/month self-serve tier buys — Chirply supplies the information and does none of the work, does not submit the integration for review, does not maintain it, and does not support it. Reading it costs nothing and changes nothing.