Intent: a harness that renders MCP Apps shows a card for the three tools a visitor uses most, not raw JSON.
Done:
[ ] explore, feed and forks each declare a ui://forge/<name> resource and return a card in the same words and links as their pages (follow src/http/mcp/tools/held.ts and boards.ts, cards in src/web/studio/cards.ts)
[ ] Each card escapes every field and links to the page it mirrors; no new tool is added (prefer kind/action, docs/MCP.md 'Room for a new tool')
[ ] A test renders each card with rows and with none, and fails without the change
[ ] bun test test/mcp-size.test.ts passes, ceilings unchanged; bun scripts/mcp-table.ts run
Intent: a harness that renders MCP Apps shows a card for the three tools a visitor uses most, not raw JSON.
Done:
explore,feedandforkseach declare aui://forge/<name>resource and return a card in the same words and links as their pages (follow src/http/mcp/tools/held.ts and boards.ts, cards in src/web/studio/cards.ts)kind/action, docs/MCP.md 'Room for a new tool')bun test test/mcp-size.test.tspasses, ceilings unchanged;bun scripts/mcp-table.tsrunFiles: src/http/mcp/tools/explore.ts, src/http/mcp/tools/feed.ts, src/http/mcp/tools/forks.ts, src/web/studio/cards.ts, test/mcp-cards-explore.test.ts
Risks: tools/list bytes grow; keep descriptions short. Suggested: scout (cards).