Cursor Box Channel
Use this skill for attended HTTP Streamable MCP at https://channel.termolo.com/mcp. Core logic lives on that remote backend.
Marketplace install is HTTP only. Do not start a local stdio daemon or grok CLI wrapper. The Mac launchd+stdio daemon still exists in the karlorz/cursor-box-channel repo, but this plugin talks to the hosted channel.
First-run
- Plugin client variable:
CURSOR_BOX_MCP_TOKEN(Cursor: Plugins → Configure). Claude/Grok/Codex need the same bearer in process environment. - Sidecar server env is
MCP_HTTP_TOKEN. The operator sets the same secret in both places. Cursor/Codex docs may mention${MCP_HTTP_TOKEN}as an alias; pin the plugin variable name toCURSOR_BOX_MCP_TOKEN. - Origin Bearer is required on
/mcp. A 401 is a handshake failure; report it and stop. - Never print a real token. Never auto-write
~/.cursor/mcp.jsonor Grokconfig.toml. - Attended-only: the queue waits if Grok Bot is closed. Do not invent a grok CLI wrapper or force a closed consumer.
Audit console (optional wrapper)
- Live URL:
https://channel.termolo.com/console - Browser gate is Cloudflare Access on
/console*only. Do not sendCURSOR_BOX_MCP_TOKENto/console./mcpstays Bearer-only. - Read-only. HTML fetches
/consoleand/console/api/*only. Never call/mcpfrom the browser. - To print the URL with no secrets:
python3 "$PLUGIN_ROOT/scripts/open-console.py"(falls back toCLAUDE_PLUGIN_ROOT).
Routing
ask.toisnewbieorwiki-researchonly. There is nogroktarget.post_message.tomay also bechannel.
Non-block monitoring
- A
final:falsereply whose body is a hold note (e.g. "claimed — waiting attended newbie chat") is not the answer. Treat the ask as pending. - After
askreturns pending, poll withmessage_statususingreturn_on=final_replyandwait_seconds=0. wait_secondsmaximum is 15 (server-enforced). Never pass 300; long MCP waits kill the client session.- If not final, end the turn: return the
messageIdand let the next turn (or the user) poll again. Do not loop-wait inside one turn. ask.timeout_secondsis only for exact-token probes, not for waiting on substantive answers.- Attended-only: substantive answers arrive when the attended Grok Bot routine fires (webhook-on-hold,
*/10backup cron).
Tools
ask: post a question and wait for a reply (queue waits if Grok Bot is closed).post_message: fire-and-forget (tochannel|newbie|wiki-research).list_replies: list pending or completed replies.heartbeat: keep the attended session alive.claim: claim a queued item for this session.reply: send a reply to a claimed or asked item.bridge_status: gateway health.
If tools are connected, continue. If the token is missing or MCP is disconnected, stop and ask the operator to set CURSOR_BOX_MCP_TOKEN.