{
  "first_paid_hop": "https://intel.twzrd.xyz/v1/intel/quick/GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
  "first_paid_hop_usdc": 0.001,
  "openapi": "3.1.0",
  "info": {
    "title": "TWZRD Agent Intel",
    "version": "0.5.10",
    "summary": "Pre-spend trust for AI agents on Solana x402: free allow|warn|block ReadinessCard, paid V7 receipts; opt-in settle-rail attach.",
    "description": "First paid hop is GET /v1/intel/quick/{seller_payTo} at 0.001 USDC. Optional V7 is GET /trust 0.05. Pre-spend trust layer for AI agents paying over x402 on Solana. Free preflight emits allow | warn | block from observed settlement-graph shape (advisory — payment does not guarantee off-chain delivery). Resource discovery, paid renorm trust + V7 signed receipts, and optional gas-sponsored settlement when clients pin feePayer from GET /supported (GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP). Not a wallet or payment network. Path A: paid trust intel 402 — bind the accepts[] entry you pay. Settle rail: opt-in /supported feePayer. Path B = buyer AutoGate refuse (signer=0). Buyer gate package: twzrd-x402-gate@0.9.9. Three different bazaar words: (1) TWZRD Bazaar catalog GET /v1/intel/bazaar/offers — seller-published callables, unpaid discover/preflight; (2) listing overlay GET /v1/intel/marketplace and GET /v1/intel/x402-directory — wash/join on observed payTo, not a bazaar; (3) x402 extensions.bazaar on a 402 — routeTemplate metadata, not the catalog.",
    "contact": {
      "name": "TWZRD",
      "url": "https://twzrd.xyz",
      "email": "support@twzrd.xyz"
    },
    "x-guidance": "TWZRD is pre-spend trust (horizontal); opt-in settle-rail is secondary — not a wallet or payment network. Free preflight: allow|warn|block (advisory). Path B = buyer AutoGate refuse (pre-sign); settle rail = /supported facilitator (not Path B). Recommended sequence: (1) GET /v1/intel/resources (SOT) + merchant_card + POST /v1/intel/preflight; (2) Path A optional paid GET /v1/intel/trust/{pubkey} (multi-rail 402); (3) settle-rail opt-in: GET /supported (feePayer GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP) then POST /verify + /settle for twzrd_receipt + merchant_attach; (4) POST /v1/receipts/verify. Install buyer gate: npm i twzrd-x402-gate@0.9.9. Payer leaderboard is secondary research, not the default buying path.",
    "first_paid_hop": "https://intel.twzrd.xyz/v1/intel/quick/GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
    "first_paid_hop_usdc": 0.001
  },
  "tags": [
    {
      "name": "x402 Facilitator (Path B)",
      "description": "Opt-in settle-through-TWZRD: /supported feePayer GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP, /verify, /settle with V7 receipt + merchant_attach."
    },
    {
      "name": "Paid Trust Intel (Path A)",
      "description": "Paid trust / merchant mint / quick - each 402 accepts[] entry names its own extra.feePayer. Down-only screening evidence."
    },
    {
      "name": "Free Preflight Screening",
      "description": "Free allow/warn/block preflight and merchant_card wash/conformance."
    },
    {
      "name": "Resource Directory (SOT)",
      "description": "Resource join single source of truth: listed | live_402 callables."
    },
    {
      "name": "Solana Market Intel",
      "description": "x402-paid market intel routes (free over MCP)."
    },
    {
      "name": "Receipts",
      "description": "V7 receipt example + offline verify of V5, V6, and V7."
    },
    {
      "name": "Discovery & Ops",
      "description": "Health, descriptors, badges, secondary research."
    }
  ],
  "servers": [
    {
      "url": "https://intel.twzrd.xyz"
    }
  ],
  "components": {
    "securitySchemes": {
      "twzrdReceipt": {
        "type": "apiKey",
        "in": "header",
        "name": "X-TWZRD-Receipt",
        "description": "Marker for routes gated by an active TWZRD Receipt (Silver+). Inference resolves entitlement from requestBody.wallet via the receipt resolver."
      },
      "twzrdPro": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "TWZRD Pro credential. When premium gating is enabled, Pro routes may also accept a CCM-qualified wallet or x402 Solana USDC settlement."
      }
    }
  },
  "x402": {
    "version": 2,
    "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
    "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
    "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402",
    "accepts": [
      {
        "scheme": "exact",
        "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
        "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "pay_to": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
      },
      {
        "scheme": "exact",
        "network": "eip155:8453",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "pay_to": "0xfB9819456bd9248A9D3c9E12F4cb7bBda5fc2578"
      }
    ],
    "path_b_fee_payer": "GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP",
    "descriptor": "https://intel.twzrd.xyz/.well-known/x402",
    "receipt": {
      "type": "twzrd.receipt.v7",
      "supported_leaf_versions": [
        "v5",
        "v6",
        "v7"
      ],
      "kind": "portable-signed",
      "verifiable": true,
      "leaf_hash": "keccak256",
      "signature": {
        "algorithm": "ed25519",
        "key_id": "twzrd-receipt-ed25519-v2",
        "public_key": "Ak5SQwHpuQAqU7ty7ZWX7qgF39A9yi72c22KNn8sHzvS",
        "public_key_encoding": "base58",
        "signed_message": "raw 32 bytes of the keccak256 leaf"
      },
      "legacy_verification": {
        "key_ids": [
          "twzrd-receipt-ed25519-v1"
        ],
        "public_keys": [
          "9V6Pn19kiUA5Rn6JpQfNduanvGt2aXGwsarosNfa2Ldf",
          "96X11cfazxwYpg2g1UodocVX9ZYpXEowDZNtKv2xRVhc"
        ],
        "mode": "verify-only"
      },
      "note": "Portable keccak256 leaf (tamper-evidence) PLUS an Ed25519 signature over the leaf bytes (authenticity). Verify OFFLINE: recompute the keccak leaf from the preimage AND check the signature against the published public_key above. Unsigned or wrong-key receipts are rejected. The settlement_tx anchor remains independently checkable on-chain.",
      "verify_endpoint": "https://intel.twzrd.xyz/v1/receipts/verify",
      "pubkey_endpoint": "https://intel.twzrd.xyz/.well-known/twzrd-receipt-pubkey"
    }
  },
  "paths": {
    "/v1/intel/quick/{pubkey}": {
      "get": {
        "operationId": "get_v1_intel_quick_pubkey",
        "summary": "Fetch a quick seller risk score by pubkey",
        "description": "Seller wash risk and wallet reputation for a Solana x402 merchant: wash label, fleet %, payer count, plus tier + score. Cheap $0.001 entry before a larger payment. No signed V7 receipt. x402-paid: 0.001 USDC (1000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "What the agent receives for the 0.001 USDC payment.",
                  "properties": {
                    "pubkey": {
                      "type": "string"
                    },
                    "tier": {
                      "type": "string",
                      "description": "Bronze|Silver|Gold|Platinum."
                    },
                    "score": {
                      "type": "number"
                    },
                    "wash_label": {
                      "type": "string",
                      "description": "Seller wash risk label (e.g. wash_shaped, organic)."
                    },
                    "fleet_pct": {
                      "type": "number",
                      "description": "Share of revenue from heavy-fleet payers."
                    },
                    "active_payers": {
                      "type": "integer",
                      "description": "Distinct observed payers in the corpus window."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "1000",
          "price_usdc": 0.001,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.001000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "USDC (base units, Solana mainnet mint) via x402; challenge served as HTTP 402."
            }
          ]
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', ':solana_address', or '{wallet}'. You MUST substitute a valid base58 Solana wallet address (32-44 chars). Source it from accepts[].payTo on a 402 challenge or from free preflight seller_wallet.",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      },
      "post": {
        "operationId": "post_v1_intel_quick_pubkey",
        "summary": "Fetch quick seller risk score by pubkey",
        "description": "Seller wash risk and wallet reputation for a Solana x402 merchant: wash label, fleet %, payer count, plus tier + score. Cheap $0.001 entry before a larger payment. No signed V7 receipt. x402-paid: 0.001 USDC (1000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported. POST is accepted as a method alias; a JSON body is ignored. x402 payment must still be supplied in the X-Payment header.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "What the agent receives for the 0.001 USDC payment.",
                  "properties": {
                    "pubkey": {
                      "type": "string"
                    },
                    "tier": {
                      "type": "string",
                      "description": "Bronze|Silver|Gold|Platinum."
                    },
                    "score": {
                      "type": "number"
                    },
                    "wash_label": {
                      "type": "string",
                      "description": "Seller wash risk label (e.g. wash_shaped, organic)."
                    },
                    "fleet_pct": {
                      "type": "number",
                      "description": "Share of revenue from heavy-fleet payers."
                    },
                    "active_payers": {
                      "type": "integer",
                      "description": "Distinct observed payers in the corpus window."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "1000",
          "price_usdc": 0.001,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.001000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "1000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "USDC (base units, Solana mainnet mint) via x402; challenge served as HTTP 402."
            }
          ]
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', ':solana_address', or '{wallet}'. You MUST substitute a valid base58 Solana wallet address (32-44 chars). Source it from accepts[].payTo on a 402 challenge or from free preflight seller_wallet.",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      }
    },
    "/v1/intel/trust/{pubkey}": {
      "get": {
        "operationId": "get_v1_intel_trust_pubkey",
        "summary": "Fetch paid counterparty trust by pubkey",
        "description": "x402 counterparty trust: a live reputation check before payment for any Solana wallet, scored from observed wallet age, payment history, execution evidence, and counterparty breadth, plus a portable V7 receipt. Proven on mainnet. Optional query: seller_wallet (the seller you are about to pay; arms the settle-time trust gate -- settlement is refused, charged:false, if that seller scores below threshold; the scored pubkey itself is never gated). x402-paid: 0.05 USDC (50000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "What the agent receives for the 0.05 USDC payment.",
                  "properties": {
                    "pubkey": {
                      "type": "string",
                      "description": "The scored wallet (base58)."
                    },
                    "score": {
                      "type": "number",
                      "description": "Renormalized 0-100 trust score (the value the V7 receipt attests)."
                    },
                    "score_raw": {
                      "type": "number",
                      "description": "Canonical pre-renormalization score."
                    },
                    "score_version": {
                      "type": "string",
                      "description": "Scoring model version, e.g. intel_renorm_v1_1."
                    },
                    "confidence": {
                      "type": "number",
                      "description": "0..1 share of axis weight backed by evidence."
                    },
                    "breadth_factor": {
                      "type": "number",
                      "description": "Counterparty-breadth multiplier."
                    },
                    "wash_factor": {
                      "type": "number",
                      "description": "Circular-flow wash discount (1.0 clean)."
                    },
                    "components": {
                      "type": "object",
                      "description": "Per-axis trust components."
                    },
                    "twzrd_receipt": {
                      "type": "object",
                      "description": "Portable Ed25519-signed V7 receipt (verify offline at /v1/receipts/verify).",
                      "properties": {
                        "leaf": {
                          "type": "string",
                          "description": "Hex keccak256 receipt leaf."
                        },
                        "preimage": {
                          "type": "object",
                          "description": "Fields that hash to the leaf."
                        },
                        "signature": {
                          "type": "string",
                          "description": "Ed25519 signature over the leaf."
                        },
                        "signing_pubkey": {
                          "type": "string",
                          "description": "Signer pubkey (base58)."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "50000",
          "price_usdc": 0.05,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.050000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "50000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "USDC (base units, Solana mainnet mint) via x402; challenge served as HTTP 402."
            }
          ]
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "Solana wallet address (base58) to score; not identity proof. CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', or ':solana_address' — substitute a real base58 Solana wallet (example: GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs).",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          },
          {
            "name": "seller_wallet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional seller counterparty (base58) you are about to pay -- distinct from the scored {pubkey}. When set (or sent as the X-TWZRD-Seller-Wallet header), the settle-time trust gate evaluates this wallet and refuses to settle (402, charged:false, no on-chain tx) if it scores below threshold. The scored subject itself is never gated."
          }
        ]
      },
      "post": {
        "operationId": "post_v1_intel_trust_pubkey",
        "summary": "Fetch paid counterparty trust by pubkey",
        "description": "x402 counterparty trust: a live reputation check before payment for any Solana wallet, scored from observed wallet age, payment history, execution evidence, and counterparty breadth, plus a portable V7 receipt. Proven on mainnet. Optional query: seller_wallet (the seller you are about to pay; arms the settle-time trust gate -- settlement is refused, charged:false, if that seller scores below threshold; the scored pubkey itself is never gated). x402-paid: 0.05 USDC (50000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported. POST is accepted as a method alias; a JSON body is ignored. x402 payment must still be supplied in the X-Payment header.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "What the agent receives for the 0.05 USDC payment.",
                  "properties": {
                    "pubkey": {
                      "type": "string",
                      "description": "The scored wallet (base58)."
                    },
                    "score": {
                      "type": "number",
                      "description": "Renormalized 0-100 trust score (the value the V7 receipt attests)."
                    },
                    "score_raw": {
                      "type": "number",
                      "description": "Canonical pre-renormalization score."
                    },
                    "score_version": {
                      "type": "string",
                      "description": "Scoring model version, e.g. intel_renorm_v1_1."
                    },
                    "confidence": {
                      "type": "number",
                      "description": "0..1 share of axis weight backed by evidence."
                    },
                    "breadth_factor": {
                      "type": "number",
                      "description": "Counterparty-breadth multiplier."
                    },
                    "wash_factor": {
                      "type": "number",
                      "description": "Circular-flow wash discount (1.0 clean)."
                    },
                    "components": {
                      "type": "object",
                      "description": "Per-axis trust components."
                    },
                    "twzrd_receipt": {
                      "type": "object",
                      "description": "Portable Ed25519-signed V7 receipt (verify offline at /v1/receipts/verify).",
                      "properties": {
                        "leaf": {
                          "type": "string",
                          "description": "Hex keccak256 receipt leaf."
                        },
                        "preimage": {
                          "type": "object",
                          "description": "Fields that hash to the leaf."
                        },
                        "signature": {
                          "type": "string",
                          "description": "Ed25519 signature over the leaf."
                        },
                        "signing_pubkey": {
                          "type": "string",
                          "description": "Signer pubkey (base58)."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "50000",
          "price_usdc": 0.05,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.050000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "50000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "USDC (base units, Solana mainnet mint) via x402; challenge served as HTTP 402."
            }
          ]
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "Solana wallet address (base58) to score; not identity proof. CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', or ':solana_address' — substitute a real base58 Solana wallet (example: GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs).",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          },
          {
            "name": "seller_wallet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional seller counterparty (base58) you are about to pay -- distinct from the scored {pubkey}. When set (or sent as the X-TWZRD-Seller-Wallet header), the settle-time trust gate evaluates this wallet and refuses to settle (402, charged:false, no on-chain tx) if it scores below threshold. The scored subject itself is never gated."
          }
        ]
      }
    },
    "/v1/intel/merchant/{pubkey}": {
      "get": {
        "operationId": "get_v1_intel_merchant_pubkey",
        "summary": "Fetch paid merchant track record by pubkey",
        "description": "Is this seller safe to pay? Signed merchant track-record receipt for a Solana receive wallet (pay_to): evidence for that counterparty risk call, not a safety verdict. Attests observed receive-side graph quality (unique payers, tx volume, wash labels) plus a portable V7 receipt. attestation_kind=merchant_track_record - NOT a payer trust score. Zero inbound -> 422 charged:false (settle-when-deliverable). Free teaser: GET /v1/intel/merchant_card/{wallet}. x402-paid: 0.05 USDC (50000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "What the agent receives for the 0.05 USDC payment.",
                  "properties": {
                    "pubkey": {
                      "type": "string"
                    },
                    "attestation_kind": {
                      "type": "string",
                      "description": "Always merchant_track_record."
                    },
                    "merchant_track_record": {
                      "type": "object",
                      "description": "Full provider_reputation_v1 inbound track record."
                    },
                    "demand_quality_snapshot": {
                      "type": "object",
                      "description": "Compatibility field containing the observed inbound payment-graph snapshot at mint time; not customer demand proof."
                    },
                    "twzrd_receipt": {
                      "type": "object",
                      "description": "Portable Ed25519-signed V7 receipt (verify offline)."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "50000",
          "price_usdc": 0.05,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "50000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "0.05 USDC (base units, Solana mainnet mint) via x402."
            }
          ]
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "Merchant (pay_to) Solana wallet address (base58). CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', or ':solana_address' — substitute a real base58 Solana wallet (example: GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs).",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      },
      "post": {
        "operationId": "post_v1_intel_merchant_pubkey",
        "summary": "Fetch paid merchant track record by pubkey",
        "description": "Is this seller safe to pay? Signed merchant track-record receipt for a Solana receive wallet (pay_to): evidence for that counterparty risk call, not a safety verdict. Attests observed receive-side graph quality (unique payers, tx volume, wash labels) plus a portable V7 receipt. attestation_kind=merchant_track_record - NOT a payer trust score. Zero inbound -> 422 charged:false (settle-when-deliverable). Free teaser: GET /v1/intel/merchant_card/{wallet}. x402-paid: 0.05 USDC (50000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported. POST is accepted as a method alias; a JSON body is ignored. x402 payment must still be supplied in the X-Payment header.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "What the agent receives for the 0.05 USDC payment.",
                  "properties": {
                    "pubkey": {
                      "type": "string"
                    },
                    "attestation_kind": {
                      "type": "string",
                      "description": "Always merchant_track_record."
                    },
                    "merchant_track_record": {
                      "type": "object",
                      "description": "Full provider_reputation_v1 inbound track record."
                    },
                    "demand_quality_snapshot": {
                      "type": "object",
                      "description": "Compatibility field containing the observed inbound payment-graph snapshot at mint time; not customer demand proof."
                    },
                    "twzrd_receipt": {
                      "type": "object",
                      "description": "Portable Ed25519-signed V7 receipt (verify offline)."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "50000",
          "price_usdc": 0.05,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.050000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "Merchant (pay_to) Solana wallet address (base58). CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', or ':solana_address' — substitute a real base58 Solana wallet (example: GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs).",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      }
    },
    "/v1/intel/reality-check": {
      "get": {
        "operationId": "get_v1_intel_reality_check",
        "summary": "Fetch the x402 Reality Check PDF",
        "description": "TWZRD x402 Reality Check market-intelligence PDF (Aug 2026). Self-serve $15.00 USDC download settling to the TWZRD intel payTo. x402-paid: 15.0 USDC (15000000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported.",
        "tags": [
          "Paid Trust Intel (Path A)"
        ],
        "responses": {
          "200": {
            "description": "Paid Reality Check PDF stream after x402 settlement.",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary",
                  "description": "application/pdf — TWZRD_Reality_Check_Aug2026.pdf"
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "15000000",
          "price_usdc": 15.0,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "15.000000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "intent": "charge",
              "method": "x402",
              "amount": "15000000",
              "currency": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
              "description": "USDC (base units, Solana mainnet mint) via x402; challenge served as HTTP 402."
            }
          ]
        }
      }
    },
    "/v1/intel/verify-endpoint": {
      "post": {
        "operationId": "post_v1_intel_verify_endpoint",
        "summary": "Verify a seller x402 endpoint with a signed receipt",
        "description": "SELLER-SIDE endpoint verification with a portable signed receipt. Probes your x402 surface (discovery docs, unpaid-402 conformance, wash screen on each resolved payTo) and returns an Ed25519 AgentReadinessReceipt of what was observed - including a failing result. The payment buys the work and the artifact, never the verdict: basis is endpoint_conformance and not_a_trust_vouch is always true, so a 'ready' card is not a recommendation to pay the seller and does not affect any ranking. Free unsigned equivalent: POST /v1/agent-readiness. Verify offline with npm/PyPI twzrd-receipt-verifier. x402-paid: 0.05 USDC (50000 base units) on Solana mainnet. Path A: bind to the accepts[] entry whose extra.feePayer you intend to pay; settle-rail settlement requires that feePayer to match GET /supported.",
        "tags": [
          "Discovery & Ops"
        ],
        "responses": {
          "200": {
            "description": "Paid response (JSON) including settlement tx."
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        },
        "x402": {
          "amount": "50000",
          "price_usdc": 0.05,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs",
          "scheme": "exact",
          "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402"
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.050000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        }
      }
    },
    "/v1/intel/marketplace": {
      "get": {
        "operationId": "get_v1_intel_marketplace",
        "summary": "List indexed x402 services with wash risk",
        "description": "Free wash overlay on Solana payTo wallets TWZRD has joined to ingested listings (PayAI pager first_accept_solana, CDP, Agentic). status=not_indexed; coverage_complete=false. Not a bazaar and not GET /v1/intel/bazaar/offers. Official third-party listing indexes remain their own source of truth. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "flagged_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Return only wash-flagged listings."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Max directory rows to return (1-200)."
          }
        ]
      }
    },
    "/v1/intel/bazaar/offers": {
      "get": {
        "operationId": "get_v1_intel_bazaar_offers",
        "summary": "Fetch TWZRD Bazaar catalog offers",
        "description": "TWZRD Bazaar v0 catalog: seller-published callables (aisles data/compute/shop/attest). Unpaid discover + cart preflight. Not GET /v1/intel/marketplace and not x402 extensions.bazaar on a 402. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "aisle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Optional aisle filter: data, compute, shop, or attest."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Page size. Server clamps via the bazaar listing surface."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset."
          }
        ]
      }
    },
    "/v1/intel/bazaar/schema": {
      "get": {
        "operationId": "get_v1_intel_bazaar_schema",
        "summary": "Fetch TWZRD Bazaar offer JSON Schema",
        "description": "JSON Schema for a TWZRD Bazaar v0 offer. Distinct from the marketplace overlay. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/v1/intel/sellers": {
      "get": {
        "operationId": "get_v1_intel_sellers",
        "summary": "List observed Solana x402 sellers",
        "description": "Free corpus seller directory: paginated list of scoreable Solana receive wallets from the live x402_solana_events settlement graph (90d). Each row carries wash_label, wash_flagged, provider_reputation_tier, demand_shape, and links to preflight/merchant_card/trust. Ranking is unique_payers DESC - wash flags are always present and never hidden. Query: min_payers, limit, offset, wash_flagged_only. Distinct from the TWZRD Bazaar catalog (/v1/intel/bazaar/offers) and from listing overlays (marketplace / x402-directory). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "min_payers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Minimum distinct payers in the 90d corpus window (scoreable floor)."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "Page size (1-200)."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset."
          },
          {
            "name": "wash_flagged_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Return only wash_flagged=true rows (post-enrich filter)."
          }
        ]
      }
    },
    "/v1/intel/resources": {
      "get": {
        "operationId": "get_v1_intel_resources",
        "summary": "List callable x402 resources with seller risk",
        "description": "Free resource join SOT: one row per callable x402 resource_url from the persisted service catalog, joined to 90d settlement-graph reputation on pay_to when present. Discovery claims (listed|live_402) are separate from counterparty payment trust and from delivery verification (delivery is not_verified until a paid proof exists). Query: limit, offset, live_402_only, include_inactive, min_unique_payers. Use this for discover-then-preflight; use /v1/intel/sellers for wallet-only inventory. Free, no payment, no auth.",
        "tags": [
          "Resource Directory (SOT)"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "Page size (1-200)."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Pagination offset."
          },
          {
            "name": "live_402_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Only resources with an independently observed live 402 probe."
          },
          {
            "name": "include_inactive",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Include inactive catalog rows."
          },
          {
            "name": "min_unique_payers",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Post-filter: require settlement-graph unique_payers_90d >= N on pay_to."
          }
        ]
      }
    },
    "/v1/intel/x402-directory": {
      "get": {
        "operationId": "get_v1_intel_x402_directory",
        "summary": "List ingested x402 services with wash risk",
        "description": "Free wash overlay on ingested PayAI/CDP/Agentic listings, indexed by payTo. PayAI pager walks official pagination; status=not_indexed; coverage_complete=false. Not a complete catalog. query params: flagged_only, limit (1-500), source. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "flagged_only",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Return only wash-flagged listings."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100
            },
            "description": "Max directory rows to return (1-500)."
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Source filter: payai_bazaar, cdp_bazaar, agentic_market, or omit for all."
          },
          {
            "name": "network",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Chain-family filter, applied BEFORE limit: 'base' or 'eip155:8453', 'solana' or the CAIP-2 genesis. Testnets stay distinct ('base-sepolia' never matches 'base'). Omit for all. The snapshot is ordered Solana-first, so without this a default-limit caller sees an all-Solana catalog."
          }
        ]
      }
    },
    "/v1/intel/x402-demo": {
      "get": {
        "operationId": "get_v1_intel_x402_demo",
        "summary": "Run the sample x402 trust flow",
        "description": "Free, sample-only homepage demo: GET opens a default bundle; POST accepts a custom preflight payload. Composes a LIVE preflight ReadinessCard + a SAMPLE signed V7 receipt in one call. charged:false, settles nothing, receipt_scope:sample_only. Pointers to the real paid trust endpoint + verify endpoint included. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/v1/intel/demo-gate": {
      "get": {
        "operationId": "get_v1_intel_demo_gate",
        "summary": "Run the no-spend buyer gate demo",
        "description": "Free no-spend proof of the buyer-side x402 trust gate for HTTP agents: returns a deterministic transcript where the block path aborts and a wallet/signer is never contacted (ok:true, mode:no_spend). Spends nothing, contacts no wallet, needs no human. Optional query/body: integration, run_id (echo them in your own transcript). HTTP twin of the twzrd_demo_gate MCP tool.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/v1/intel/preflight": {
      "post": {
        "operationId": "post_v1_intel_preflight",
        "summary": "Run an x402 seller preflight",
        "description": "Free check before paying an x402 resource: preflight ReadinessCard with can_spend / trust_score / proof / caveats / decision for the seller you are about to pay. Down-only signal: it flags risky counterparties, it does not vouch for good ones. The one-command demo. Free, no payment, no auth.",
        "tags": [
          "Free Preflight Screening"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Resource an agent is about to pay, plus its intent.",
                "properties": {
                  "resource_name": {
                    "type": "string",
                    "description": "Human name of the x402 resource."
                  },
                  "resource_url": {
                    "type": "string",
                    "description": "URL of the x402 resource."
                  },
                  "seller_wallet": {
                    "type": "string",
                    "description": "Seller (payTo) wallet, base58."
                  },
                  "buyer_wallet": {
                    "type": "string",
                    "description": "The paying agent's wallet, base58."
                  },
                  "price_usdc": {
                    "type": "number",
                    "description": "Quoted price in USDC."
                  },
                  "agent_intent": {
                    "type": "string",
                    "description": "What the agent wants to do (e.g. swap_quote)."
                  },
                  "marketplace_score": {
                    "type": "integer",
                    "description": "Optional self-reported marketplace quality 0-100."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/intel/merchant_card/{wallet}": {
      "get": {
        "operationId": "get_v1_intel_merchant_card_wallet",
        "summary": "Fetch a merchant risk card by wallet",
        "description": "Free merchant card, the first-pass counterparty risk check before paying a Solana seller: observed receive-side graph quality around a wallet (not identity or demand proof). Path key is pay_to wallet or registry resource_id (PR-3). wash_flagged for AutoGate refuse; catalog join; resource map claim resource_listing_only. Wash label, fleet %, and payer counts are GET /v1/intel/quick ($0.001). Paid twin: GET /v1/intel/merchant. Optional X-Twzrd-Caller (<integration>@<version> or <package>/<version>) is recorded for later refuse attribution; ack is caller_recorded plus X-Twzrd-Caller-Recorded: 1 (raw token is not echoed).",
        "tags": [
          "Free Preflight Screening"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "wallet",
            "in": "path",
            "required": true,
            "description": "CRITICAL: Do NOT send the literal strings ':wallet', '{wallet}', ':solana_address', or '{wallet}'. You MUST substitute a valid base58 Solana wallet address (32-44 chars). Source it from accepts[].payTo on a 402 challenge or from free preflight seller_wallet.",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          },
          {
            "name": "resource_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Registry resource_id to score instead of the path value. Overrides the path key when set; the path itself also accepts a Solana pay_to, a Base 0x address, or a resource_id."
          },
          {
            "name": "full",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "If true, include catalog services. Default is wash_flagged + decision only."
          },
          {
            "name": "X-Twzrd-Caller",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 128
            },
            "description": "Opt-in self-declared caller identity so a later client-side wash refuse can be joined. Preferred: <integration>@<version> (e.g. clawrouter@0.9.4) or <package>/<version> (e.g. twzrd-x402-gate/0.8.6). Control characters stripped; empty/whitespace ignored. Fallback: X-TWZRD-Client only when this header is absent. Free; no auth. A well-formed token is recorded and acknowledged as caller_recorded=true plus response header X-Twzrd-Caller-Recorded: 1. The raw token is never echoed."
          }
        ]
      }
    },
    "/v1/intel/score_wallet_for_intel": {
      "get": {
        "operationId": "get_v1_intel_score_wallet_for_intel",
        "summary": "Score a wallet from observed x402 history",
        "description": "Free discovery: 0-100 intel score for a wallet from its on-chain x402 payment history (query param: wallet). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "wallet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "description": "Wallet to score: Solana base58 pubkey or Base 0x address.",
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      }
    },
    "/v1/intel/get_poec_score": {
      "get": {
        "operationId": "get_v1_intel_get_poec_score",
        "summary": "Fetch a wallet PoEC preview",
        "description": "Free preview: PoEC v0 (Proof of Economic Contribution) for a wallet from its observed x402 history - floors, components, eligible_v0. claimable is always false; poec_score reads 0.0 until success_quality has a live source (query param: wallet). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "wallet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "description": "Payer wallet (Solana base58 or Base 0x) to score for PoEC v0.",
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      }
    },
    "/v1/intel/get_top_intel_agents": {
      "get": {
        "operationId": "get_v1_intel_get_top_intel_agents",
        "summary": "List observed x402 payer agents",
        "description": "Free discovery (secondary corpus signal): leaderboard of observed x402 payers with intel scores. Qualify a specific seller first via POST /v1/intel/preflight and GET /v1/intel/merchant_card/{wallet}; use this to explore the corpus, not as the primary spend gate. limit=1 returns top_agent plus total_payers_observed, corpus_slices, and leaderboard_note from a single self-consistent source. Observed payers are ECOSYSTEM behavior TWZRD scores (not calls or revenue to TWZRD); the raw count includes the April-2026 onboarding/demo faucet wave, so the durable graph is reported via corpus_slices (pre_spike_base, multi_merchant_ge2). Query params: limit, min_paid_calls, max_days_since_last.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10
            },
            "description": "Max rows to return."
          },
          {
            "name": "min_paid_calls",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Suppress one-shot wallets: minimum observed paid x402 calls for a wallet to appear."
          },
          {
            "name": "max_days_since_last",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Suppress dormant wallets: max days since the wallet's last observed paid x402 call."
          }
        ]
      }
    },
    "/v1/intel/get_facilitator_footprint": {
      "get": {
        "operationId": "get_v1_intel_get_facilitator_footprint",
        "summary": "Fetch a payer facilitator footprint",
        "description": "Free discovery: which x402 facilitators a Solana payer has settled through, from the observed on-chain payer graph (query param: wallet). Use it to qualify a counterparty before paying. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "wallet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "description": "Solana wallet address (base58) to look up facilitator footprint for.",
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      }
    },
    "/v1/intel/get_counterparties": {
      "get": {
        "operationId": "get_v1_intel_get_counterparties",
        "summary": "List a payer's x402 counterparties",
        "description": "Free discovery (capped teaser): the top distinct merchants/resources a Solana wallet pays, from the observed x402 payer graph (query params: wallet, limit<=25). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "wallet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "description": "Solana wallet address (base58).",
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10,
              "maximum": 25
            },
            "description": "Max counterparties to return (capped at 25)."
          }
        ]
      }
    },
    "/v1/intel/compare_wallets": {
      "get": {
        "operationId": "get_v1_intel_compare_wallets",
        "summary": "Compare two wallets before payment",
        "description": "Free discovery: side-by-side observed intel for two Solana wallets (score + counterparty breadth) before paying either one; not identity proof (query params: wallet_a, wallet_b). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "wallet_a",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "First Solana wallet address (base58)."
          },
          {
            "name": "wallet_b",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Second Solana wallet address (base58)."
          }
        ]
      }
    },
    "/v1/intel/score_wallets_batch": {
      "post": {
        "operationId": "post_v1_intel_score_wallets_batch",
        "summary": "Score a batch of Solana wallets",
        "description": "Free discovery: 0-100 intel score for up to 25 Solana wallets in one call, from their observed on-chain x402 payment history. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Wallets to score in one batch.",
                "properties": {
                  "wallets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 25,
                    "description": "Solana wallet addresses (base58), max 25."
                  }
                },
                "required": [
                  "wallets"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/receipts/example": {
      "get": {
        "operationId": "get_v1_receipts_example",
        "summary": "Fetch a sample signed V7 receipt",
        "description": "Free no-wallet SAMPLE signed V7 receipt (illustrative score, null address). Verify offline via /v1/receipts/verify before paying for live trust. Free, no payment, no auth.",
        "tags": [
          "Receipts"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/v1/receipts/verify": {
      "post": {
        "operationId": "post_v1_receipts_verify",
        "summary": "Verify a portable V7 receipt",
        "description": "Free local receipt verifier: recompute the keccak256 leaf from a portable receipt preimage and compare. Accepts V5, V6, and V7. Rejects TWZRD:REFUSE_RECEIPT_V0 on kind/domain: that object is a caller-local deny, not a Path A trust receipt. Free, no payment, no auth.",
        "tags": [
          "Receipts"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "A full PaidReceipt or a bare {leaf, preimage}. Signature is always enforced.",
                "properties": {
                  "leaf": {
                    "type": "string",
                    "description": "Hex keccak256 receipt leaf."
                  },
                  "preimage": {
                    "type": "object",
                    "description": "Receipt preimage fields that hash to the leaf."
                  },
                  "signature": {
                    "type": "string",
                    "description": "Ed25519 signature over the leaf (base58/hex)."
                  },
                  "signing_pubkey": {
                    "type": "string",
                    "description": "Signer pubkey (base58)."
                  }
                },
                "required": [
                  "leaf"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/intel/payto-feed": {
      "get": {
        "operationId": "get_v1_intel_payto_feed",
        "summary": "Fetch wash/payTo diffs for a local deny list",
        "description": "Free compact wash/payTo diffs for a router's local deny list (e.g. SpendControl blockedPayees). Solana is the only wash graph. Requires X-Twzrd-Caller <integration>@<version>. Not a directory dump. Empty first snapshot is not 'all clean'. Unwarmed / no DATABASE_URL returns 503, not a fake empty list. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "solana",
                "base",
                "polygon"
              ]
            },
            "description": "solana is the only wash graph. base/polygon return wash_graph=false."
          },
          {
            "name": "since_seq",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Diff cursor. 0 = snapshot. Do not page snapshots with this."
          },
          {
            "name": "snapshot_cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "Exclusive seq among currently-flagged rows. Snapshot mode only."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 200
            },
            "description": "Page size 1-500."
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "flagged"
            },
            "description": "flagged or flagged,cleared."
          },
          {
            "name": "X-Twzrd-Caller",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 128
            },
            "description": "Opt-in self-declared caller identity so a later client-side wash refuse can be joined. Preferred: <integration>@<version> (e.g. clawrouter@0.9.4) or <package>/<version> (e.g. twzrd-x402-gate/0.8.6). Control characters stripped; empty/whitespace ignored. Fallback: X-TWZRD-Client only when this header is absent. Free; no auth. A well-formed token is recorded and acknowledged as caller_recorded=true plus response header X-Twzrd-Caller-Recorded: 1. The raw token is never echoed."
          }
        ]
      }
    },
    "/v1/intel/refuse-receipt": {
      "post": {
        "operationId": "post_v1_intel_refuse_receipt",
        "summary": "Create a caller-local deny receipt",
        "description": "Notarize a caller's own local deny (e.g. spend_policy_denied). This is not a TWZRD wash verdict. Domain TWZRD:REFUSE_RECEIPT_V0; same Ed25519 v2 key as V6, different domain. Replay of the same natural key returns the same signed object for 90 days; after that a remint gets a new issued_at_unix and a new leaf. Requires X-Twzrd-Caller matching body.caller_id for the legacy format (202). Alternatively submit challenge_hash, issued_at_unix, resource, reason, payer_pubkey, signature for a free caller-signed declaration (200 logged, receipt_id, witness_signature). No caller header or payment required for this format. Ed25519 base58 signature over UTF-8 TWZRD:SIGNED_REFUSAL_V1 + LF + compact, sorted-key, ensure_ascii JSON of all five non-signature fields. issued_at_unix must be within 300s of server time. Optionally include quoted_price: this selects TWZRD:SIGNED_REFUSAL_V2 and signs all six non-signature fields, including the complete quote object. The witness receipt adds ingested_at_unix, the server ingestion time, bound into the witness leaf and distinct from the caller-signed issued_at_unix. Reasons and challenge provenance are caller claims. Invalid or stale signature returns 422 INVALID_REFUSAL_SIGNATURE. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          },
          "202": {
            "description": "Legacy caller-local deny receipt."
          },
          "422": {
            "description": "INVALID_REFUSAL_SIGNATURE or INVALID_REFUSAL_PAYLOAD."
          },
          "429": {
            "description": "Rate limited; retry after Retry-After."
          },
          "503": {
            "description": "Signing or persistent storage unavailable; not logged."
          }
        },
        "parameters": [
          {
            "name": "X-Twzrd-Caller",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 128
            },
            "description": "Opt-in self-declared caller identity so a later client-side wash refuse can be joined. Preferred: <integration>@<version> (e.g. clawrouter@0.9.4) or <package>/<version> (e.g. twzrd-x402-gate/0.8.6). Control characters stripped; empty/whitespace ignored. Fallback: X-TWZRD-Client only when this header is absent. Free; no auth. A well-formed token is recorded and acknowledged as caller_recorded=true plus response header X-Twzrd-Caller-Recorded: 1. The raw token is never echoed."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Legacy caller-local deny or caller-signed refusal declaration. No payment authorization.",
                "properties": {
                  "caller_id": {
                    "type": "string",
                    "description": "Must match X-Twzrd-Caller."
                  },
                  "pay_to": {
                    "type": "string",
                    "description": "Counterparty payTo."
                  },
                  "chain": {
                    "type": "string",
                    "enum": [
                      "solana",
                      "base",
                      "polygon"
                    ]
                  },
                  "rule_id": {
                    "type": "string"
                  },
                  "policy_hash": {
                    "type": "string",
                    "description": "0x + 64 hex of their policy blob."
                  },
                  "denied_at_unix": {
                    "type": "integer"
                  },
                  "challenge_hash": {
                    "type": "string",
                    "description": "0x-prefixed lowercase SHA-256 of exact decoded 402 challenge JSON bytes, before parsing."
                  },
                  "issued_at_unix": {
                    "type": "integer",
                    "description": "UNIX seconds at which the caller formed the declaration; must be within 300s of server time."
                  },
                  "resource": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 4096
                  },
                  "reason": {
                    "type": "string",
                    "enum": [
                      "BUDGET_EXCEEDED",
                      "UNTRUSTED_MERCHANT",
                      "STALE_CORPUS",
                      "UNSUPPORTED_CHAIN"
                    ]
                  },
                  "payer_pubkey": {
                    "type": "string",
                    "description": "Base58 Ed25519 declaration signer. No payer externality or payment claim."
                  },
                  "signature": {
                    "type": "string",
                    "description": "Base58 Ed25519 signature over the domain-separated declaration."
                  },
                  "quoted_price": {
                    "type": "object",
                    "additionalProperties": false,
                    "description": "Caller-asserted offer, not independently authenticated seller pricing. Selects signed refusal V2.",
                    "required": [
                      "amount_atomic",
                      "asset",
                      "network",
                      "pay_to"
                    ],
                    "properties": {
                      "amount_atomic": {
                        "type": "string",
                        "pattern": "^(0|[1-9][0-9]{0,38})$",
                        "description": "Unsigned integer less than 2^128 in the asset's smallest units; not necessarily USDC micro-units."
                      },
                      "asset": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "network": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "pay_to": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      }
                    }
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "caller_id",
                      "pay_to",
                      "chain",
                      "rule_id",
                      "policy_hash",
                      "denied_at_unix"
                    ]
                  },
                  {
                    "required": [
                      "challenge_hash",
                      "issued_at_unix",
                      "resource",
                      "reason",
                      "payer_pubkey",
                      "signature"
                    ]
                  }
                ]
              }
            }
          }
        }
      }
    },
    "/v1/intel/refuse-receipt/verify": {
      "post": {
        "operationId": "post_v1_intel_refuse_receipt_verify",
        "summary": "Verify a refuse-receipt (not V6)",
        "description": "Free offline-equivalent verify of a refuse-receipt. Checks kind, domain TWZRD:REFUSE_RECEIPT_V0, leaf, and Ed25519 against the published v2 key. Rejects V6 trust receipts on kind/domain. Also verifies both signatures and all bound fields of twzrd_signed_refusal_v1/v2. Does not need a DB row. Does not attest wash or the truth of a caller's reason. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "The legacy 202 or caller-signed 200 refuse-receipt object."
              }
            }
          }
        }
      }
    },
    "/health": {
      "get": {
        "operationId": "get_health",
        "summary": "Fetch TWZRD service health",
        "description": "Service health + active network / pay_to / signal source. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/supported": {
      "get": {
        "operationId": "get_supported",
        "summary": "Fetch supported x402 payment schemes",
        "description": "Path B facilitator /supported: Solana exact scheme + feePayer GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP + settlement_policy + twzrd.merchant_attach. Pin payment extra.feePayer to this value before POST /verify + /settle.",
        "tags": [
          "x402 Facilitator (Path B)"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "kinds": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "scheme": {
                            "type": "string",
                            "const": "exact"
                          },
                          "network": {
                            "type": "string"
                          },
                          "x402Version": {
                            "type": "integer"
                          },
                          "extra": {
                            "type": "object",
                            "properties": {
                              "feePayer": {
                                "type": "string",
                                "description": "Path B sponsor; pin to GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP"
                              }
                            }
                          }
                        }
                      }
                    },
                    "signers": {
                      "type": "object"
                    },
                    "twzrd": {
                      "type": "object",
                      "properties": {
                        "pitch": {
                          "type": "string"
                        },
                        "merchant_attach": {
                          "type": "boolean"
                        },
                        "settlement_policy": {
                          "type": "object",
                          "description": "Sponsor-cost caps: min amount, CU, fee lamports, required_signatures=2, no ALTs, no Lighthouse."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/verify": {
      "post": {
        "operationId": "post_verify",
        "summary": "Verify an x402 payment payload",
        "description": "Path B facilitator /verify: validate payment payload against requirements with no chain write (strict template + reservation lookup). Policy failures usually return HTTP 200 with isValid=false; malformed body is 400.",
        "tags": [
          "x402 Facilitator (Path B)"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Verify result. isValid=true when policy+payload OK; isValid=false with invalidReason for policy/replay rejects (still HTTP 200 for scheme outcomes).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "isValid"
                  ],
                  "properties": {
                    "isValid": {
                      "type": "boolean"
                    },
                    "invalidReason": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Set when isValid=false. Examples: policy:* reasons, duplicate_settlement, policy:reservation_unavailable, bad_request:…"
                    },
                    "invalidMessage": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "payer": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Base58 payer pubkey when known."
                    },
                    "extensions": {},
                    "extra": {},
                    "detail": {
                      "type": "string"
                    }
                  },
                  "examples": [
                    {
                      "isValid": true,
                      "invalidReason": null,
                      "payer": "64NsKhbNGZCEj6sgTtjzscfuXSZSEpD1GoBXbT45yv4J"
                    },
                    {
                      "isValid": false,
                      "invalidReason": "duplicate_settlement",
                      "payer": "64NsKhbNGZCEj6sgTtjzscfuXSZSEpD1GoBXbT45yv4J"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed body (missing paymentPayload/paymentRequirements).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "isValid": {
                      "type": "boolean",
                      "const": false
                    },
                    "invalidReason": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Facilitator unavailable or agent_intel_disabled."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "paymentPayload",
                  "paymentRequirements"
                ],
                "properties": {
                  "x402Version": {
                    "type": "integer",
                    "description": "x402 v2; may also appear only on paymentPayload."
                  },
                  "paymentPayload": {
                    "type": "object",
                    "description": "x402 PaymentPayload (includes partially-signed SVM tx)."
                  },
                  "paymentRequirements": {
                    "type": "object",
                    "description": "Must equal payload.accepted under strict policy; extra.feePayer must be GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/settle": {
      "post": {
        "operationId": "post_settle",
        "summary": "Create an x402 payment settlement on Solana",
        "description": "Path B facilitator /settle: permanent message-hash reservation, cosign feePayer, submit, fail-closed confirm. Returns twzrd_receipt (V7) + merchant_attach for payTo. Gas-sponsored settle + trust memory in one hop. Attach is best-effort - never voids on-chain settle. Policy/replay failures usually HTTP 200 with success=false. Not Path A multi-rail paid-trust 402. settle_gate_enabled does not gate this rail when false (current prod default).",
        "tags": [
          "x402 Facilitator (Path B)"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "Settle result. success=true includes transaction + best-effort twzrd_receipt/merchant_attach; success=false with errorReason for policy/replay (e.g. duplicate_settlement) still HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "success"
                  ],
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "errorReason": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Set when success=false. Examples: duplicate_settlement, policy:reservation_unavailable, settle_error:*, bad_request:…"
                    },
                    "transaction": {
                      "type": "string",
                      "description": "Solana tx signature when success=true; empty on reject."
                    },
                    "network": {
                      "type": "string"
                    },
                    "payer": {
                      "type": "string"
                    },
                    "settlement_recorded": {
                      "type": "string",
                      "description": "Durable ledger status: recorded | replay | error | …"
                    },
                    "twzrd_receipt": {
                      "type": "object",
                      "description": "Portable V7 Ed25519 receipt (leaf/preimage/signature). Best-effort; may be absent with twzrd_receipt_note.",
                      "properties": {
                        "version": {
                          "type": "string",
                          "description": "v6"
                        },
                        "leaf": {
                          "type": "string"
                        },
                        "preimage": {
                          "type": "object"
                        },
                        "signature": {
                          "type": "string"
                        },
                        "signing_pubkey": {
                          "type": "string"
                        },
                        "signing_alg": {
                          "type": "string"
                        },
                        "key_id": {
                          "type": "string"
                        }
                      }
                    },
                    "twzrd_receipt_note": {
                      "type": "string",
                      "description": "Why receipt was omitted (best-effort attach)."
                    },
                    "merchant_attach": {
                      "type": "object",
                      "description": "Best-effort payTo track-record attach. Never voids chain success. Down-only graph snapshot — not identity or delivery vouch.",
                      "properties": {
                        "attached": {
                          "type": "boolean"
                        },
                        "seller": {
                          "type": "string"
                        },
                        "payer": {
                          "type": "string"
                        },
                        "settlement_tx": {
                          "type": "string"
                        },
                        "amount_micro": {
                          "type": "integer"
                        },
                        "facilitator": {
                          "type": "string",
                          "const": "twzrd"
                        },
                        "signed": {
                          "type": "boolean"
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "demand_quality_snapshot": {
                          "type": "object"
                        }
                      }
                    },
                    "ack_pay_credential": {
                      "type": "object",
                      "description": "Optional ACK-Pay VC transform of twzrd_receipt (best-effort)."
                    }
                  },
                  "examples": [
                    {
                      "success": true,
                      "transaction": "<solana-sig>",
                      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
                      "payer": "<base58>",
                      "settlement_recorded": "recorded",
                      "twzrd_receipt": {
                        "version": "v6"
                      },
                      "merchant_attach": {
                        "attached": true,
                        "facilitator": "twzrd",
                        "signed": true
                      }
                    },
                    {
                      "success": false,
                      "errorReason": "duplicate_settlement",
                      "transaction": "",
                      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
                      "payer": "<base58>"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Malformed body (missing paymentPayload/paymentRequirements).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean",
                      "const": false
                    },
                    "errorReason": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Facilitator unavailable or agent_intel_disabled."
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "paymentPayload",
                  "paymentRequirements"
                ],
                "properties": {
                  "x402Version": {
                    "type": "integer"
                  },
                  "paymentPayload": {
                    "type": "object",
                    "description": "Same envelope accepted by POST /verify."
                  },
                  "paymentRequirements": {
                    "type": "object",
                    "description": "extra.feePayer must be GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/.well-known/x402": {
      "get": {
        "operationId": "get__well_known_x402",
        "summary": "Fetch the x402 service descriptor",
        "description": "x402 service descriptor (this document). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "get_openapi_json",
        "summary": "Fetch the TWZRD OpenAPI document",
        "description": "OpenAPI 3.1 description of the public routes with x402 payment annotations on paid paths. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "get_llms_txt",
        "summary": "Fetch agent-facing TWZRD guidance",
        "description": "Plain-text agent-facing pointer to the trust surface, discovery endpoints, and the live mainnet proof. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/.well-known/agent-card.json": {
      "get": {
        "operationId": "get__well_known_agent_card_json",
        "summary": "Fetch the TWZRD A2A agent card",
        "description": "A2A agent card: endpoints, pricing, x402 + MCP capabilities for orchestrators and registries. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        }
      }
    },
    "/v1/compute/inference": {
      "post": {
        "operationId": "post_v1_compute_inference",
        "summary": "Run receipt-gated model inference",
        "description": "Receipt-gated inference proxy (no x402 charge, but not open access). Wallet must hold an active TWZRD Receipt (Silver+). Checks resolver -> verifies cnft_minted -> proxies to model backend. 402 if no receipt or tier too low. Live x402 inference is POST https://api.twzrd.xyz/v1/chat/completions ($0.01).",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [
          {
            "twzrdReceipt": []
          }
        ],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          },
          "400": {
            "description": "Missing required wallet or prompt field. Body also names the live x402 completions SKU on api.twzrd.xyz."
          },
          "402": {
            "description": "Active TWZRD Receipt required, or wallet receipt tier is below Silver."
          },
          "502": {
            "description": "Receipt resolver or inference backend unavailable."
          }
        },
        "x-access-gate": {
          "type": "receipt",
          "required_receipt": "twzrd.receipt",
          "minimum_tier": "Silver",
          "wallet_source": "requestBody.wallet",
          "resolver": "https://api.twzrd.xyz/v1/receipts/r/{wallet}",
          "failure_status": 402
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "wallet": {
                    "type": "string",
                    "description": "Solana wallet address to check receipt for"
                  },
                  "prompt": {
                    "type": "string",
                    "description": "Prompt to send to the inference model"
                  }
                },
                "required": [
                  "wallet",
                  "prompt"
                ]
              }
            }
          }
        }
      }
    },
    "/v1/intel/badge/{pubkey}": {
      "get": {
        "operationId": "get_v1_intel_badge_pubkey",
        "summary": "Fetch an intel badge by pubkey",
        "description": "Free SVG intel badge for any Solana pubkey. Returns coarse trust tier (Bronze/Silver/Gold/Platinum) from the live x402 payer graph. Embed in marketplaces with <img>. Cacheable (1h). Exact score + receipt are the paid GET /v1/intel/quick ($0.001) and /v1/intel/trust ($0.05). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "pubkey",
            "in": "path",
            "required": true,
            "description": "CRITICAL: Do NOT send the literal strings ':pubkey', '{pubkey}', ':solana_address', or '{wallet}'. You MUST substitute a valid base58 Solana wallet address (32-44 chars). Source it from accepts[].payTo on a 402 challenge or from free preflight seller_wallet.",
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "minLength": 32,
              "maxLength": 44,
              "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
            },
            "example": "GFpLvocNdEjnSsLH3VJQL6wGcjGxTbUBrj6fqN3Qe1Gs"
          }
        ]
      }
    },
    "/v1/intel/watch": {
      "post": {
        "operationId": "post_v1_intel_watch",
        "summary": "Register a seller re-call watch",
        "description": "Register a re-call watch on a seller wallet: TWZRD re-checks the seller when recheck_after_unix elapses and POSTs event twzrd.watch.recheck_due to your webhook when the score/decision materially changes. webhook_url optional (omit for poll-only); public HTTPS only. Max 25 active watches per payer_wallet. Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "payer_wallet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Solana payer wallet (base58) whose active watches to list."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Watch registration: payer + seller wallets, optional webhook.",
                "properties": {
                  "payer_wallet": {
                    "type": "string",
                    "description": "Your agent wallet (the watcher), base58."
                  },
                  "seller_wallet": {
                    "type": "string",
                    "description": "The seller/merchant wallet to watch, base58."
                  },
                  "webhook_url": {
                    "type": "string",
                    "description": "Optional public HTTPS URL to POST when intel materially changes. Omit for poll-only."
                  }
                },
                "required": [
                  "payer_wallet",
                  "seller_wallet"
                ]
              }
            }
          }
        }
      },
      "get": {
        "operationId": "get_v1_intel_watch",
        "summary": "List active seller re-call watches",
        "description": "List active re-call watches for a payer wallet with current score/decision and recheck_after_unix (query param: payer_wallet; webhook URLs masked to host). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "payer_wallet",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Solana payer wallet (base58) whose active watches to list."
          }
        ]
      }
    },
    "/v1/intel/watch/{watch_id}": {
      "delete": {
        "operationId": "delete_v1_intel_watch_watch_id",
        "summary": "Delete a seller re-call watch",
        "description": "Deactivate a re-call watch by ID (query param: payer_wallet must match the watch owner). Free, no payment, no auth.",
        "tags": [
          "Discovery & Ops"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OK (JSON)."
          }
        },
        "parameters": [
          {
            "name": "watch_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 9,
              "minimum": 1
            },
            "description": "Integer watch id from POST /v1/intel/watch (e.g. 9).",
            "example": 9
          }
        ]
      }
    },
    "/v1/chat/completions": {
      "post": {
        "operationId": "post_v1_chat_completions",
        "summary": "Run paid OpenAI-compatible inference",
        "description": "WZRD OpenAI-compatible chat completions on api.twzrd.xyz. Session/Bearer or $0.01 Solana USDC. Not an intel-settled route and not a Monid provider. Hosted and settled on api.twzrd.xyz (payTo DB2s5PeotN1zwb9WpLQMAYqdHnf86SfjYUhbe1Nm8D1e, 0.01 USDC). This intel origin 307s the path to that host. Not an intel-settled route.",
        "tags": [
          "API Hosted Inference"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "messages"
                ],
                "properties": {
                  "model": {
                    "type": "string",
                    "default": "auto",
                    "description": "Model slug or auto for velocity routing."
                  },
                  "messages": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "role",
                        "content"
                      ],
                      "properties": {
                        "role": {
                          "type": "string"
                        },
                        "content": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  "stream": {
                    "type": "boolean",
                    "default": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OpenAI-compatible chat.completion JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "object": {
                      "type": "string",
                      "const": "chat.completion"
                    },
                    "choices": {
                      "type": "array"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). Returns payment-required header."
          }
        },
        "x402": {
          "amount": "10000",
          "price_usdc": 0.01,
          "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
          "payTo": "DB2s5PeotN1zwb9WpLQMAYqdHnf86SfjYUhbe1Nm8D1e",
          "scheme": "exact",
          "extra": {
            "feePayer": "DB2s5PeotN1zwb9WpLQMAYqdHnf86SfjYUhbe1Nm8D1e"
          }
        },
        "x-payment-info": {
          "price": {
            "mode": "fixed",
            "currency": "USD",
            "amount": "0.010000"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        },
        "servers": [
          {
            "url": "https://api.twzrd.xyz"
          }
        ]
      }
    },
    "/v1/agent-readiness": {
      "post": {
        "operationId": "post_v1_agent_readiness",
        "summary": "Verify x402 seller endpoint readiness",
        "description": "Direct probes only (SSRF-guarded HTTPS-only, no search in the hot path). Hard axes are commerce (unpaid 402 truth) and trust (TWZRD preflight + merchant_card judgment per resolved payTo — not a checkbox). Soft axes: discovery, capability, proof. Free, no payment, no auth. Not listed in /.well-known/x402 free_resources or llms primary path until marketing is intentionally un-gated.",
        "tags": [
          "Free Preflight Screening"
        ],
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "HTTPS origin of the agent/service under audit."
                  },
                  "resource_urls": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uri"
                    },
                    "maxItems": 5,
                    "description": "Optional explicit payable resource URLs to probe when the origin does not advertise them (max 5)."
                  },
                  "max_resources": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 5,
                    "default": 3,
                    "description": "Cap on discovered resources to probe (clamped 1-5, default 3)."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AgentReadinessCard with per-axis findings and a verdict.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Missing/invalid url (HTTPS required), or the audit could not resolve a card."
          },
          "503": {
            "description": "Surface disabled (WZRD_AGENT_INTEL_ENABLED=false)."
          }
        }
      }
    }
  }
}
