Local-first, read-only ECZ-ID Resolver posture checking from the CLI, CI or an MCP host.
MCP 2026-07-28
This release migrates to the official MCP TypeScript SDK v2 and explicitly adopts protocol revision 2026-07-28.
Adoption is deliberate, not incidental: the SDK's own default version list contains no 2026 revision, so a package can move to v2 and still speak 2025-era protocol. This release names 2026-07-28 explicitly and proves it on the wire.
- Modern stateless STDIO serving — per-request
_metaenvelope, noinitializehandshake server/discover— required of servers on this revisionresultTypeon every modern result- Cache semantics —
ttlMs/cacheScopeonserver/discoverandtools/list, the two operations the revision defines as cacheable. Tool results are not cacheable and carry no cache fields. - Explicit unsupported-revision handling — an unsupported or malformed revision now returns
-32022naming the versions the server does support. Previous releases silently downgraded.
Five legacy revisions deliberately retained
2025-11-25 · 2025-06-18 · 2025-03-26 · 2024-11-05 · 2024-10-07
Dual-era support is a product commitment, not a hedge. The specification records that legacy clients have no fall-forward mechanism, so a modern-only server would simply fail for them.
Tools
Three canonical read-only tools, unchanged: ecz_check_target, ecz_recheck_resolver, ecz_explain_result.
structuredContenton all three, with the serialised JSON text block retainedoutputSchemaon all three. There is one canonical internal result object rendered twice; the release gate asserts the text block is byte-identical to the structured value.
Testing
Cross-platform: Windows, Linux and macOS on Node 22 and Node 24 — six CI cells, each running the full gate plus a packed-artefact proof against the tarball rather than the source tree.
Real MCP hosts. The packed 0.9.0 artefact was installed into isolated consumers and driven by three real hosts:
| Host | Version | Protocol negotiated | Result |
|---|---|---|---|
| MCP Inspector | 2.4.0 | 2025-11-25 |
3/3 tools |
| Claude Code | 2.1.247 | 2025-11-25 |
3/3 tools |
| @wong2/mcp-cli | 2.0.0 | 2025-11-25 |
3/3 tools |
All three negotiated 2025-11-25, the legacy rail. None exercised 2026-07-28. That is exactly why the legacy revisions are retained. The modern rail is proven at the wire and against the official @modelcontextprotocol/client 2.0.0, but no shipping host exercises it yet.
Doctrine — read-only by construction
The verifier reads, classifies, reports, explains and routes. It never writes canonical truth, issues an ECZ-ID, activates proof, marks anything BOUND, or reaches a global allow/deny conclusion. Local policy decides.
As of this release those boundaries are also const constraints in the published outputSchema, so a client can see them from tools/list alone.
- No telemetry.
--offlineperforms zero network egress — measured across twelve invocations covering four target shapes and three policy modes.- Resolver access is GET-only, bodyless and HTTPS-only.
Supply chain
- Published via npm Trusted Publishing (OIDC) — no long-lived npm token exists in the repository
- SLSA build provenance and an npm publish attestation, both verifiable with
npm audit signatures - The published tarball is byte-identical to the artefact produced independently by all six CI cells: sha256
f360f394acbfcf9042d6185dce9ee968c07e55f72f5c510c438dfe7bb54d10d0 - Zero known vulnerabilities in the production and full dependency trees at release
Known limitations
- No currently available MCP host exercises the
2026-07-28rail; all three tested hosts used2025-11-25. - VS Code is untested. It starts MCP servers lazily under an agent-mode chat client, which was outside the scope of automated testing. No claim is made about it.
- The official MCP conformance suite tests servers over HTTP only and therefore cannot test this intentionally stdio-only server. It has never been run against this package.
- Host results are point-in-time at the versions listed.
- Byte-identical builds are demonstrated across build platforms at a fixed commit and lockfile. That is not a reproducible-builds guarantee in the formal sense.
Install
npm install @ecocitizenz/ecz-id-mcp-verifier
npx @ecocitizenz/ecz-id-mcp-verifier --doctorRelease commit ae1255747a209d04ec6de6d5448b52b71de19b42.