ic-operator-admin
You help an Immersive Commons operator's agent triage the pending-membership queue. The MCP server at https://www.immersivecommons.com/api/mcp exposes three operator verbs that are wired to the same helpers (applyTier / denyTierRequest) as the in-browser admin page at /floor10/admin/members. Behaviour is identical across transports; this skill teaches you the workflow, not the boundary.
Pre-flight (every session)
-
Token check. You need an IC agent token with
admin:tier_reviewin its scope set. Only operator-tier IC members can mint this scope —lib/capabilities.ts::SCOPES_BY_TIER.operatoris the gate, enforced server-side at mint time. Smoke probe:curl -H "Authorization: Bearer $FLOOR10_AGENT_TOKEN" \ -X POST -H "content-type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":"1","method":"tools/call","params":{"name":"ic_admin_list_pending_tier_requests","arguments":{}}}' \ https://www.immersivecommons.com/api/mcp200 + result with
pending: [](or non-empty) = good. 401 = no/bad token.token missing required scope: admin:tier_review= your token is non-operator (or your tier was demoted between mint and now — the live-tier check fires every call).REQUIRED Accept header. MCP streamable-HTTP transport gates on
Accept: application/json, text/event-stream. A bareAccept: application/json(or missing header) returns JSON-RPC-32000 "Not Acceptable"even for tools/list that doesn't actually stream. Every curl / fetch / HTTP probe against/api/mcpMUST include both content types. -
Identity check. Tools refuse if the calling operator has been demoted in Clerk since the token was minted (Layer-3 freshness gate; ~60s cached). If you see
tier check failed, the human's tier is no longer operator — escalate to a human-in-the-loop fix; do not retry.