This specification defines a trust model for AI agents built on W3C Verifiable Credentials [[VC-DATA-MODEL]]. It has two parts: a deterministic trust-scoring function that maps observable evidence about an agent to a bounded score and a discrete trust level, and an ATP Trust Credential — a verifiable credential through which an issuer attests an agent's trust level to a relying party. It also profiles a policy-assertion decision model that consumes a verified trust level to make allow/deny decisions.
The model is fail-closed: unverifiable evidence never raises an agent's trust. A credential contributes to trust only after it is cryptographically verified; absent a verifier, candidate credentials are credited zero.
Agent identity and key material are defined by the did:atp DID Method. Privacy-preserving disclosure of credential attributes is defined by ATP Privacy-First Interaction. Interoperability vectors are defined by ATP Conformance & Interoperability.
This document is an early draft work product of the Agent Trust Protocol (ATP) Community Group. It is not a W3C Standard nor on the W3C Recommendation track. It is published to seek review, comment, and contribution from Community Group members; the normative thresholds, factor weights, and credential shape below are provisional and expected to change in response to that review.
The ATP Community Group coordinates with the W3C AI Agent Protocol Community Group [[AI-AGENT-PROTOCOL]]. The scoring weights given here are seeded from a running reference implementation and its conformance vectors; they are presented as a starting point for discussion, not as a finalized normative scale.
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else is normative.
The key words MUST, MUST NOT, SHOULD, and MAY are to be interpreted as described in BCP 14 [[RFC2119]] [[RFC8174]] when, and only when, they appear in all capitals.
A conforming trust-scoring engine MUST compute a score s ∈ [0, 1] and map it to exactly one trust level using the following bands:
| Score band | Level |
|---|---|
| s ≥ 0.9 | PRIVILEGED |
| 0.7 ≤ s < 0.9 | TRUSTED |
| 0.4 ≤ s < 0.7 | VERIFIED |
| 0.2 ≤ s < 0.4 | BASIC |
| s < 0.2 | UNKNOWN |
The band boundaries are seeded from the reference implementation. CG
members are invited to challenge the five-level scheme and the exact
cut-points (e.g. whether PRIVILEGED should require attested
credentials in addition to a high score).
The scoring function takes evidence about an agent and returns a score in [0, 1]. A conforming implementation MUST satisfy the following properties (each is exercised by the conformance suite):
The reference evidence factors are: identity verification, the count of verified credentials, the success/failure ratio of recorded interactions, and net reputation (endorsements minus violations, each term capped).
Counting evidence without regard to its age, its independence, or the conditions under which it was earned makes a score a measure of volume rather than of trustworthiness: an agent that accumulates many cheap, low-risk, successful interactions — or endorsements from colluding peers — would otherwise reach the highest bands. The three requirements below constrain that. Their parameters are seeded starting values, not derived optima, and are adjustable by the Community Group.
Evidence MUST lose weight as it ages. A conforming implementation MUST apply exponential decay to interaction and endorsement evidence with a default half-life of 90 days: evidence 90 days old contributes half its original weight, and evidence approaching one year contributes near zero. Identity verification and the verified-credential count are not subject to decay; they are re-evaluated against credential expiry and status instead (Issuer Authorization).
The half-life is a profile parameter. An implementation MAY use a different value and MUST state the value it uses when making a conformance claim.
A trust level MUST be accompanied by a confidence signal reflecting the quantity and quality of the evidence behind it, so that a level derived from a handful of interactions is distinguishable from the same level derived from a large, diverse, recent body of evidence. A score computed from insufficient evidence MUST NOT be presented as equivalent to the same score computed from sufficient evidence.
Confidence is reported alongside the level; it does not itself raise the level. This specification does not fix a numeric confidence scale.
Endorsement evidence MUST be weighted by the independence of the endorsers rather than by their raw count. Endorsers that share a funding source, or that are connected by a mutual-endorsement edge, MUST collapse to a single effective endorser. An endorsement set MUST NOT move a trust level across a band boundary unless it contains at least three effective independent endorsers.
The threshold is a profile parameter, adjustable as above. See Security & Privacy Considerations for the limits of independence detection on an open graph.
{
"identityVerified": true,
"credentials": ["a", "b", "c", "d"], // verified
"successful": 500, "failed": 0, // one action type, one counterparty
"endorsements": 20, "violations": 0 // one funding source, mutual edges
}
// → NOT a privileged/trusted band.
//
// The 20 endorsements collapse to 1 effective endorser (< 3 required), so they
// move no band. The 500 same-type, low-risk interactions against a single
// counterparty raise confidence for that one narrow capability, but raw count
// alone moves no band. The residual level rests on identity plus the four
// verified credentials — no higher than VERIFIED.
//
// See the anti-gaming conformance vectors (Fixtures A and B) in
// ATP Conformance & Interoperability.
Earlier drafts of this specification annotated this same fixture as
reaching the PRIVILEGED/TRUSTED band. That
outcome is the volume-farming result the requirements above exist to
prevent, and the annotation is corrected here.
An ATP Trust Credential is a Verifiable Credential
[[VC-DATA-MODEL]] through which an issuer attests an agent's trust level.
Its type MUST include both
VerifiableCredential and AtpTrustCredential.
The credentialSubject MUST identify the agent
(id) and MUST carry a trustLevel; it MAY carry
a trustScore and an evaluatedAt timestamp. The
credential MUST carry an expirationDate.
{
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiableCredential", "AtpTrustCredential"],
"issuer": "did:atp:authority.example.com:e1_...:pq1_...",
"validFrom": "2026-06-26T00:00:00Z",
"expirationDate": "2026-09-26T00:00:00Z",
"credentialSubject": {
"id": "did:atp:agents.example.com:...",
"trustLevel": "TRUSTED",
"trustScore": 0.78,
"evaluatedAt": "2026-06-26T00:00:00Z"
}
}
A relying party that receives a presented ATP Trust Credential
MUST cryptographically verify it (signature, expiry, revocation, schema)
and MUST confirm that its issuer is authorized to
issue credentials of this type
(Issuer Authorization), before
mapping its trustLevel into a policy decision. Both checks
MUST succeed. A valid presented credential lets a relying party gate on
attested trust without querying the issuer's scoring engine directly.
An ATP Trust Credential MUST carry a credentialStatus
property using BitstringStatusList [[VC-BSL]] as the
normative default status mechanism. This reuses the
credentialStatus extension point already defined by the
VCDM v2.0 data model [[VC-DATA-MODEL]] in which the credential is
expressed, requiring no additional @context,
serialization, or proof model.
Because a trust level is time-decaying evidence rather than a permanent
fact, a credential needs to be both permanently withdrawable and
temporarily withheld. credentialStatus MUST therefore be an
array containing:
statusPurpose: "revocation", andstatusPurpose: "suspension".
Each entry MUST conform to BitstringStatusListEntry and
MUST carry statusListIndex and
statusListCredential.
A relying party verifying a presented ATP Trust Credential MUST resolve and check both status list entries as part of the verification requirement above (signature, expiry, revocation, schema):
revocation bit is set, the credential MUST be
treated as invalid.
suspension bit is set, the relying party MUST NOT
map the credential's trustLevel into a policy decision,
and SHOULD treat the agent's attested trust as UNKNOWN
pending re-scoring. An issuer MAY clear the suspension bit and restore
the attested trustLevel without reissuing the credential.
This design intentionally avoids per-credential status endpoints (OCSP-style checks): because many credentials share one status list and a relying party inspects it locally, the issuer does not learn which credential, agent, or relying party is being checked. This is consistent with this specification's privacy-first presentation posture (ATP Privacy-First Interaction).
This section profiles how a verified trust level drives an authorization
decision. A policy evaluator takes an evaluation context and returns an
allow or deny decision, optionally with
obligations.
The evaluation context carries at least:
{
"agentDID": "did:atp:agent-1",
"trustLevel": "VERIFIED", // from a verified Trust Credential or engine
"credentials": [ /* VerifiableCredentialInfo[] */ ],
"tool": { "id": "database_query", "type": "database", "sensitivity": "internal" },
"requestedAction": "read",
"organizationId": "org_test",
"timestamp": "2026-06-19T12:00:00.000Z"
}
A conforming policy evaluator MUST:
allow or deny for each request;The reference engine uses a constrained visual-policy condition schema and a safe-expression sandbox. Whether to standardize that condition language, or reference an existing policy language, is open for CG discussion.
Conforming implementations are validated against deterministic vectors covering determinism, bounds, monotonicity, level thresholds, and fail-closed credential gating, plus policy allow/deny, deny-by-default, and obligation handling. These vectors are maintained alongside the ATP Conformance & Interoperability suite. CG members may contribute additional vectors as table rows.
Because trust drives authorization, the fail-closed property is security-critical: an implementation MUST NOT credit a credential it cannot verify. Trust Credentials disclose an agent's standing; relying parties SHOULD prefer privacy-preserving presentation (selective disclosure) where the full credential is not required.
Manipulability of the score is as consequential an attack surface as credential-verification integrity. The requirements in Trust-Scoring Function — recency decay, confidence reporting, and endorser independence — exist to prevent a score from being driven by interaction volume alone.
Endorser Independence raises the cost of endorsement farming but does not eliminate it. The collapse rule detects shared funding sources and mutual-endorsement edges; it does not detect a well-resourced adversary who creates endorsers that are genuinely independent by those measures. On a fully open graph, with no admission control on who may endorse, Sybil resistance cannot be complete — this is a property of the setting, not a defect of the rule.
Deployments requiring stronger guarantees SHOULD constrain who may endorse. Issuer Authorization provides the hook: where endorsements are carried as credentials from authorized issuers, the governing authority's admission criteria bound the adversary's ability to manufacture independent-looking endorsers. The residual exposure therefore narrows as issuer authorization is adopted, and is widest in fully open, unauthorized-endorser deployments.
Implementations MUST NOT present a trust level as Sybil-resistant on the strength of the independence threshold alone.
This subsection is non-normative.
The anti-gaming conformance vectors contributed to this work map their
authority-frame layer onto draft-kroehl-agentic-trust-aae-00,
an IETF draft authored by the same contributor (Lars Kroehl, MolTrust /
CryptoKRI GmbH). The Community Group records this on the record, as it
does ATP's own commercial backing (Sovr Inc.). Contributors building on
their own prior work is expected and is not an obstacle; the vectors
themselves are implementation-neutral and assert bands, per-capability
confidence, and invariants rather than a scoring formula tied to any
one specification.
The following Community Group participants contributed substantive text or analysis incorporated into this specification. Contributions were made in the Community Group's public issue tracker under the W3C Community Contributor License Agreement.
BitstringStatusList [[VC-BSL]] in
The ATP Trust Credential
(issue #3).
The layer mapping accompanying the anti-gaming conformance vectors
references draft-kroehl-agentic-trust-aae-00, an IETF
Internet-Draft authored by the same contributor, whose work is
commercially backed (MolTrust / CryptoKRI GmbH). This is recorded for
transparency, in the same spirit as this specification's own commercial
backing, and is not regarded as an impediment to the contribution.