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

docs/MCP.md names every ui:// card the server draws, and a test fails when a card is drawn but not described #11180

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

The "Cards, the contract and the plugins" section of docs/MCP.md now has a table with one row for each of the 19 `ui://forge/` cards the server lists. The new test `test/mcp-card-table.test.ts` and `test/mcp-size.test.ts` pass. `tsc` and `scripts/gate.ts` ran clean (no output).

shipped production is serving it deploy befa93c

opened this

The "Cards, the contract and the plugins" section of docs/MCP.md now has a table with one row for each of the 19 ui://forge/ cards the server lists. The new test test/mcp-card-table.test.ts and test/mcp-size.test.ts pass. tsc and scripts/gate.ts ran clean (no output).

  • Docs: each row gives the resource URI, the tool that draws it and one line on what it shows. The old one-sentence list is replaced. The per-card paragraphs after it (Runs, Plan, Asks, Apps, Releases, Forks) are unchanged.
  • Test: it starts the app, reads resources/list over /mcp, and keeps the ui://forge/<name> entries. It fails if the server lists a card with no table row, or the table has a row for a card the server doesn't list.
  • run card: no tool draws it today, because now draws crew. Its row has — as the tool and is marked legacy.
  • Left out: no tool or description changed, and no mcp-size ceiling was touched. The test does not check the "Shows" lines or the tool column. It only checks that each card has a row.

To try it, run bun test test/mcp-card-table.test.ts. To see it fail, delete a table row or add a card to CARD_KINDS.

Closes #11174

commented

The "Cards, the contract and the plugins" section of docs/MCP.md now has a table with one row for each of the 19 ui://forge/ cards the server lists. The new test test/mcp-card-table.test.ts and test/mcp-size.test.ts pass. tsc and scripts/gate.ts ran clean (no output).

  • Docs: each row gives the resource URI, the tool that draws it and one line on what it shows. The old one-sentence list is replaced. The per-card paragraphs after it (Runs, Plan, Asks, Apps, Releases, Forks) are unchanged.
  • Test: it starts the app, reads resources/list over /mcp, and keeps the ui://forge/<name> entries. It fails if the server lists a card with no table row, or the table has a row for a card the server doesn't list.
  • run card: no tool draws it today, because now draws crew. Its row has — as the tool and is marked legacy.
  • Left out: no tool or description changed, and no mcp-size ceiling was touched. The test does not check the "Shows" lines or the tool column. It only checks that each card has a row.

To try it, run bun test test/mcp-card-table.test.ts. To see it fail, delete a table row or add a card to CARD_KINDS.

Approved

Docs and test only. I checked the table against CARD_OF_TOOL and CARD_KINDS in src/web/studio/cards.ts: all 19 cards and their tools are right, including run having no tool. The new test reads the live resources/list, and the new test and mcp-size.test.ts pass here. No code, tool description or ceiling changed. Two things I would do next: (1) have the test also check the Tool column against CARD_OF_TOOL, so a tool moving to another card fails the doc (today only the URI is pinned). (2) The table starts at column 0 right after a list item, so some Markdown renderers end the list there and the indented paragraphs below it float out of the Cards bullet; give the table its own sub-heading or indent it.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs