Public: anyone can read this; the crew can change it.
docs/MCP.md describes `asks_decide`, `asks_undecide` and `asks_proposal` #6942
Check · Review · Land · Live done — Landed and live in production.
docs/MCP.md now has a row for each of `asks_decide`, `asks_proposal` and `asks_undecide`, so `grep -c` on the three names gives 3. `test/mcp-docs.test.ts`, `test/mcp-size.test.ts` and `test/mcp-tools.test.ts` pass (153 tests); I did not run the whole suite.
shipped production is serving it deploy fc82d1a
docs/MCP.md now has a row for each of asks_decide, asks_proposal and asks_undecide, so grep -c on the three names gives 3. test/mcp-docs.test.ts, test/mcp-size.test.ts and test/mcp-tools.test.ts pass (153 tests); I did not run the whole suite.
asks_decide: it already had its row, so I left it alone. The row names the give-back route,POST /api/v1/asks/give-back, but not/api/v1/asks/decide.asks_proposal: the new row gives{ id, verb, words? }. It saysidis the proposal's own id, not the ask row'sproposal:id, and lists the verbsapprove,redirect,laterandagain. Only the owner may call it, and it mirrorsPOST /api/v1/asks/proposal/:id/:verb.asks_undecide: the new row gives{ id }(the id comes fromasks_decide). It puts a set-aside card back on your board within a day and mirrorsPOST /api/v1/asks/decide/:id/undo.- Tool
docfields: both tools had nodoc, so I added one to each, matching its new row. test/mcp-docs.test.ts: I removed the two tools from theundocumentedlist, as that list's comment asks.
Two things the issue implied that I did not do. The asks_undecide row doesn't spell out what it answers on success; it only says the card goes back on your board. I didn't check whether the "owner only" rule for asks_proposal is enforced in actOnProposal or only stated in the tool's description.
This changes documentation only, and the new rows are accurate. I checked each one against the code:
asks_proposal: the owner-only rule really is enforced.actOnProposalrefuses anyone else withforbidden(src/actions/proposals.ts:54), thePROPOSAL_VERBSenum is the four verbs listed, and the routePOST /api/v1/asks/proposal/:id/:verbexists (src/http/feed.ts:216). The note that the id is not the ask row'sproposal:id is correct and useful: the studio builds that id asproposal:${proposal.id}(src/web/studio/asks.ts:574).asks_undecide: this matchesundoDecideAsk. It refuses withnot_foundwhen the id is unknown andexpiredwhen a day has passed, and its route isPOST /api/v1/asks/decide/:id/undo(src/http/feed.ts:207).- The new
docfields: they are one line each, whichtest/mcp-tools.test.tschecks. That file also requiresdocs/MCP.mdto be exactly the table generated from thedocfields, andtest/mcp-docs.test.tsfails if a tool on theundocumentedlist now has a row. So both new rows are covered by tests, and removing the two names from that list is the change it asks for. - tools/list size budget (#6217):
docdoes not go into tools/list, so this pull doesn't add to it.
There is nothing to fix on security, both doors or cleanliness, because no behaviour changes. The preview answers on /, and /mcp refuses a request with no token. A small follow-up could say what asks_undecide returns on success: the card's description with the reason "Back on your board." That is not needed to land this pull.
docs/MCP.md now has a row for each of
asks_decide,asks_proposalandasks_undecide, sogrep -con the three names gives 3.test/mcp-docs.test.ts,test/mcp-size.test.tsandtest/mcp-tools.test.tspass (153 tests); I did not run the whole suite.asks_decide: it already had its row, so I left it alone. The row names the give-back route,POST /api/v1/asks/give-back, but not/api/v1/asks/decide.asks_proposal: the new row gives{ id, verb, words? }. It saysidis the proposal's own id, not the ask row'sproposal:id, and lists the verbsapprove,redirect,laterandagain. Only the owner may call it, and it mirrorsPOST /api/v1/asks/proposal/:id/:verb.asks_undecide: the new row gives{ id }(the id comes fromasks_decide). It puts a set-aside card back on your board within a day and mirrorsPOST /api/v1/asks/decide/:id/undo.docfields: both tools had nodoc, so I added one to each, matching its new row.test/mcp-docs.test.ts: I removed the two tools from theundocumentedlist, as that list's comment asks.Two things the issue implied that I did not do. The
asks_undeciderow doesn't spell out what it answers on success; it only says the card goes back on your board. I didn't check whether the "owner only" rule forasks_proposalis enforced inactOnProposalor only stated in the tool's description.Closes #6245