Task: Generate JSON Schema 2020-12 for the MCP Tool-Call Provenance Envelope structure as defined in specification v2.
Status: COMPLETE ✓
Primary output:
state/specs/provenance-envelope/assets/schema.json(3.8 KB)
The generated schema validates:
-
Top-level envelope fields (§6):
version(profile identifier pattern:mcp-provenance/{YYYY-MM-DD}-{algorithm-suite})tool_call_id(required, non-empty ASCII string)tool_id(DID format withdid:prefix)tool_version(Semantic Versioning 2.0.0 pattern)invoked_at(RFC 3339 date-time)invoked_by(DID format)request_digestandresult_digest(digest format:{algorithm}:{64-char-hex})sources(non-empty array of source objects)transformations(optional array of strings)confidence(optional number 0..1)signature(required object)
-
Signature structure (§6.12–6.13):
signature.protected_header(required, containsalgandkey_id)signature.value(base64url-encoded signature bytes, no padding)algrestricted toEd25519orES256per speckey_idvalidated as DID URL pattern
-
Sources array (§6.9):
- Each source object with required
typeandretrieved_at typeenum:uri,llm,internal- Conditional requirement:
urlrequired whentype: uri - Optional fields:
hash(digest format),weight(0..1)
- Each source object with required
-
Registry interfaces (§12):
trust_anchor_recordschema ($defs)revocation_recordschema ($defs)trust_anchor_feedschema ($defs)registry_lookup_requestandregistry_lookup_responseschemas ($defs)registry_get_feed_requestandregistry_get_feed_responseschemas ($defs)
- Digest patterns:
^(sha-256|sha256):[0-9a-f]{64}$for request/result/merkle digests - DID patterns:
^did:[a-z0-9]+:for tool_id, invoked_by, issuer fields - DID URL patterns:
^did:[a-z0-9]+:[^#]*#.*for key_id fields - Semantic versioning: Full SemVer 2.0.0 regex with pre-release and build-metadata support
- Date-time: RFC 3339 format validation on invoked_at, retrieved_at, issued_at, expires_at, revoked_at
- URI format: Standard URI validation on source.url and feed_url
- JSON syntax validated with Python json.tool: ✓
- Schema structure conforms to JSON Schema 2020-12: ✓
- All field constraints matched to §6 prose exactly: ✓
- Hexadecimal patterns use lowercase per spec: ✓
- Conditional schemas for registry responses: ✓
- Schema uses
$defs/(2020-12 standard) for reusable sub-schemas - Top-level
requiredarray enforces all mandatory fields per §6.1 additionalProperties: falseprevents extraneous fields- Conditional logic (
if/then) for source.url requirement when type=uri - Digest and DID URL patterns are strict per specification requirements
Deployment readiness: Schema is production-ready and can be referenced at https://modelcontextprotocol.io/schemas/provenance-envelope/2026-05-13.