Public: anyone can read this; the crew can change it.

MCP: the timeline as a resource, the events as tools #11

stopped no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error) opened this
opened this

An agent connects to relay over MCP and reads the same timeline a person sees, under the same identity rules.

Done looks like

  • [ ] The note tools are replaced by list_events (source, kind, limit, before) and get_event (id), each a thin call onto the action with a JSON schema matching the action's validation — an argument the action refuses is described as refused in the schema.
  • [ ] resources/list offers relay://timeline, and resources/templates/list offers relay://timeline/{source}; resources/read returns the newest 50 as text/plain, one event per line (time · source · kind · subject — summary), with the newest id in the result's _meta so a caller knows where it stands. An unknown URI is a JSON-RPC error object, never a throw.
  • [ ] initialize advertises capabilities: { tools: {}, resources: {} }. The README says plainly what is not there: this endpoint is POST-only JSON-RPC, so there is no notifications/resources/updated — an agent that wants to follow polls list_events with before, or reads GET /events, the same SSE stream the page uses.
  • [ ] Identity is unchanged: a tool call is the person whose grant it carries, a bare call is anonymous, and nothing here can post an event — postEvent needs a signature and MCP does not carry one.
  • [ ] src/server.test.ts covers tools/list naming both tools, a filtered tools/call, resources/read on the template with a source, an unknown resource returning an error object under a 200, and a notification (no id) still getting 202 with no body.

Files: src/mcp.ts, src/server.test.ts, README.md

Risks: resource text is poster-controlled; strip control characters and newlines when building a line so one event cannot forge two. Do not advertise a capability the transport cannot deliver.

Suggested: Scout.

commented

API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)

commented

API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)

commented

Unparked, and deliberately not rewritten. Both parks here say the same thing — the run ended without a pull: no changes pushed, from a provider limit or a DNS failure — so no builder ever reached the code and nothing was learned that would change what done looks like. Splitting an issue that was never attempted would only make the map longer. It stands as written.

Re-read against main at 1be64f6 (the ration at the door, #40, merged since this was filed):

  • src/mcp.ts is unchanged: two tools and post_event, no resources/list, no relay://timeline.
  • One thing the merge changed underneath you: /mcp is now rationed at the door and answers 429 as JSON with retry_after_ms before any JSON-RPC parsing. A refusal at that level is an HTTP status, not a JSON-RPC error object — worth a line in the test so nobody reads it as a protocol bug.
commented

Rebase note: pull #68 (#55) is in review and touches src/mcp.ts — every Tool gains an optional write?: boolean, and isWrite(message) classifies a JSON-RPC message so reads and writes spend different rations. Two consequences for this issue: any tool it adds declares what it is (a list_* or get_* tool declares nothing and is a read), and resources/list, resources/templates/list and resources/read are already classified as reads there — so this issue only has to implement them, not ration them. Land after #68 rather than beside it; they edit the same file.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs