Skip to content
ECZ-IDMCP

Public verification

Verify an MCP server before you rely on it.

Who operates this server, what state is published about it, and what that record explicitly does not establish — answered by the surfaces that hold the record, not by this page.

Public Resolver reads and public machine-readable records are never metered, never authenticated and never counted against any allowance. An ECZ-ID matches ^ECZ(-[A-Z0-9]{2,32}){1,4}$, and a real one to try is ECZ-GB-RBS1NW.

How to verify

Four real ways to verify — none of them on this page.

This website does not verify anything. It has no lookup box and it never will, because a page on this site has no authority to tell you what is true about someone else. Here are the four surfaces that do, and what each one is actually for.

  • You have a server URL, a package or a repository, and you are at a keyboard.

    ECZ-ID MCP Verifier — CI and CLI surface

    npx -y @ecocitizenz/ecz-id-mcp-verifier --target <target>

    ECZ-ID MCP Verifier on npm

  • You want the check to run on every pull request rather than when someone remembers.

    ECZ-ID MCP Verifier — GitHub Action surface

    Policy OPEN, PREFER or REQUIRE. Outputs result-state, reason-codes and an action envelope your workflow can branch on.

    The Action, in the ECZ-ID MCP Verifier repository

  • You are an agent, or you are building one, and the check has to happen mid-conversation.

    Trust MCP Server — machine surface

    Call resolve_identity over Streamable HTTP. Six of the seven tools are anonymous and read-only.

    The Trust MCP Server endpoint

  • You already have an ECZ-ID and you just want to read the record.

    ECZ-ID Resolver — proof surface

    Open the canonical URL and match the identifier format ^ECZ(-[A-Z0-9]{2,32}){1,4}$. No account, no key, no rate limit to negotiate.

    The ECZ-ID Resolver

If a target has no public ECZ-ID record, every one of those four surfaces reports exactly that and stops. Absence of a record is reported as absence. It is not rendered as failure, risk, or a reason to distrust anyone — which is why there is no FAILED_VERIFICATION state anywhere in the ECZ-ID MCP Verifier.

How to read a record

What each field supports — and what it does not.

The second column is the one that matters. Most bad conclusions come from reading a field as stronger evidence than it is.

Resolver fields, what each one establishes and what it does not
FieldWhat it tells youWhat it does not
parentWhich organisation operates this MCP server, and whether that organisation has been independently checked.It does not mean the server was checked. A verified organisation can operate an MCP server nobody has examined.
record_typeWhich kind of subject this identifier is for — MCP_PASSPORT for one logical MCP server, ECZ_ID_PARENT for the organisation.It does not describe an endpoint, a deployment or a URL. The subject is the logical server, not the address it happens to answer on today.
lifecycle_stateThe state published for this identity right now, with the time it was read.ACTIVE describes the record, not the server's behaviour, its tool surface, its permissions, or whether it is running.
reliance.can_rely_onThe short list of things this record is good evidence for. Four items on the parent record shown on this site.It is not everything a reader might want. Anything absent from the list is unanswered by the record, not answered negatively.
reliance.do_not_inferThe list of things this record explicitly does not establish — thirteen items on the parent record, unedited and unreordered.Skipping it is how people invent claims the record never made. It is the most useful field on the page.
is_proofAlways false.The Resolver never presents itself as a verdict. It publishes evidence for you to weigh under your own policy.

Reading it correctly

Four rules that stop a record being over-read.

An absent record is not a finding

No public ECZ-ID Passport found is not a safety finding. It means the identifier resolves to no published record — nothing more. Most MCP servers have no ECZ-ID yet.

A record is not a verdict

The record is not proof. It publishes what is currently declared and what evidence exists, with the time it was read. Re-check the live record before you rely on it.

Organisation checked, server not

A VERIFIED or ASSURED Parent does not verify the MCP server. The parent organisation's identity is verified. The endpoint is not. A server linked to a VERIFIED Parent is described exactly that way — linked to a VERIFIED Parent — never as a verified MCP server.

Declared is a statement, not a check

DECLARED does not mean independently verified. It records what an organisation says about itself, with the date it said it — not the outcome of a check.

A badge, a QR code, a screenshot or a card is a pointer to a record, not the record. Only the live Resolver is current. Re-check before reliance. State can change between the moment a badge is drawn and the moment a client connects.

ECZ-ID tells you what is published and by whom. What that is worth in your context is your policy's decision, never ours.

An MCP Passport is not ECZ-ID MCP Assurance. The Passport is identity: who this server is, who operates it, and what is published about it. Assurance is separate, ongoing work performed on evidence, with its own scope and its own price.

The other side of the check

Someone is going to look yours up too.

If you operate an MCP server, publishing a record is what makes this check possible in the other direction. It is free, permanent, and it takes one sign-in.

More on ECZ-ID MCP