AI access & API keys
Connect Claude, ChatGPT, or your own tools to Formtoro with the MCP server and scoped API keys.
Formtoro isn't only driven from the admin, it's a fully agentic platform.
You can connect AI clients (like Claude or ChatGPT) and your own scripts to read your analytics and build forms — through the MCP server and API keys. Manage both in Settings → API and MCP Connections.
Both surfaces are part of the AI Insights plan. On other plans the page shows everything in a locked state with an upgrade banner — and if you ever downgrade, existing keys and connections stay visible so you can still revoke them.
Connect an AI client (MCP)
Formtoro runs a hosted MCP (Model Context Protocol) server, so MCP-compatible AI clients can work with your shop on your behalf. The client prompts you to sign in to Formtoro and approve the connection — so you stay in control.
The server speaks the streamable HTTP transport — connect to it as a remote HTTP server, not a local (stdio) one. The server URL is:
https://mcp.formtoro.com/mcpYou'll find the same URL, with a copy button, under Settings → API and MCP Connections → Connect a new client.
Claude Desktop
Formtoro connects as a remote server through Claude's connectors — no config file editing needed:
- Open Claude Desktop → Settings → Connectors.
- Choose Add custom connector.
- Paste the server URL and confirm.
Claude then walks you through the Formtoro sign-in and consent screen.
Claude Code (CLI)
Run this in your terminal — the --transport http flag is required, since
without it Claude Code treats the server as a local (stdio) one and the
connection fails:
claude mcp add --transport http formtoro https://mcp.formtoro.com/mcpThen run /mcp inside Claude Code, select the MCP "formtoro", authenticate and approve the connection.
ChatGPT
Open ChatGPT → Settings → Connectors → Add custom MCP server, then paste the server URL.
After connecting
The first time a client connects, Formtoro asks which shop you're
connecting — enter your .myshopify.com domain (pasting your admin URL or
just the store handle works too). You then sign in through your Shopify
account for that shop and land on a consent screen that names the exact
client requesting access. Reading analytics is always part of a connection;
everything beyond that is a checkbox you tick explicitly:
- Form editing — create and edit form drafts.
- Discounts — read your discount definitions.
- Branding — read your themes and confirmed brand.
- Branding editing — fork and edit themes and reusable styles.
- Customer lifetime value — customer-level revenue data.
An unticked box is never granted, and a client can't widen its own access later — to change what a connection can do, disconnect it and connect again.
Once approved, the connection appears under Settings → API and MCP Connections, showing when it was created and last used. Connections are per team member — you only see the ones you authorized — and you can Disconnect any of them at any time, which immediately revokes access. Disconnected clients move to a separate list for reference.
Connecting more than one store
Each connection is tied to exactly one shop — the one you pick during sign-in. If you run multiple stores, connect the server once per store.
In Claude Code, add the server under a different name for each store, then authenticate each one to its own shop:
claude mcp add --transport http formtoro-storea https://mcp.formtoro.com/mcp
claude mcp add --transport http formtoro-storeb https://mcp.formtoro.com/mcpNaming the entries after your stores also keeps the assistant from mixing them up — both connections expose the same tools, so the server name is what tells it which store you mean.
Claude Desktop and ChatGPT identify a connector by its URL, so they hold one Formtoro connection at a time. To work with a different store there, disconnect the connector and add it again, signing in to the other shop.
What an AI client can do
A connected assistant gets the same tool surface Luigi uses in-app, so it can work with your shop end to end:
- Learn your building blocks.
list_node_typesandlist_targeting_optionsteach it Formtoro's form vocabulary;list_themes,get_theme, andget_shop_brandgive it your brand and themes so what it builds looks like yours. - Author forms — always as drafts.
create_formbuilds a new form from a high-level blueprint (or a full schema),get_form+update_formedit an existing one, andvalidate_form_schema,get_form_issues, andcheck_publish_readinesslet it check its own work — the same issue checks the builder's issues panel runs. Nothing an AI client writes goes live: you review the draft in the builder and press Save version yourself. - Design reusable branding (with Branding editing approved): fork and update themes, create and update shared style classes.
- Read discounts (
list_discounts) so a form it builds can reference a real discount. - Answer analytics questions. Over thirty read tools cover funnels, step drop-off, trends, attribution, revenue by UTM, ad spend, discount performance, A/B experiment results, subscriber breakdowns, customer cohorts and lifetime value, and more.
The server also ships ready-made prompts your client can surface — like
author_popup, daily_executive_summary, conversion_audit, and
experiment_readout — that walk the model through a full task with the right
tools.
API keys
For scripts, BI tools, and integrations, mint an API key under Settings → API and MCP Connections:
- Choose Generate API key.
- Give it a name you'll recognize later (e.g. "BI script" or "Zapier").
- Select the permissions (scopes) it should have — at least one is required, and Analytics is pre-selected as the sensible default.
- Copy the key. This is the only time the key is shown, so store it somewhere safe (a password manager, not a shared doc).
Keys look like ft_live_… and are sent as a bearer token against the REST API:
curl https://api.formtoro.com/v1/forms \
-H "Authorization: Bearer ft_live_your_key_here"Managing keys after minting:
- Edit permissions changes a key's scopes in place — the key itself never changes, and the new scopes apply from its next request. You can only add scopes your own role holds; scopes already on the key are preserved.
- Revoke permanently disables a key right away. Revoked keys stay listed in a muted state so you have a record of what existed.
- Every mint, permission edit, and revoke is written to your shop's audit trail.
Scopes
Each key is least-privilege — it can only do what you grant, and you can only grant scopes your own role already has:
| Scope | Grants |
|---|---|
| Analytics | Read funnels, step drop-off, engagement, devices, trends, attribution, revenue, discount performance, subscriptions, and A/B results. |
| Customer lifetime value | Read customer-level lifetime value. Grant only to trusted integrations. |
| Form editing | Create and edit forms as drafts. Does not publish or change live forms. |
| Discounts | Read your discount definitions (id, name, status, config). Read-only, no customer data. |
| Branding | Read your themes and confirmed brand (logo, colors, fonts). Read-only, no customer data. |
| Branding editing | Create and edit reusable design artifacts — fork/update themes, create/update shop-level styles. Grant only to trusted integrations. |
The REST API
Everything the scopes above unlock is served from https://api.formtoro.com —
forms and funnels, branding and themes, discounts, revenue and attribution, and
shop analytics. The full endpoint-by-endpoint reference, with request and
response shapes, lives in the API reference.
Next steps
- Luigi, your AI assistant — the in-app version of the same capabilities.
- API reference — every REST endpoint an API key can call.
- Settings & team — roles and permissions, which bound what you can grant.