What the layer adds
Five answers, each one a field you can read
Identity, Authority, Evidence, State and Resolution are not marketing categories invented for this page. Each maps to named fields in the ECZ-ID resolver record, published under a versioned public-projection contract. Each also carries a boundary, published in the same record, stating what it does not prove.
Example values are taken from ECZ-GB-RBS1NW, EcoCitizenz's own parent record, read at 2026-08-23T02:07:25Z. They are a snapshot printed on a page. They are not live, and they are not proof. The live record is the proof, and it may have changed since this page was built.
Identity — who operates this?
An MCP server is published under a name, a package and a domain. All three are strings chosen by the publisher. Identity replaces the string with a record: a named legal entity, in a named jurisdiction, at a canonical address — with every field labelled by where it came from. On this record the legal name, entity type, jurisdiction, registration number, registered address and incorporation date are each classified as externally referenced, with Companies House named as the source and 2026-07-31 recorded as the date it was checked. The trading name, the declared website and the business summary are classified as customer-declared. The record states which is which, inside the record.
Fields in the record
- resolver_v2.identity.legal_name
- resolver_v2.identity.trading_name
- resolver_v2.identity.entity_type
- resolver_v2.identity.jurisdiction
- resolver_v2.identity.profile_state
- resolver_v2.identity.profile_source
- resolver_v2.identity.profile_validation_state
From ECZ-GB-RBS1NW
- identity.legal_name
- "ECOCITIZENZ LTD"
- identity.trading_name
- "EcoCitizenz"
- identity.entity_type
- "ltd"
- identity.jurisdiction
- "UNITED KINGDOM"
- identity.profile_state
- "PROFILE_COMPLETE"
- identity.profile_source
- "CUSTOMER_DECLARED"
- identity.profile_validation_state
- "VALID_DECLARED"
What it does not prove
Boundary. The same record's reliance.do_not_infer list opens with legal_name. Provenance is not binding: the record says where a value came from and when it was last checked, and it deliberately stops short of asserting that the entity named here controls the domain, the repository or the API you arrived through. Control is a separate question, and it is answered — or openly not answered — by the binding fields below.
Authority — who controls it, and what has this operator recorded?
Authority on this page always means the authority the operator has recorded — never authority conferred by EcoCitizenz. Two field groups carry it. binding says whether public proof exists that this identity controls a specific thing: a domain, an API, a repository, a wallet, an asset. agent_trust says whether this identity has issued a credential to an agent acting on its behalf. Both are read as states, and both have an honest negative state that is published rather than omitted.
Fields in the record
- resolver_v2.binding.state
- resolver_v2.binding.reason_code
- resolver_v2.binding.scopes
- resolver_v2.binding.do_not_infer_control_over
- resolver_v2.agent_trust.status
- resolver_v2.agent_trust.required_action
- resolver_v2.agent_trust.human_copy
From ECZ-GB-RBS1NW
- binding.state
- "NO_PUBLIC_PROOF"
- binding.reason_code
- "NO_PUBLIC_BINDING_PROOF_AVAILABLE"
- binding.scopes
- []
- binding.do_not_infer_control_over
- ["domain_control", "api_control", "repository_control", "wallet_control", "asset_control"]
- agent_trust.status
- "AGENT_CREDENTIAL_MISSING"
- agent_trust.required_action
- "issue_agent_credential_child_passport"
What it does not prove
Boundary. Read those values again: they are ours. Our own record publishes NO_PUBLIC_PROOF for binding and AGENT_CREDENTIAL_MISSING for agent trust, and it renders the reason for a human as "This identity has not issued an Agent Credential. Do not infer agent authority from the parent ECZ-ID." That is what an absent answer looks like when it is published as a state instead of being hidden. It is not a finding against the holder, it is not a score, and it is never rendered as failure.
Evidence — what supports this, and can I retrieve it without asking the operator?
Evidence is the difference between a claim and a record. Decisive events produce receipts: hashed with SHA-256 (FIPS 180-4), signed with Ed25519 (RFC 8032) and, where post-quantum signing is active, additionally with CRYSTALS-Dilithium ML-DSA-65 (NIST FIPS 204), then anchored to a ledger the record names. A third party can retrieve them without the operator's cooperation, and that last property is the entire point. Evidence held only by the party being evaluated is testimony.
Fields in the record
- resolver_v2.evidence.public_receipt_state
- resolver_v2.evidence.last_public_receipt_at
- resolver_v2.ledger.ledger_name
- resolver_v2.ledger.public_receipt_state
- resolver_v2.ledger.last_public_anchor_at
- resolver_v2.crypto.signature_mode
- resolver_v2.crypto.core_verification_state
- resolver_v2.crypto.resolver_verification_scope
From ECZ-GB-RBS1NW
- evidence.public_receipt_state
- "PUBLIC_RECEIPT_AVAILABLE"
- evidence.last_public_receipt_at
- "2026-05-10T21:27:04.319Z"
- ledger.ledger_name
- "ecozledger"
- ledger.last_public_anchor_at
- "2026-05-10T21:27:04.319Z"
- crypto.signature_mode
- "HYBRID_ED25519_ML_DSA_65"
- crypto.core_verification_state
- "CORE_VERIFICATION_AVAILABLE"
- crypto.resolver_verification_scope
- "RESOLVER_STRUCTURAL_DISPLAY_ONLY"
What it does not prove
Boundary. The record carries its own warning against reading too much into the cryptography: "Quantum-safe signing protects record integrity only. It does not create identity truth, compliance truth, regulatory approval, insurance, certification, safety, or business quality." The Resolver is equally candid about itself — resolver_verification_scope reads RESOLVER_STRUCTURAL_DISPLAY_ONLY. The Resolver displays structure. Verifying a receipt's hash and signatures against the ledger anchor happens in ECZ-ID Core, not in a browser and not on this website.
State — is what I am reading current?
State is what separates a record from an archive. The public projection publishes seven axes, and they are independent by design. On our record the subject is ACTIVE and, at the very same moment, freshness is UNDETERMINABLE and the verification service is UNAVAILABLE. Nothing averages those into a verdict, because averaging them would hide which axis was weak. A relying party reads the axes that matter to its own decision and sets its own threshold. Every state carries the moment it became effective, and the record carries the moment it was resolved.
Fields in the record
- resolver_v2.state.lifecycle_state
- resolver_v2.state.parent_tier
- resolver_v2.state.verification_state
- resolver_v2.state.abuse_state
- resolver_v2.state.reliance_level
- resolver_v2.public_projection.axes (seven independent axes)
- resolver_v2.resolved_at
- resolver_v2.last_state_change_at
From ECZ-GB-RBS1NW
- state.lifecycle_state
- "ACTIVE"
- state.parent_tier
- "VERIFIED"
- state.verification_state
- "PARENT_TIER_VERIFIED"
- state.abuse_state
- "NONE"
- state.reliance_level
- "LIMITED_RELIANCE_NO_BINDING"
- axes.subject_state
- "ACTIVE"
- axes.freshness_state
- "UNDETERMINABLE"
- axes.enrolment_state
- "NOT_ENROLLED"
- axes.publication_state
- "PUBLISHED"
- axes.entitlement_state
- null
- axes.verification_service_state
- "UNAVAILABLE"
- axes.receipt_verification_state
- "NOT_APPLICABLE"
- resolved_at
- "2026-08-23T02:07:25.801724Z"
- last_state_change_at
- "2026-08-10T09:06:09.997Z"
What it does not prove
Boundary. parent_tier: VERIFIED is an ECZ-ID state and nothing beyond one. The Trust MCP Server — the layer's MCP server surface — renders the same sentence for machines from its frozen contract: VERIFIED is an ECZ-ID state, not a Microsoft certification. The record's own lifecycle note is just as narrow: ACTIVE "means the record is currently enabled and has not been suspended, revoked, cancelled, lapsed or expired. It is not identity verification, control binding, compliance, insurance or business quality." And reliance_level reads LIMITED_RELIANCE_NO_BINDING — the record is telling you, in a field, how far it thinks you should lean on it.
Resolution — can another machine check this, without asking us?
Resolution is the answer that makes the other four usable. One identifier, one canonical human address, one canonical machine address, a versioned schema, a versioned disclosure contract and a versioned reason-code vocabulary. Identifiers match ^ECZ(-[A-Z0-9]{2,32}){1,4}$ and run to at most 64 characters. A second machine never has to negotiate with the first, accept a file it was handed, or trust the format of an attachment: it fetches an address it already knows and reads fields it already understands. The record goes further and tells it which fields to use and which states to fail closed on.
Fields in the record
- resolver_v2.canonical_resolver_url
- resolver_v2.canonical_machine_json_url
- resolver_v2.schema_version
- resolver_v2.public_projection.projection_contract_version
- resolver_v2.public_projection.public_disclosure_version
- resolver_v2.public_projection.reason_code_version
- resolver_v2.machine_policy.machines_should_use
- resolver_v2.machine_policy.fail_closed_states
- resolver_v2.machine_policy.recommended_machine_action
- resolver_v2.machine_policy.high_risk_action
From ECZ-GB-RBS1NW
- canonical_resolver_url
- "https://resolver.ecocitizenz.org/p/ECZ-GB-RBS1NW"
- canonical_machine_json_url
- "https://api.ecocitizenz.com/api/p/ECZ-GB-RBS1NW.json"
- schema_version
- "2.0"
- projection_contract_version
- "2.1.0"
- public_disclosure_version
- "pdv-1.0.0"
- reason_code_version
- "rcv-1.0.0"
- machine_policy.recommended_machine_action
- "ALLOW_PARENT_IDENTITY_VISIBILITY_ONLY"
- machine_policy.high_risk_action
- "FAIL_CLOSED_UNLESS_LIVE_BINDING_AND_EVIDENCE_AVAILABLE"
What it does not prove
Boundary. Resolving a record is not endorsement, and the record states that itself: "Public actions are informational only and are not proof of identity, authority, control, or reliance." Resolution tells a machine what is published at this moment. What to do about it is the relying party's policy, and ECZ-ID takes no part in that decision — it is not in the call path and it stops nothing.