83 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.
Connect a custom domain
funnel_domains.attachwriteconfirmadmin only
Point a real hostname the organization owns (e.g. offers.acme.com) at a funnel and register it for a public TLS certificate. This publishes the funnel on a NEW address on the open internet as soon as the tenant's CNAME resolves. Returns the DNS record they must create; use funnel_domains.verify afterwards.
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
funnel_id
string (uuid)
required
The funnel the domain should serve.
domain
string
required
The hostname, e.g. offers.acme.com. Scheme and path are stripped.
Over MCP the same operation is the tool funnel_domains_attach at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect a custom domain
funnel_domains.detachwriteconfirmadmin only
Disconnect a custom domain and release its Cloudflare hostname and certificate. Everything served on that address STOPS immediately — the funnel, any single pages, and every LinkWizard link hosted on it, including copies already shared. The funnel itself, its /f/<slug> URL, and the links themselves are kept and can be moved elsewhere.
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 funnel_domains_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Verify a custom domain
funnel_domains.verifywrite
Re-check a connected domain with Cloudflare and update its status. Run this once the CNAME record exists — certificate issuance is asynchronous and completes on its own within a few minutes.
Over MCP the same operation is the tool funnel_domains_verify at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a page with AI
funnel_pages.ai_editwriteconfirm
Apply a natural-language change to a page's draft document ("make the headline punchier", "add a testimonial section") and RETURN the new document — nothing is saved, so pass it to funnel_pages.save_content to keep it. The pre-edit document is snapshotted automatically. If the instruction implies a restyle, the funnel's theme IS changed immediately — that write is not held back for review, and it restyles every page of the funnel including any already published. SPENDS REAL MONEY: it runs on the organization's OWN OpenRouter API key, so the model charge lands directly on the tenant's OpenRouter bill. There is no credit pool and no free allowance — every call is billed and metered against this account, whether or not the result is any good.
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
page_id
string (uuid)
required
The page to edit.
instruction
string
required
What to change, in plain language. Under 1000 characters.
document
map of string → object
optional
Document to edit. Omit to edit the page's stored draft.
Over MCP the same operation is the tool funnel_pages_ai_edit at https://app.chirply.io/api/mcp, same bearer token, same input.
Inspect native page components
funnel_pages.component_schemaread
Read the native editor's actual component fields, defaults, layout slots and limits. Use this contract to create fully editable documents. No custom code is executed and no model is called.
Parameters
Field
Type
Required
Description
component
string
optional
Optional exact component name to inspect; omit for the entire native registry.
Over MCP the same operation is the tool funnel_pages_component_schema at https://app.chirply.io/api/mcp, same bearer token, same input.
Add a funnel step
funnel_pages.createwrite
Add a page to the end of a funnel, seeded with a ready-made starter layout for the chosen step type. It is created as a draft; publish it separately with funnel_pages.publish.
Over MCP the same operation is the tool funnel_pages_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a funnel step
funnel_pages.deletewriteconfirm
PERMANENTLY DESTROY a page, its live content and its entire version history. This cannot be undone. The home page cannot be deleted — it is the funnel's entry point; delete the funnel 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.
Over MCP the same operation is the tool funnel_pages_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Build the page
funnel_pages.generatewriteconfirm
Use AI to write and design a complete new page, then append it to an existing funnel or website as a private DRAFT. It does not publish the page and contacts nobody. SPENDS REAL MONEY: it runs on the organization's OWN OpenRouter API key, so the model charge lands directly on the tenant's OpenRouter bill. There is no credit pool and no free allowance — every call is billed and metered against this account, whether or not the result is any good.
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
funnel_id
string (uuid)
required
The funnel, website, or course to add the generated page to.
name
string
required
The new page's name and the basis of its URL path.
prompt
string
required
Who the page is for, what it should communicate, and what visitors should do next.
Over MCP the same operation is the tool funnel_pages_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate a page with AI
funnel_pages.generate_contentwriteconfirm
Generate a complete page document from a prompt and RETURN it for review — no page is created or changed. Pass the result to funnel_pages.save_content to keep it. SPENDS REAL MONEY: it runs on the organization's OWN OpenRouter API key, so the model charge lands directly on the tenant's OpenRouter bill. There is no credit pool and no free allowance — every call is billed and metered against this account, whether or not the result is any good.
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
page_id
string (uuid)
required
The page this is for — checked before any AI spend.
Over MCP the same operation is the tool funnel_pages_generate_content at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a funnel page
funnel_pages.getread
Fetch one page with BOTH documents: `content` is the working draft you edit, `published_content` is what visitors currently see. Read this before editing a page — funnel_pages.save_content expects a document in the same shape.
Over MCP the same operation is the tool funnel_pages_list at https://app.chirply.io/api/mcp, same bearer token, same input.
List page versions
funnel_pages.list_versionsread
List a page's saved restore points, newest first — every publish, every AI edit, and every manual snapshot. Documents are omitted; funnel_pages.restore_version brings one back.
Over MCP the same operation is the tool funnel_pages_list_versions at https://app.chirply.io/api/mcp, same bearer token, same input.
Apply native page changes
funnel_pages.patchwrite
Apply an atomic batch of native component operations to a page draft with revision checking and an automatic restore point. Nested slots and property paths are supported. A failed operation or stale revision rejects the entire batch. Nothing is published and no AI is called.
Parameters
Field
Type
Required
Description
page_id
string (uuid)
required
Account-owned page to patch.
expected_revision
string
required
updated_at from the latest page read; required to avoid overwriting another editor.
operations
any[]
required
Native PatchOp objects: insert, remove, move, update, setProp and other supported editor operations. Inspect component_schema for valid fields.
Over MCP the same operation is the tool funnel_pages_patch at https://app.chirply.io/api/mcp, same bearer token, same input.
Publish a page
funnel_pages.publishwriteconfirm
PUT THIS PAGE ON THE PUBLIC INTERNET. Copies the working draft over the live version, so whatever the draft currently says becomes what visitors see at /f/<slug>/<path>. If the funnel itself is still a draft it is published too, because a live page inside an offline funnel is unreachable. A restore point is saved first, so this is undoable via funnel_pages.restore_version.
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
page_id
string (uuid)
required
The page to put live.
expected_revision
string
optional
Revision from updated_at returned by the last read or save. Stale writes are rejected.
document
map of string → object
optional
Optional newer document to publish. Omit to publish the stored draft as-is.
Over MCP the same operation is the tool funnel_pages_publish at https://app.chirply.io/api/mcp, same bearer token, same input.
Reorder funnel steps
funnel_pages.reorderwrite
Set the order visitors move through a funnel's steps. Pass every page id of the funnel in the order you want; the first one must be the funnel's home page. Order only — no content or URL changes.
Parameters
Field
Type
Required
Description
funnel_id
string (uuid)
required
The funnel being reordered.
page_ids
array of (string (uuid))
required
Every page id of the funnel, in the new step order.
Over MCP the same operation is the tool funnel_pages_reorder at https://app.chirply.io/api/mcp, same bearer token, same input.
Restore a page version
funnel_pages.restore_versionwrite
Bring a saved version back into the page's WORKING DRAFT. The live page is not touched — publish afterwards if you want visitors to see it. The draft being replaced is snapshotted first, so a restore is itself undoable.
Parameters
Field
Type
Required
Description
version_id
string (uuid)
required
The version to restore. See funnel_pages.list_versions.
expected_revision
string
optional
Revision from updated_at returned by the last read or save. Stale writes are rejected.
Over MCP the same operation is the tool funnel_pages_restore_version at https://app.chirply.io/api/mcp, same bearer token, same input.
Save a page draft
funnel_pages.save_contentwrite
Save a strictly validated native page document as the working draft. Invalid components and props are rejected with paths, never discarded. The prior draft is snapshotted atomically. Pass expected_revision from the last read to reject stale writes. Live visitors keep the published snapshot.
Parameters
Field
Type
Required
Description
page_id
string (uuid)
required
The page whose draft to overwrite.
document
map of string → object
required
The page as a Puck editor document: { "root": { "props": {} }, "content": [ { "type": "Hero", "props": { … } }, … ] }. Each entry in `content` is one section; `type` must be a registered component name and `props` are its settings (nested sections live inside slot props). Unrecognised component types are silently dropped on save, so ALWAYS read the page with funnel_pages.get and edit the document it returns rather than authoring one from scratch.
expected_revision
string
optional
Revision from updated_at returned by the last read or save. Stale writes are rejected.
mode
"simple" | "pro"
optional
Editor depth this page is edited in. 'simple' shows pre-designed sections, 'pro' adds layout primitives. Purely a UI preference — both read the same document.
Over MCP the same operation is the tool funnel_pages_save_content at https://app.chirply.io/api/mcp, same bearer token, same input.
Redirect a page
funnel_pages.set_redirectwriteconfirm
Make a published page send visitors somewhere else instead of rendering. Takes effect after the next publish, on every address it is served at, including the funnel's custom domain. The page's content is kept untouched — pass an empty redirect_url to switch it back on. Works on the home page too, which is how a whole single-page site gets redirected.
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 page to redirect.
redirect_url
string
required
Full web address to send visitors to. Pass an empty string to stop redirecting and show the page again.
redirect_code
301 | 302
optional
302 is a normal redirect you can change later. 301 tells browsers to remember it permanently — later changes may never reach people who already visited. Default: 302
Over MCP the same operation is the tool funnel_pages_set_redirect at https://app.chirply.io/api/mcp, same bearer token, same input.
Save a restore point
funnel_pages.snapshotwrite
Save a named restore point for a page. Nothing about the page changes — this only records what the draft looks like now so it can be brought back later.
Parameters
Field
Type
Required
Description
page_id
string (uuid)
required
The page to snapshot.
label
string
optional
A name for the restore point.
document
map of string → object
optional
Document to record. Omit to snapshot the page's stored draft.
Over MCP the same operation is the tool funnel_pages_snapshot at https://app.chirply.io/api/mcp, same bearer token, same input.
Take a page offline
funnel_pages.unpublishwriteconfirm
Take one live page off the public internet — visitors on its URL immediately stop being able to reach it. The rest of the funnel stays live. The draft and the last published content are kept, so publishing again restores 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.
Over MCP the same operation is the tool funnel_pages_unpublish at https://app.chirply.io/api/mcp, same bearer token, same input.
Rename a funnel step
funnel_pages.updatewriteconfirm
Rename a page, change its draft URL path, or change its step type with revision checking. Path changes update the site's native draft links, redirects and shared sections together, and require whole-site publication. Live content keeps its old routes until then. Publishing moves the public URL; external inbound links require an explicit redirect. Pause running A/B tests before renaming routes. The home page remains fixed at the site root.
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 page to edit.
expected_revision
string
optional
updated_at from the latest page read; supply it to reject edits based on an outdated page.
Over MCP the same operation is the tool funnel_pages_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Save SEO
funnel_pages.update_seowrite
Save a page's search title, meta description, canonical URL, social image, and search-index visibility. This changes metadata on the working page record; published pages retain their metadata until the next publish.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
Page whose search metadata should be updated.
title
string
optional
Search and social title, or omit to clear it.
description
string
optional
Search result description, or omit to clear it.
canonical
string (uri)
optional
Preferred absolute URL for duplicate-content consolidation.
og_image
string (uri)
optional
Absolute social sharing image URL.
no_index
boolean
optional
True to keep this page out of search engine indexes. Default: false
Over MCP the same operation is the tool funnel_pages_update_seo at https://app.chirply.io/api/mcp, same bearer token, same input.
Validate a page document
funnel_pages.validateread
Check a proposed native document against the same strict field and layout contract used by saves and publishing. Returns precise issues without removing unsupported content. No page changes or paid calls occur.
Over MCP the same operation is the tool funnel_pages_validate at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a funnel template
funnel_templates.deletewriteconfirm
PERMANENTLY DESTROY one of the organization's saved funnel templates, including every page document frozen inside it. This cannot be undone. Funnels already built from it are unaffected. Built-in platform templates can't be deleted.
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 funnel_templates_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a template
funnel_templates.getread
Fetch one funnel or website template with its theme, niche, tags, setup checklist, and the full editable document of every page it carries. Use funnel_templates.use to copy all its pages as a private draft, then funnel_pages.ai_edit and funnel_pages.save_content to customize them. This read creates and publishes nothing.
Over MCP the same operation is the tool funnel_templates_get at https://app.chirply.io/api/mcp, same bearer token, same input.
List templates
funnel_templates.listread
List the funnel and website templates available to start from: the organization's own saved ones plus the built-in niche library. Returns each template's niche, tags, page names and paths, and setup checklist so you can choose a complete starting point. Every template is a frozen, fully editable copy of its theme and pages; listing creates and publishes nothing.
Filter funnel templates, page templates (including complete multi-page websites), or reusable sections. Read page_count to distinguish a website from an individual page.
include_platform
boolean
optional
Include the shared templates the platform provides. Default: true
Over MCP the same operation is the tool funnel_templates_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Save a funnel as a template
funnel_templates.save_from_funnelwrite
Freeze a funnel's theme and every page's WORKING DRAFT into a reusable template. It is a snapshot, not a link — editing the funnel afterwards never changes the template, and funnels built from it are never coupled back to it.
Over MCP the same operation is the tool funnel_templates_save_from_funnel at https://app.chirply.io/api/mcp, same bearer token, same input.
Use template
funnel_templates.usewrite
Create a new funnel or website from a template — theme and every page copied in, with fresh component ids. Optionally pass color_scheme to change colors across every page while keeping fonts and layout. Returns each new page id and builder link, plus a setup checklist. Every section remains editable in the builder and by AI: call funnel_pages.ai_edit with a page id, then funnel_pages.save_content to keep the returned document. Everything lands as a DRAFT and is never published automatically; installation sends no messages and charges no payments.
Parameters
Field
Type
Required
Description
template_id
string (uuid)
required
The template to build from.
name
string
optional
Name for the new funnel or website. Defaults to the template's name.
color_scheme
object
optional
Change only colors across every page while preserving fonts, layout, spacing, content and button style. Supply either a preset or both custom colors.
Over MCP the same operation is the tool funnel_templates_use at https://app.chirply.io/api/mcp, same bearer token, same input.
A/B test results
funnels.ab_test_resultsread
Per-arm results for an A/B test: visitors, views, form submissions, paid orders, revenue (cents), conversion rate, and a plain-language statistical readout. Conversions = submissions + orders. A verdict is only called "confident" at p < 0.05 with at least 100 visitors in each arm; below that the readout says to keep collecting.
Over MCP the same operation is the tool funnels_ab_test_results at https://app.chirply.io/api/mcp, same bearer token, same input.
Yes, add it to my order
funnels.accept_upsellwriteconfirm
Accept a one-click upsell or downsell on a funnel — the button on the offer page after a purchase. THIS CHARGES MONEY IMMEDIATELY AND WITH NO CARD ENTRY: it creates a NEW Stripe PaymentIntent and confirms it off-session against the card already saved on the original order, so the buyer is charged again the moment this returns. The only credential involved is the order token, which is why the window is short — the original order must be PAID and less than two hours old, or the charge is refused. What is sold and what it costs come from the upsell block's OWN published definition and the product table, never from this call, so a token buys that page's offer at that page's price and nothing else. Charging the same offer twice on the same order is prevented by a unique constraint, so a repeat call is a no-op rather than a double charge. On success it records the revenue against the page and fires the account's `upsell_accepted` automations, which can send real messages billed to the tenant's own provider accounts. There is no undo — reversing it means refunding in Stripe.
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
slug
string
required
The funnel's public slug. Must be published, owned by this account, and the same funnel the order was placed on.
page_path
string
required
The published upsell or downsell page's path within the funnel — the page carrying the offer being accepted.
block_id
string
required
The id of the UpsellOffer block on that page. Read it with funnel_pages.get and take the `id` of the component whose type is 'UpsellOffer'. The product and price are read from this block, not from your input.
token
string
required
The order token from funnels.checkout, for the PAID original order this add-on attaches to. It is the only thing authorising the charge, and it stops working two hours after the order was created.
Over MCP the same operation is the tool funnels_accept_upsell at https://app.chirply.io/api/mcp, same bearer token, same input.
Complete my order
funnels.checkoutwriteconfirm
Start a REAL purchase through a published funnel's order form: creates the order, creates or matches a Stripe customer on the seller's own account, and returns a PaymentIntent client secret for collecting the card. THIS IS THE LIVE CHECKOUT — unless the funnel is set to test mode (funnels.set_payment_route), the card charged is charged for real, on the tenant's own Stripe, and Stripe's fees apply. What is being sold and what it costs come from the ORDER FORM'S OWN published definition and from the product table, never from this call: you name the block, and the price is re-derived server-side, so there is no way to buy a $997 offer for $1. Nothing is collected yet at this point — the order is created as 'pending' and the card still has to be confirmed by whoever holds the client secret; call funnels.complete_checkout with the returned token once it clears. The returned `token` is a BEARER CREDENTIAL: for the next two hours it alone authorises funnels.accept_upsell to charge the saved card again with no further card entry, so treat it like a password and never store it where a reader of orders could reach 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
slug
string
required
The funnel's public slug — the `<slug>` in /f/<slug>. Must be published and owned by this account.
page_path
string
optional
The published page's path within the funnel. Empty string (the default) is the home page. Default: ""
block_id
string
required
The id of the OrderForm block on that published page. Read it with funnel_pages.get and take the `id` of the component whose type is 'OrderForm'. The products and prices are read from this block, not from your input.
buyer_email
string (email)
required
The buyer's email address. Required — it is how the order is receipted and matched to a CRM contact.
buyer_name
string
optional
The buyer's name, as it should appear on the order.
buyer_phone
string
optional
The buyer's phone number, used for CRM matching and deduplication.
accept_bump
boolean
optional
true adds the order form's bump offer to this purchase, if the block defines one — the tick-box beside the order form. It increases the amount charged. Default: false
Over MCP the same operation is the tool funnels_checkout at https://app.chirply.io/api/mcp, same bearer token, same input.
Settle a funnel order
funnels.complete_checkoutwriteconfirm
Settle a funnel order once its card payment has cleared: asks STRIPE whether the payment actually succeeded — the caller's word is never taken for it — and, if it did, marks the order paid, saves the card for one-click upsells, links or creates the buyer's CRM contact, records the revenue against the page, and fires the account's `purchase_made` automations, which can send real email, SMS or voicemail billed to the tenant's own provider accounts. Idempotent: an order already settled (by this call or by Stripe's webhook, which is authoritative and will settle it either way) simply reports 'paid' and does nothing again. This exists because the very next funnel step is usually a one-click upsell, which needs the order to be paid with a saved card NOW rather than whenever the webhook lands. It does not charge anything 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
token
string
required
The order token returned by funnels.checkout. It is a bearer credential — it identifies the order and authorises action on it.
Over MCP the same operation is the tool funnels_complete_checkout at https://app.chirply.io/api/mcp, same bearer token, same input.
Create a site
funnels.createwrite
Create a draft funnel, standalone website, or members-only member site and seed its home page with a ready-made layout. A member site (kind 'course', kept for compatibility) enables member login but does not publish or grant anyone access. Nothing is visible until funnels.publish is called. Actual courses (modules/lessons/quizzes) are built with the courses.* capabilities and mounted on a member site.
Parameters
Field
Type
Required
Description
name
string
required
What the funnel, website, or member site is called.
kind
"funnel" | "page" | "course"
optional
'funnel' is a conversion sequence; 'page' is a standalone website; 'course' is a MEMBER SITE — a website with member login enabled for gated pages, communities, and classroom content (the value name predates the Courses module). Default: "funnel"
Over MCP the same operation is the tool funnels_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Test a different version
funnels.create_ab_variantwrite
Create an A/B test on a funnel page: a full, independently editable copy of the page's current live content ("version B"). Created as a DRAFT — no visitor sees it and nothing changes on the live page until funnels.start_ab_test is called. A page can hold one active test at a time; creating a second returns an error naming the existing one.
Parameters
Field
Type
Required
Description
page_id
string (uuid)
required
The funnel page to test a second version of.
label
string
optional
Display name for the challenger. Defaults to "Version B".
Over MCP the same operation is the tool funnels_create_ab_variant at https://app.chirply.io/api/mcp, same bearer token, same input.
Declare an A/B test winner
funnels.declare_ab_winnerwriteconfirm
CONCLUDE AN A/B TEST, IRREVERSIBLY CHANGING WHAT VISITORS SEE. Declaring 'b' OVERWRITES the live page's published content (and its draft) with the challenger's document — every visitor sees it immediately; the beaten version is kept only as a restore point in the page's version history. Declaring 'a' keeps the page exactly as it is and archives the challenger. Either way the traffic split stops and the test cannot be restarted.
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
variant_id
string (uuid)
required
The running or paused A/B test to conclude.
winner
"a" | "b"
required
'a' keeps the current page (challenger archived); 'b' makes the challenger the live page.
Over MCP the same operation is the tool funnels_declare_ab_winner at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete a funnel
funnels.deletewriteconfirm
PERMANENTLY DESTROY a funnel and everything under it: every page and its published content, every saved version, the funnel's captured submissions, and its connected custom domains. This cannot be undone. Templates already saved from it, and funnels built from those templates, are unaffected.
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 funnels_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Discard an A/B test
funnels.discard_ab_testwriteconfirm
Archive a draft or paused A/B test without adopting it: the challenger document stops being served or editable, its collected results are closed out, and the test cannot be restarted. The LIVE PAGE IS NOT TOUCHED — visitors keep seeing it exactly as published. A running test must be paused (funnels.stop_ab_test) or concluded (funnels.declare_ab_winner) 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.
Over MCP the same operation is the tool funnels_discard_ab_test at https://app.chirply.io/api/mcp, same bearer token, same input.
Duplicate a funnel
funnels.duplicatewrite
Copy a funnel — its theme and every page's working draft — into a brand-new DRAFT funnel on a fresh URL. Component ids are regenerated so the copy and the original can never interfere. Nothing is published, and the original is untouched.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The funnel to copy.
name
string
optional
Name for the copy. Defaults to "<original> (copy)".
Over MCP the same operation is the tool funnels_duplicate at https://app.chirply.io/api/mcp, same bearer token, same input.
Build with AI
funnels.generatewriteconfirm
Start a durable AI site build that plans, writes and checks native editable pages in the background. Returns a build id immediately; use site_builds.get for progress, issues and the saved draft. Nothing is published. SPENDS REAL MONEY on the account’s connected AI provider, up to max_calls model attempts. The run pauses on missing input or its call limit and can resume without rebuilding completed pages.
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
idempotency_key
string
optional
Reuse the same request key to recover the same run after a timeout. Use 8–128 letters, digits, dots, colons, underscores or hyphens.
max_calls
integer
optional
Maximum paid AI model attempts authorized for this run, including repairs and generated assets. Default: 48
max_spend_usd
number (or null)
optional
Total provider charge ceiling in USD, including reservations for outstanding calls. Default $10. Explicit null authorizes call-count budgeting without a dollar cap. Unsupported price ceilings pause before a request. Default: 10
visual_review
boolean
optional
Use actual desktop/tablet/phone screenshots for AI design critique and bounded native style repairs, consuming the same authorized AI budget. Default: true
prompt
string
required
What the funnel is for: the business, the offer, the audience and the goal.
kind
"funnel" | "website" | "member_site"
optional
Build a sequential conversion funnel or a multi-page public website. Default: "funnel"
Over MCP the same operation is the tool funnels_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate a page image
funnels.generate_imagewriteconfirm
Generate an image from a description, store it in the organization's media bucket, and return its permanent URL for use in a page component's image prop. SPENDS REAL MONEY: it runs on the organization's OWN OpenRouter API key, so the model charge lands directly on the tenant's OpenRouter bill. There is no credit pool and no free allowance — every call is billed and metered against this account, whether or not the result is any good.
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
prompt
string
required
What the image should show. Keep it under 600 characters.
style
string
optional
Visual style, e.g. "photo", "illustration", "3d". Default: "photo"
Over MCP the same operation is the tool funnels_generate_image at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a funnel
funnels.getread
Fetch one funnel with its steps (pages), connected custom domains, theme, and total form submissions. Page documents are omitted — use funnel_pages.get for a page's content.
Over MCP the same operation is the tool funnels_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Open a funnel order
funnels.get_orderread
Fetch one FUNNEL checkout order with its buyer, payment status, amount and refunded amount, plus every line item — the main product, any order bump, and each upsell or downsell that was accepted, with what each was charged. commerce.get_order refuses anything that is not a storefront order, so this is the only reader for these. Amounts are in the smallest currency unit (cents). Read-only. The order token is never returned: it is a bearer credential that can charge the card saved on this order.
Over MCP the same operation is the tool funnels_get_order at https://app.chirply.io/api/mcp, same bearer token, same input.
Import captured page
funnels.import_capturewrite
Creates an unpublished, editable page from a captured browser page in an account-owned funnel. Source scripts are excluded; no page is published or messages sent.
Parameters
Field
Type
Required
Description
funnel_id
string (uuid)
required
Account-owned funnel to receive the draft.
source
object
required
Browser capture to convert into editable blocks.
source.url
string (uri)
required
Original source page URL.
source.title
string
required
Page title to use for the draft.
source.blocks
object[]
required
Visible page blocks captured in document order.
source.scripts
object[]
optional
Detected source scripts; these are excluded from the draft. Default: []
Over MCP the same operation is the tool funnels_import_capture at https://app.chirply.io/api/mcp, same bearer token, same input.
Import page
funnels.import_urlwriteconfirm
Uses the account's Firecrawl connection to read one public URL and create an unpublished, editable page in an account-owned funnel. Firecrawl credits may be billed to the connected provider account. Source scripts are detected and excluded; no page is published.
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 funnels_list at https://app.chirply.io/api/mcp, same bearer token, same input.
List A/B tests
funnels.list_ab_testsread
List the A/B tests in this account — per test: the page it runs on, label, traffic weight, lifecycle status (draft/running/paused/winner/archived), and when it started or concluded. Filter by funnel, page, or status. Use funnels.ab_test_results for the numbers.
Over MCP the same operation is the tool funnels_list_ab_tests at https://app.chirply.io/api/mcp, same bearer token, same input.
List funnel orders
funnels.list_ordersread
List orders taken through the organization's FUNNEL checkouts — the Orders screen under Funnels — newest first, each with buyer, payment status, amount, refunded amount and, unless you turn them off, its line items (main product, order bump, upsells and downsells). This is the funnel side of the business and it has no other reader: commerce.list_orders answers only for the storefront and hard-excludes everything here. Amounts are in the smallest currency unit (cents), and collected revenue is total minus refunded counting ONLY orders whose status is 'paid' — a 'pending' order is an abandoned checkout, not a sale. Read-only. The order token is never returned: it is a bearer credential that can charge a buyer's saved card.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
funnel_id
string (uuid)
optional
Only orders placed through this funnel. Omit for every funnel in the account.
Where the order came from. Defaults to 'funnel', the funnel checkout, which is what the Orders screen shows. 'any' returns every order in the account, storefront ones included. Default: "funnel"
Over MCP the same operation is the tool funnels_list_orders at https://app.chirply.io/api/mcp, same bearer token, same input.
Published release history
funnels.list_releasesread
List the last 50 immutable public releases for this site, including publications and rollbacks. This reads history without changing drafts or what visitors see.
Parameters
Field
Type
Required
Description
funnel_id
string (uuid)
required
Account-owned site whose publication history to list.
Over MCP the same operation is the tool funnels_list_releases at https://app.chirply.io/api/mcp, same bearer token, same input.
List funnel submissions
funnels.list_submissionsread
Read website inquiries and funnel opt-in submissions, newest first, including every submitted answer and the linked CRM contact. Filter by website, page or contact. This is read-only; it does not contact anyone or run automations.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
funnel_id
string (uuid)
optional
Only submissions from this funnel.
page_id
string (uuid)
optional
Only submissions from this page.
contact_id
string (uuid)
optional
Only website inquiries and funnel submissions linked to this CRM contact.
Over MCP the same operation is the tool funnels_list_submissions at https://app.chirply.io/api/mcp, same bearer token, same input.
List theme presets
funnels.list_theme_presetsread
List complete design themes and color-only schemes for websites and funnels. The presets array includes typography and spacing; color_schemes changes only colors and preserves the design. Pass a color_schemes id as color_scheme.preset to funnels.set_theme or funnel_templates.use. This read saves or publishes nothing.
Over MCP the same operation is the tool funnels_list_theme_presets at https://app.chirply.io/api/mcp, same bearer token, same input.
Match a screenshot
funnels.match_screenshotwriteconfirm
Analyze a reference website screenshot and restyle a supplied page document to match its visual direction using only structured, editable builder components. Returns the revised draft document but does not save or publish it — pass it to funnel_pages.save_content to keep it. SPENDS REAL MONEY: it runs on the organization's OWN OpenRouter API key, so the model charge lands directly on the tenant's OpenRouter bill. There is no credit pool and no free allowance — every call is billed and metered against this account, whether or not the result is any good. TWO billed calls per run: the vision pass over the screenshot, then the page edit.
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
document
any
required
Current structured Puck page document to restyle.
image_url
string
required
HTTPS image URL or PNG/JPG/WebP data URL containing the reference screenshot.
Over MCP the same operation is the tool funnels_match_screenshot at https://app.chirply.io/api/mcp, same bearer token, same input.
Publish a funnel
funnels.publishwriteconfirm
PUT THIS FUNNEL ON THE PUBLIC INTERNET. Every validated draft page and the draft theme are published together and become reachable at /f/<slug> (and on any active custom domain) to anyone with the link, with no login. Publish only when the content is ready to be seen by customers.
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 funnels_publish at https://app.chirply.io/api/mcp, same bearer token, same input.
Restore live release
funnels.restore_releasewriteconfirm
Restore a previously published site's page content, routes, SEO, access presentation and design tokens together for real visitors. Keeps current working drafts and saves the outgoing live state. Running A/B tests are paused. This changes the live site immediately; it does not grant entitlements, change current product prices or charge anyone.
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
release_id
string (uuid)
required
Release id from funnels.list_releases.
expected_revision
string
required
Current site's updated_at from funnels.get; rejects a rollback if the site changed since review.
Over MCP the same operation is the tool funnels_restore_release at https://app.chirply.io/api/mcp, same bearer token, same input.
Rewrite page copy
funnels.rewrite_copywriteconfirm
Rewrite one snippet of page copy — a headline, a subhead, a button label — and return the new text. No page is changed; write the result back with funnel_pages.save_content yourself. SPENDS REAL MONEY: it runs on the organization's OWN OpenRouter API key, so the model charge lands directly on the tenant's OpenRouter bill. There is no credit pool and no free allowance — every call is billed and metered against this account, whether or not the result is any good.
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
text
string
required
The copy to rewrite.
instruction
string
required
How to change it. Either free text, or one of the editor presets: punchier, shorter, longer, clearer, benefit, urgent.
Over MCP the same operation is the tool funnels_rewrite_copy at https://app.chirply.io/api/mcp, same bearer token, same input.
Save payment settings
funnels.set_payment_routewriteconfirm
Choose which connected Stripe account collects the money for a funnel, and whether it charges in live or test mode. THIS DECIDES WHERE REAL CUSTOMER MONEY LANDS. Pointing it at the wrong account sends this funnel's takings to another business's Stripe; setting mode to 'test' means every checkout on the funnel's LIVE published pages silently stops charging anyone — the pages keep working and buyers keep getting confirmation, and nothing is collected. It applies from the next checkout onward: orders already placed keep the account and mode pinned onto them at the time, so nothing in the past moves. The equivalent for a storefront is commerce.update_store; funnels.update deliberately does not accept these two columns, so this is the only way to set 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
funnel_id
string (uuid)
required
The funnel whose payment route to set.
stripe_account_id
string (uuid)
required
The connected Stripe account that will collect payments for this funnel: a `stripe_accounts` row id belonging to THIS account (see stripe.list_accounts). That is Chirply's own id for the connection, not a Stripe `acct_…` id. An account from another account is rejected.
payment_mode
"live" | "test"
optional
'live' takes real money on the account's live keys. 'test' uses its Stripe TEST credentials, so checkouts on the funnel's published pages complete without charging anyone — useful for a rehearsal, catastrophic if left on. Default: "live"
Over MCP the same operation is the tool funnels_set_payment_route at https://app.chirply.io/api/mcp, same bearer token, same input.
Change a funnel's theme
funnels.set_themewrite
Save site-wide design tokens as an unpublished draft. To change only colors and preserve fonts, spacing, buttons and content, pass color_scheme with a preset or custom brand/background colors. Alternatively pass a complete theme preset, overrides, or both. Every page uses the changes after the next publish; no live page changes or messages are sent now.
Over MCP the same operation is the tool funnels_set_theme at https://app.chirply.io/api/mcp, same bearer token, same input.
Start an A/B test
funnels.start_ab_testwriteconfirm
PUT THE TEST IN FRONT OF REAL VISITORS. From the moment this runs (within about a minute of cache), the chosen percentage of visitors to the page is served the challenger document instead of the live page. Assignment is deterministic and sticky per visitor. Also resumes a paused test. The variant must not have concluded.
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
variant_id
string (uuid)
required
The draft or paused A/B test to start.
weight
integer
optional
Percentage of visitors served version B. Defaults to the variant's stored weight (50 unless changed).
Over MCP the same operation is the tool funnels_start_ab_test at https://app.chirply.io/api/mcp, same bearer token, same input.
Funnel performance
funnels.statsread
Conversion stats per step for a funnel over the last N days: views, unique visitors, form submissions, paid orders and revenue (cents, net of refunds). This is what the Performance report on the funnel page shows.
Parameters
Field
Type
Required
Description
funnel_id
string (uuid)
required
The funnel to report on.
days
integer
optional
How many days back to include, ending today. Default: 30
Over MCP the same operation is the tool funnels_stats at https://app.chirply.io/api/mcp, same bearer token, same input.
Pause an A/B test
funnels.stop_ab_testwrite
Pause a running A/B test: within about a minute every visitor sees the original page again. Results collected so far are kept, and the test can be resumed with funnels.start_ab_test or concluded with funnels.declare_ab_winner.
Over MCP the same operation is the tool funnels_stop_ab_test at https://app.chirply.io/api/mcp, same bearer token, same input.
Submit form
funnels.submit_formwriteconfirm
Submit a real opt-in form on a PUBLISHED funnel page, exactly as a visitor filling it in would. THIS IS NOT A TEST: it creates or updates a REAL CRM CONTACT from the email and phone in the answers, stores a funnel submission against the page, counts toward that page's conversion stats, and immediately fires every `form_submitted` automation in the account — which can send real email, SMS or ringless voicemail to that person and bill the tenant's own provider accounts for it. There is no draft and no undo. Field names and which are required are read from the form's OWN published definition, not from what you send, so an answer for a field the form does not have is ignored and a missing required field is an error. Deduplication is the platform's: one phone number is one contact, matched on email first and then phone in any spelling it might be stored under, so submitting twice updates one person rather than creating two. Use funnels.list_submissions to read what has already come in.
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
slug
string
required
The funnel's public slug — the `<slug>` in /f/<slug>. It must be PUBLISHED and belong to this account.
page_path
string
optional
The published page's path within the funnel, e.g. 'thank-you'. Empty string (the default) is the funnel's home page. Default: ""
block_id
string
required
The id of the Optin block on that published page. Read the page with funnel_pages.get and take the `id` of the component whose type is 'Optin'.
values
map of string → string
required
The answers, keyed by the form field's `name` (lower-cased), e.g. {"email":"jane@acme.com","first_name":"Jane"}. Fields the published form does not define are ignored; a field the form marks required must be present and non-empty. An `email`/`phone`/`first_name`/`last_name`/`name` field is what gets mapped onto the CRM contact.
Over MCP the same operation is the tool funnels_submit_form at https://app.chirply.io/api/mcp, same bearer token, same input.
Take a funnel offline
funnels.unpublishwriteconfirm
Take a live funnel off the public internet. Visitors on /f/<slug> and on any custom domain immediately stop being able to reach it. Content and pages are kept — publish again to restore 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.
Over MCP the same operation is the tool funnels_unpublish at https://app.chirply.io/api/mcp, same bearer token, same input.
Rename a funnel
funnels.updatewriteconfirm
Rename a funnel or change its description or public slug. CHANGING THE SLUG MOVES THE FUNNEL'S PUBLIC URL: every link already shared at the old /f/<slug> — in sent emails, in live ads, on printed material, in other people's posts — breaks immediately and there is no redirect from the old address. Renaming alone is internal and safe; the slug is the irreversible part. Omitted fields are left alone.
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 funnel to edit.
name
string
optional
New funnel name.
description
string (or null)
optional
Internal description.
slug
string
optional
New public slug. Slugified before saving and unique across the whole platform.
stripe_account_id
string (uuid) (or null)
optional
Connected Stripe account that collects every payment on this funnel or website.
Over MCP the same operation is the tool funnels_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit an A/B test variant
funnels.update_ab_variantwriteconfirm
Change an A/B test's challenger: its document (same Puck shape as a page's content), its label, or the share of traffic that sees it. Pause a running test before editing it. Concluded tests cannot be edited.
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
variant_id
string (uuid)
required
The A/B test variant to change.
content
map of string → object
optional
The page as a Puck editor document: { "root": { "props": {} }, "content": [ { "type": "Hero", "props": { … } }, … ] }. Each entry in `content` is one section; `type` must be a registered component name and `props` are its settings (nested sections live inside slot props). Unrecognised component types are silently dropped on save, so ALWAYS read the page with funnel_pages.get and edit the document it returns rather than authoring one from scratch.
expected_revision
string
optional
Revision from updated_at returned by the last read or save. Stale writes are rejected.
label
string
optional
New display name for the challenger.
weight
integer
optional
Percentage of visitors served this version (0–100). Changing it mid-test reassigns visitors — prefer setting it before start.
Over MCP the same operation is the tool funnels_update_ab_variant at https://app.chirply.io/api/mcp, same bearer token, same input.
Add page from template
page_templates.add_to_funnelwrite
Add a new draft page to an existing funnel or website from an individual-page template. Complete multi-page website templates must use funnel_templates.use so no pages are discarded. The copied builder document receives fresh component ids, stays fully editable, and is never published automatically.
Parameters
Field
Type
Required
Description
funnel_id
string (uuid)
required
The funnel that will receive the new page.
template_id
string (uuid)
required
The individual-page template to copy.
name
string
optional
Name for the new page; defaults to the template name.
Over MCP the same operation is the tool page_templates_add_to_funnel at https://app.chirply.io/api/mcp, same bearer token, same input.
Save page as template
page_templates.save_from_pagewrite
Freeze one funnel page's current working draft as a reusable individual-page template. It is a private snapshot; later edits to either the source page or a copied page never change the other.
Over MCP the same operation is the tool page_templates_save_from_page at https://app.chirply.io/api/mcp, same bearer token, same input.
Archive or restore a product
products.archivewrite
Take a product out of the builder's pickers (archive) or put it back (restore). Products are archived rather than deleted because past orders reference them and a sold product has to stay resolvable for reporting.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The product to archive or restore.
active
boolean
optional
false archives it, true restores it. Default: false
Over MCP the same operation is the tool products_archive at https://app.chirply.io/api/mcp, same bearer token, same input.
Create a product
products.createwrite
Add a sellable product to the catalogue so it can be attached to an order form, an order bump or a one-click upsell inside the builder. Creating a product charges nobody — checkouts run on the organization's own connected Stripe account, and nothing can be sold until Stripe is connected.
Parameters
Field
Type
Required
Description
name
string
required
The product name buyers see.
price
string
required
The price as a decimal amount in the product currency — "49", "49.00" or "$1,299.99". NOT cents.
compare_at
string
optional
Optional strikethrough "was" price, same format. Display only; never charged.
kind
"one_time" | "recurring"
optional
One-off purchase or a subscription. Default: "one_time"
recurring_interval
"day" | "week" | "month" | "year"
optional
Billing interval. Only used when kind is 'recurring'. Default: "month"
currency
string
optional
Three-letter currency code. Default: "usd"
description
string
optional
Short description shown beside the offer.
image_url
string (uri)
optional
Product image URL.
stripe_account_id
string (uuid) (or null)
optional
Connected Stripe account that collects this product. If omitted, the first connected account is pinned.
payment_mode
"live" | "test"
optional
live moves real money; test uses the selected account's Stripe test credentials. Default: "live"
Over MCP the same operation is the tool products_get at https://app.chirply.io/api/mcp, same bearer token, same input.
List products
products.listread
List what the organization's funnels sell. A product can be the main offer on one funnel's order form and the order bump or one-click upsell on another. Amounts are integer cents.
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
boolean
optional
true for the live catalogue, false for archived products.
Over MCP the same operation is the tool products_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit a product
products.updatewriteconfirm
Update a product's name, price, currency, billing kind, artwork, or which Stripe account and live/test mode it charges on. THIS CHANGES WHAT REAL BUYERS ARE CHARGED: a new price takes effect at the next checkout on every funnel offering this product, and switching payment_mode to 'test' means live customers' cards stop actually being charged while the pages carry on looking like they are working (switching to 'live' does the reverse). Past orders are never rewritten — an order item copies the amount at purchase time. Omitted fields are left alone.
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 product to edit.
name
string
optional
New product name. Buyers SEE this — it is the line item on the order form, the receipt and the order record. Omit to leave it alone.
price
string
optional
New price as a decimal amount — "49" or "49.00". NOT cents. This is what the next real buyer is charged; orders already placed keep the amount they were charged.
compare_at
string (or null)
optional
Strikethrough "was" price shown beside the real one, as a decimal amount. null clears it. Presentation only — it is never charged.
kind
"one_time" | "recurring"
optional
'one_time' charges once at checkout; 'recurring' bills the buyer's card on a repeating schedule set by recurring_interval. Switching this changes how future buyers are billed — it does not migrate anyone already subscribed.
recurring_interval
"day" | "week" | "month" | "year"
optional
For a recurring product, how often the buyer is billed: day, week, month or year. Ignored for one-time products.
currency
string
optional
Three-letter ISO currency the price is charged in, e.g. 'usd'. Lower-cased and cut to three characters. A product in one currency cannot be bought alongside a bump or upsell in another.
description
string (or null)
optional
Buyer-facing description shown on the order form beside the product. null clears it.
image_url
string (uri) (or null)
optional
Public https URL of the product image shown to buyers. Use a media-library URL from assets.list or assets.upload so it can't break later. null removes the image.
stripe_account_id
string (uuid) (or null)
optional
Connected Stripe account that collects this product.
payment_mode
"live" | "test"
optional
live moves real money; test uses the selected account's Stripe test credentials.
Over MCP the same operation is the tool section_templates_insert_into_page at https://app.chirply.io/api/mcp, same bearer token, same input.
Save section as template
section_templates.save_from_pagewrite
Freeze one top-level section from a page's working draft as a reusable section template, including its nested columns, copy, images, and styles. Creating the template publishes nothing.
Over MCP the same operation is the tool section_templates_save_from_page at https://app.chirply.io/api/mcp, same bearer token, same input.
Approve resource setup
site_builds.approve_resourceswriteconfirm
Approve the exact reviewed CMS draft entries, local membership access definitions and paused manual follow-up workflows for a site build. CMS and access setup requires account management permission. Reviewed access setup enables native login for an unpublished new site; an existing published site requires explicitly enabling login first. Creates no member grants, sends no messages, activates no workflow and publishes no pages. Continuing the build SPENDS REAL MONEY within its already approved AI allowance.
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 build id returned by funnels.generate or site_builds.list.
expected_revision
string
required
Current build updated_at from site_builds.get; approval is rejected if the plan changed.
resources
object
required
Exact resource specifications and draft copy reviewed by the caller. Every blocking missing fact must be resolved before approval.
resources.version
1
optional
Version of the reviewed resource contract. Default: 1
resources.collections
object[]
optional
Site-owned CMS collections and reviewed draft entries to create atomically. Default: []
resources.collections[].key
string
required
Stable machine key used to retain identity across retries and plan review.
resources.collections[].name
string
required
Reviewed text grounded in the supplied business brief and facts.
resources.collections[].slug
string
required
Lowercase URL segment using letters, digits and hyphens.
resources.collections[].path
string
required
Lowercase URL segment using letters, digits and hyphens.
resources.collections[].description
string
required
Reviewed text grounded in the supplied business brief and facts.
resources.collections[].grounding
string
required
Reviewed text grounded in the supplied business brief and facts.
resources.collections[].fields
object[]
required
Native structured fields available to entry editors and template bindings.
resources.collections[].fields[].key
string
required
Stable machine key used to retain identity across retries and plan review.
Over MCP the same operation is the tool site_builds_approve_resources at https://app.chirply.io/api/mcp, same bearer token, same input.
Cancel build
site_builds.cancelwriteconfirm
Cancel the remaining AI work for a site build. Completed draft pages and activity stay available. No more tasks can commit results; provider requests already sent may still be billed. Cancelling does not unpublish or delete any site.
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 build id returned by funnels.generate or site_builds.list.
Over MCP the same operation is the tool site_builds_cancel at https://app.chirply.io/api/mcp, same bearer token, same input.
View AI build progress
site_builds.getread
Read a saved site's build plan, task progress, issues and activity. Reports partial and failed work explicitly. This polling call never spends money or drives the runner.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The build id returned by funnels.generate or site_builds.list.
Over MCP the same operation is the tool site_builds_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Choose build connections
site_builds.input_resourcesread
List up to 200 active products and booking events in this account for resolving a site's build plan. Returns resource ids and names only; makes no paid calls and changes no records.
Over MCP the same operation is the tool site_builds_input_resources at https://app.chirply.io/api/mcp, same bearer token, same input.
List AI site builds
site_builds.listread
List saved AI site builds in this account, including progress, remaining call allowance and unresolved issues. Reads only; it does not run a model or change any page.
Over MCP the same operation is the tool site_builds_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Pause build
site_builds.pausewrite
Pause an AI site build at its saved checkpoint. A provider request already sent may still be billed, but its late result cannot overwrite the draft after this control takes effect. Completed draft pages are kept.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The build id returned by funnels.generate or site_builds.list.
Over MCP the same operation is the tool site_builds_pause at https://app.chirply.io/api/mcp, same bearer token, same input.
Refresh provider charges
site_builds.reconcile_spendwrite
Retrieve authoritative provider receipts for uncertain requests already sent by this build, updating actual charges and releasing only reconciled reservations. Makes no new AI generation request and incurs no generation charge. Missing provider receipts remain explicitly uncertain.
Parameters
Field
Type
Required
Description
id
string (uuid)
required
The build id returned by funnels.generate or site_builds.list.
Over MCP the same operation is the tool site_builds_reconcile_spend at https://app.chirply.io/api/mcp, same bearer token, same input.
Resume build
site_builds.resumewriteconfirm
Resume an AI site build from saved progress, retrying unfinished work. SPENDS REAL MONEY on the account's connected AI provider within the remaining call allowance. Optionally authorize additional paid attempts; completed pages are preserved and nothing is published.
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 build id returned by funnels.generate or site_builds.list.
additional_calls
integer
optional
Additional paid model attempts to authorize. Zero uses only the existing allowance. Default: 0
resolution
object
optional
Resolve missing facts and resource connections before resuming. Existing page keys and routes are kept.
resolution.facts
string
optional
Verified additional business facts to use in unfinished pages.
resolution.answers
map of string → string
optional
Answers to missing facts, keyed by the requirement's zero-based index.
resolution.bindings
object[]
optional
Explicit product and booking connections for the planned pages.
resolution.bindings[].pageKey
string
required
Stable page key from the saved plan.
resolution.bindings[].productId
string
optional
Active account-owned product id, or empty to clear.
resolution.bindings[].bookingEventId
string
optional
Active account-owned booking event id, or empty to clear.
Over MCP the same operation is the tool site_builds_resume at https://app.chirply.io/api/mcp, same bearer token, same input.
Save plan and continue
site_builds.revise_planwriteconfirm
Apply a reviewed sitemap revision and continue building added or explicitly selected pages. Preserves existing page content by default and keeps excluded pages intact. Changes draft routes and shared navigation; nothing is published. Resumed generation SPENDS REAL MONEY within the existing AI call and dollar allowances.
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 build id returned by funnels.generate or site_builds.list.
expected_plan_revision
integer
required
Current plan_revision from site_builds.get; rejects another editor's intervening plan changes.
plan
any
required
Complete saved plan from site_builds.get with reviewed changes to steps, creativeDirection, context or requirements. Preserve stable step keys, schemaVersion, project kind and resources. Steps contain key,name,path,stepType,brief,requiredChecks,access and optional productId/bookingEventId. Home is first with empty path; other paths have no leading slash.
regenerate_pages
object[]
optional
Existing pages to regenerate. Omit to preserve their saved content; new planned pages are generated automatically. Default: []
regenerate_pages[].page_key
string
required
Stable key of an existing page whose content you explicitly authorize replacing.
regenerate_pages[].expected_revision
string
required
Exact current page updated_at reviewed before authorizing regeneration.
Over MCP the same operation is the tool site_builds_revise_plan at https://app.chirply.io/api/mcp, same bearer token, same input.
Save AI spending limit
site_builds.set_budgetwriteconfirm
Change the total authorized AI provider spending limit for a saved build. This authorizes REAL MONEY spending when the build resumes. Explicit null removes the dollar cap while retaining its AI call allowance. The new cap must cover recorded charges and outstanding reservations. Pause active work before changing it; this action does not resume the build.
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 build id returned by funnels.generate or site_builds.list.
expected_revision
string
required
Current build updated_at reviewed before changing its allowance.
max_spend_usd
number (or null)
required
Total cap in USD with at most two decimal places (10 means $10), or explicit null to authorize call-count budgeting without a dollar ceiling.