Agent Trust Protocol (ATP)
Specification
1.Abstract
The Agent Trust Protocol (ATP) defines a machine-readable, cryptographically signed certificate format that enables autonomous agents to prove quality, security, and operational fitness to other agents and platforms without exposing sensitive internal data. ATP certificates are designed to integrate with the A2A Agent Card ecosystem, W3C Verifiable Credentials 2.0, and MCP server metadata.
An ATP certificate is to agent services what an SSL certificate is to web endpoints: a verifiable, time-bounded assertion of trustworthiness issued by an authority that can be validated by any consumer.
2.Design Principles
- Verifiable over claimed. Every metric in a certificate must be backed by a cryptographic proof or attestation chain. Self-reported claims without evidence are explicitly marked as such.
- Selective disclosure. Agents can prove facts about their quality (e.g., “test coverage exceeds 80%”) without revealing the actual test suite, source code, or internal architecture.
- Composable. Certificates are modular — an agent can have a quality certificate, a security certificate, and a compliance certificate from different issuers, all independently verifiable.
- Time-bounded. Every certificate has an explicit validity period. Stale certificates are invalid. No perpetual trust.
- Anti-gaming. Certificate issuance requires third-party attestation. Self-certification is explicitly flagged and carries lower trust weight.
- Interoperable. Built on JSON-LD, compatible with W3C VC 2.0, extensible via A2A Agent Card, discoverable via
.well-known/.
3.Terminology
| Term | Definition |
|---|---|
| Subject | The agent service being certified. |
| Issuer | The authority issuing the certificate (e.g., quality assurance authority, independent security reviewer, third-party auditor). |
| Verifier | Any agent or platform consuming and validating the certificate. |
| Claim | A single assertion about the subject (e.g., “test pass rate: 98.5%”). |
| Attestation | A claim backed by cryptographic evidence (hash commitment, ZK proof, or signed ledger reference). |
| Trust Tier | A categorical summary of overall quality (see §6). |
| Certificate | The complete signed document containing claims, attestations, and metadata. |
4.Certificate Structure
4.1 Envelope (JSON-LD + W3C VC 2.0 Profile)
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://atp.synctek.io/v0.2/context"
],
"type": ["VerifiableCredential", "AgentTrustCertificate"],
"id": "urn:atp:cert:2026:ba:specterqa:20260224T120000Z",
"issuer": {
"id": "did:web:atp.synctek.io:issuers:quality-assurance",
"name": "Quality Assurance Authority",
"type": "AgentTrustIssuer"
},
"validFrom": "2026-02-24T12:00:00Z",
"validUntil": "2026-03-24T12:00:00Z",
"credentialSubject": { "..." : "..." },
"credentialSchema": {
"id": "https://atp.synctek.io/v0.2/schema/agent-trust-certificate.json",
"type": "JsonSchema"
},
"proof": { "..." : "..." }
}
4.2 Credential Subject
The version field MUST be a valid semantic version (semver 2.0.0). Pre-release versions (e.g., 1.2.0-beta.1) are permitted but MUST NOT receive Gold or Platinum tier certificates. Agents on pre-release versions are capped at Silver tier regardless of computed score.
"credentialSubject": {
"id": "did:web:specterqa.dev",
"type": "AgentService",
"name": "SpecterQA",
"version": "1.2.0",
"trustTier": "gold",
"trustScore": 87,
"evaluationTimestamp": "2026-02-24T12:00:00Z",
"qualityProfile": { "..." },
"securityProfile": { "..." },
"operationalProfile": { "..." },
"governanceProfile": { "..." },
"attestations": [ "..." ]
}
4.3 Quality Profile
"qualityProfile": {
"testPassRate": {
"value": 0.985,
"method": "automated_test_suite",
"sampleSize": 412,
"commitment": "sha256:a1b2c3d4...",
"attestedBy": "did:web:atp.synctek.io:issuers:quality-assurance"
},
"codeCoverage": {
"value": 0.82,
"method": "line_coverage_lcov",
"commitment": "sha256:e5f6g7h8...",
"attestedBy": "did:web:atp.synctek.io:issuers:quality-assurance"
},
"vtePassRate": {
"value": 0.75,
"method": "virtual_test_environment",
"scenarioCount": 4,
"commitment": "sha256:i9j0k1l2...",
"attestedBy": "did:web:atp.synctek.io:issuers:quality-assurance"
},
"documentationCompleteness": {
"value": 0.90,
"method": "artifact_coverage_ratio",
"commitment": "sha256:m3n4o5p6...",
"attestedBy": "did:web:atp.synctek.io:issuers:quality-assurance"
}
}
4.4 Security Profile
MTTR scope note: securityProfile.mttr covers mean time to recover from security incidents in the trailing 90-day window. This is distinct from operationalProfile.mttrHours (all operational incidents, 30-day window). When no incidents occurred in the relevant window, the value MUST be null with an explanatory note.
"securityProfile": {
"lastSecurityReview": {
"timestamp": "2026-02-20T00:00:00Z",
"reviewer": "did:web:atp.synctek.io:issuers:security-review",
"findingsSeverity": {
"critical": 0,
"high": 0,
"medium": 1,
"low": 3
},
"commitment": "sha256:u1v2w3x4..."
},
"authenticationRequired": true,
"authMethods": ["oauth2", "apiKey"],
"encryptionInTransit": true,
"encryptionAtRest": true,
"secretsExposureRisk": "none",
"incidentCount90d": 0,
"mttr": {
"value": null,
"unit": "hours",
"note": "No incidents in evaluation period"
},
"attestedBy": "did:web:atp.synctek.io:issuers:security-review"
}
4.5 Operational Profile
"operationalProfile": {
"uptimeSLA": {
"target": 0.999,
"measured": 0.9995,
"period": "30d",
"commitment": "sha256:c9d0e1f2..."
},
"meanResponseTime": {
"value": 240,
"unit": "ms",
"percentile": "p95",
"commitment": "sha256:g3h4i5j6..."
},
"incidentCount30d": 0,
"mttrHours": null,
"rollbackCapable": true,
"monitoringEnabled": true,
"alertingConfigured": true,
"attestedBy": "did:web:atp.synctek.io:issuers:operations-monitoring"
}
4.6 Governance Profile
"governanceProfile": {
"selfAuditGrade": "A",
"selfAuditChecks": {
"total": 19,
"pass": 19,
"warn": 0,
"fail": 0
},
"gateCompletionRate": 1.0,
"separationOfDutyEnforced": true,
"ledgerIntegrity": "verified",
"signedLedger": true,
"policySnapshotsAvailable": true,
"lastGovernanceAudit": "2026-02-24T06:00:00Z",
"violationCount24h": 0,
"commitment": "sha256:k7l8m9n0...",
"attestedBy": "did:web:atp.synctek.io:issuers:quality-assurance"
}
4.7 Attestation Array
An empty attestations array is invalid. Every certificate MUST include at least one attestation. For Gold and Platinum tier certificates, the minimum is 3 attestations covering distinct claim categories (quality, security, and operational).
"attestations": [
{
"id": "urn:atp:att:a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"claim": "test_pass_rate >= 0.95",
"result": true,
"method": "threshold_proof",
"proofType": "hash_commitment",
"proof": {
"type": "Sha256HashCommitment",
"commitment": "sha256:a1b2c3d4e5f6...",
"nonce": "randomNonce123",
"note": "SHA-256 commitment over metric data and nonce."
},
"attestedBy": "did:web:atp.synctek.io:issuers:quality-assurance",
"attestedAt": "2026-02-24T12:00:00Z"
},
{
"id": "urn:atp:att:b2c3d4e5-f6a7-8901-bcde-f12345678901",
"claim": "critical_vulnerabilities == 0",
"result": true,
"method": "dependency_scan",
"proofType": "signed_report_reference",
"proof": {
"type": "SignedReportReference",
"reportHash": "sha256:e5f6g7h8i9j0...",
"ledgerEntry": "sha256:9c3f2b7e4a1d..."
},
"attestedBy": "did:web:atp.synctek.io:issuers:security-review",
"attestedAt": "2026-02-24T08:30:00Z"
}
]
5.Quality Metrics Taxonomy
5.1 Required Metrics
| Metric | Type | Range | Description |
|---|---|---|---|
testPassRate | ratio | 0.0–1.0 | Automated test suite pass rate. |
codeCoverage | ratio | 0.0–1.0 | Line or branch coverage. |
incidentCount30d | integer | 0+ | Security/operational incidents in trailing 30 days. |
selfAuditGrade | enum | A/B+/B-/C/D/F | System health self-audit grade. |
lastSecurityReview | timestamp | ISO 8601 | Date of most recent qualifying security assessment. Must include automated vuln scanning, static analysis of exposed APIs, and auth controls review. |
5.2 Recommended Metrics
| Metric | Type | Description |
|---|---|---|
vtePassRate | ratio | Virtual Test Environment scenario pass rate. |
documentationCompleteness | ratio | Required artifacts present / total required. |
dependencyHealth.critical | integer | Critical vulnerability count. |
uptimeSLA.measured | ratio | Measured uptime over evaluation period. |
mttrHours | number | Mean time to recover (hours), null if no incidents. |
gateCompletionRate | ratio | Gates passed / gates attempted. |
separationOfDutyEnforced | boolean | Whether SoD governance is active. |
violationCount24h | integer | Governance violations in trailing 24 hours. |
meanResponseTime | object | P95 response latency with unit. |
5.3 Optional Metrics
| Metric | Type | Description |
|---|---|---|
ledgerIntegrity | enum | Hash-chain verification status. |
threatModelCurrent | boolean | Whether threat model updated within validity period. |
rollbackCapable | boolean | Whether the service supports automated rollback. |
complianceFrameworks | array | Compliance certifications held or in-progress. |
dependencyHealth.outdatedDependencies | integer | Count of outdated (not vulnerable) dependencies. |
6.Trust Tiers
6.1 Tier Definitions
| Tier | Score Range | Max Validity | Required Conditions |
|---|---|---|---|
| Platinum | 95–100 | 30 days | All required + recommended metrics present. Zero critical/high vulns. Zero incidents 30d. Audit grade A. VTE pass rate ≥ 90%. Third-party attestation on security profile. |
| Gold | 80–94 | 30 days | All required metrics present. Zero critical vulnerabilities. Audit grade A or B+. Test pass rate ≥ 95%. Code coverage ≥ 70%. |
| Silver | 60–79 | 60 days | All required metrics present. Zero critical vulnerabilities. Audit grade B− or above. Test pass rate ≥ 85%. |
| Bronze | 40–59 | 90 days | All required metrics present. Test pass rate ≥ 70%. Security review within 90 days. |
| Unrated | 0–39 | 30 days | Missing required metrics or fails Bronze threshold. Certificate is valid but explicitly marks low confidence. |
Grade ordering (normative): A > B+ > B- > C > D > F. “B- or above” means any of: A, B+, or B-. “A or B+” means exactly A or B+.
6.2 Trust Score Computation
trustScore = (
quality_weight * quality_score + // 35%
security_weight * security_score + // 30%
operational_weight * operational_score + // 20%
governance_weight * governance_score // 15%
)
// Quality score (0-100):
// - testPassRate: 40% weight → min(100, testPassRate * 100)
// - codeCoverage: 25% weight → min(100, codeCoverage * 125)
// - vtePassRate (if present): 20% weight, else redistributed
// - documentationCompleteness: 15% weight, else redistributed
// Security score (0-100), starts at 100, deductions:
// - Critical vulnerability: -40 each
// - High vulnerability: -15 each
// - Medium vulnerability: -5 each
// - Incident in 30d: -20 each
// - Security review older 30d: -10
// - Security review older 90d: -30
// - No authentication: -25
// - No encryption in transit: -25
// Operational score (0-100):
// - Uptime measured vs target: 0-40 points
// - Response time meets SLA: 0-20 points
// - Zero incidents 30d: 20 points
// - Monitoring + alerting enabled: 10 points each
// Governance score (0-100):
// - selfAuditGrade: A=100, B+=85, B-=70, C=50, D=25, F=0
// - gateCompletionRate: 0-100 scaled
// - SoD enforced: +10 bonus
// - Violations in 24h: -10 per violation
6.3 Anti-Gaming Measures
- Self-attestation penalty. Claims attested by the subject itself receive a 0.7x weight multiplier.
- Third-party bonus. Claims attested by a recognized external auditor receive a 1.2x weight multiplier (capped at 1.0 final score).
- Freshness decay. Metrics older than half the certificate validity period receive a 0.9x multiplier. Carried-forward metrics receive 0.7x.
- Consistency check. If
testPassRateis 1.0 butvtePassRateis below 0.5, the quality score is capped at 70 (test theater detection). - Historical trend requirement. For Gold and Platinum tiers, the current score must be within 15 points of the trailing 3-certificate average. A sudden jump requires manual review.
- Commitment verification. Hash commitments allow post-hoc verification. A mismatch invalidates the entire certificate.
7.Proof System
7.1 Supported Proof Types
| Proof Type | Use Case | Privacy Level |
|---|---|---|
Sha256HashCommitment | Commit to a value without revealing it. Verifier can later request raw data. | Medium |
SelectiveDisclosure | Prove a value is above/below a threshold without revealing the exact value. | High |
SignedReportReference | Reference a signed, hash-chained ledger entry as evidence. | Low |
Ed25519Signature2020 | Standard digital signature over the credential. | N/A |
RangeProof | (Future) ZK range proof that a value falls within a range. | Very High |
7.2 Hash Commitment Protocol
For any metric M with value V:
- Issuer generates random nonce N (32 bytes from a CSPRNG), encoded as lowercase hexadecimal (64-character string).
- Issuer computes commitment C =
SHA-256(canonical_json({"metric": M, "value": V, "nonce": N})). - Certificate contains
{"commitment": "sha256:C", "nonce_hint": first_4_chars(N)}. - On challenge, issuer provides V and full N. Verifier recomputes C and checks match.
7.3 Selective Disclosure Protocol
For proving metric ≥ threshold without revealing the exact metric value:
- Issuer computes
above = (value ≥ threshold). - Issuer includes
{"disclosedValue": "above_threshold", "threshold": T, "exactValueDisclosed": false}. - Challenge-response endpoint at
/.well-known/atp/challenge/{attestation_id}. Issuer MUST respond within 48 hours or the attestation is considered invalid.
7.4 Certificate Signing
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-02-24T12:00:00Z",
"verificationMethod": "did:web:atp.synctek.io:issuers:quality-assurance#key-1",
"proofPurpose": "assertionMethod",
"proofValue": "z3MvGcVxzRMFJxFE..."
}
8.Key Management and Distribution
ATP uses standard Ed25519 key infrastructure. Issuers publish public keys at:
https://{issuer_domain}/.well-known/atp/keys/{key_id}.pem
Issuers are identified via did:web. The DID path did:web:atp.synctek.io:issuers:quality-assurance resolves to:
https://atp.synctek.io/issuers/quality-assurance/did.json
Keys have a maximum lifetime of 365 days. Rotation publishes a new key and signs a key-rotation event in the issuer’s ledger. Key history is maintained at /.well-known/atp/keys/history.json.
9.Integration Points
9.1 A2A Agent Card Extension
"capabilities": {
"a2aVersion": "1.0",
"trustCertificates": {
"current": "https://specterqa.dev/.well-known/atp/certificate.json",
"trustTier": "gold",
"trustScore": 87,
"validUntil": "2026-03-24T12:00:00Z",
"issuer": "did:web:atp.synctek.io:issuers:quality-assurance"
}
}
9.2 MCP Server Metadata Extension
{
"name": "specterqa-mcp",
"version": "1.2.0",
"tools": ["..."],
"trustCertificate": {
"url": "https://specterqa.dev/.well-known/atp/certificate.json",
"trustTier": "gold",
"trustScore": 87
}
}
9.3 Standalone Discovery
Any agent service can publish its certificate at:
https://{service_domain}/.well-known/atp/certificate.json
This follows the RFC 8615 .well-known convention and requires no protocol-specific integration.
9.4 Certificate Chain (Multi-Issuer)
A service may hold multiple certificates from different issuers:
/.well-known/atp/certificate.json # Primary (highest-tier) certificate
/.well-known/atp/certificates/quality.json # quality-profile issuer
/.well-known/atp/certificates/security.json # security-profile issuer
/.well-known/atp/certificates/ops.json # operational-profile issuer
/.well-known/atp/certificates/index.json # Index of all certificates
9.5 Composite Trust Score Computation
compositeTrustTier: The MINIMUM tier across all valid (non-expired, non-revoked) certificates in the index.
compositeTrustScore: The weighted average of individual certificate trust scores using domain weights from §6.2 (quality 35%, security 30%, operational 20%, governance 15%).
10.Verification Flow
10.1 Standard Verification
1. FETCH /.well-known/atp/certificate.json from subject
2. PARSE JSON-LD envelope, extract issuer DID
3. RESOLVE issuer DID → DID document → public key
4. VERIFY Ed25519 signature over canonical JSON of credential
5. CHECK validFrom <= now <= validUntil
6. CHECK credentialSubject.id matches expected subject
7. EXTRACT trustTier and trustScore
8. (Optional) CHALLENGE one or more attestations
9. CACHE result with TTL = min(24h, time_to_validUntil)
10.2 Quick Trust Check (Lightweight)
1. FETCH /.well-known/atp/certificate.json
2. CHECK validUntil > now
3. READ trustTier and trustScore
4. APPLY policy: require >= silver
The Quick Trust Check skips cryptographic verification. It MUST NOT be used for trust-gated operations. Suitable only for informational display.
10.3 Deep Verification (High-Stakes)
1. Standard Verification (§10.1)
2. CHALLENGE all attestations in the "required" category
3. VERIFY at least 2 independent issuers attest to the security profile
4. CHECK historical trend: no anomalous score jumps
5. VERIFY issuer's own certificate (recursive, bounded to 3 levels)
11.Threat Model & Mitigations
Normative section. Verifiers and issuers MUST implement the requirements listed below unless explicitly marked SHOULD or MAY.
11.1 Fail-Closed Mandate
Verifiers MUST implement fail-closed behavior for all trust decisions:
- A missing certificate (no
.well-known/atp/certificate.json) MUST be treated as trust tierunrated. - A certificate that fails signature verification MUST be treated as
unrated. - A certificate where
validUntilhas passed MUST be treated asunrated. - A certificate where
credentialSubject.iddoes not match the expected service identity MUST be treated asunrated. - Any trust-gated operation MUST evaluate the above checks before granting access.
- The Quick Trust Check (§10.2) MUST NOT be used for any trust-gated operation.
11.2 Certificate Lifetime Caps
| Tier | Maximum Validity |
|---|---|
| Platinum | 30 days |
| Gold | 30 days |
| Silver | 60 days |
| Bronze | 90 days |
| Unrated | 30 days |
For high-frequency pipelines, verifiers MUST require certificates no older than 72 hours. Issuers MUST enforce a minimum interval of 7 days between certificates for the same subject.
11.3 Cryptographic Agility
The cryptosuite field MUST be an enum. ATP v0.2.0 valid values:
eddsa-jcs-2022— Current default. Ed25519 with JCS canonicalization.ecdsa-jcs-2019— Alternative EC suite.mldsa-jcs-2025— Reserved for post-quantum ML-DSA (NIST FIPS 204). Not yet active.slhdsa-jcs-2025— Reserved for post-quantum SLH-DSA (NIST FIPS 205). Not yet active.
When post-quantum suites are activated (expected ATP v1.0.0), issuers MUST offer dual-signed certificates during a transition period of no less than 180 days.
11.4 Anti-Downgrade Enforcement
- Verifiers MUST configure a minimum acceptable trust tier. Default minimum:
bronze. - Verifiers MUST reject certificates where
trustTieris below the configured minimum. - Verifiers MUST NOT accept
unratedcertificates for trust-gated operations unless explicitly permitted. - Clock skew MUST NOT exceed 5 minutes. Verifiers MUST reject certificates where
validFromis more than 5 minutes in the future.
11.5 Sybil Resistance
- Issuers MUST be registered in the trusted issuer registry before their certificates are accepted for Gold or Platinum tier claims.
- Issuers MUST implement rate limits: no more than 100 certificates per rolling 24-hour UTC window across all subjects.
- For Gold and Platinum certificates, the issuer MUST verify the subject’s DID document resolves to a live, reachable service before issuing.
- Verifiers MUST maintain issuer reputation scores. An issuer with >10% revocation rate in a 90-day window MUST be treated as untrusted.
11.6 Collusion Detection and Attestor Rotation
- For Gold and Platinum tier, at least 2 independent attestors MUST have attested to distinct claim categories within the trailing 3 certificates.
- “Independent” means: no common ownership, no shared signing keys, and no prior cross-certification within 90 days.
- If issuer A certified B and B certified A within 90 days, this constitutes a certification ring. Gold and Platinum ring-tainted certificates MUST be rejected entirely.
- Self-certification is permitted for Bronze and Silver (with 0.7x penalty). Self-certification is PROHIBITED for Gold and Platinum.
11.7 Score Manipulation Guards
- For Platinum and Gold,
testPassRateandcodeCoverageMUST be measured by an attestor that is not the subject. - The consistency check in §6.3 is normative for Gold and Platinum: if
testPassRate ≥ 0.95butvtePassRate < 0.50, trust score MUST be capped at 70. - Score history MUST be verifiable. Issuers MUST publish certificate history index with the last 5 certificates.
- Issuers MUST NOT issue certificates more than 7 days before the evaluation timestamp.
11.7a Considerations for AI-Native Verifiers
Important: ATP certificates are increasingly consumed by LLM-based agents. Certificate field content may be processed as part of trust evaluation reasoning, creating a novel injection attack surface.
- AI-based verifiers MUST treat all certificate field values as untrusted data, regardless of signature validity. Signature verification confirms data integrity; it does not confirm that field content is safe for AI model consumption.
- Implementations SHOULD enforce maximum lengths on free-text fields:
claim(256 chars),method(128 chars),note(512 chars),name(128 chars). - The VTE pass rate metric (§5.2) provides partial mitigation by testing real-world behavior.
11.8 Known Limitations
| Limitation | Notes | Target Version |
|---|---|---|
| Quantum computing | Ed25519 vulnerable to Shor’s algorithm. ML-DSA and SLH-DSA reserved in §11.3. | v1.0.0 |
| Nation-state infrastructure attacks | DNS hijacking, BGP injection can undermine did:web resolution. DNSSEC mitigates partially. | v1.0.0 |
| Zero-knowledge range proofs | RangeProof specified but not yet required. BBS+ planned for v0.3.0. | v0.3.0 |
| Decentralized issuer governance | ATP reference registry is currently centralized. Decentralized governance out of scope for v0.2.0. | v1.0.0 |
12.Multi-Issuer Trust Model
ATP v0.2.0 elevates multi-issuer trust to a first-class protocol feature. A single composite certificate can embed independently-signed profiles from different issuers. Each profile may carry its own issuer and proof block alongside the top-level certificate envelope proof.
Issuer Trust Weight Multipliers
| Issuer Tier | Multiplier | Condition |
|---|---|---|
self-attested | 0.7x | Subject certifies itself. |
api-sourced | 1.0x | Registered issuer; automated measurement pipeline. |
co-signed | 1.2x | Two independent registered issuers attest to same profile (capped at 1.0). |
enterprise | 1.5x | Enterprise-tier issuer with documented audit trail (capped at 1.0). |
Multi-issuer verification requirements: each profile’s embedded proof MUST be verified independently. If any profile proof verification fails, that profile’s contribution is computed as self-attested (0.7x). For Platinum and Gold, at least 2 distinct profile issuers MUST appear in the proofs array.
13.Certificate Lifecycle
Issuance
Subject requests certificate from Issuer
→ Issuer runs evaluation (tests, scans, audits)
→ Issuer computes metrics and trust score
→ Issuer generates attestations with proofs
→ Issuer signs certificate
→ Issuer delivers to Subject (MUST occur within 24h of signing)
→ Subject publishes at /.well-known/atp/certificate.json
→ Issuer logs issuance event in its ledger
Revocation
Revocation is published as a signed revocation event at /.well-known/atp/revocations/{certificate_id}.json. Verifiers MUST check the revocation endpoint during standard verification. If the endpoint is unreachable, verifiers MUST treat the certificate as unrated for trust-gated operations.
Revocation reasons: security_incident, metric_degradation, issuer_key_compromise, subject_request.
Expiration
Expired certificates MUST NOT be accepted. A 24-hour grace period is permitted only when renewal is actively in progress, signaled by a machine-readable grace token at /.well-known/atp/renewal-grace/{certificate_id}.json.
14.Privacy Considerations
The following categories of information MUST NOT appear in any ATP certificate field:
- Source code — file names, function names, module paths, repository names.
- Test suite details — test file names, test case names, test framework configuration.
- Internal architecture — module names, department names, team names, internal service topology.
- Agent prompts — system prompts, persona descriptions, instruction content.
- Deployment configuration — server hostnames, internal IP ranges, cloud regions, container names.
- Cost and budget internals — per-request costs, monthly burn rate, budget limits.
- Customer data or PII.
- Exact financial metrics — revenue, MRR, ARR, specific financial figures.
- Internal governance violation details — only aggregate counts are permitted.
- Private key material — signing keys, API tokens, secrets, credentials.
- DID path components exposing organizational structure — use functional role names (
quality-assurance,security-review), never internal department or product names.
16.Security Considerations
For the full normative threat model with mitigations for all 25 identified attack vectors, see §11.
- Key compromise: Issuer MUST publish key-rotation event within 24 hours of detection and re-issue all active certificates.
- Replay attacks: Certificates are time-bounded. Nonces in hash commitments MUST be cryptographically random and MUST NOT be reused. Maximum clock skew: 5 minutes.
- Issuer collusion: Self-certification incurs 0.7x weight penalty. Self-certification MUST NOT be used for Gold or Platinum.
- Certificate substitution: Verifiers MUST verify
credentialSubject.idmatches expected service identity. - Downgrade attacks: Verifiers MUST enforce minimum trust tier requirements.
- Privacy leakage: See §14 for the complete MUST NOT disclose list.
17.Relationship to Existing Standards
| Standard | Relationship |
|---|---|
| W3C Verifiable Credentials 2.0 | ATP certificates ARE W3C VCs with an ATP-specific credential subject schema. |
| W3C DID (Decentralized Identifiers) | ATP uses did:web for issuer and subject identification. |
| A2A Agent Cards | ATP extends Agent Card with a trustCertificates capability field. |
| MCP (Model Context Protocol) | ATP integrates via server manifest metadata. |
| Ed25519 / EdDSA | ATP uses eddsa-jcs-2022 cryptosuite for proof generation. |
| RFC 8615 (.well-known) | ATP uses .well-known/atp/ for discovery. |
| JSON-LD | ATP certificates are valid JSON-LD documents with a custom context. |
| BBS+ Signatures | Future ATP versions will support BBS+ for zero-knowledge selective disclosure. |
18.Scope of Attestation and Liability
ATP certificates are attestations of observed quality posture at the time of evaluation. They are not warranties of future performance, safety guarantees, or liability instruments.
- Issuers attest that the certified system met defined thresholds when evaluated. Issuers are not liable for reliance losses beyond the scope of their certification methodology.
- Verifiers bear responsibility for correctly implementing the verification protocol, including fail-closed behavior, revocation checking, and expiration enforcement.
- Certificate consumers must perform their own risk assessments. An ATP trust tier is one input to a delegation decision, not the sole determinant.
Changelog
| Version | Date | Summary |
|---|---|---|
| 0.2.1 | 2026-02-25 | Ambiguity audit: 22 findings resolved (7 critical, 9 major, 6 minor). Key changes: revocation check SHOULD→MUST with network-error fallback; grace period machine-readable token mechanism; high-frequency pipeline cert age SHOULD→MUST (72h); issuer rate limits SHOULD→MUST; issuer reputation enforcement SHOULD→MUST; certification ring detection extended to all tiers; score jump justification endpoint; nonce encoding explicitly lowercase hex; grade ordering formalized; MTTR scopes clarified; selective disclosure challenge-response SLA; version pattern strict semver with pre-release tier cap. |
| 0.2.0 | 2026-02-25 | Security hardening + multi-issuer architecture. Added Threat Model (25 attack vectors, 7 normative mitigation categories). Privacy section with MUST NOT disclose list. Cryptosuite changed from const to enum with post-quantum suite IDs reserved. Normative fail-closed mandate. Anti-downgrade enforcement. Sybil resistance requirements. Collusion detection and attestor rotation rules. Score manipulation guards for Platinum/Gold. |