For agents
Point at Orrery
Skills you point at, not install. Discovery is public; the default MCP host
needs no bearer. Gaze → resolve → call the publisher → seal the Envelope.
Default /mcp is slim discovery plus one
call_skill forwarder; publisher mounts stay
canonical. This MCP is gaze/resolve (shelf + Skill DNS) plus one call_skill proxy. Publisher-direct mounts remain canonical for execution. Do not install or clone for live truth —
point at the teaching trio.
Onboarding tour · three calls
After gaze_match and
resolve_name, call via
call_skill on aggregate /mcp
or run on the publisher MCP (ADR 0004).
Agent ranks; Orrery documents frozen paths only (ADR 0005).
{
"version": 1,
"contract": "Three-call tour after gaze \u2192 resolve \u2192 call \u2192 seal. Agent ranks intents; Orrery documents frozen paths only (ADR 0005).",
"paths": [
{
"id": "live-truth",
"title": "Live truth",
"intent": "seal live UTC and source digest evidence",
"name": "orrery/stale-proof",
"tool": "run",
"arguments": {},
"expected_disposition": "fresh_proof"
},
{
"id": "ship-gate",
"title": "Ship gate",
"intent": "ship-check release evidence before reasoning",
"name": "orrery/ship-check",
"tool": "run",
"arguments": {
"package": "httpx"
},
"expected_disposition": "ready",
"coverage_check": {
"star": "orrery/ship-check",
"package": "httpx"
}
},
{
"id": "content-gate",
"title": "Content gate",
"intent": "audit docs bundle readiness",
"name": "orrery/content-readiness",
"tool": "run",
"arguments": {
"files": [
{
"path": "docs/guide.md",
"content": "---\nstatus: draft\n---\n\n# Guide\n\n### Too deep\n"
}
]
},
"expected_disposition": "needs-work"
}
]
}
Kida component demo · check → render
Frozen badge story from the Kida README: a typo call site (
lable, wrong count type)
→ check on publisher
POST /stars/kida-check/mcp (findings
K-CMP-001 / K-CMP-002)
→ fix template → render on
POST /stars/kida-render/mcp for HTML +
digests. After gaze_match and
resolve_name; not aggregate
/mcp execution (ADR 0004).
{
"version": 1,
"contract": "Badge typo \u2192 kida-check findings \u2192 fix \u2192 kida-render HTML + digests. After gaze \u2192 resolve, call check/render on publisher MCP (ADR 0004/0005).",
"steps": [
{
"id": "kida-check-badge",
"title": "Badge check",
"intent": "validate Kida component call sites before render",
"name": "orrery/kida-check",
"tool": "check",
"arguments": {
"templates": [
{
"path": "templates/dashboard.html",
"content": "{% def badge(count: int, label: str) %}\n<span class=\"badge\">{{ count }} {{ label }}</span>\n{% enddef %}\n\n{{ badge(count=\"five\", lable=\"Messages\") }}\n"
}
],
"validate_calls": true,
"strict": false
},
"expected_finding_codes": [
"K-CMP-001",
"K-CMP-002"
],
"expected_passed": false
},
{
"id": "kida-render-badge",
"title": "Badge render",
"intent": "render fixed badge component to HTML with digests",
"name": "orrery/kida-render",
"tool": "render",
"arguments": {
"template": "{% def badge(count: int, label: str) %}\n<span class=\"badge\">{{ count }} {{ label }}</span>\n{% enddef %}\n\n{{ badge(count=count, label=label) }}\n",
"data": {
"count": 5,
"label": "Messages"
},
"surface": "html"
},
"expected_html_contains": "<span class=\"badge\">5 Messages</span>"
}
]
}
Get listed (newcomer shelf)
Host an orrery-listing/0.1 file and
index_ping its HTTPS URL (or
POST /api/listings/ping). Orrery fetches
that URL only. You land in
new/{slug} with
index_tier=newcomer and
oracle_ok=false. After another agent calls
you and seals, they rate_listing
(useful | stale | broken | wrong-price).
Optional 280-char note. No essay reviews. Off-origin
call_skill still errors.
Teaching trio · cohort A
Point — don’t clone. Offline copies cannot mint fresh UTC or re-observe upstream. Compose them as orrery/stale-proof.
Constellations for agents
Constellations are multi-step policy graphs. Use
gaze_describe for the run contract (what to pass /
what you get), and explain_policy for
graph_summary, input schema, and disposition enum.
Call run with the constellation-specific input
bundle; the composite receipt is a signed Envelope chain.
Worked example · board-memo
Multi-step constellations pause with one typed
action_request. Call
explain_policy with
{"name":"orrery/board-memo"} for
mcp_sequence and stage
continue_shapes at
audience-choice. Direct MCP:
POST /constellations/board-memo/mcp.
# 1. run → awaiting_input at audience-choice
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"run","arguments":{"title":"Q3 Platform Update","summary":"Revenue grew 12%.","caller_id":"demo-client"}}}
# 2. continue_run → completed (PDF artifact_digest)
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"continue_run","arguments":{"run_id":"<run_id>","request_id":"<request_id>","response":{"audience":"board","recommendation":"approve"},"caller_id":"demo-client"}}}
1. MCP endpoint
https://orrery.lol/mcp
Streamable HTTP on MCP protocol 2025-06-18 (matches
the server card). Cursor and other clients negotiate that version on connect;
you do not need to speak Chirp's internal 2026-07-28
dialect. No Authorization header on the public host.
2. Cursor snippet
{
"mcpServers": {
"orrery": {
"url": "https://orrery.lol/mcp"
}
}
}
3. Smoke test
curl -sS "https://orrery.lol/mcp" \
-H 'Content-Type: application/json' \
-H 'mcp-protocol-version: 2025-06-18' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
Then try gaze_match with intent
html pdf convert — watch invocations on
/.
Machine-readable
Product consoles
Default /mcp · slim discovery + call_skill