28 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 route
domains.add_funnel_routewriteconfirmadmin only
Publish an additional funnel on a named route of a connected domain. The funnel home becomes /route and its pages live below it (for example /summer/checkout). If the funnel is already published, this makes it reachable at the new address immediately. The route is rejected if a website page, short link, another funnel, or a reserved system route already uses it.
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)
required
The connected domain that will host the funnel.
funnel_id
string (uuid)
required
The funnel to publish below the named route.
path
string
required
One URL segment without slashes, e.g. 'summer-offer'.
Over MCP the same operation is the tool domains_add_funnel_route at https://app.chirply.io/api/mcp, same bearer token, same input.
Cancel a pending domain purchase
domains.cancel_purchasewriteadmin only
Call off a domain purchase that was started with domains.purchase but never confirmed by a human in the browser. Cancels the pending order and releases the uncaptured card hold at Stripe, so it stops showing on the card's statement. Safe to call any time: if the order already completed (paid) or never carried a hold, this does nothing — the domain was never registered by the unconfirmed purchase either way, so there is nothing else to undo.
Parameters
Field
Type
Required
Description
order_id
string (uuid)
required
The pending order's id, returned as order_id by domains.purchase.
Over MCP the same operation is the tool domains_check_availability at https://app.chirply.io/api/mcp, same bearer token, same input.
Cloudflare DNS status
domains.cloudflare_statusreadadmin only
Report whether its own Cloudflare account is connected for automatic DNS, and list the zones (domains) that account can manage — each with Cloudflare's status for it and whether records written there would actually govern the domain (a zone Cloudflare has marked moved/deactivated accepts writes that change nothing). Read-only — changes nothing in Cloudflare. Zone names reveal which domains the organization runs, so this is manager-only like the integration itself.
Over MCP the same operation is the tool domains_cloudflare_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect a domain
domains.connectwriteconfirmadmin only
Connect a domain the organization ALREADY OWNS at another registrar (e.g. go.acme.com) and request a public TLS certificate for it. Does not buy anything and costs no money. If the account has its Cloudflare account connected (the cloudflare integration), the required CNAME is CREATED AUTOMATICALLY in the organization's own Cloudflare zone — replacing whatever DNS record previously answered at that exact hostname. Otherwise the domain does not serve traffic until the owner adds the returned CNAME record at their DNS provider; use domains.verify afterwards to check. Once live it can serve short links, a funnel or site, and invoices at the same time.
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
string
required
The hostname to connect, e.g. 'go.acme.com'. A full URL is accepted and trimmed.
label
string
optional
An internal note shown in pickers, e.g. 'ad traffic'. Not public.
Over MCP the same operation is the tool domains_connect at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect
domains.disconnectwriteconfirmadmin only
Stop serving a domain and release its certificate. Every short link, funnel page and invoice published on it stops working immediately and falls back to the platform's own address. Link names are unique platform-wide on that shared address, so a link whose name is already taken there is renamed with a numeric suffix as it moves — its old URL stops working either way. If the domain's CNAME was created in the organization's own Cloudflare, that record is removed too. A domain BOUGHT through this platform stays registered to the organization — this only stops serving it, it does not give up the domain or refund anything.
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 domains_disconnect at https://app.chirply.io/api/mcp, same bearer token, same input.
Domain details
domains.getread
Read one domain: its status, how it was obtained, the DNS record required (if any), its expiry and auto-renew setting, and a breakdown of everything published on it.
Over MCP the same operation is the tool domains_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Visitors can't reach this domain
domains.healthread
Read the stored reachability verdict for the account's custom domains — whether real HTTP requests to each hostname actually arrive at the platform, which Cloudflare's own status checks cannot see (a domain can show 'active' with a valid certificate while every visitor dies at the customer's misconfigured DNS proxy). Verdicts come from the automatic sweep that runs every few hours; a broken domain also carries plain-language fix steps. Reads stored state only — probes nothing and changes nothing.
Parameters
Field
Type
Required
Description
id
string (uuid)
optional
One domain's id (from domains.list); omit for every domain in the account.
Over MCP the same operation is the tool domains_health at https://app.chirply.io/api/mcp, same bearer token, same input.
Domains
domains.listread
List every custom domain this account has connected, with what is currently published on each one — the site or funnel at its root, how many short links point at it, and how many invoices are served from it. Includes whether each domain was bought through this platform or brought from another registrar, its DNS/certificate status, and its renewal date, plus the CNAME target a domain brought from elsewhere must point at — the white-label agency's own verified DNS hostname when one is set, otherwise the platform's.
Over MCP the same operation is the tool domains_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Public link host
domains.public_hostread
Show which hostname this account's customer-facing links are published on — short links, unsubscribe links, the opt-out page, booking and invoice pages — and why that host was chosen. The answer is this account's own connected domain with the app role if it has one, otherwise its parent agency's white-label domain, otherwise the platform host. Read-only; changes nothing, costs nothing, sends nothing. Use it to confirm what an agency's client's customer will actually see before a campaign goes out.
Over MCP the same operation is the tool domains_public_host at https://app.chirply.io/api/mcp, same bearer token, same input.
Buy a domain
domains.purchasewriteconfirmadmin only
START buying a domain. THIS DOES NOT COMPLETE A PURCHASE and nothing is registered by this call: it prices the domain, creates a PENDING order, and puts an UNCAPTURED hold on a card in Stripe. No money is taken, the domain is NOT registered, and the organization does not own it when this returns — so do not report the domain as bought. Finishing requires a HUMAN in a browser at the returned /domains/buy link to confirm the card in Stripe's payment form, which no machine surface can do; that is what the returned requires_card_confirmation flag means. Only after that confirmation is the domain registered, the hold captured, and DNS configured automatically. Registration is non-refundable once it completes, and it renews yearly at the quoted renewal price unless auto-renew is turned off. Note the hold itself can reduce the card's available balance until it is captured or released.
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
string
required
The exact domain to buy, e.g. 'acmeroofing.com'. Check it with domains.check_availability first.
Over MCP the same operation is the tool domains_purchase at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove
domains.remove_funnel_routewriteconfirmadmin only
Remove one funnel route from a custom domain. The funnel and all of its pages remain in this account, but every URL below this domain route stops working immediately until the route is added 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.
Parameters
Field
Type
Required
Description
domain_id
string (uuid)
required
The connected domain that owns the route.
route_id
string (uuid)
required
The domain funnel route to remove, from domains.get or domains.list.
Over MCP the same operation is the tool domains_remove_funnel_route at https://app.chirply.io/api/mcp, same bearer token, same input.
Find a domain
domains.searchread
Search for domain names that are available to buy, with the price the organization would pay. Read-only — nothing is reserved or charged. Returns first-year and yearly renewal prices, which often differ.
Parameters
Field
Type
Required
Description
query
string
required
A word, phrase or full domain to look for, e.g. 'acme roofing' or 'acmeroofing.com'.
limit
integer
optional
How many suggestions to return. Defaults to the maximum the registry will give for a search; only set this to ask for FEWER.
Over MCP the same operation is the tool domains_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Auto-renew
domains.set_auto_renewwriteconfirmadmin only
Turn yearly auto-renewal on or off for a domain bought through this platform. With it on, the organization's card is charged about 30 days before expiry at the current renewal price. With it OFF the domain will EXPIRE at the end of its term and everything published on it will stop working.
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 domain's id, from domains.list.
auto_renew
boolean
required
True to renew yearly, false to let it expire at the end of the term.
Over MCP the same operation is the tool domains_set_auto_renew at https://app.chirply.io/api/mcp, same bearer token, same input.
Set up DNS automatically
domains.setup_dnswriteconfirmadmin only
Create the CNAME for an already-connected domain inside the organization's OWN Cloudflare account (requires the cloudflare integration). WRITES to the organization's live DNS: any A/AAAA/CNAME record answering at that exact hostname is REPLACED with the platform CNAME, which changes where that hostname resolves for everyone on the internet. Touches only that one hostname, never the rest of the zone. Use on domains stuck 'Waiting for DNS' that were connected before Cloudflare was, or whose record was removed.
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 domains_setup_dns at https://app.chirply.io/api/mcp, same bearer token, same input.
Domain settings
domains.updatewriteconfirmadmin only
Change what a domain does: which website answers at its root, where the bare domain redirects when nothing is attached, where unknown paths go, and whether short links are allowed on it. Additional funnels use domains.add_funnel_route. Turning links off instantly stops every short link on this domain from resolving.
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 domain's id, from domains.list.
funnel_id
string (uuid) (or null)
optional
The single website served at the domain root (/). Null detaches it. Add funnels below named paths with domains.add_funnel_route.
label
string (or null)
optional
Internal note shown in pickers.
root_redirect_url
string (or null)
optional
Where https://the-domain/ sends visitors when no site is attached.
not_found_url
string (or null)
optional
Where an unknown path goes instead of a 404 page.
links_enabled
boolean
optional
Whether short links resolve on this domain. Setting false immediately breaks every link on it.
Over MCP the same operation is the tool domains_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Check again
domains.verifywriteadmin only
Re-check a domain's DNS and certificate with Cloudflare and store the result. Safe to call repeatedly; changes nothing except the recorded status. Owners and admins only, matching the button on /domains.
Over MCP the same operation is the tool domains_verify at https://app.chirply.io/api/mcp, same bearer token, same input.
Attach a pixel
pixels.attachwriteconfirmadmin only
Attach or detach a pixel from one specific link, funnel, page or invoice. Attaching starts firing it for real visitors to that live surface immediately, and on a SHORT LINK it also FORCES THE INTERSTITIAL PAGE ON — a link that used to redirect straight through now shows a page first, which changes what every existing recipient of that link experiences. Detaching stops the pixel there and the audience it was building stops growing. Not needed for pixels marked all_surfaces — those already fire everywhere.
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 pixels_attachments at https://app.chirply.io/api/mcp, same bearer token, same input.
Add a pixel
pixels.createwriteconfirmadmin only
Add a retargeting pixel. THIS PUTS THIRD-PARTY TRACKING CODE ON LIVE PUBLIC PAGES that real visitors load, and it starts collecting their behaviour for the ad platform the moment it is live — so it is a privacy and consent decision, not just a setting. For a known provider give the ID from their ads manager and the snippet is generated safely; for anything else use provider 'custom', which injects the RAW SNIPPET verbatim and will run whatever JavaScript it contains. Setting all_surfaces fires it on every public page the organization serves — every funnel, link interstitial and invoice pay page at once — which is usually what's wanted. Attaching a pixel to a short link forces that link's interstitial page on, because a bare redirect renders no page for a pixel to fire on.
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 pixels_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a pixel
pixels.deletewriteconfirmadmin only
Delete a pixel and remove it from everything it was attached to. It stops firing immediately and the audience it was building stops growing.
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 pixels_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Pixels
pixels.listread
List the organization's retargeting pixels. A pixel is defined once and can fire on any public surface — link interstitials, funnel pages, invoice pay pages — either everywhere or only where attached.
Over MCP the same operation is the tool pixels_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a pixel
pixels.updatewriteconfirmadmin only
Change a pixel's name, ID, snippet, placement, or whether it fires on every public page. Every change takes effect on LIVE public pages on the next page load: replacing custom_html swaps the JavaScript running in real visitors' browsers, and turning all_surfaces on starts firing it across every funnel, link interstitial and invoice pay page the organization serves. Pointing it at a different pixel ID sends visitor data to a different ad account.
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 pixel's id, from pixels.list.
name
string
optional
New internal name.
pixel_id
string (or null)
optional
New provider ID.
custom_html
string (or null)
optional
New raw snippet, for custom pixels.
placement
"head" | "body"
optional
Where the snippet is injected — 'head' for most tags, 'body' for ones that must render late.
Over MCP the same operation is the tool pixels_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Attach a tracking script
scripts.attachwriteconfirmadmin only
Attach or detach a tracking script from one specific link, funnel, page or invoice. Attaching STARTS RUNNING THAT JAVASCRIPT in real visitors' browsers on that live page from the next page load; detaching stops it and anything it was measuring stops being recorded. Not needed for scripts marked all_surfaces.
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 scripts_attach at https://app.chirply.io/api/mcp, same bearer token, same input.
Add a tracking script
scripts.createwriteconfirmadmin only
Add a tracking snippet that runs on the organization's public pages. The snippet executes in visitors' browsers on pages the organization controls. Setting all_surfaces runs it on every public page. Maximum 8000 characters.
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
name
string
required
An internal name, e.g. 'Google Tag Manager'.
html
string
required
The full snippet, including <script> tags, exactly as the provider gave it.
placement
"head" | "body"
optional
Where the snippet is injected — 'head' for most tags, 'body' for ones that must render late.
Over MCP the same operation is the tool scripts_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a tracking script
scripts.deletewriteconfirmadmin only
Delete a tracking script and remove it from everything it was attached to. It stops running immediately, and anything it was measuring stops being recorded.
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 scripts_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Tracking scripts
scripts.listread
List the organization's tracking scripts — Google Tag Manager, heatmaps, chat widgets, affiliate tags. Defined once and reusable on any public page, rather than pasted into each invoice or funnel separately.
Over MCP the same operation is the tool scripts_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a tracking script
scripts.updatewriteconfirmadmin only
Change a tracking script's name, snippet, placement, or whether it's active. Setting active to false stops it running everywhere at once.
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 script's id, from scripts.list.
name
string
optional
New internal name.
html
string
optional
New snippet, including <script> tags.
placement
"head" | "body"
optional
Where the snippet is injected — 'head' for most tags, 'body' for ones that must render late.