MCP server
The Personizely MCP server lets AI assistants such as Claude, ChatGPT and Cursor work with your Personizely account through the Model Context Protocol. Once connected, you can ask in plain language for your running A/B tests, their results and significance, and widget performance, and have the assistant start or stop campaigns and widgets. It uses the REST API under the hood, with the same data and permissions.
Connection details
| Value |
|---|---|
Server URL | https://mcp.personizely.net/ |
Transport | Streamable HTTP |
Authentication | OAuth 2.1 (automatic in clients that support it), or an API key as a bearer token |
Scopes | read (view data), write (start and stop campaigns and widgets only) |
Connect an AI assistant
With OAuth (recommended)
Most current MCP clients, including Claude and ChatGPT, discover Personizely's sign-in automatically.
- In your AI client, add a custom connector or remote MCP server with the URL https://mcp.personizely.net/.
- When the client asks you to connect, you're sent to Personizely. Sign in.
- If you belong to more than one Personizely account, choose the account to connect.
- Review the requested access and approve. You must be an owner or admin of the account.
- Back in the client, the Personizely tools are available.
The connection appears under Account → API in Personizely. Remove it there to disconnect the assistant. The client renews its access automatically; if it hasn't been used for 30 days, you'll be asked to sign in again.
With an API key
For clients without OAuth support, or for scripts and agents you run yourself, send an API key in the Authorization header:
{
"mcpServers": {
"personizely": {
"url": "https://mcp.personizely.net/",
"headers": {
"Authorization": "Bearer ply_live_XXXXXXXXXXXXXXXX"
}
}
}
}The exact configuration format depends on your client. An API key can read data and start or stop campaigns and widgets on every website in the account, so keep the configuration file private.
Tools
Every tool except list_websites takes an optional websiteId. It's required when your account has more than one website; assistants usually call list_websites first and ask you which site to use.
Tool | What it does | Access |
|---|---|---|
list_websites | Lists the websites in the account (ID and domain) | read |
list_campaigns | Lists campaigns, filtered by active status and campaign type | read |
get_campaign | Gets one campaign with its variations | read |
get_campaign_results | Gets campaign results: reach, conversions, revenue, improvement and significance per variation. Optional goal, breakdown (device, country, channel, referrer), metric and filters | read |
start_campaign | Starts a campaign | write |
stop_campaign | Stops a campaign | write |
list_widgets | Lists widgets, filtered by active status and type (popup, callout, bar, embedded) | read |
get_widget | Gets one widget with its variations and experiments | read |
get_widget_results | Gets widget results | read |
get_widget_experiment_results | Gets per-variation results for a widget A/B test | read |
start_widget | Starts a widget | write |
stop_widget | Stops a widget | write |
list_goals | Lists goals, so the assistant can name the goals in results | read |
get_goal | Gets one goal | read |
list_targets | Lists targets (audiences), so the assistant can name them | read |
get_target | Gets one target | read |
The results tools use the same statistics as your reports. See Statistics methodology.
Behavior details and limitations
- Same data as the dashboard. Results match the campaign and widget reports, including the attribution window and each campaign's significance settings. Widget A/B test results use 95% significance. Results refresh every few minutes.
- Start and stop go live. When the assistant starts or stops a campaign or widget, the change takes effect on your site as if you'd done it in the dashboard. Most clients ask you to confirm before calling a tool that changes something.
- Write access depends on what was approved. Starting and stopping need the write scope. If the assistant reports a permission error when starting or stopping, disconnect it under Account → API, reconnect and approve write access, or connect with an API key.
- Read and start/stop only. The MCP server can't create or edit campaigns, widgets, goals or targets.
- Targets are listed by name only. The assistant can see which audience a campaign uses, but not the audience's rules.
- Fewer report filters than the REST API. The results tools accept date range, device, browser, OS, location, UTM, referrer, new or returning visitor, and Shopify order tags. Filtering by first visit page, order value or z-score is only available through the REST API.
- One account per connection. To work with several Personizely accounts, add a connection for each.
Example prompts
- "Which A/B tests are running on shop.example.com, and which ones have a winner?"
- "Show the price test results for the last 30 days on mobile only, using profit per visitor."
- "Break down the homepage hero test by country. Where does variation B lose?"
- "Compare the exit popup's experiment variations. Is the version with the discount worth it over no popup?"
- "Stop the free shipping bar on the wholesale site."
Troubleshooting
- The client says the server needs authentication, but never shows a sign-in → the client doesn't support MCP OAuth. Connect with an API key in the Authorization header instead.
- "This account has multiple websites" → the assistant didn't pass a website. Tell it which domain to use, or ask it to list your websites first.
- "Invalid or expired token" → the connection was removed under Account → API, or the client's access lapsed. Reconnect.
- The approve button fails → you're not an owner or admin of the account you picked. Ask an admin to connect, or to change your role.
Related
- REST API