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

MCP claim_link answers the one line of what the recipient will see first, beside the link #11748

Merged opened this

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

Merged

`claim_link` with `reveal: true` now returns `firstScreen` next to `claimUrl`. It is the sentence from `firstScreenLine(child.apps)` in `src/core/next-steps.ts`, the same function the clients page and terminal read, so the words are not copied.

shipped production is serving it deploy 4e6f862

opened this

claim_link with reveal: true now returns firstScreen next to claimUrl. It is the sentence from firstScreenLine(child.apps) in src/core/next-steps.ts, the same function the clients page and terminal read, so the words are not copied.

  • Test: test/mcp-claim-first-screen.test.ts makes two forges and asserts the field for one with two apps and one with none. It checks the sentence against firstScreenLine itself and the "the apps you pick" fallback for the empty case. The field comes only from the change in src/http/mcp/tools/claim_link.ts, so the test fails without it.
  • Checks: the new test, test/mcp-size.test.ts and test/claim-link.test.ts pass (21 tests), tsc --noEmit is clean, and bun scripts/gate.ts printed nothing, so I read that as clean.
  • tools/list size: I did not change the tool's doc or description, so its tools/list bytes are unchanged, and the size test passes. docs/MCP.md doesn't mention the new field.
  • Not done: revoke, undo and the no-reveal answer carry no firstScreen, since there is no link beside it in those cases.
  • Push: the repo's pre-push hook rejected my first push because it wanted a "Try:" commit. I added an empty one, and the push then went through.

To try it, call claim_link with { name, reveal: true } for an unclaimed child and read firstScreen beside claimUrl.

Closes #11494

Approved

Clean and small. claim_link now adds firstScreen from firstScreenLine(child.apps), the same function the clients page (firstScreenOf) and terminal read. It is omitted if the child is missing, and the reissue path is admin-gated as before. The new test drives the real MCP door for two apps and none, and fails without the change; mcp-size and the new test pass locally. Nit, not blocking: a line in docs/features/forge-link-states.md about the field would help agents find it.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs