51 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 number to campaign
a2p.add_campaign_numberwriteadmin only
Put one of the organization's phone numbers behind a registered campaign. From then on texts sent from that number route through the campaign's Messaging Service, which is what makes them A2P-compliant and stops US carriers filtering them. A Messaging Service holds at most 400 numbers.
Over MCP the same operation is the tool a2p_add_campaign_number at https://app.chirply.io/api/mcp, same bearer token, same input.
Import existing SMS brand
a2p.adopt_brandwriteadmin only
Link this account to an A2P 10DLC brand that already exists on the organization's own Twilio account, instead of registering a second one. Reads the brand from Twilio to confirm it is real and takes its live carrier status; registers nothing and charges nothing — no $4.50 registration fee and no $41.50 vetting fee. The imported brand is read-only afterwards: its status is refreshed from Twilio, and a2p.submit_brand and a2p.request_vetting refuse it rather than charging again for a registration the organization already owns. Brand SIDs come from a2p.discover_existing. Refused when this account already registered its own brand through Chirply, because importing over that would orphan a registration somebody paid for.
Parameters
Field
Type
Required
Description
brand_sid
string
required
The Twilio BrandRegistration SID to import, starting BN. Get it from a2p.discover_existing; it has to exist on this organization's own connected Twilio account.
Over MCP the same operation is the tool a2p_adopt_brand at https://app.chirply.io/api/mcp, same bearer token, same input.
Import existing Messaging Service
a2p.adopt_messaging_servicewriteadmin only
Link this account to a Twilio Messaging Service that already exists on the organization's own account, so its phone numbers can be routed through it. When the service carries a 10DLC campaign, that campaign is mirrored here as well with the status Twilio reports — which is what replaces the misleading 'No campaigns yet' on the texting registration screen for a customer who registered before arriving. Creates nothing in Twilio, submits nothing to the carriers and costs nothing, in particular no $15 campaign fee. The imported campaign is read-only afterwards: a2p.submit_campaign and a2p.update_campaign refuse it. Safe to run again on the same service — it re-reads Twilio and refreshes the stored status rather than creating a second record.
Parameters
Field
Type
Required
Description
service_sid
string
required
The Twilio Messaging Service SID to import, starting MG. Get it from a2p.discover_existing; it has to exist on this organization's own connected Twilio account.
Over MCP the same operation is the tool a2p_adopt_messaging_service at https://app.chirply.io/api/mcp, same bearer token, same input.
Fill campaign from the kit
a2p.apply_kit_to_campaignwriteadmin only
Rewrite an A2P campaign draft's description, opt-in flow, sample messages, policy links and confirmation text from the saved answers and the already-published opt-in site. Use it after editing the answers when the pages themselves have not changed. Only ever touches a draft or a rejected campaign — one already accepted by the carriers keeps the wording they reviewed. The campaign type is set too, but only once the brand is approved and the campaign already has a Messaging Service through which its real eligibility can be read; before that it is left blank rather than guessed, because an ineligible code looks answered and is rejected. Nothing is submitted and nothing is charged.
Parameters
Field
Type
Required
Description
campaign_id
string (uuid)
optional
Which campaign draft to fill in. Defaults to the one this kit generated, or the account's only editable draft.
Over MCP the same operation is the tool a2p_apply_kit_to_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Send a number through an imported service
a2p.attach_number_to_servicewriteconfirmadmin only
Route one of the organization's phone numbers through an imported Twilio Messaging Service, so its texts send under the A2P registration the organization already holds on its own Twilio account. THIS CHANGES HOW REAL OUTBOUND MESSAGES LEAVE that number, immediately and for every message after it. Unlike a2p.add_campaign_number it does not require a campaign registered through Chirply, which is the whole point — an account that completed 10DLC before it arrived here has no such campaign, and until now could not get its numbers behind its own verified service at all. A number belongs to exactly one Messaging Service, so attaching one that already sits on another service MOVES it. The service must have been imported first with a2p.adopt_messaging_service, and a Messaging Service holds at most 400 numbers. Nothing is charged.
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
service_sid
string
required
The Twilio Messaging Service SID (starting MG) to send through. It must already have been imported with a2p.adopt_messaging_service, or belong to a campaign registered through Chirply.
phone_number_id
string (uuid)
required
This account's id for the phone number — not the Twilio SID and not the phone number itself.
Over MCP the same operation is the tool a2p_attach_number_to_service at https://app.chirply.io/api/mcp, same bearer token, same input.
Texting setup progress
a2p.autopilot_statusreadadmin only
Where the unattended registration run has got to: which link of the chain it is on, whether it is working, waiting on a carrier review, blocked on a human, or finished, and the plain-language reason. Read-only, and it never contacts Twilio — safe to poll while waiting out a review.
Over MCP the same operation is the tool a2p_autopilot_status at https://app.chirply.io/api/mcp, same bearer token, same input.
New messaging campaign
a2p.create_campaignwriteadmin only
Start a new A2P 10DLC campaign as a draft. This only creates a row in this account — it does NOT create anything in Twilio, nothing reaches the carriers, and nothing is charged. The Twilio Messaging Service the campaign's numbers will send through is created later, the first time something needs it (a2p.list_use_cases or a2p.submit_campaign). Fill the draft in with a2p.update_campaign, then a2p.submit_campaign, which is the step that costs money.
Parameters
Field
Type
Required
Description
name
string
required
An internal name for this campaign, e.g. 'Appointment reminders'.
Over MCP the same operation is the tool a2p_create_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Stop sending a number through a service
a2p.detach_number_from_servicewriteconfirmadmin only
Take a phone number off whatever Twilio Messaging Service it currently sends through. Its texts immediately go back to sending from a bare From number, which US carriers routinely filter or block outright — do this only when moving the number elsewhere or deliberately stopping its US texting. Nothing is charged and no registration is cancelled; only this one number's sending path changes.
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
phone_number_id
string (uuid)
required
This account's id for the phone number to take off its Messaging Service.
Over MCP the same operation is the tool a2p_detach_number_from_service at https://app.chirply.io/api/mcp, same bearer token, same input.
Find existing Twilio registrations
a2p.discover_existingreadadmin only
Read what US texting registration the organization's own Twilio account ALREADY has: its A2P 10DLC brand registrations with their carrier status and trust score, its Messaging Services, and the 10DLC campaign registered on each service. Strictly read-only — it issues GET requests to Twilio and nothing else, so it registers nothing with the carriers, submits nothing for review and costs nothing. Use it before a2p.submit_brand or a2p.submit_campaign on any account that connected an established Twilio account, because those two do spend real money and would be paying to register a duplicate. It takes a few seconds: Twilio caps campaign lookups at one per second, so at most ten Messaging Services are checked for campaigns per call and any beyond that are returned without their campaign details.
Over MCP the same operation is the tool a2p_discover_existing at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate opt-in site
a2p.generate_sitewriteconfirmadmin only
Build and PUBLISH four public web pages from the saved answers — a sign-up page with an unticked SMS consent checkbox, a privacy policy carrying the mobile-data clause carriers require, terms carrying the full messaging disclosures, and a contact page — then write the matching description, opt-in flow, sample messages and policy links onto the A2P campaign draft (and its campaign type, once the brand is approved and its real eligibility can be read). The pages go live immediately at the account's own domain when one is given, or on its Chirply address otherwise, and are visible to anyone with the URL. RUNNING IT AGAIN OVERWRITES those four pages, discarding any edits made to them in the page builder. Free: nothing here contacts Twilio or the carriers and nothing is charged — submitting the campaign, which costs $15, is still a separate deliberate step (a2p.submit_campaign).
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
domain_id
string (uuid)
optional
A connected, active domain to publish on — get ids from domains.list. Strongly preferred: carriers trust a business's own domain over a shared platform address. Omit to publish on the account's Chirply address.
mount_path
string
optional
One URL segment to publish below when the domain root is already serving another site, e.g. 'text-messages'. Ignored when the root is free.
sync_campaign
boolean
optional
Also write the answers onto the campaign draft. Turn off to publish the pages only. Default: true
campaign_id
string (uuid)
optional
Which campaign draft to fill in. Defaults to the account's only editable one, creating a draft if there is none. Campaigns already submitted to the carriers are never rewritten.
Over MCP the same operation is the tool a2p_generate_site at https://app.chirply.io/api/mcp, same bearer token, same input.
SMS brand registration
a2p.get_brandreadadmin only
Read the organization's A2P 10DLC brand: its registration status with the carriers, its trust score (which sets how many texts a day it can send), and whether a sole-proprietor phone verification is still outstanding.
Over MCP the same operation is the tool a2p_get_brand at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a messaging campaign
a2p.get_campaignreadadmin only
Read one A2P 10DLC campaign in full: its use case, the description and opt-in wording registered with the carriers, its sample messages, its status, and anything still missing before it can be submitted.
Over MCP the same operation is the tool a2p_get_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Opt-in site answers
a2p.get_kitreadadmin only
Read the questionnaire behind this account's generated opt-in website, and the addresses it published — the sign-up page, privacy policy, terms and contact page that carrier reviewers open when judging an A2P 10DLC campaign. Read-only; returns nulls when nothing has been generated yet.
Over MCP the same operation is the tool a2p_list_campaigns at https://app.chirply.io/api/mcp, same bearer token, same input.
Imported Messaging Services
a2p.list_messaging_servicesreadadmin only
List the Twilio Messaging Services this account has imported from the organization's own Twilio account, each with the 10DLC campaign status and number count last read from Twilio. These are the services a2p.attach_number_to_service can route a phone number through. Read-only, and it reads only what is already stored here — it does not contact Twilio, so it is safe to poll.
Over MCP the same operation is the tool a2p_list_messaging_services at https://app.chirply.io/api/mcp, same bearer token, same input.
Available campaign types
a2p.list_use_caseswriteadmin only
List the campaign use cases this organization's brand is actually eligible for, with each one's monthly carrier fee and whether it needs extra carrier approval. Always read this before setting a campaign's use case — the list depends on the brand's type and trust score, so a hardcoded guess gets rejected. NOT READ-ONLY despite the name: the eligibility list has to be queried through a Messaging Service, so if this campaign does not have one yet this CREATES a real Messaging Service in the organization's own Twilio account and saves it to the campaign. Twilio does not charge for a Messaging Service, but the resource is real, it persists, and it is the one the campaign's numbers will later send through. Nothing reaches the carriers and no registration fee is incurred here — that is a2p.submit_campaign.
Over MCP the same operation is the tool a2p_list_use_cases at https://app.chirply.io/api/mcp, same bearer token, same input.
Texting registration checklist
a2p.preflightreadadmin only
The whole path to sending registered business texts in one read — business profile, A2P messaging profile, opt-in site, brand, campaign and the numbers behind it — each marked done, waiting on a review, still to do, or blocked, with the reason and where to go next. Read-only: it reports what is already stored and never contacts Twilio, so it is safe to poll.
Over MCP the same operation is the tool a2p_refresh_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove number from campaign
a2p.remove_campaign_numberwriteconfirmadmin only
Take a phone number off a campaign. Its texts immediately go back to sending unregistered, which US carriers routinely filter or block — do this only when moving the number to a different campaign.
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 a2p_remove_campaign_number at https://app.chirply.io/api/mcp, same bearer token, same input.
Buy secondary vetting
a2p.request_vettingwriteconfirmadmin only
Order third-party secondary vetting for the SMS brand. COSTS $41.50 on the organization's own Twilio account, NON-REFUNDABLE, and it cannot be undone or repeated. In exchange the brand gets a trust score, which raises how many messages a day the carriers will accept from it. Only worth doing for a brand registered without vetting that is now hitting its daily limit.
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 a2p_request_vetting at https://app.chirply.io/api/mcp, same bearer token, same input.
Resend owner verification text
a2p.resend_verificationwriteconfirmadmin only
Send the sole-proprietor verification text again. This sends a REAL text message to the business owner's personal mobile, and they must reply YES to it. Only applies to sole-proprietor brands. The whole verification expires 30 days after the brand was created.
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 a2p_resend_verification at https://app.chirply.io/api/mcp, same bearer token, same input.
Save opt-in site answers
a2p.save_kitwriteadmin only
Save the answers used to write this account's opt-in page, privacy policy, terms and A2P campaign wording. Saving alone changes nothing a visitor or a carrier can see — a2p.generate_site is what builds and publishes the pages. Omitted fields keep their current value. Fields left blank on the business profile (legal name, address, notification email) are filled in from it at generate time rather than asked for twice.
Parameters
Field
Type
Required
Description
business_name
string
optional
The public-facing business name a recipient would recognise.
program_name
string
optional
The sender name that opens every text, e.g. 'Acme Home'. Usually the business name.
what_you_do
string
optional
One specific sentence about what the business actually does. Goes on the sign-up page and opens the campaign description a carrier reads, so 'we help people' gets rejected and 'we repair residential HVAC across Phoenix' does not.
What the workspace texts people about. At least one is required to generate. Options: 'appointment_reminders' (Appointment reminders), 'order_updates' (Order and delivery updates), 'account_alerts' (Account and billing notices), 'customer_care' (Answering customer questions), 'lead_followup' (Following up with new enquiries), 'requested_info' (Sending something they asked for), 'promotions' (Offers and announcements).
How consent is collected BESIDES the web form we generate, which is always included. Each one adds a sentence to the campaign's message flow. Options: 'checkout' (When they buy or book), 'keyword' (By texting a keyword), 'verbal' (Verbally, in person or on a call), 'paper' (On a paper form), 'existing_customer' (As part of doing business).
keyword
string
optional
The word people text to join, when opt_in_methods includes 'keyword'. Letters and digits only.
frequency
"varies" | "transactional" | "monthly" | "weekly"
optional
How often the program sends. Carriers require this to be disclosed on the form and in the terms. Options: 'varies' (It varies), 'transactional' (Only when something happens on their order or appointment), 'monthly' (About 2–4 a month), 'weekly' (About one a week).
support_email
string
optional
A monitored email address shown on the contact and policy pages. Required to generate.
support_phone
string
optional
A phone number shown on the contact page.
website_url
string
optional
The account's existing website, if any. Linked from the generated pages.
address_lines
string[]
optional
Postal address shown on the contact page. Taken from the Twilio business profile when left empty.
has_embedded_links
boolean (or null)
optional
Whether the texts contain links. Leave unset to derive it from the chosen programs — declaring no links and then sending one can get a brand suspended.
has_embedded_phone
boolean (or null)
optional
Whether the texts contain phone numbers. Leave unset to derive it from the chosen programs.
custom_samples
string[]
optional
Real example messages to submit instead of the generated ones. Two or more, each at least 20 characters, each showing how to opt out.
theme_preset
string
optional
Theme preset id for the generated site. See funnels.list_theme_presets.
Over MCP the same operation is the tool a2p_save_kit at https://app.chirply.io/api/mcp, same bearer token, same input.
Set up texting for me
a2p.start_autopilotwriteconfirmadmin only
Run the whole US texting registration end to end, unattended. From an account that has done nothing at all it will: adopt the Twilio business profile, submit the business details for review, register the A2P messaging profile, publish the opt-in website and policy pages, register the brand, write and register the campaign, and finally put the account's phone numbers behind it — each step starting automatically as the previous review is approved, over the days or weeks the carriers take. IT SPENDS THE ORGANIZATION'S OWN MONEY: Twilio bills their Twilio account $4.50 for the brand and $15 for the campaign, both non-refundable and charged even if the carriers reject. Nothing is charged unless approve_spend is true; without it the run still does everything free and stops before the first charge. It stops and asks for a human whenever a fact is missing, a review is rejected, the Twilio Console business profile does not exist yet (Twilio has no API for creating that one), or a sole proprietor has not replied YES to Twilio's verification text.
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
approve_spend
boolean
optional
Permission to let the run charge the organization's own Twilio account $4.50 for brand registration and $15 for campaign registration, both non-refundable and billed even on rejection. False runs every free step and then waits. Default: false
owner_mobile_e164
string
optional
Sole proprietors only: the owner's personal mobile in E.164, which Twilio texts and which the owner must answer YES to within 24 hours. It cannot be a Twilio or other CPaaS number, and Twilio permits each mobile on at most three registrations ever.
Over MCP the same operation is the tool a2p_start_autopilot at https://app.chirply.io/api/mcp, same bearer token, same input.
Pause texting setup
a2p.stop_autopilotwriteadmin only
Stop the unattended registration run and withdraw its permission to spend, so nothing further is submitted to the carriers and nothing further is charged to the organization's Twilio account. Anything already submitted keeps its own course — a registration under carrier review cannot be recalled — and its status goes on being tracked. Deliberately not gated behind a confirmation: stopping is the safe direction.
Over MCP the same operation is the tool a2p_stop_autopilot at https://app.chirply.io/api/mcp, same bearer token, same input.
Register SMS brand
a2p.submit_brandwriteconfirmadmin only
Register the organization as an A2P 10DLC brand with The Campaign Registry, which US carriers require before any business texting. COSTS REAL MONEY on the organization's own Twilio account: $4.50 to register, plus $41.50 for secondary vetting unless skipped. Both are NON-REFUNDABLE and are charged even if the carriers reject the brand. Requires an approved business profile and an approved A2P messaging profile. Sole proprietors must additionally give the owner's personal mobile — Twilio texts it and the owner has to reply YES within 24 hours, which no software can do for them.
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
skip_vetting
boolean
optional
Skip the $41.50 secondary vetting. Saves the fee but the brand gets no trust score, which caps how many messages a day the carriers will accept. Default: false
otp_mobile_e164
string
optional
Sole proprietors only. The owner's personal mobile in E.164 format. It cannot be a Twilio number managed here, and any given mobile can only ever be used for three registrations.
Over MCP the same operation is the tool a2p_submit_brand at https://app.chirply.io/api/mcp, same bearer token, same input.
Submit campaign to carriers
a2p.submit_campaignwriteconfirmadmin only
Submit an A2P 10DLC campaign to the carriers for approval. COSTS REAL MONEY on the organization's own Twilio account: a $15 NON-REFUNDABLE vetting fee charged once per campaign, plus a recurring monthly fee of $1.50 to $30 depending on the use case, billed for as long as the campaign exists. Carrier review takes 10–15 days and sometimes longer. Requires an approved brand. If a campaign is rejected it must be fixed and RESUBMITTED — deleting it and creating a new one is charged the $15 again.
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 a2p_submit_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit messaging campaign
a2p.update_campaignwriteadmin only
Edit a draft campaign's registration details. What goes here is read by human carrier reviewers, and vague answers are the single most common reason campaigns get rejected — describe what the business actually texts people and how those people asked for it. Saved locally; nothing reaches the carriers until the campaign is submitted.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The campaign to edit.
name
string
optional
Internal name for the campaign.
use_case
string
optional
The carrier use-case code, e.g. MIXED or CUSTOMER_CARE. Use a2p.list_use_cases to get the codes this brand is actually eligible for — they vary by brand, and an ineligible one is rejected.
description
string
optional
What this campaign texts people about, in at least 40 characters. Written for a human reviewer at the carrier.
message_flow
string
optional
How people opt in to these texts, in at least 40 characters. Be specific — 'customers tick a consent box on our booking form at example.com/book' passes; 'customers sign up' does not.
message_samples
string[]
optional
Two to five example messages, each at least 20 characters. They must genuinely resemble what will be sent, including any link and the opt-out wording.
has_embedded_links
boolean
optional
Whether these messages contain links. Declaring this wrongly gets the campaign rejected.
has_embedded_phone
boolean
optional
Whether these messages contain phone numbers.
privacy_policy_url
string
optional
Link to the business's privacy policy. Required by the carriers, and the page must actually load.
terms_and_conditions_url
string
optional
Link to the business's terms and conditions. Required by the carriers.
opt_in_message
string
optional
The confirmation text sent when someone opts in.
opt_in_keywords
string
optional
Comma-separated keywords people can text to opt in, e.g. 'START, YES'.
Over MCP the same operation is the tool a2p_update_campaign at https://app.chirply.io/api/mcp, same bearer token, same input.
Add another caller ID name
trust.add_cnam_namewriteadmin only
Start an additional CNAM registration, so different phone numbers can display different business names — useful when one organization trades under more than one name. Each registration carries exactly one name and covers whichever numbers are added to it. Creates a draft only; nothing is sent to Twilio and nothing is charged until it's registered.
Parameters
Field
Type
Required
Description
cnam_display_name
string
optional
The business name to display, 15 characters or fewer. Can be filled in later.
Over MCP the same operation is the tool trust_add_cnam_name at https://app.chirply.io/api/mcp, same bearer token, same input.
Cover a number
trust.add_numberwriteadmin only
Add one of the organization's phone numbers to an approved trust product, so calls from that number get its benefit — the highest SHAKEN/STIR attestation, the registered caller-ID name, or Voice Integrity's spam protection. The product must be approved first. Free.
Which carrier-trust product: 'a2p_messaging' (required before registering an SMS brand), 'shaken_stir' (call signing / attestation), 'cnam' (the business name shown on caller ID), 'voice_integrity' (spam-label protection), or 'branded_calling' (name + logo on the call screen).
registration_id
string (uuid)
optional
Which registration to act on. Only needed for CNAM, and only once the account has more than one caller-ID name registered — get the ids from trust.list_products.
Over MCP the same operation is the tool trust_add_number at https://app.chirply.io/api/mcp, same bearer token, same input.
Check before submitting
trust.check_profilewriteadmin only
Run Twilio's own free requirement check against the business profile and return which requirements pass and which fail. Costs nothing and does not submit anything. Worth running before every submission — a rejection costs days of review time for problems this check reports instantly.
Over MCP the same operation is the tool trust_check_profile at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a registration
trust.delete_registrationwriteconfirmadmin only
Delete a carrier-trust registration that was never submitted. Only works while it is still a draft — once Twilio holds it, the bundle exists on the organization's Twilio account and has to be removed there instead.
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
id
string (uuid)
required
The registration to delete, from trust.list_products.
Over MCP the same operation is the tool trust_delete_registration at https://app.chirply.io/api/mcp, same bearer token, same input.
Business profile
trust.get_profilereadadmin only
Read the organization's Twilio business profile: the business details on file, whether Twilio has approved it, and anything still missing. This profile is the foundation — SMS brand registration and every voice-trust product depend on it being approved first.
Over MCP the same operation is the tool trust_get_profile at https://app.chirply.io/api/mcp, same bearer token, same input.
Link an existing registration
trust.link_productwriteadmin only
Adopt a trust bundle that already exists on the organization's own Twilio account, by its bundle SID (starts with BU). This is how a Branded Calling registration — which has to be done in the Twilio Console — becomes visible here so its phone numbers can be managed in this account.
Which carrier-trust product: 'a2p_messaging' (required before registering an SMS brand), 'shaken_stir' (call signing / attestation), 'cnam' (the business name shown on caller ID), 'voice_integrity' (spam-label protection), or 'branded_calling' (name + logo on the call screen).
registration_id
string (uuid)
optional
Which registration to act on. Only needed for CNAM, and only once the account has more than one caller-ID name registered — get the ids from trust.list_products.
product_sid
string
required
The Twilio bundle SID to adopt, starting with 'BU'. Found in the Twilio Console under Trust Hub.
Over MCP the same operation is the tool trust_link_product at https://app.chirply.io/api/mcp, same bearer token, same input.
Find my Twilio profile
trust.link_profilewriteadmin only
Look on the organization's own Twilio account for the business profile they created in the Twilio Console, and link it to this account. Twilio provides no API to CREATE that primary profile — it has to be started in their Console — so this is how the two sides get connected. Prefers an already-approved profile when several exist.
Over MCP the same operation is the tool trust_link_profile at https://app.chirply.io/api/mcp, same bearer token, same input.
Carrier trust products
trust.list_productsreadadmin only
List every carrier-trust product — SHAKEN/STIR call signing, CNAM caller-ID name, Voice Integrity spam protection, Branded Calling, and the A2P messaging profile — with the organization's registration status for each, what each one costs, and how long Twilio takes to review it.
Which carrier-trust product: 'a2p_messaging' (required before registering an SMS brand), 'shaken_stir' (call signing / attestation), 'cnam' (the business name shown on caller ID), 'voice_integrity' (spam-label protection), or 'branded_calling' (name + logo on the call screen).
registration_id
string (uuid)
optional
Which registration to act on. Only needed for CNAM, and only once the account has more than one caller-ID name registered — get the ids from trust.list_products.
Over MCP the same operation is the tool trust_refresh_profile at https://app.chirply.io/api/mcp, same bearer token, same input.
Uncover a number
trust.remove_numberwriteconfirmadmin only
Remove a phone number from a trust product. Calls from it immediately lose that product's benefit — a number pulled off CNAM stops showing the business name, and one pulled off SHAKEN/STIR drops to a lower attestation and is more likely to be labeled spam.
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.
Which carrier-trust product: 'a2p_messaging' (required before registering an SMS brand), 'shaken_stir' (call signing / attestation), 'cnam' (the business name shown on caller ID), 'voice_integrity' (spam-label protection), or 'branded_calling' (name + logo on the call screen).
registration_id
string (uuid)
optional
Which registration to act on. Only needed for CNAM, and only once the account has more than one caller-ID name registered — get the ids from trust.list_products.
Over MCP the same operation is the tool trust_remove_number at https://app.chirply.io/api/mcp, same bearer token, same input.
Save trust product details
trust.save_productwriteadmin only
Save the extra answers a specific trust product needs before it can be registered. CNAM needs the caller-ID name to display (15 characters maximum — carriers cut it off past that). Voice Integrity needs what the organization uses calling for, its employee count, and its average calls per business day. SHAKEN/STIR and the A2P messaging profile need nothing beyond the business profile. Saved locally; nothing is sent to Twilio until the product is submitted.
Which carrier-trust product: 'a2p_messaging' (required before registering an SMS brand), 'shaken_stir' (call signing / attestation), 'cnam' (the business name shown on caller ID), 'voice_integrity' (spam-label protection), or 'branded_calling' (name + logo on the call screen).
registration_id
string (uuid)
optional
Which registration to act on. Only needed for CNAM, and only once the account has more than one caller-ID name registered — get the ids from trust.list_products.
cnam_display_name
string
optional
CNAM only. The business name shown on the recipient's phone, 15 characters or fewer. Must be a real, non-generic name.
Over MCP the same operation is the tool trust_save_product at https://app.chirply.io/api/mcp, same bearer token, same input.
Save business details
trust.save_profilewriteadmin only
Save the legal business details Twilio and the carriers require: registered name, business type, tax/registration number, address, website, and the authorized representatives. Saved locally only — nothing is sent to Twilio until the profile is submitted, so this can be filled in over several sittings. Editing an already-submitted profile stages the change for the next resubmission.
Parameters
Field
Type
Required
Description
legal_business_name
string
optional
The business's exact registered legal name — must match the tax record, not a trading name.
How the business is registered. One of: Sole Proprietorship, Partnership, Limited Liability Corporation, Corporation, Co-operative, Non-profit Corporation. Choosing 'Sole Proprietorship' puts SMS registration on the sole-proprietor track, which is cheaper but limited to one campaign and one phone number.
Over MCP the same operation is the tool trust_save_profile at https://app.chirply.io/api/mcp, same bearer token, same input.
Register with the carriers
trust.submit_productwriteconfirmadmin only
Register a carrier-trust product with Twilio: creates the bundle, attaches the approved business profile and the product's own details, runs Twilio's free pre-check, and submits it. SHAKEN/STIR, CNAM and Voice Integrity are all free to register and take roughly 24–72 hours. Requires the business profile to be approved first. Branded Calling cannot be registered this way — Twilio has no API for it and it needs a signed Letter of Authorization, so it has to be started in the organization's own Twilio Console.
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.
Which carrier-trust product: 'a2p_messaging' (required before registering an SMS brand), 'shaken_stir' (call signing / attestation), 'cnam' (the business name shown on caller ID), 'voice_integrity' (spam-label protection), or 'branded_calling' (name + logo on the call screen).
registration_id
string (uuid)
optional
Which registration to act on. Only needed for CNAM, and only once the account has more than one caller-ID name registered — get the ids from trust.list_products.
Over MCP the same operation is the tool trust_submit_product at https://app.chirply.io/api/mcp, same bearer token, same input.
Submit for review
trust.submit_profilewriteconfirmadmin only
Send the business profile to Twilio for review. Pushes the saved details to Twilio, runs the free pre-check, and refuses to submit if that check fails. Review typically takes up to 72 hours and the profile can't be edited freely while it's in review. Free, but it gates everything else: no SMS brand and no voice-trust product can be registered until this is approved.
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 trust_submit_profile at https://app.chirply.io/api/mcp, same bearer token, same input.
Unsubscribe
unsubscribe.addwrite
Stop contacting someone. Immediately blocks every campaign, automation, and bulk send on the channels given — real messages that would otherwise have been sent are not sent. Works on a contact, or on a bare email address or phone number for someone who isn't in the CRM. Recorded with who did it and when, and reversible with unsubscribe.remove.
Parameters
Field
Type
Required
Description
contact_id
string (uuid)
optional
The contact to unsubscribe. Give this or `address`.
address
string
optional
The email address or phone number to act on. Phone numbers are accepted in any common format and normalized. Use this when the person isn't a contact in the CRM — someone who rang up and asked to be removed, or a list inherited from another system.
Which kinds of message to stop: 'call' (phone calls), 'sms' (text messages), 'whatsapp' (business-initiated WhatsApp messages), 'email' (emails), 'rvm' (ringless voicemail drops). Omit to cover everything the person can be reached on. An email address can only be stopped for 'email'; a phone number covers the other four.
note
string
optional
Why, in plain words — shown on the unsubscribed list so whoever reads it months later knows the story. E.g. 'Asked to be removed on a call, 31 July'.
Over MCP the same operation is the tool unsubscribe_add at https://app.chirply.io/api/mcp, same bearer token, same input.
Unsubscribe selected contacts
unsubscribe.bulk_addwriteconfirm
Unsubscribe a whole list of contacts at once, on the channels given. Immediately blocks every campaign, automation and bulk send to those people on those channels — real messages that would otherwise have gone out do not go out. Recorded as a bulk sweep rather than a series of one-offs, so the unsubscribed list shows it as one action. Reversible per person with unsubscribe.remove, which asks for confirmation.
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
contact_ids
array of (string (uuid))
required
The contacts to unsubscribe, up to 1000 at a time.
Which kinds of message to stop for all of them: 'call' (phone calls), 'sms' (text messages), 'whatsapp' (business-initiated WhatsApp messages), 'email' (emails), 'rvm' (ringless voicemail drops). At least one. A contact with only an email address is unaffected by the phone channels, and vice versa.
note
string
optional
Why, in plain words — recorded against every person in the sweep so whoever reads the list months later knows the story. E.g. 'Bounced list cleanup, 3 August'.
Over MCP the same operation is the tool unsubscribe_bulk_add at https://app.chirply.io/api/mcp, same bearer token, same input.
Can we contact them?
unsubscribe.checkread
Check whether one email address or phone number is unsubscribed, before sending to it. Returns which kinds of message are still allowed and which are blocked. Cheap, read-only, and worth calling before any one-to-one outreach.
Parameters
Field
Type
Required
Description
address
string
required
The email address or phone number to act on. Phone numbers are accepted in any common format and normalized. Use this when the person isn't a contact in the CRM — someone who rang up and asked to be removed, or a list inherited from another system.
Over MCP the same operation is the tool unsubscribe_check at https://app.chirply.io/api/mcp, same bearer token, same input.
Proof of consent
unsubscribe.consent_proofread
The consent trail for one phone number or email address: every time it was opted in or out, how, and — for a tick-box on a web form — the exact wording that was displayed, the page it was on, the IP address and the timestamp. This is the evidence a mobile carrier, a complainant, or a TCPA claim asks for, and the reason to keep it in one place rather than in a form submission nobody can find. Read-only.
Parameters
Field
Type
Required
Description
address
string
required
The email address or phone number to act on. Phone numbers are accepted in any common format and normalized. Use this when the person isn't a contact in the CRM — someone who rang up and asked to be removed, or a list inherited from another system.
channel
"email" | "sms" | "whatsapp" | "call" | "rvm"
optional
Which kind of message the consent covers. 'sms' is the one carriers audit. Default: "sms"
limit
integer
optional
How many events to return, newest first. Default: 20
Over MCP the same operation is the tool unsubscribe_consent_proof at https://app.chirply.io/api/mcp, same bearer token, same input.
Unsubscribe totals
unsubscribe.countsread
How many people are unsubscribed, broken down by what they're unsubscribed from. Useful for checking how much of an audience a campaign will actually reach before sending it.
Over MCP the same operation is the tool unsubscribe_counts at https://app.chirply.io/api/mcp, same bearer token, same input.
Communication preferences
unsubscribe.get_contactread
Read one contact's communication preferences: which kinds of message they can still be sent, which they've been unsubscribed from, who unsubscribed them and how, plus the full history of every opt-out and resubscribe on their record. Check this before sending anyone anything one-to-one.
Over MCP the same operation is the tool unsubscribe_get_contact at https://app.chirply.io/api/mcp, same bearer token, same input.
Unsubscribed
unsubscribe.listread
List everyone the organization can no longer contact, with what each person is excluded from, whether they actually opted out (STOP, an unsubscribe link, the opt-out page, or a call keypress) or were excluded by staff, a provider, an import, or a connected app such as Stripe, and when. Read-only.
Parameters
Field
Type
Required
Description
channel
"email" | "sms" | "whatsapp" | "call" | "rvm"
optional
Only show people unsubscribed from this one kind of message.
Why they are off the list: 'contact' (they opted out), 'staff' (someone on the team), 'provider' (an automatic provider signal such as a bounce or complaint), 'integration' (a connected app such as Stripe excluded them), or 'import' (the exclusion was carried in imported data).
Over MCP the same operation is the tool unsubscribe_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Resubscribe
unsubscribe.removewriteconfirm
Put someone back on the list, so campaigns and automations can contact them again on the channels given. ONLY do this when the person has actually asked to be contacted again — resubscribing someone who opted out is how a business ends up messaging people who told it to stop, which in the US carries statutory penalties per message. The original opt-out stays in the record permanently either way.
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
contact_id
string (uuid)
optional
The contact to resubscribe. Give this or `address`.
address
string
optional
The email address or phone number to act on. Phone numbers are accepted in any common format and normalized. Use this when the person isn't a contact in the CRM — someone who rang up and asked to be removed, or a list inherited from another system.
Which kinds of message to stop: 'call' (phone calls), 'sms' (text messages), 'whatsapp' (business-initiated WhatsApp messages), 'email' (emails), 'rvm' (ringless voicemail drops). Omit to cover everything the person can be reached on. An email address can only be stopped for 'email'; a phone number covers the other four.
note
string
optional
Why they're being put back on — e.g. 'Asked us to start texting again'.