Connect Your AI
Jule runs a remote MCP server (Model Context Protocol), the open standard AI assistants use to work with other products. Any assistant that supports remote MCP servers - Claude, ChatGPT, Cursor, Claude Code and others - can connect to Jule and build, preview and publish pop-ups, preference centers and landing pages in your workspace. It works with your own Jule login - nothing to copy and paste - and the assistant gets exactly the access you have.
Every client needs the same single value, the server URL: https://api.jule.ai/mcp
To let an assistant read these docs instead, point it at llms.txt - the index of every page - or llms-full.txt, all pages in one file. Any page is also available as Markdown: add .md to its URL.
Before You Start
- A Jule account whose role includes the Connect AI Tools permission. The default Admin and Member roles have it; custom roles get it in Settings → Roles.
- An AI assistant that supports remote MCP servers with OAuth sign-in. The sections below cover the clients we test against; most others accept the same URL.
- For a script, a CI job or an automation platform that cannot open a browser, an access token instead of a sign-in - see Automations & Scripts.
- For Claude Team and Enterprise plans, and for ChatGPT Team and Enterprise workspaces, an owner or admin may have to add the connector or enable developer mode before members can connect.
- A Jule plan that covers what you want built. Preference centers work on every plan; pop-ups, landing pages and A/B tests need an upgraded plan, and coupons are switched on per organization. The assistant reads your plan as soon as it connects and tells you what is unavailable instead of failing halfway through.
How Connecting Works
The flow is the same in every client. You give it the server URL, it opens Jule in your browser, and Jule asks you to sign in (if you are not already), pick the organization to connect when you belong to more than one, and review the permissions grouped as Read, Write and Publish. Tick Read-only access if the tool should only look and never change anything; you can connect again later to allow more. Click Allow Access and the browser hands you back to the assistant. Nothing is copied or pasted: the assistant registers itself with Jule and receives its own credentials.
A connection is tied to you and to one organization. The assistant can only see the workspaces you can see and only do what your role allows; if you lack a permission in the dashboard, the assistant lacks it too. Connections stay active as long as you use them at least once every 90 days, or until you revoke them (see Managing Connections).
Claude (Web & Desktop)
Connectors added at claude.ai are shared with the Claude desktop app.
Open Settings → Connectors and choose Add custom connector.
Name it Jule, paste https://api.jule.ai/mcp as the remote MCP server URL and leave the OAuth client ID and secret empty. Click Add.
Click Connect next to Jule. Sign in, choose your organization and click Allow Access.
In a new chat, open the tools menu and enable Jule. Ask “What can Jule do?” to confirm the connection.
Claude Code
Claude Code (the terminal agent) adds the server from the command line and signs in through your browser.
claude mcp add --transport http jule https://api.jule.ai/mcp
claude
/mcp # choose "jule" → AuthenticateThe browser opens Jule’s consent page; after Allow Access the terminal reports “Authentication successful”. Claude Code caches the tool list per connection, so when Jule announces new capabilities run /mcp and reconnect. Jule’s guided prompts show up as slash commands such as /mcp__jule__build-popup.
ChatGPT
ChatGPT connects to custom MCP servers through developer mode, available on paid plans. Team and Enterprise admins may need to enable it for the workspace first, and on Plus and Pro plans ChatGPT limits what a custom connector may write - reads always work.
Open Settings → Apps & Connectors → Advanced settings and turn on Developer mode.
Choose Create. Name it Jule, enter https://api.jule.ai/mcp as the MCP server URL, pick OAuth as the authentication method and save.
Click Connect, sign in to Jule, choose your organization and click Allow Access.
In a chat, open the + menu, choose Developer mode and enable Jule for that conversation.
Cursor
One click does it: Add Jule to Cursor opens Cursor’s install dialog with the server filled in. To do it by hand, open Settings → Tools & MCP → Add Custom MCP, which opens ~/.cursor/mcp.json, and add the Jule entry:
{
"mcpServers": {
"jule": { "url": "https://api.jule.ai/mcp" }
}
}Back in Settings the server shows Needs login. Click it, sign in to Jule and click Allow Access. The tool list appears once the status turns green. Cursor renders Jule’s draft preview inline in the chat.
VS Code
Jule works in VS Code’s agent mode (Copilot Chat). Add Jule to VS Code asks VS Code to install the server for you; the same entry can be typed into .vscode/mcp.json for one project or into your user mcp.json for all of them.
{
"servers": {
"jule": { "type": "http", "url": "https://api.jule.ai/mcp" }
}
}Press Start on the server, sign in to Jule in the browser window VS Code opens, then pick Jule’s tools from the agent mode tool list. VS Code renders Jule’s draft preview inline.
Codex
Codex adds remote servers from its CLI and signs in through your browser. The same connection then serves the Codex desktop app.
codex mcp add jule --url https://api.jule.ai/mcp
codex mcp login julecodex mcp list shows the connection once sign-in finished. For a CI job that cannot open a browser, use an access token instead (Automations & Scripts).
Gemini CLI
Gemini CLI reads MCP servers from ~/.gemini/settings.json (or .gemini/settings.json inside a project). Note the key is httpUrl, not url.
{
"mcpServers": {
"jule": { "httpUrl": "https://api.jule.ai/mcp" }
}
}Start gemini and run /mcp auth jule. Sign in to Jule in the browser and click Allow Access.
/mcp lists Jule’s tools once the status reads connected. The consumer Gemini app on the web cannot add custom MCP servers; the CLI and Antigravity can.
Other Clients
Any client that supports remote MCP servers over HTTP with OAuth works the same way: give it https://api.jule.ai/mcp and sign in when it asks. Windsurf, Zed, Cline, Kiro, Warp, Raycast and OpenCode all use the mcpServers shape below (Windsurf calls the field serverUrl).
{
"mcpServers": {
"jule": { "url": "https://api.jule.ai/mcp" }
}
}Clients that read a server card can discover Jule from GET https://api.jule.ai/.well-known/mcp.json. A client that only speaks stdio can wrap the remote server with npx mcp-remote https://api.jule.ai/mcp. Microsoft 365 Copilot and Gemini Enterprise reach Jule after an administrator registers the URL in their own console.
Automations & Scripts
Some clients cannot open a browser: a CI job, a server-side agent, an automation platform, or the MCP connector of an AI API. Those use a personal access token - a long-lived bearer token you create in the dashboard and send as an Authorization header. Everything else is identical: same server URL, same tools, same permissions.
Open Settings → Connected Apps in Jule and click Create Token.
Name it after the job that will use it, pick the organization, tick only the permissions that job needs, and choose an expiry (up to one year).
Copy the token from the dialog. It is shown once - Jule keeps only a hash - so store it in your secret manager before closing.
Two calls prove a token works: initialize and tools/list. The accept header is required by the protocol.
curl -sS https://api.jule.ai/mcp \
-H "Authorization: Bearer $JULE_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"curl","version":"1"}}}'For an AI platform that asks for an MCP server URL and a bearer token, give it https://api.jule.ai/mcp and the token. The token appears in Connected Apps as a Token row next to your AI connections, with its expiry, last use and call count, and Revoke access stops it immediately.
What Your AI Can Do
Once connected, describe what you want in plain words. The assistant reads your workspace branding and integrations, drafts the project, validates it against Jule’s rules, saves it as a draft, and hands you a preview before anything goes live. Clients that offer tools but no MCP resources (ChatGPT, Codex, Windsurf) read the same building guides through the tools, in small parts, so nothing is lost there.
Build a two-step newsletter pop-up with our branding,
preview it, then publish.Things to ask
- Build an exit-intent email pop-up for the spring sale with a 10% code, in our brand colors.
- Turn this Figma frame into a hosted landing page and show me the phone preview.
- Add a Spanish translation to the Welcome Offer pop-up and check nothing is missing.
- Create a preference center where subscribers choose newsletter topics and frequency.
- How did the Welcome Offer pop-up do in the last 30 days, and where do people drop off?
- Set up an A/B test of two headlines on the Welcome Offer pop-up; do not start it yet.
The complete list of tools, prompts and resources - with what each one needs and whether it asks before touching live traffic - is on the MCP Tool Reference page, generated from the live server.
- Read your workspaces, brand colors, fonts, logos and legal text, Iterable and coupon status, projects and templates.
- Build and edit pop-ups, preference centers and landing pages: pages, elements, styling, settings and translations. Every change lands as a draft version in the same editor you use, so you can keep working on it by hand.
- Preview the draft in the real widget at desktop, tablet and phone width. The preview link lasts ten minutes; Claude, ChatGPT and Cursor render it inline in the conversation, other clients show the links. An assistant that can open or screenshot a web page itself is asked to check its own work against your brief, every page and on the phone preview, before it says it is done.
- Check a draft the way the editor does before publishing: the same warnings (missing email field, phone without an SMS disclaimer, no submit button, Iterable not connected), plus responsive advice and translation completeness per language.
- Translate a project into more languages, design quiz and branching logic, and connect Iterable from the live list of your profile fields, lists, channels and custom events.
- Run A/B tests end to end (create, edit, link variants and triggers, start, promote the winner), manage coupons and codes, show-rule triggers, webhook subscriptions and branding (palette, theme colors, icon library, logos, fonts, images).
- Report on your analytics: the dashboard numbers and any breakdown you ask for (submissions by week and project, conversion by country, drop-off by page), shown as a chart and a table in the chat without asking, and turned into an Excel, Word, PDF or HTML report by the assistant when you want a file.
- Publish, archive or delete only after asking you. The assistant shows a summary of what will change to live traffic and waits for your explicit yes.
- Duplicate projects, restore an earlier version and save a project as a template.
What stays in the dashboard
Some things are deliberately out of reach. The assistant says so and points you at Jule rather than guessing:
- Inviting teammates, and creating or editing roles and permissions.
- Keys and secrets: the Iterable API key and a webhook destination’s signing secret.
- Setting up or verifying a custom domain. It can read whether a project’s domain is verified; it cannot change it.
- Creating or editing webhook destinations, and the One-Click Unsubscribe setting. It can point a project at a destination that already exists.
- Billing and plan changes.
Managing Connections
Settings → Connected Apps lists every AI tool connected to your account and every access token you created, with the name, the permissions granted, when it was created, when it was last used and, for a token, when it expires. Revoke access in a row’s menu cuts it off immediately; an AI tool then asks you to connect again and a token stops working for good. Users with the Manage AI Connections permission (Admins by default) can switch to the organization view to see and revoke everyone’s connections and tokens.
Disconnecting inside the AI tool removes Jule from that tool but does not notify Jule, so the row stays in Connected Apps until it expires. To be sure access is gone, revoke it in Jule.
Limits & Errors
Limits
- Calls: 120 a minute per connection and 1,200 a minute per organization; over that, a call answers
rate_limitedwith the seconds to wait. - Uploads: an image sent inline may be 2 MB; by URL or one-time upload link, 10 MB.
- Time-boxed values: preview links last ten minutes, confirmation tokens five minutes (single use), a retried create with the same
idempotency_keyreplays the first result for 24 hours. - Custom analytics queries: 500 a day per organization; a query covers at most one year, two breakdowns and 1,000 rows. The fixed reports and the overview are not counted.
- Plan:
whoamilists the features your plan includes; a call for one it does not answersplan_requiredinstead of failing halfway.
Retries
A create that times out on the way back may still have happened. The create tools (project, A/B test, coupon, coupon codes) accept an optional idempotency_key: repeating the call with the same key and arguments returns the first result, marked idempotent_replay, instead of a duplicate; the same key with different arguments is refused. Assistants that follow the tool descriptions use it on their own.
Error codes
A failed call answers with a code the assistant can act on, a sentence for you, and sometimes detail such as the field or the current version:
| Code | Meaning | What to do |
|---|---|---|
invalid_arguments | A field is missing, malformed or not allowed; document errors carry the JSON path and a help entry with the allowed values. | Fix the arguments and call again. |
not_found | No project, workspace, coupon or page with that id in this organization. | Read the list tool again for current ids. |
forbidden | Your role lacks the permission in that workspace, or the workspace belongs to another organization. | Ask an admin for the permission, or reconnect to the right organization. |
plan_required | The feature is not in your plan (pop-ups, landing pages, A/B tests or coupons on the Essential plan). | Change plans in the dashboard; the assistant cannot. |
insufficient_scope | The connection was granted fewer permissions than the tool needs. | Reconnect and allow it (a read-only connection stays read-only until you reconnect); a token has to be recreated. |
conflict | The project changed since it was read (a stale expected_version), a name is taken, or an identical call with the same idempotency_key is still running. | Read again and retry; for a running call, wait a few seconds and repeat it. |
rate_limited | More than 120 calls a minute on one connection, or 1,200 across the organization. | Wait the retry_after_seconds it reports. |
requires_confirmation | Not an error: a live-traffic action (publish, archive, delete, promote a winner, delete an asset) returns a summary and a confirmation token first. | The assistant shows the summary and calls again with the token only after you agree; tokens last five minutes and work once. |
unavailable | Jule could not complete the call right now. | Retry in a minute or use the dashboard. |
internal_error | Something failed unexpectedly. The answer carries a reference_id. | Retry once; if it persists, send the reference_id to support@jule.ai. |
Troubleshooting
- The client keeps asking you to sign in. Check the URL is exactly
https://api.jule.ai/mcpwith no trailing slash or path, then remove the connector and add it again so the client registers itself from scratch. A loop that survives that is usually a browser blocking third-party cookies for claude.ai or chatgpt.com during the redirect. - The consent page says your role lacks Connect AI Tools. Ask an administrator to add that permission to your role in Settings → Roles, then start the connection again from the assistant.
- The assistant says it needs a permission it was not granted. The AI tool decides which permissions to ask Jule for, and the consent screen shows you that list to allow or deny - there is nothing to tick there. Web clients re-run consent by themselves; in a terminal client, disconnect and connect again so it asks from scratch. For a token, the permissions are the ones you ticked when you created it: create a new token with the missing one, since scopes cannot be added afterwards.
- Everything returns “sign in again” after a revoke. That is expected: revoking in Connected Apps kills the connection at once. Connect again from the AI tool, or create a new token.
- The assistant cannot find a Jule capability you expect. The client is holding an old tool list. In Claude Code run
/mcpand reconnect, in Cursor and VS Code restart the server, elsewhere disconnect and connect again. - You are asked to sign in after a quiet period. A connection unused for 90 days expires, as does a token on its expiry date. Sign in and allow access again, or create a new token.
- The preview link has expired. Preview links last ten minutes. Ask the assistant for a fresh preview.
- The assistant reports too many requests. Each connection is limited to 120 requests a minute, and 1,200 a minute across the whole organization. Wait a minute and continue.
- Something was published, archived or deleted without asking. That should never happen: those actions require a confirmation step. Report it to support with the chat transcript.