A provider self-tests their capability and sends you five things. You paste one message into Claude Desktop. Their capability is routable on the agent seconds later — no VM edits, no JSON, no curl. The admin MCP does the wiring.
mgmt_live_* key. Ask Claude "what's my console role?" — it should say admin. If it says none, your key isn't an admin key.The provider does the technical part on their side and hands you five plain values. If any are missing, ask for them before onboarding — the automation can't proceed without the first two.
| They send | Example |
|---|---|
| Discovery URL ·required | https://caps.kiloutcorp.link:11112/discovery |
| Contact email ·required | ops@example.com |
| Capability name(s) + "I self-tested each one" | kokoro-tts — returns real audio |
| On-chain address (their staked orchestrator) | 0x… |
| Network | arbitrum-one-mainnet |
Scenario: the provider serves kokoro-tts, which another vetted provider already offers — so this is extra capacity for a shared capability, and they've self-tested it. Paste this into Claude Desktop, filling in their two required values:
• kokoro-tts
Registered and routable now via merit + admission. I emailed Livepeer88@proton.me a summary. To promote it to verified-live, run a quick verification pass, then mark it live.
That's the whole onboarding. You never told it "shared" vs "new" or touched routing — orch_onboard reads their /discovery, classifies each capability, and records it in the registry, which is the routing config. A shared capability automatically joins the merit pool for that name, gated by a per-capability admission list so only vetted providers serve it.
Claude will list any it couldn't onboard with the reason — almost always a fixable provider-side issue (a scaffold livepeer-example/* app name, a null price, or capacity 0). Forward the reason to the provider; nothing to do on your side.
Onboarding leaves the capability at registered — already routable. Promoting to live is your "I've seen it work" stamp. One more message:
orch_list.
orch_onboard is the wiring — the SDK picks it up on its next refresh. The old "SSH in and edit LR_OFFERINGS_JSON" step is gone. Routing among admitted providers is by merit (price + capacity + latency); the per-capability admission list is what stops a shared name from ever routing to an unvetted node.You speak plain English; Claude picks the verb. For the record:
| Say something like… | Verb |
|---|---|
| "Onboard this discovery URL, contact X, email them" | orch_onboard — probe + classify + register (+ notify) |
| "List the community orchestrators / who's live" | orch_list |
| "Show me everything about kilout" | orch_get |
| "Mark kilout's kokoro-tts live" / "deactivate moudi" | orch_update |
| "Email pon that flux-dev is live" | orch_email (dry by default; send on confirm) |
LR_HANDSHAKE_TIMEOUT_S, 2026-08-12) live in the SDK live-runner selector. The same orch_onboard pipeline also powers the Discord /announce self-serve flow — see the Discord setup + go-live guides.