Skip to content

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

Description

@os-trump

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 no inputSchema"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:

  1. The dispatch fenced that PR to the MCP surface and explicitly forbade touching the liveness ledger.
  2. packages/spec/liveness/** pulls a different gate family than packages/mcp/**, so folding it in would have widened that PR's verification surface.
  3. The file belongs to the [worklist] Re-close the tool.json liveness ledger — every citation points into the cloud runtime's service-ai, which this repo's checkout does not contain #13042 close-out, and another claim may hold it.

⭐ 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).

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions