You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Move the box MCP URL to https://mcp.box.simular.ai/mcp and migrate old relay entries #18
Rationale: The box MCP server moved to https://mcp.box.simular.ai/mcp (live since 2026-11-04 04:00 UTC; OAuth issuer https://mcp.box.simular.ai). The old address https://relay.simular.cloud/mcp still answers, but its protected-resource metadata now names https://mcp.box.simular.ai/mcp as the resource. MCP clients check that the resource matches the URL they were given (RFC 9728), so Claude Code, Codex and OpenCode can no longer sign in through the old address ("Protected resource ... does not match expected https://relay.simular.cloud"). That is why the install matrix on #17 failed. Everything in this repo still points at the old address, and so do configs on users' machines that the CLI or a plugin wrote earlier.
What:
Point every prod reference at https://mcp.box.simular.ai/mcp: CLI default URL, the Claude Code plugin (claude/.mcp.json), the Hermes plugin (hermes/mcp.json), the DeepSeek Harness plugin (dsh/cordis.patch.yml), READMEs, tests and the CI install matrix. Staging stays on staging.relay.simular.cloud (no staging mcp host exists).
Migration in the CLI:
connect treats an existing box that points at relay.simular.cloud (and the old box-control) as box by Simular, rewrites it to the new URL, and says the app may ask the user to sign in again.
Claude Code: when the installed box@simular-box plugin still points at the old URL, connect updates the marketplace and the plugin.
doctor flags a relay.simular.cloud entry as the old address, and flags an endpoint whose metadata names a different resource.
remove removes either.
Bump the plugin versions so marketplace users get the new URL (Claude Code plugin, Hermes plugin, dsh package).
The Claude Code install-matrix job installs the plugin from the PR checkout, not from main, so it tests the plugin being changed.
Done when: a PR (stacked on #17, released together as CLI 0.1.3) has unit tests for the migration, and the full real-client install matrix is green on Linux, macOS and Windows against the new URL. The PR notes which installs migrate by themselves and which need a step from the user.
One more client hits this, and the public install page still hands out the old URL
Reproduced today on Windows following https://box.simular.ai/install, with pi 1.5.0 (Node 22.22.3) — an MCP client the CLI has no id for:
$ pi mcp add box --url https://relay.simular.cloud/mcp
$ pi mcp login box
Sign-in to MCP server "box" failed: Protected resource
https://mcp.box.simular.ai/mcp does not match MCP server
https://relay.simular.cloud/mcp
So the RFC 9728 mismatch is not specific to Claude Code, Codex and OpenCode: any client that validates the protected-resource metadata against the URL it was configured with fails, and pi validates it. Changing only the URL to https://mcp.box.simular.ai/mcp signed in on the first attempt (issuer https://mcp.box.simular.ai, 31 tools, shell verified working on the box).
Two things still send people to the old address when they set up today:
The public install guide.https://box.simular.ai/install (served as Markdown to agents that curl it) still says https://relay.simular.cloud/mcp in "Connect with one command", in "Server URL and sign-in", and in every per-app snippet, including the "Any other MCP client" section. That page is the one agents are instructed to follow, so an agent setting box up for someone writes the broken URL into their config — which is exactly how I hit this. It lives outside this repo (box-portal?), so it may need a change there in addition to Move box to https://mcp.box.simular.ai/mcp and migrate old relay entries #19.
The published CLI. npm latest is 0.1.2 (2026-11-03T10:03Z), published before the move; DEFAULT_MCP_URL in cli/src/constants.js and both READMEs on main still name relay. Expected while Move box to https://mcp.box.simular.ai/mcp and migrate old relay entries #19 is unmerged — flagging it only because until 0.1.3 ships, npx @simular-ai/box connect writes the URL that cannot sign in.
Nothing new for the migration table on #19: a pi entry added by hand is in the "added by hand" row (user edits the URL, or pi mcp remove box && pi mcp add box --url https://mcp.box.simular.ai/mcp). OUR_HOSTS already contains mcp.box.simular.ai, so connect accepts the fixed entry rather than treating it as a foreign box.
Optional: a pi client. pi reads/writes the same shape as Cursor — ~/.pi/agent/mcp.json, container mcpServers, entry { "url": ... } — and it does OAuth itself (DCR + PKCE, or its Client ID Metadata Document), so a cli/src/clients/pi.js would be close to a copy of cursor.js:
exportdefaultjsonClient({id: 'pi',name: 'pi',auth: 'oauth',file: (ctx)=>path.join(ctx.home,'.pi','agent','mcp.json'),container: ['mcpServers'],entry: (ctx)=>({url: ctx.url}),bins: ['pi'],dirs: (ctx)=>[path.join(ctx.home,'.pi','agent')],next: (ctx)=>[`Run /mcp, pick ${ctx.name} and choose Sign in (or \`pi mcp login ${ctx.name}\`), then start a new chat.`],})
No bins entry exists on this machine's PATH check the way the other clients do it (pi lives at ~/.pi/agent/bin/pi), so the detection rule may need to look in that folder. Nice-to-have; feel free to keep this comment to the URL move.
Repro details, in case they help doctor's probe: both hosts answer an unauthenticated initialize with 401 and
and that document replies {"authorization_servers":["https://mcp.box.simular.ai"],"resource":"https://mcp.box.simular.ai/mcp","resource_name":"Box","scopes_supported":["boxes"]}. Happy to test the 0.1.3 migration against a hand-added pi config once it is released.
Activity
Move box to https://mcp.box.simular.ai/mcp and migrate old relay entr…
cli: Gemini CLI support, clear permission errors, Codex hint without …
catoxliu commentedon Nov 4, 2026
One more client hits this, and the public install page still hands out the old URL
Reproduced today on Windows following https://box.simular.ai/install, with pi 1.5.0 (Node 22.22.3) — an MCP client the CLI has no id for:
So the RFC 9728 mismatch is not specific to Claude Code, Codex and OpenCode: any client that validates the protected-resource metadata against the URL it was configured with fails, and pi validates it. Changing only the URL to
https://mcp.box.simular.ai/mcpsigned in on the first attempt (issuerhttps://mcp.box.simular.ai, 31 tools,shellverified working on the box).Two things still send people to the old address when they set up today:
curlit) still sayshttps://relay.simular.cloud/mcpin "Connect with one command", in "Server URL and sign-in", and in every per-app snippet, including the "Any other MCP client" section. That page is the one agents are instructed to follow, so an agent setting box up for someone writes the broken URL into their config — which is exactly how I hit this. It lives outside this repo (box-portal?), so it may need a change there in addition to Move box to https://mcp.box.simular.ai/mcp and migrate old relay entries #19.latestis 0.1.2 (2026-11-03T10:03Z), published before the move;DEFAULT_MCP_URLincli/src/constants.jsand both READMEs onmainstill name relay. Expected while Move box to https://mcp.box.simular.ai/mcp and migrate old relay entries #19 is unmerged — flagging it only because until 0.1.3 ships,npx @simular-ai/box connectwrites the URL that cannot sign in.Nothing new for the migration table on #19: a pi entry added by hand is in the "added by hand" row (user edits the URL, or
pi mcp remove box && pi mcp add box --url https://mcp.box.simular.ai/mcp).OUR_HOSTSalready containsmcp.box.simular.ai, soconnectaccepts the fixed entry rather than treating it as a foreignbox.Optional: a
piclient. pi reads/writes the same shape as Cursor —~/.pi/agent/mcp.json, containermcpServers, entry{ "url": ... }— and it does OAuth itself (DCR + PKCE, or its Client ID Metadata Document), so acli/src/clients/pi.jswould be close to a copy ofcursor.js:No
binsentry exists on this machine's PATH check the way the other clients do it (pilives at~/.pi/agent/bin/pi), so the detection rule may need to look in that folder. Nice-to-have; feel free to keep this comment to the URL move.Repro details, in case they help
doctor's probe: both hosts answer an unauthenticatedinitializewith401andand that document replies
{"authorization_servers":["https://mcp.box.simular.ai"],"resource":"https://mcp.box.simular.ai/mcp","resource_name":"Box","scopes_supported":["boxes"]}. Happy to test the 0.1.3 migration against a hand-added pi config once it is released.