ECZ-ID Agent Trust

Documentation

ECZ-ID Agent Trust checks committed agent identity manifests and the API Passport references they declare, explains deterministic agent, operator and API-reference findings, and generates practical remediation directly in pull requests — without executing repository code. Missing public ECZ-ID evidence is neutral; your local policy decides.

Supported files

PathParsed as
/ecz-agent.json, /.well-known/ecz-agent.json, **/ecz-agent.jsonJSON — canonical ECZ-ID agent manifest

Only the committed agent manifest is fetched (allowlisted, read-only) — no other repository file is read. API Passport references declared in the agent manifest are checked for supported grammar and operator consistency. The App does not fetch or inspect OpenAPI documents in V1.

What the check does

Deterministic checks only: the canonical agent manifest is validated, and an agent / operator / API-passport consistency map is evaluated — operator ECZ-ID reference format, agent credential reference grammar, API Passport reference grammar (<operator>::API_PASSPORT-XXXXXX), manifest hash and signature-set shape, authority scope, and optional public Resolver evidence posture. Legacy manifest shapes are recognised and produce neutral migration guidance only — they never establish proof. The absence of ECZ-ID evidence never causes a failing result, and no payment can change a result.

Check conclusions

ConclusionUsed when
successDeterministic checks completed; no objective agent, operator or API-reference mismatch
neutralNothing in scope, legacy/unsupported schema, limits reached, Resolver outage, unverified committed reference, or internal error
action_requiredMalformed canonical manifest or an objective agent, operator, credential or API-passport reference mismatch

failure is never used.

Limits

Max file size 256 KiB · max tree entries 20,000 · max analyzed assets 50 · max path depth 20. Exceeding a limit yields a truthful partial result, never a failing one.

Canonical ecz-agent.json

{
  "schema_version": "1.0.0",
  "agent_name": "your-agent",
  "agent_type": "mcp_agent",
  "operator_ecz_id": "ECZ-GB-A1B2C3",
  "agent_credential_id": "ECZ-GB-A1B2C3::AGENT_CREDENTIAL-9F8E7D",
  "resolver_url": "https://resolver.ecocitizenz.org/agent/ECZ-GB-A1B2C3::AGENT_CREDENTIAL-9F8E7D",
  "authority_scope": {
    "actions": ["read:repository"],
    "targets": ["github.com/your-org/your-repo"],
    "policy_refs": ["https://your-org.example/agent-policy"]
  },
  "api_passport_refs": ["ECZ-GB-A1B2C3::API_PASSPORT-1A2B3C"],
  "manifest_hash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "issued_at": "2026-01-01T00:00:00Z",
  "last_updated_at": "2026-01-01T00:00:00Z",
  "signature_set": [
    { "alg": "Ed25519", "key_id": "your-key-id", "signature": "<real-signature>" }
  ]
}

Replace every placeholder with the values your operator issued. The manifest_hash shown is a placeholder of the correct form — compute the real hash of your canonicalised manifest, and use your real signature. authority_scope requires all three arrays: actions, targets and policy_refs.

Reviewers can inspect public proof for a referenced operator or credential through the ECZ-ID Resolver. Operators can open supported setup from the check output.

What the App never does

It never executes repository code, commands, scripts or binaries; never retains raw source; never requests write access to your code; never fabricates a manifest hash or signature; and never requires payment to reveal findings.