1. General FACT Verification Flow
The complete flow from developer onboarding to verified agent access.┌─────────────────────────────────────────────────────────────────────────────┐
│ FACT VERIFICATION FLOW │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌─────────────────────────┐ │
│ │ │ │ │ │
│ │ beltic │◀─────────────────────────────│ ☑ agentid after tests │ │
│ │ ☆ │ │ │ │
│ │ │ └─────────────────────────┘ │
│ └────┬─────┘ ▲ │
│ │ │ │
│ │ applies for agentid │ │
│ ① │ ┌──────────────────────────────┘ │
│ KYB/ │ │ ④ │
│ KYC │ │ │
│ │ │ ⑤ │
│ ▼ ② ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ │ ③ │
│ │ Developer/business │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┐ │
│ │ │ builds agent │ │
│ │ ☑ developer credential │ │ │
│ │ │ │ │
│ └──────────────────────────────────────┘ ▼ │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ┐ │
│ │
│ │ builds agent │ │
│ │
│ └ ─ ─ ─ ─ ─ ─ ─ ┘ │
│ │ │
│ ▼ ⑥ │
│ ┌───────────────┐ │
│ │ │ │
│ │ verified │ │
│ │ agent │ │
│ │ │ │
│ └───────┬───────┘ │
│ │ │
│ ▼ │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ┌───────────────┐ │
│ other ─ ─ ─ ─ ─ ─▶ ✗ │ │ │
│ │ agents │ │ bot │ │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ managers │ │
│ │ │ │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ┐ └───────┬───────┘ │
│ other ─ ─ ─ ─ ─ ─▶ ✗ │ │
│ │ agents │ ▼ │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┌───────────────┐ │
│ │ │ │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ end │ │
│ other ─ ─ ─ ─ ─ ─▶ ✗ │ platform │ │
│ │ agents │ │ │ │
│ ─ ─ ─ ─ ─ ─ ─ ─ ─ └───────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────┘
Steps
| Step | Action | Description |
|---|---|---|
| ① | KYB/KYC | Developer completes identity verification with Beltic |
| ② | Developer Credential | Beltic issues signed DeveloperCredential |
| ③ | Build Agent | Developer builds their AI agent |
| ④ | Apply for AgentID | Developer submits agent for safety evaluation |
| ⑤ | AgentID Issued | After passing tests, Beltic issues AgentCredential |
| ⑥ | Verified Access | Agent can access platforms through bot managers |
2. Web Bot Auth Request Flow
How HTTP request signing works with Beltic credentials.┌─────────────────────────────────────────────────────────────────────────────┐
│ WEB BOT AUTH + CREDENTIAL FLOW │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SETUP (One-time) │
│ ════════════════ │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Generate Keys │───▶│ Host Directory │───▶│ Get Credential │ │
│ │ • Ed25519 pair │ │ • /.well-known/ │ │ • Include JWK │ │
│ │ • JWK thumbprint│ │ • Sign response │ │ thumbprint │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │
│ RUNTIME │
│ ═══════ │
│ │
│ ┌──────────────┐ ┌──────────────────────┐ │
│ │ │ │ │ │
│ │ Agent │ │ Target Server │ │
│ │ │ │ │ │
│ └──────┬───────┘ └──────────┬───────────┘ │
│ │ │ │
│ │ ① Build request with signature headers │ │
│ │ • Signature-Agent │ │
│ │ • Signature-Input │ │
│ │ • Signature │ │
│ │ │ │
│ │ ─────────────── HTTP Request ─────────────────▶ │ │
│ │ │ │
│ │ ② Verify signature │ │
│ │ ③ Fetch credential │ │
│ │ ④ Check policy │ │
│ │ │ │
│ │ ◀─────────────── Response ───────────────────── │ │
│ │ │ │
│ ▼ ▼ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Runtime Steps
| Step | Actor | Action |
|---|---|---|
| ① | Agent | Build request, sign with Ed25519, add signature headers |
| ② | Server | Fetch key directory, verify Ed25519 signature |
| ③ | Server | Fetch and verify AgentCredential, check key binding |
| ④ | Server | Apply access policy (KYB tier, safety scores, etc.) |
3. Financial Platform Integration (Coinbase)
A payments agent interacting with a financial platform.┌─────────────────────────────────────────────────────────────────────────────┐
│ FINANCIAL PLATFORM INTEGRATION │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ PaymentsAgent │ │
│ │ │ │
│ │ AgentCredential: │ │
│ │ • kybTierRequired: "tier_2" │ │
│ │ • harmfulContentRefusalScore: 97 │ │
│ │ • toolAbuseRobustnessScore: 91 │ │
│ │ • complianceCertifications: ["soc2_type2", "pci_dss"] │ │
│ │ • toolsList: [financial_transaction] │ │
│ │ • httpSigningKeyJwkThumbprint: "poqk..." │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ POST /v1/transfers (signed) │
│ │ Body: {"amount": "500.00", "currency": "USD"}│
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Coinbase API Gateway │ │
│ │ │ │
│ │ VERIFICATION PIPELINE: │ │
│ │ │ │
│ │ ① Verify HTTP Signature │ │
│ │ └─ Fetch key directory, verify Ed25519 ──────────────▶ ✓ │ │
│ │ │ │
│ │ ② Fetch AgentCredential │ │
│ │ └─ Lookup by thumbprint, verify issuer ──────────────▶ ✓ │ │
│ │ │ │
│ │ ③ Check Policy │ │
│ │ └─ kybTier >= tier_2 ────────────────────────────────▶ ✓ │ │
│ │ └─ harmfulContentScore >= 90 ────────────────────────▶ ✓ │ │
│ │ └─ toolAbuseScore >= 85 ─────────────────────────────▶ ✓ │ │
│ │ └─ complianceCerts includes pci_dss ─────────────────▶ ✓ │ │
│ │ └─ toolsList includes financial_transaction ─────────▶ ✓ │ │
│ │ │ │
│ │ ④ Authorize ──────────────────────────────────────────────▶ ALLOW │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ HTTP 200 OK │
│ │ {"transfer_id": "abc123", "status": "ok"} │
│ ▼ │
│ │
│ REJECTED SCENARIOS: │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Unsigned Agent │ │ Low Safety │ │ Missing Cert │ │
│ │ No signature │ │ Score < 85 │ │ No pci_dss │ │
│ │ ──▶ 401 │ │ ──▶ 403 │ │ ──▶ 403 │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Policy Requirements for Financial APIs
| Requirement | Minimum | Reason |
|---|---|---|
kybTierRequired | tier_2 | Business identity verified |
harmfulContentRefusalScore | 90 | High safety |
toolAbuseRobustnessScore | 85 | Resistant to tool misuse |
complianceCertifications | pci_dss OR soc2_type2 | Financial data handling |
toolsList | includes financial_transaction | Authorized for payments |
4. Bot Manager Integration (Cloudflare)
Verified agents passing through Cloudflare’s bot management.┌─────────────────────────────────────────────────────────────────────────────┐
│ BOT MANAGER INTEGRATION (CLOUDFLARE) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ INCOMING TRAFFIC │
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ Verified │ │ Scrapers │ │ Spam Bots │ │
│ │ Agent │ │ ✗ No sig │ │ ✗ No sig │ │
│ │ ✓ Signed │ │ ✗ No cred │ │ ✗ No cred │ │
│ └───────┬────────┘ └───────┬────────┘ └───────┬────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ CLOUDFLARE EDGE │ │
│ │ │ │
│ │ Web Bot Auth Verification: │ │
│ │ 1. Check for Signature-Agent header │ │
│ │ 2. Fetch key directory │ │
│ │ 3. Verify Ed25519 signature │ │
│ │ 4. Check verified bots registry │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ ALLOWED │ │ BLOCKED │ │ CHALLENGED │ │
│ │ Verified bot │ │ Malicious │ │ Suspicious │ │
│ │ Valid sig │ │ No signature │ │ Invalid sig │ │
│ └───────┬───────┘ └───────────────┘ └───────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ ORIGIN SERVER │ │
│ │ │ │
│ │ Request arrives with: │ │
│ │ • cf-verified-bot: true │ │
│ │ • Original signature headers │ │
│ │ │ │
│ │ Origin can optionally verify AgentCredential for detailed policy │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Cloudflare Test Endpoint
Test your signatures athttps://crawltest.com/cdn-cgi/web-bot-auth:
| Response | Meaning |
|---|---|
| 200 OK | Key known, signature valid |
| 401 Unauthorized | Key unknown OR signature invalid |
| 400 Bad Request | Malformed signature headers |
5. Verification Layers Summary
Complete three-layer verification flow.┌─────────────────────────────────────────────────────────────────────────────┐
│ VERIFICATION LAYERS SUMMARY │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ REQUEST ARRIVES │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ LAYER 1: HTTP SIGNATURE (Web Bot Auth) │ │
│ │ │ │
│ │ Question: "Did this request come from who it claims?" │ │
│ │ │ │
│ │ Checks: │ │
│ │ • Signature-Agent header present │ │
│ │ • Signature-Input has required params │ │
│ │ • Timestamps valid │ │
│ │ • Ed25519 signature verifies │ │
│ │ │ │
│ │ Result: Cryptographic proof of request origin │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ LAYER 2: CREDENTIAL VERIFICATION (AgentCredential) │ │
│ │ │ │
│ │ Question: "Is this agent trusted and capable?" │ │
│ │ │ │
│ │ Checks: │ │
│ │ • Credential signed by trusted issuer (did:web:beltic.com) │ │
│ │ • Credential not expired or revoked │ │
│ │ • httpSigningKeyJwkThumbprint matches request keyid │ │
│ │ │ │
│ │ Result: Verified agent identity and properties │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ LAYER 3: POLICY ENFORCEMENT │ │
│ │ │ │
│ │ Question: "Is this agent allowed to perform this action?" │ │
│ │ │ │
│ │ Checks: │ │
│ │ • kybTier meets endpoint requirements │ │
│ │ • Safety scores above thresholds │ │
│ │ • Required tools authorized │ │
│ │ • Compliance certifications present │ │
│ │ │ │
│ │ Result: Authorization decision │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ PROCESS REQUEST OR REJECT │
│ │
└─────────────────────────────────────────────────────────────────────────────┘