Skip to content

ECZ-ID MCP Verifier 0.9.0

Latest

Choose a tag to compare

@Ecocitizenz Ecocitizenz released this 28 Aug 07:14

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 _meta envelope, no initialize handshake
  • server/discover — required of servers on this revision
  • resultType on every modern result
  • Cache semanticsttlMs / cacheScope on server/discover and tools/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 -32022 naming 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.

  • structuredContent on all three, with the serialised JSON text block retained
  • outputSchema on 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.
  • --offline performs 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-28 rail; all three tested hosts used 2025-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 --doctor

Release commit ae1255747a209d04ec6de6d5448b52b71de19b42.