/mcp. Connect your own AI to it and ask in plain words: it reads your agent, writes tasks and actions, builds cards, runs the tests and makes the change live. Each change is checked like a save on the desk and kept as a version you can restore.
It’s the easiest way to edit with your own AI: nothing to clone or install, and the AI works on the live agent with the same checks the Agent page uses.
Connect
The quickest way is the MCP page in the desk’s sidebar: pick your app (Claude Code, Cursor, Codex or Others) and press its one button. It creates an API token named after the app and then copies the command or configuration, or for Cursor opens Cursor’s install prompt, with your address and the token filled in. The token is listed on the page’s API tokens tab, where you can revoke it. Its value is shown only there, once. To set it up by hand instead:1
Create an API token
On MCP → API tokens, create a token. It acts as you, for this workspace’s agent only. Copy it: it’s shown once.
2
Add the server to your AI
Your MCP address is your desk’s address plus Then
/mcp, like https://support.acme.com/mcp.- Claude Code
- Cursor
- Codex
- Claude Desktop
claude mcp list should show jun … ✔ Connected.3
Ask
Try: “Add a refund task that looks up the order with our orders API (here’s the curl command from our docs: …), test it, and make it live.”
What you can ask for
The AI gets a guide to the agent’s files when it connects, and these tools. Tools that change something save a new version that’s live at once; each takesdryRun: true to show the result without saving, and message for the version’s line in History.
It can also read these resources: the file format (
jun://guide/files), ChatKit’s widget authoring guide (jun://guide/chatkit-widgets), the Jinja filters widget templates can use (jun://guide/jinja) and every file of the live agent (jun://file/<path>).
Knowledge
The websites and documents the AI answers from (the desk’s Knowledge page) have their own tools. They do exactly what the Knowledge page does, with the same limits.
Anyone’s token can list and search; adding, re-syncing and removing need an owner’s or admin’s.
Some things to ask
- “What does our agent do today? Anything broken?”
- “When someone asks to cancel, offer the annual discount first, then hand off. Add a test for it.”
- “Here’s our orders API:
curl https://api.acme.com/v2/orders/1042 -H 'Authorization: Bearer sk_live_…'. Make an action that looks up an order, try it with order 1042, and show the result as a card.” - “Start from the ride status template for our delivery tracker and show me what its buttons do.”
- “Change the chat widget’s greeting to ‘Hi! Ask us anything.’ and close on Sundays.”
- “Run the tests. Fix what fails, but show me the change with a dry run first.”
- “Can the AI answer ‘do you have an EU data center?’ from our docs? If not, add our security page.”
Safety
- Keys are write-only.
set_key(andaction_from_curl, for a key in the command) stores a key on the desk; no tool ever returns it. Files only ever say{secrets.NAME}, and answers mask keys a request carried. - Nothing broken is saved. Each change is checked like a save on the desk; when the files have problems, nothing is saved and the AI gets the problems file by file.
- Every change is a version. History on the Agent page shows the AI’s changes as Changed by an AI (MCP), with who owns the token.
restore(or History on the desk) brings any version back. - Look before it’s live.
dryRun: trueshows the resulting file without saving;test_chatanswers changes (POST actions) without making them unless you ask forreal: true;run_testswithmockTools: truedoesn’t call your APIs.try_actiondoes make a real call. - Only the agent and its knowledge. A token reaches the agent’s config, its tests and the knowledge tools, nothing else: not the inbox, conversations or contacts. Reading needs any teammate’s token; changing needs an owner’s or admin’s. Revoke a token on MCP → API tokens at any time.
How it works
The server is stateless MCP over Streamable HTTP (protocol versions 2025-11-25, 2025-06-18 and 2025-03-26): each request is one JSON-RPC message sent withPOST, answered with JSON. It runs inside your desk’s Worker, so it’s on your Cloudflare account like the rest of Jun. A request without a valid token gets 401.
OAuth sign-in, for connectors in claude.ai and Claude Desktop without a bridge, is planned.