v0.6.1
Patch Changes
-
7d048b9: Fix
MCP_INVALID_RESPONSEerrors on every dispatch against businesses that
publish JSON Schema draft 2020-12 inputSchemas, and make client-side
pre-flight validation best-effort instead of fail-closed.The pre-flight input validator previously used AJV's draft-07-only build and
threw on the 2020-12 meta-schema URI (https://json-schema.org/draft/2020-12/schema)
before inspecting any payload. Everycatalog search,cart create,
checkout *, andorder *call against MCP servers that advertise the
2020-12 dialect returned:MCP_INVALID_RESPONSE: business returned an invalid input schema for "<tool>" Details: no schema with key or ref "https://json-schema.org/draft/2020-12/schema"Three changes:
-
2020-12 dialect support. The validator now uses AJV's 2020-12 build
(Ajv2020), which registers the 2020-12 meta-schema. Schemas declaring
2020-12 — or no$schemaat all — compile and validate normally. -
Soft signals replace hard throws for client-side uncertainty. When
the published schema cannot be compiled (unknown dialect, malformed JSON
Schema) or when an argument carries a plain key not listed in the
published schema, the dispatcher no longer fails the call. The server is
the authoritative validator and returnsSCHEMA_VALIDATION_FAILEDfor
genuinely bad payloads. Three modes:- default — silent; the request proceeds and the server decides.
--verbose/UCP_VERBOSE=1— emit avlog()trace so operators
can see what was flagged and why.UCP_STRICT_SCHEMA=1— restore the throw (MCP_INVALID_RESPONSE
for compile failures,SCHEMA_VALIDATION_FAILEDfor unknown plain
keys). Useful in CI or for paranoid local development.
Payload validation against a successfully compiled schema still throws
SCHEMA_VALIDATION_FAILEDin every mode — local typo-catching saves a
server round-trip. -
Removed
patchKnownUpstreamSchemaDefects(the\Aregex stopgap).
The upstream defect it worked around is fixed in production, and the
new soft-fail path handles any future regex-incompatibility regression
without a hard failure.
Upgrade impact:
- Agents and scripts that previously branched on
MCP_INVALID_RESPONSEfrom
the pre-flight path will no longer see it in the default mode. Set
UCP_STRICT_SCHEMA=1to restore the old strict behavior. - The previous client-side rejection of "unknown plain fields" no longer
fires by default. Reverse-DNS extension keys remain the recommended
convention; the CLI just doesn't enforce it client-side anymore. - No new error codes.
-