Skip to main content

Checkpoints and Trust

ANIP includes a trust model, not just a tool schema. Services can prove their claims are authentic, and agents can verify that execution history hasn't been tampered with.

Trust posture​

Every ANIP service declares its trust posture in the discovery document, so agents and operators know how much to rely on the service's claims:

LevelWhat it means
declarativeService declares capabilities but doesn't sign anything
signedManifest is cryptographically signed, JWKS published
anchoredAudit checkpoints anchored to external trust (e.g., transparency logs)
{
"trust": {
"level": "signed",
"anchoring": {
"cadence": "hourly"
}
}
}

An agent connecting to a signed service knows the manifest hasn't been modified since the service signed it. An anchored service provides even stronger guarantees through external verification.

Signed manifests​

The manifest at GET /anip/manifest includes a cryptographic signature in the X-ANIP-Signature header. This signature is verifiable against the service's JWKS (JSON Web Key Set) at GET /.well-known/jwks.json.

# Fetch the manifest — note the signature header
curl -I https://service.example/anip/manifest
HTTP/1.1 200 OK
Content-Type: application/json
X-ANIP-Signature: eyJhbGciOiJFZERTQSJ9...

The manifest also includes a SHA-256 hash of its content in manifest_metadata.sha256, allowing offline verification.

JWKS​

The service publishes its public signing keys at the standard JWKS endpoint:

curl https://service.example/.well-known/jwks.json
{
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"x": "dGhpcyBpcyBhIHB1YmxpYyBrZXk...",
"kid": "primary-signing-key",
"use": "sig"
}
]
}

JWKS serves as the verification surface for:

  • Manifest signatures
  • Delegation token signatures
  • Audit checkpoint signatures

Merkle checkpoints​

ANIP can produce Merkle tree checkpoints over audit history. These checkpoints create a tamper-evident chain — if any audit entry is modified or deleted after the fact, the checkpoint hashes won't match.

curl https://service.example/anip/checkpoints?limit=3
{
"checkpoints": [
{
"checkpoint_id": "cp_a1b2c3",
"sequence": 42,
"merkle_root": "sha256:7d3f8a...",
"entry_count": 150,
"created_at": "2026-03-27T11:00:00Z",
"signature": "eyJhbGciOi..."
}
]
}

What checkpoints prove​

  • Completeness: The checkpoint covers a known count of audit entries
  • Integrity: The Merkle root changes if any entry is modified
  • Non-repudiation: The checkpoint is signed by the service's key

Consistency proofs​

Individual audit entries can be verified against a checkpoint's Merkle tree using inclusion proofs, confirming that a specific invocation was recorded without needing to download the entire audit log.

Why trust matters for agents​

In traditional APIs, "trust" is an all-or-nothing proposition — you either trust the service or you don't. ANIP provides a spectrum:

  • Declarative services are useful for development and testing
  • Signed services are appropriate for internal production deployments
  • Anchored services provide audit evidence suitable for compliance and external review

Agents can adapt their behavior based on trust posture — for example, requiring signed or higher for financial operations, while accepting declarative for read-only data queries.

Next steps​