DCP-01 — Identity & Principal Binding¶
Humans precede agents. No agent exists without an explicit binding to a person or legal entity that assumes responsibility. DCP-01 defines the artifacts that bind agent identity to human identity.
Normative artifacts¶
| Artifact | Description | Schema |
|---|---|---|
| Responsible Principal Record (RPR) | Record declaring who the human/organization is, jurisdiction, liability mode, and validity. | schemas/v1/responsible_principal_record.schema.json |
| Agent Passport (AP) | Agent passport: identity, public key, reference to RPR, status (active/revoked/suspended). | schemas/v1/agent_passport.schema.json |
| Revocation Record | Record of revocation of an agent: who revokes, when, reason. | schemas/v1/revocation_record.schema.json |
$id for schemas: https://dcp-ai.org/schemas/v1/<name>.schema.json
Validation¶
Validate an object against its schema:
dcp validate schemas/v1/responsible_principal_record.schema.json <hbr.json>
dcp validate schemas/v1/agent_passport.schema.json <ap.json>
dcp validate schemas/v1/revocation_record.schema.json <revocation.json>
A Citizenship Bundle (which includes RPR and AP) is validated with:
Examples¶
- tests/conformance/examples/responsible_principal_record.json
- tests/conformance/examples/agent_passport.json
The source of truth for fields and enums is the JSON Schema; this document is the normative specification that references them.
Jurisdiction Attestation (optional)¶
A Jurisdiction Attestation is an optional object that certifies an agent's Responsible Principal Record as valid within a specific jurisdiction. It is produced by a jurisdiction authority (government, regulatory body, or accredited issuer) and may be included in the Signed Bundle or presented alongside it.
Object format¶
{
"type": "jurisdiction_attestation",
"issuer": "authority-us-ai-registry",
"jurisdiction": "US",
"rpr_hash": "sha256:<hex>",
"agent_id": "agent-uuid-here",
"attested_at": "2026-02-07T00:00:00Z",
"expires_at": "2027-02-07T00:00:00Z",
"signature": {
"alg": "ed25519",
"public_key_b64": "...",
"sig_b64": "..."
}
}
Fields¶
| Field | Type | Description |
|---|---|---|
type |
string | Always "jurisdiction_attestation". |
issuer |
string | Identifier of the issuing authority. |
jurisdiction |
string | ISO 3166-1 alpha-2 country code (e.g. "US", "EU", "JP"). |
rpr_hash |
string | sha256:<hex> — SHA-256 of the canonical JSON of the Responsible Principal Record being attested. |
agent_id |
string | The agent_id from the Agent Passport. |
attested_at |
string | ISO 8601 date-time when the attestation was issued. |
expires_at |
string or null | ISO 8601 date-time when the attestation expires; null for no expiry. |
signature |
object | Ed25519 signature over the canonical JSON of all fields except signature itself. alg, public_key_b64, sig_b64. |
How it works¶
- The agent creator (or the agent holder) computes
rpr_hash= SHA-256(canonical(responsible_principal_record)). - The creator submits
rpr_hash+agent_idto the jurisdiction's attestation service (or in-person / offline process). - The authority verifies the RPR (identity, jurisdiction, validity) and signs the attestation.
- The attestation is returned to the agent holder and stored alongside or inside the Signed Bundle.
Verification¶
A verifier checks the attestation by:
- Computing
rpr_hashfrom the bundle'sresponsible_principal_recordand comparing it to the attestation'srpr_hash. - Verifying the Ed25519 signature with the issuer's public key (obtained from the jurisdiction's well-known URL or a trusted set of issuer keys).
- Checking that
attested_atis in the past andexpires_atisnullor in the future.
See VERIFICATION.md step 10.
Issuer public keys¶
The protocol suggests (but does not mandate) that jurisdictions publish their attestation public keys at a well-known URL:
https://<authority>/.well-known/dcp-attestation-keys.json
Format:
{
"issuer": "authority-us-ai-registry",
"jurisdiction": "US",
"keys": [
{ "key_id": "key-2026-01", "public_key_b64": "...", "valid_from": "2026-01-01T...", "valid_until": "2027-01-01T..." }
]
}
This is a convention; any method of distributing issuer keys is acceptable (peer, registry, well-known URL, etc.).
Jurisdictional revocation list¶
A jurisdiction may publish a signed revocation list — a JSON file listing agents that have been revoked within that jurisdiction. See docs/STORAGE_AND_ANCHORING.md for the format, publication convention, and how verifiers use it.
Reference¶
- Verification checklist: VERIFICATION.md
- Storage and anchoring (revocation lists, transparency log): docs/STORAGE_AND_ANCHORING.md