You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
packages/spec/liveness/tool.json's parameters note is now false — it asserts bridged tools reach MCP clients with no inputSchema, which PR #13317 fixed #13345
Filed by the domain:cli PM seat as owed aftercare for PR #13317 (card #13271), which merged at 2026-08-30T04:42:09Z.
The stale assertion
packages/spec/liveness/tool.json's note on the parameters key was written on 2026-08-29 by the #13042 ledger close-out. It records, in substance, that registerToolFromDefinition registers each bridged tool with noinputSchema — "so this key never reaches an MCP client" — and cites #13271 as its evidence.
#13271 is now closed, by the PR that made that sentence false.packages/mcp/src/mcp-server-runtime.ts now converts AIToolDefinition.parameters through zod@4's fromJSONSchema and passes it as the SDK inputSchema, and the SDK converts it straight back to JSON Schema for tools/list. The key reaches MCP clients.
⚠️ One nuance the replacement wording should keep, because it is sharper than the original: the pre-#13317 behaviour was not "no schema". The SDK synthesised {"type":"object","properties":{}} (EMPTY_OBJECT_JSON_SCHEMA) — a positive claim that the tool takes no arguments, which is a stronger misstatement than silence.
Scope
One sentence. ⛔ The grade does not move: parameters stays live, and always was — the cloud LLM path reads it (service-ai/src/adapters/vercel-adapter.ts, buildVercelOptions wraps it with jsonSchema as the Vercel SDK inputSchema). What the note recorded was an asymmetry — one consumer reading the key, another dropping it — and the honest update is that the asymmetry is now closed on the framework MCP side, not that the key changed status.
Why the #13317 dev correctly did not fix it inline
Recorded so nobody reads this as an omission:
The dispatch fenced that PR to the MCP surface and explicitly forbade touching the liveness ledger.
packages/spec/liveness/** pulls a different gate family than packages/mcp/**, so folding it in would have widened that PR's verification surface.
⭐ It flagged the consequence in its report instead of either editing across a fence or dropping it — which is why this card exists rather than a silent rot.
Dedupe: searched before filing, with a positive control on the same instrument in the same round (a control query returned #13318 and #13271, so a zero here is a real zero). Nearest neighbours are distinct: #13042 (the close-out that wrote the note, closed), #13271 (the fix, closed).
Filed by the
domain:cliPM seat as owed aftercare for PR #13317 (card #13271), which merged at 2026-08-30T04:42:09Z.The stale assertion
packages/spec/liveness/tool.json's note on theparameterskey was written on 2026-08-29 by the #13042 ledger close-out. It records, in substance, thatregisterToolFromDefinitionregisters each bridged tool with noinputSchema— "so this key never reaches an MCP client" — and cites #13271 as its evidence.#13271 is now closed, by the PR that made that sentence false.
packages/mcp/src/mcp-server-runtime.tsnow convertsAIToolDefinition.parametersthroughzod@4'sfromJSONSchemaand passes it as the SDKinputSchema, and the SDK converts it straight back to JSON Schema fortools/list. The key reaches MCP clients.{"type":"object","properties":{}}(EMPTY_OBJECT_JSON_SCHEMA) — a positive claim that the tool takes no arguments, which is a stronger misstatement than silence.Scope
One sentence. ⛔ The grade does not move:
parametersstayslive, and always was — the cloud LLM path reads it (service-ai/src/adapters/vercel-adapter.ts,buildVercelOptionswraps it withjsonSchemaas the Vercel SDKinputSchema). What the note recorded was an asymmetry — one consumer reading the key, another dropping it — and the honest update is that the asymmetry is now closed on the framework MCP side, not that the key changed status.Why the #13317 dev correctly did not fix it inline
Recorded so nobody reads this as an omission:
packages/spec/liveness/**pulls a different gate family thanpackages/mcp/**, so folding it in would have widened that PR's verification surface.⭐ It flagged the consequence in its report instead of either editing across a fence or dropping it — which is why this card exists rather than a silent rot.
Dedupe: searched before filing, with a positive control on the same instrument in the same round (a control query returned #13318 and #13271, so a zero here is a real zero). Nearest neighbours are distinct: #13042 (the close-out that wrote the note, closed), #13271 (the fix, closed).