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

MCP `pulls` draws a card in MCP Apps hosts: one row per pull with its check, each linked to its page #7375

shipped production is serving it opened this has it
opened this

Intent: in a harness that draws ui:// cards, the owner sees an app's open pulls at a glance and taps through to one.

Done:

  • [ ] src/web/studio/cards.ts gains a pulls card kind (in CardKind, CARD_KINDS, CARD_TITLE) and CARD_OF_TOOL.pulls = "pulls"; its model is built from the answer pulls already returns: status N open (or N closed), one row per pull #N title → its check word (green, red, running, none), the label linked to the pull page on this forge only (the here rule), at most 20 rows.
  • [ ] src/http/mcp/tools/pulls.ts passes card: { repo } beside its answer if the card needs the repository for links, as pull.ts does; the text answer is unchanged.
  • [ ] The tool's doc string stays as it is, so docs/MCP.md does not change.
  • [ ] A test (e.g. test/mcp-pulls-card.test.ts) calls pulls through the MCP route and checks structuredContent.card: kind, status, one row per pull with its check and link; and that resources/list offers ui://forge/pulls.

Files: src/web/studio/cards.ts, src/http/mcp/tools/pulls.ts, a new test.

Risk: the shell draws with textContent only; a title with markup must arrive as text.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs