FunnelKit
Read since 3.16.0, write since 3.19.0 (Pro). Two dispatcher tools drive FunnelKit Funnel Builder through FunnelKit’s own REST controllers, so every write passes the same validation as the FunnelKit admin:
| Tool | Default | Purpose |
|---|---|---|
funnelkit-read | On | Funnels, steps, page configuration, checkout products and fields, order bumps, upsells, A/B tests, analytics, exports |
funnelkit-write | Off | Create and change all of the above, import templates and funnels |
FunnelKit Funnel Builder must be active and the connected user needs manage_woocommerce. Order bumps, upsells, A/B tests, checkout field conditions and thank-you page rules need Funnel Builder Pro; their operations are left out of the catalog without it. For automations, contacts and broadcasts see FunnelKit Automations.
Discover first
Section titled “Discover first”Call either tool with no operation. The answer lists every operation with its arguments, the required ones, and whether it needs confirm, accepts dry_run, and can be undone.
funnelkit-write({})funnelkit-read({ operation: "list-funnels", arguments: { limit: 10 } })Build a funnel end to end
Section titled “Build a funnel end to end”| Step | Operation | Notes |
|---|---|---|
| 1 | create-funnel | funnel_name, and optionally funnel_steps, a list of step types (["landing", "wc_checkout", "wc_thankyou"]) created at once as blank steps with FunnelKit’s default titles. Or import-template with a FunnelKit template (needs confirm; long imports answer pending, continue with import-status). |
| 2 | create-step | type (landing, optin, optin_ty, wc_checkout, wc_upsells, wc_thankyou) and title. Blank, from a template (builder and template), or a copy (duplicate_id). A new upsell step comes with one sample offer. Give a checkout step a design before publishing it: a checkout with no design breaks its page on FunnelKit free. |
| 3 | set-checkout-products | Products as { id, quantity, discount_type, discount_amount }. Run with dry_run: true first: it reports the price a buyer pays. |
| 4 | create-order-bump, set-order-bump-products | Bump products are WooCommerce product IDs; quantity and discount through set-order-bump-product-layout. |
| 5 | create-offer, set-offer-products | Price and quantity through set-offer-product-layout; set-upsell-path decides where accept and reject lead. |
| 6 | publish-all-steps | Publishes the funnel’s own steps. |
| 7 | get-funnel, get-checkout-products | Verify. |
Discount types: percent_discount_reg, percent_discount_sale, fixed_discount_reg, fixed_discount_sale, flat_price.
Steps are WordPress pages. A step built with Elementor is designed with the Elementor tools, using the step ID as the post ID. update-step-design with design: {builder, template} (for example {"builder": "elementor", "template": "minimalist"}, from list-templates) imports a template and replaces the step page’s content; it is the only FunnelKit operation that rewrites a page. Checkout embed-form templates (embed_forms_*) are sent with FunnelKit’s embed form builder, and a Gutenberg template on a site without SlingBlocks answers builder_unavailable.
On a real site
Section titled “On a real site”From our test run with the fictional Larkspur Kitchen School, recorded over a real MCP connection with FunnelKit Funnel Builder’s free edition. The FunnelKit integration page shows every call the assistant made.

The checkout step’s product in FunnelKit: $375 with $25 off, $350 to pay.

Every write is in History, grouped by session, with its own Undo.
Safety and undo
Section titled “Safety and undo”- Deletes need
confirm: true. Creates and updates acceptdry_run: true, which shows the exact request and writes nothing. - Every write is recorded in EMCP Tools → History. Most can be undone there, including deleting a step together with its order bumps. Undo refuses with a conflict when someone changed the same funnel afterwards.
- Not undoable, and recorded with the reason: resetting analytics or an A/B test, declaring an A/B winner, assigning funnel categories, creating, deleting or importing the store checkout, and importing several funnels at once.
- If
create-stepfails after FunnelKit stored new steps, the answer ispartial_writewith theirstep_idsandattribution: unverified, because another request may have created them. Nothing is deleted automatically; History gets an entry naming the funnel, so check it in FunnelKit before cleaning up. - Funnel exports (
export-funnels,export-store-checkout) return JSON inline, up to 2 MB.import-funnelstakes that JSON back as new funnels.
In the admin
Section titled “In the admin”FunnelKit has one row under EMCP Tools → Tools → Plugins, in the E-Commerce group, with its Read and Write switches side by side. Both are Pro tools; the write tool starts disabled. Switch it on, choose Save changes and reconnect your AI client. While FunnelKit Funnel Builder is not active, the row carries a Needs FunnelKit Funnel Builder badge and cannot be switched on.
