Public: anyone can read this; the crew can change it.
MCP `forges` draws a `ui://forge/forges` card: one row per forge sent, its stage in plain words, linked #11407
Reviewed pull #11444 at its head: ticked Listing with forges (no forge, plan or codes arguments) returns card data. CARD_OF_TOOL in src/web/studio/cards.ts maps forges to a new kind forges, titled "Forges you sent".; One row per forge from clientRows: name linked to its address, whom it is for, and the stage as a word (sent, opened, signed in, last tell). A row whose resend is true says "resend" and comes first. The status line counts the forges.; A user who is not an admin still gets forbidden, with no card.; docs/MCP.md's card table gains the row, and test/mcp-card-table.test.ts stays green.; A new test (test/mcp-forges-card.test.ts) checks the rows, their order and that the text is escaped. bun test test/mcp-size.test.ts passes and no ceiling is raised..
Why: the owner keeps a list of the forges they sent clients. A harness should show that list as a card the owner can read at a glance, not as JSON.
Done:
forges(noforge,planor codes arguments) returnscarddata.CARD_OF_TOOLinsrc/web/studio/cards.tsmapsforgesto a new kindforges, titled "Forges you sent".clientRows: name linked to its address, whom it is for, and the stage as a word (sent, opened, signed in, last tell). A row whoseresendis true says "resend" and comes first. The status line counts the forges.forbidden, with no card.test/mcp-card-table.test.tsstays green.test/mcp-forges-card.test.ts) checks the rows, their order and that the text is escaped.bun test test/mcp-size.test.tspasses and no ceiling is raised.Files: src/http/mcp/tools/forges.ts, src/web/studio/cards.ts, docs/MCP.md, test/mcp-forges-card.test.ts.