{
  "openapi": "3.1.0",
  "info": {
    "title": "Blockpin on-chain checks",
    "version": "1.9.2",
    "description": "Pay-per-call on-chain checks for agents: admin changes, token flows, treasury snapshots and agent income on Ethereum, Base and Robinhood Chain, plus Solana token, program and wallet checks. Independent service run by Blockpin (formerly Claus Shifts; @holdembuilds, ERC-8004 #54303 Ethereum / #9233 Robinhood Chain; https://blockpin.dev). Not operated or endorsed by Claus (@contractclaus) or the Claus Network.",
    "x-guidance": "Each paid path answers 402 with two x402 prices: USDG on Robinhood Chain (eip155:4663) or USDC on Base (eip155:8453). Pay with an EIP-3009 exact payment in the PAYMENT-SIGNATURE header (x402 v2). The payment is verified first and only settled after the check completes; a failed lookup is never charged. Invalid input returns 400 before any payment. /sample, /sample/flows, /sample/treasury, /sample/income, /sample/routes, /sample/solana and /sample/solana/flows return free real examples; /try runs checks in a browser.",
    "contact": {
      "name": "Blockpin",
      "url": "https://x.com/holdembuilds"
    }
  },
  "servers": [
    {
      "url": "https://check.blockpin.dev"
    }
  ],
  "paths": {
    "/check": {
      "get": {
        "operationId": "adminChangeCheck",
        "summary": "Who controls this token or contract, and did ownership, proxy upgrades or pause change since block N? (rug check)",
        "description": "Token and contract control check (rug check): who controls this token or contract, and did that change since block N? Current owner, pending owner, proxy implementation, proxy admin, beacon and pause state, plus every ownership transfer, upgrade, admin, role and pause event since the block, each with its tx. Use before trading a token or trusting a contract. Base, Ethereum, Robinhood Chain. By Blockpin.",
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "robinhood"
              ],
              "description": "Chain the contract is on"
            },
            "example": "ethereum"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "description": "Contract address"
            },
            "example": "0x1b54E762aa34CF6E28E9C082F2848e28E45DA6b8"
          },
          {
            "name": "since",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "description": "Block number to check from (Ethereum: up to 1,000,000 blocks back; Robinhood Chain: up to 7,000,000; Base: up to 1,300,000)"
            },
            "example": "26200000"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "changed": {
                      "type": "boolean"
                    },
                    "controlChanged": {
                      "type": "boolean"
                    },
                    "pauseChanged": {
                      "type": "boolean"
                    },
                    "summary": {
                      "type": "string"
                    },
                    "current": {
                      "type": "object"
                    },
                    "events": {
                      "type": "array"
                    },
                    "range": {
                      "type": "object"
                    },
                    "chain": {
                      "type": "string"
                    },
                    "address": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "changed",
                    "summary",
                    "current",
                    "events"
                  ]
                },
                "example": {
                  "chain": "Ethereum",
                  "chainId": 1,
                  "address": "0x1b54e762aa34cf6e28e9c082f2848e28e45da6b8",
                  "range": {
                    "fromBlock": 26200000,
                    "toBlock": 26241562
                  },
                  "changed": true,
                  "controlChanged": true,
                  "pauseChanged": false,
                  "summary": "2 control events between blocks 26200000 and 26241562: 1 OwnershipTransferStarted, 1 OwnershipTransferred.",
                  "current": {
                    "owner": "0x180eae784dee739fbab432b06f78bf9a98aae334",
                    "pendingOwner": null,
                    "paused": null,
                    "proxyImplementation": "0x55d555bd85fed6ecf30fda9b4c76019b844218a7",
                    "proxyAdmin": "0xfb4b9d2ba3ef17787bfe3fd90c3ea7b319807a57",
                    "proxyBeacon": null
                  },
                  "events": [
                    {
                      "block": 26233396,
                      "type": "OwnershipTransferred",
                      "from": "0xbb145ca83272c3806d4ddc75ca1d5514789cf1c5",
                      "to": "0x180eae784dee739fbab432b06f78bf9a98aae334",
                      "tx": "0xd6437bc65f67c0476a4a2db5330c15a770a92de60df5dba1de5a2065ce5600a2"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/flows": {
      "get": {
        "operationId": "tokenFlowCheck",
        "summary": "How much of a token flowed into and out of this wallet, vault or treasury since block N, and from whom?",
        "description": "Token flow check: every ERC-20 Transfer of one token into and out of an address (a vault, treasury, fee receiver or wallet) since block N, with totals, net, top counterparties, the largest transfers and the balance now. Use it to check claims like 'x% of every trade lands in the vault'. Ethereum, Base and Robinhood Chain. Independent, by Blockpin; not a Claus Network service.",
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "robinhood"
              ]
            },
            "example": "robinhood"
          },
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "description": "ERC-20 token address"
            },
            "example": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "description": "Address whose flows to sum (vault, treasury, fee receiver, wallet)"
            },
            "example": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66"
          },
          {
            "name": "since",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "description": "Start block (Ethereum: up to 1,000,000 back; Robinhood Chain: up to 7,000,000)"
            },
            "example": "88600000"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "string"
                    },
                    "incoming": {
                      "type": "object"
                    },
                    "outgoing": {
                      "type": "object"
                    },
                    "net": {
                      "type": "string"
                    },
                    "balanceAtToBlock": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "summary",
                    "incoming",
                    "outgoing"
                  ]
                },
                "example": {
                  "summary": "0x8672… received 0.1 USDG in 1 transfer and sent 0 USDG in 0 between blocks 88600000 and 95100000. Balance at 95100000: 0.1 USDG.",
                  "incoming": {
                    "count": 1,
                    "total": "0.1"
                  },
                  "outgoing": {
                    "count": 0,
                    "total": "0"
                  },
                  "net": "0.1",
                  "balanceAtToBlock": "0.1"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/treasury": {
      "get": {
        "operationId": "treasurySnapshot",
        "summary": "What did this wallet or treasury hold (ETH and every token balance) at block N?",
        "description": "Treasury snapshot: the native ETH balance and every ERC-20 balance of an address at a block (or now), read on-chain, with the block time. Use it to check treasury, runway or backing claims pinned to a block. Ethereum, Base and Robinhood Chain. Independent, by Blockpin; not a Claus Network service.",
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "robinhood"
              ]
            },
            "example": "robinhood"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$"
            },
            "example": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66"
          },
          {
            "name": "block",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "description": "Optional block (default latest). Older blocks need archive state and may be refused before payment."
            }
          },
          {
            "name": "tokens",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional comma-separated token addresses (max 10). Default: tokens the explorer lists for the address."
            }
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "block": {
                      "type": "number"
                    },
                    "summary": {
                      "type": "string"
                    },
                    "native": {
                      "type": "object"
                    },
                    "tokens": {
                      "type": "array"
                    }
                  },
                  "required": [
                    "block",
                    "summary",
                    "native",
                    "tokens"
                  ]
                },
                "example": {
                  "block": 95100000,
                  "summary": "0x8672… at block 95100000: 0.0001 ETH and 1 token balance.",
                  "native": {
                    "symbol": "ETH",
                    "balance": "0.0001"
                  },
                  "tokens": [
                    {
                      "symbol": "USDG",
                      "balance": "0.1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/income": {
      "get": {
        "operationId": "agentIncomeRebuild",
        "summary": "Is this agent's revenue real? Rebuild every payment into an agent wallet between two blocks, excluding self-payments and owner top-ups, and compare a stated total",
        "description": "Agent income rebuild: every payment into an agent wallet in one asset (an ERC-20, or native ETH including escrow withdrawals) between two blocks, with the draft Agent Income Statements exclusions (zero, mints, self, optional owner top-ups), payers that are contracts flagged, and an optional claim= compared as matched or mismatched. Ethereum, Base and Robinhood Chain. Independent, by Blockpin; not a Claus Network service.",
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum",
                "base",
                "robinhood"
              ]
            },
            "example": "ethereum"
          },
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "description": "Agent wallet (agentWallet / payTo)"
            },
            "example": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66"
          },
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ERC-20 0x address, or native for ETH"
            },
            "example": "native"
          },
          {
            "name": "since",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "description": "Start block (Ethereum: up to 1,000,000 back; Robinhood Chain: up to 7,000,000)"
            },
            "example": "26150000"
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$",
              "description": "Optional end block (default latest)"
            }
          },
          {
            "name": "owner",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "description": "Optional owner address: its payments are excluded as top-ups"
            }
          },
          {
            "name": "claim",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional stated total to compare (token units)"
            }
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "string"
                    },
                    "income": {
                      "type": "object"
                    },
                    "excluded": {
                      "type": "object"
                    },
                    "payers": {
                      "type": "array"
                    },
                    "largest": {
                      "type": "array"
                    },
                    "claim": {
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "summary",
                    "income",
                    "excluded",
                    "payers"
                  ]
                },
                "example": {
                  "summary": "0x8672… received 0.0142 ETH of income from 3 payers ...",
                  "income": {
                    "counted": "0.0142",
                    "gross": "0.0142",
                    "payments": 14,
                    "payers": 3,
                    "viaContracts": "0.002"
                  },
                  "excluded": {
                    "zero": {
                      "count": 0
                    },
                    "mint": {
                      "count": 0
                    },
                    "self": {
                      "count": 0
                    },
                    "ownerTopUp": {
                      "count": 0
                    }
                  },
                  "claim": null,
                  "payers": [
                    {
                      "payer": "0x354f658129a6d8f67c90e2c3e1eb9981ca419816",
                      "label": "ClausDealEscrow (Claus Jobs escrow, Ethereum)",
                      "isContract": true,
                      "amount": "0.012",
                      "share": "84.51%"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/routes": {
      "get": {
        "operationId": "routerCheck",
        "summary": "Do Uniswap, KyberSwap and ParaSwap route this token's trades through its hooked v4 pool, and how much?",
        "description": "Router check: quotes a token's buys (0.01, 0.1, 1 ETH) and matching sells through Uniswap, KyberSwap and ParaSwap at once, lists every pool each route uses with its share, and shows how much goes through hooked Uniswap v4 pools (or one pool you name). Quotes only. Ethereum. Independent, by Blockpin; not a Claus Network service.",
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ethereum"
              ]
            },
            "example": "ethereum"
          },
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^0x[0-9a-fA-F]{40}$",
              "description": "ERC-20 token on Ethereum"
            },
            "example": "0x1b54E762aa34CF6E28E9C082F2848e28E45DA6b8"
          },
          {
            "name": "pool",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional Uniswap v4 pool id (or pool address) to track"
            },
            "example": "0xfaa42866f7667e3a1a10d783f3b629171febd45f056336b8df766d74afc0f0f7"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "string"
                    },
                    "hookedPools": {
                      "type": "array"
                    },
                    "rows": {
                      "type": "array"
                    }
                  },
                  "required": [
                    "summary",
                    "rows"
                  ]
                },
                "example": {
                  "summary": "Share of each quote routed through hooked Uniswap v4 pools — buy 1 ETH: uniswap 0%, kyberswap 100%, paraswap 0% | …",
                  "rows": [
                    {
                      "direction": "buy",
                      "size": "1 ETH",
                      "routers": {
                        "uniswap": {
                          "hookedShare": 0
                        },
                        "kyberswap": {
                          "hookedShare": 100
                        },
                        "paraswap": {
                          "hookedShare": 0
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/solana/check": {
      "get": {
        "operationId": "solanaControlCheck",
        "summary": "Who controls this Solana token or program? Mint and freeze authority, risky Token-2022 extensions, who can change the metadata, program upgrade key (rug check)",
        "description": "Solana control check (rug check) for a token mint or program: mint authority, freeze authority, Token-2022 extensions (permanent delegate, transfer hook, transfer fee, default frozen), who can change the name and image, and for a program whether it can still be upgraded and by a single key or a multisig. Use before trading a token or trusting a program. By Blockpin.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "description": "Solana token mint or program address"
            },
            "example": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string"
                    },
                    "summary": {
                      "type": "string"
                    },
                    "risks": {
                      "type": "array"
                    },
                    "token": {
                      "type": "object"
                    },
                    "metadata": {
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "program": {
                      "type": "object"
                    }
                  },
                  "required": [
                    "type",
                    "summary"
                  ]
                },
                "example": {
                  "chain": "Solana",
                  "type": "program",
                  "summary": "Program 6EF8…F6P CAN be upgraded by 7gZu…jFr8 (program-derived account); last deployed at slot 458921440.",
                  "program": {
                    "upgradeable": true,
                    "upgradeAuthority": {
                      "address": "7gZufwwAo17y5kg8FMyJy2phgpvv9RSdzWtdXiWHjFr8",
                      "kind": "program-derived account"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/solana/flows": {
      "get": {
        "operationId": "solanaFlowCheck",
        "summary": "Is this Solana agent's revenue real? Every SOL or token payment into and out of a wallet or treasury, by counterparty, with self-payments and owner top-ups excluded and a stated total compared",
        "description": "Solana flow and income check: rebuilds SOL or SPL token payments into and out of a wallet or treasury from its latest transactions, groups them by payer and recipient (wallets vs program accounts such as pools and fee vaults), excludes self-payments and optional owner top-ups, flags token-account delegates, and compares an optional claim=. Covers the latest 35 transactions on the public RPC. By Blockpin.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$",
              "description": "Solana wallet or treasury"
            },
            "example": "53JhuF8bgxvUQ59nDG6kWs4awUQYCS3wswQmUsV5uC7t"
          },
          {
            "name": "asset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "SOL (default) or a token mint address"
            },
            "example": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
          },
          {
            "name": "owner",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional owner wallet: its payments are excluded as top-ups"
            }
          },
          {
            "name": "claim",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional stated total to compare"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional number of latest transactions to read (max 35 on the public RPC)"
            }
          }
        ],
        "x-payment-info": {
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.01",
            "max": "0.10"
          },
          "protocols": [
            {
              "x402": {}
            }
          ],
          "offers": [
            {
              "scheme": "exact",
              "network": "eip155:4663",
              "amount": "100000",
              "asset": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "Global Dollar",
                "version": "1"
              }
            },
            {
              "scheme": "exact",
              "network": "eip155:8453",
              "amount": "10000",
              "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "payTo": "0x86727111a44084cc7a7c1c5d8ac4b0eca4d7db66",
              "maxTimeoutSeconds": 300,
              "extra": {
                "name": "USD Coin",
                "version": "2"
              }
            }
          ]
        },
        "responses": {
          "200": {
            "description": "Result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "summary": {
                      "type": "string"
                    },
                    "coverage": {
                      "type": "object"
                    },
                    "incoming": {
                      "type": "object"
                    },
                    "outgoing": {
                      "type": "object"
                    },
                    "income": {
                      "type": "object"
                    },
                    "claim": {
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "tokenAccount": {
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "summary",
                    "coverage",
                    "incoming",
                    "outgoing",
                    "income"
                  ]
                },
                "example": {
                  "chain": "Solana",
                  "symbol": "USDC",
                  "summary": "53Jh…uC7t received 0.52 USDC in 34 payments from 20 counterparties and sent 0.4 USDC in 3 (latest 300 transactions) Counted income after exclusions: 0.52 USDC.",
                  "incoming": {
                    "count": 34,
                    "total": 0.52
                  },
                  "outgoing": {
                    "count": 3,
                    "total": 0.4
                  },
                  "income": {
                    "counted": 0.52
                  },
                  "coverage": {
                    "transactions": 300,
                    "note": "latest 300 transactions (Helius); fewer on the public RPC"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input, nothing charged"
          },
          "402": {
            "description": "Payment required (x402): 0.10 USDG on Robinhood Chain or 0.01 USDC on Base"
          },
          "502": {
            "description": "Chain lookup failed, payment not taken"
          }
        }
      }
    },
    "/sample": {
      "get": {
        "operationId": "sample",
        "summary": "Free real example of the admin change check (?chain=robinhood for Robinhood Chain)",
        "security": [],
        "responses": {
          "200": {
            "description": "Example result, nothing charged"
          }
        }
      }
    },
    "/sample/flows": {
      "get": {
        "operationId": "sampleFlows",
        "summary": "Free real example of the token flow check",
        "security": [],
        "responses": {
          "200": {
            "description": "Example result, nothing charged"
          }
        }
      }
    },
    "/sample/routes": {
      "get": {
        "operationId": "sampleRoutes",
        "summary": "Free real example of the router check (CLAUS)",
        "security": [],
        "responses": {
          "200": {
            "description": "Example result, nothing charged"
          }
        }
      }
    },
    "/sample/income": {
      "get": {
        "operationId": "sampleIncome",
        "summary": "Free real example of the agent income rebuild",
        "security": [],
        "responses": {
          "200": {
            "description": "Example result, nothing charged"
          }
        }
      }
    },
    "/sample/treasury": {
      "get": {
        "operationId": "sampleTreasury",
        "summary": "Free real example of the treasury snapshot",
        "security": [],
        "responses": {
          "200": {
            "description": "Example result, nothing charged"
          }
        }
      }
    }
  }
}