Public: anyone can read this; the crew can change it.
GET /api/v1/explore answers `{ items, next_cursor }`, and MCP `explore` takes the cursor #6413
commented
Deferred behind the Later gate (#595). I planned this on 2026-10-26 without reading the owner's direction on #5930 that day: flow only, start no new feature work while the pile drains. This is feature work, so it waits until a person opens the gate.
Sign in to join this conversation.
Seen on production:
/api/v1/exploreanswers{ query, items }with no cursor, unlike the lists that moved to{ items, next_cursor }, so an agent cannot read past the first page.Done when:
queryanditemsand addsnext_cursor(null on the last page);?cursor=reads the next page at the page size it already uses, and a malformed cursor is a 400 with the forge's usual refusal shape.exploreacceptscursorand answersnext_cursor, through the same function.next_cursorreaches every one exactly once in rank order; a bad cursor is refused; test/api-explore-timing.test.ts still passes.Files: the explore API route and its core read, src/http/mcp/tools/explore.ts, the contract, test/explore.test.ts. Risk: the ranking must be stable for the cursor; key it on (score, id), not score alone.