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

An agent reads the changelog: GET /api/v1/changelog and an MCP kind answer what went live, as /changelog shows it #8325

shipped production is serving it opened this has it
opened this

What went live can be reached by an agent, not only by a browser. Today /changelog is a page only: GET /api/v1/changelog is a 404 and no MCP tool answers it.

Done:

  • [ ] GET /api/v1/changelog?repo=all|owner/name answers JSON from the same read the page uses (readLandings in src/web/pages/changelog.ts): live and onItsWay rows with repo, pull number, title, at; plus the running version and commit. Same repo filter, same visibility: a private repo's landing is never shown to someone who cannot read it.
  • [ ] An existing MCP tool gains the reading as a kind/action (releases or waves, whichever docs/MCP.md says fits; no new tool). bun test test/mcp-size.test.ts passes with no ceiling raised.
  • [ ] The /changelog page head links it with <link rel="alternate" type="application/json">.
  • [ ] A test covers the JSON shape, the repo filter and a private repo hidden from anonymous, and asserts the MCP kind returns the same rows.
  • [ ] The OpenAPI contract lists the route.

Files: src/web/pages/changelog.ts, src/http/server.ts (route beside /changelog), the MCP tool's module, src/contract/*, a new test/changelog-api.test.ts. Risk: keep the route out of src/http/api.ts (hot file). Register it beside the page.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs