logicnodes-io Payments and verification API

The Payments and verification API from logicnodes-io — 4 operation(s) for payments and verification.

Operations 4

POST /paid/v1/tools/payment_verify Verify a token payment from a receipt ($0.002 per call) #
POST /paid/v1/tools/random_from_block Verifiable randomness from a finalized block ($0.002 per call) #
POST /paid/v1/tools/evm_spend_report Wallet token spend report (CSV) ($0.005 per call) #
POST /paid/v1/tools/x402_settlement_verify Did this agent really pay me? (x402 settlement check) ($0.002 per call) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/logicnodes-io:logicnodes-io-payments-and-verification-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

logicnodes-io-payments-and-verification-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LogicNodes Payments and verification API
  version: 1.0.0
  description: 'Blockchain and finance tools AI agents can trust: exact answers or typed errors, never a plausible guess. 40+ tools for EVM chains and Aptos (balances, token amounts, transaction status and receipts, contract and calldata decoding, payment verification, gas on 14 chains), exact finance math, and ERC-8004 agent reputation. Every answer carries a receipt timestamped into Bitcoin. Free tier; pay per call in USDC via x402 on 13 networks, no API key.'
  x-guidance: 'How to use LogicNodes: 1) GET /v1/tools lists every tool with its JSON Schema. 2) POST /v1/tools/<name> with a JSON body, e.g. POST /v1/tools/evm_balance {"chain":"eip155:8453","address":"0x..."} or POST /v1/tools/token_amount_convert {"chain":"eip155:8453","asset":"<token address>","amount":"1.5","direction":"toBase"}. 3) Read "ok": true with "value", or "ok": false with a typed error: INVALID_INPUT (fix the field named), AMBIGUOUS_INPUT (pick one of the options listed and call again), NOT_FOUND, UPSTREAM_ERROR (retry). Chains are CAIP-2 ids (eip155:8453 Base, eip155:1 Ethereum, aptos:1); names like "base" are refused. Amounts are decimal strings, never floats. Pricing: free tools are unlimited; priced tools are free for 25 calls per day per IP, then the same URL returns 402 with x402 terms (USDC on Base, Solana, Polygon, Arbitrum and more: /v1/payments/methods); pay and retry. A failed call is never charged. MCP: /mcp/v2. Full guide: /agent-guide.'
  contact:
    email: denneyconner5@gmail.com
servers:
- url: https://logicnodes.io
tags:
- name: Payments and verification
paths:
  /paid/v1/tools/payment_verify:
    post:
      summary: Verify a token payment from a receipt ($0.002 per call)
      description: Given a transaction hash, lists the ERC-20 transfers in its receipt and, if you give expectations (payee, asset, amount, payer), says whether a successful transaction contains a matching transfer. Use it to check an x402 or other USDC payment. A match proves tokens moved; it does not prove what the payment was for.
      operationId: paid_payment_verify
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                chain:
                  type: string
                  description: EVM CAIP-2 chain id such as eip155:8453, or a bare chain id number as a string. Chain names are refused.
                hash:
                  type: string
                payTo:
                  type: string
                  description: 0x + 40 hex digits (EIP-55 checksum enforced when mixed-case)
                asset:
                  type: string
                  description: 0x + 40 hex digits (EIP-55 checksum enforced when mixed-case)
                amount:
                  description: base units
                  type: string
                  pattern: ^(0|[1-9][0-9]{0,77})$
                payer:
                  type: string
                  description: 0x + 40 hex digits (EIP-55 checksum enforced when mixed-case)
              required:
              - chain
              - hash
              additionalProperties: false
            example:
              chain: eip155:8453
              hash: '0x600accdbbdaca7bcabef7f9e6a0777d0d22b5fd8188585db0c0d77ee2e7d34d9'
              payTo: '0x78845031f7bCA8fB9F3Ac0cc86678Ef8cE33Ea0e'
              asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
              amount: '1000'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '400':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '402':
          description: 'Payment Required: terms are in the base64 PAYMENT-REQUIRED response header'
        '404':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '422':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '501':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '502':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '503':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
      tags:
      - Payments and verification
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.002'
        protocols:
        - x402: {}
        x-logicnodes:
          asset: USDC
          scheme: exact
          methods: https://logicnodes.io/v1/payments/methods
          terms: base64 PAYMENT-REQUIRED response header
  /paid/v1/tools/random_from_block:
    post:
      summary: Verifiable randomness from a finalized block ($0.002 per call)
      description: Deterministic, publicly recomputable random integers derived from a FINALIZED block hash and a salt. Refuses a block that is not yet final. Not secret and not for cases where the salt can be chosen after seeing the block.
      operationId: paid_random_from_block
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                chain:
                  type: string
                  description: EVM CAIP-2 chain id such as eip155:8453, or a bare chain id number as a string. Chain names are refused.
                block:
                  type: string
                salt:
                  type: string
                  minLength: 1
                  maxLength: 200
                count:
                  type: integer
                  minimum: 1
                  maximum: 100
                max:
                  type: integer
                  minimum: 2
                  maximum: 1000000
              required:
              - chain
              - block
              - salt
              - count
              - max
              additionalProperties: false
            example:
              chain: eip155:8453
              block: '52952713'
              salt: demo
              count: 3
              max: 6
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '400':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '402':
          description: 'Payment Required: terms are in the base64 PAYMENT-REQUIRED response header'
        '404':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '422':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '501':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '502':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '503':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
      tags:
      - Payments and verification
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.002'
        protocols:
        - x402: {}
        x-logicnodes:
          asset: USDC
          scheme: exact
          methods: https://logicnodes.io/v1/payments/methods
          terms: base64 PAYMENT-REQUIRED response header
  /paid/v1/tools/evm_spend_report:
    post:
      summary: Wallet token spend report (CSV) ($0.005 per call)
      description: Every transfer of one ERC-20 token out of (or into) a wallet across a block range of up to 20,000 blocks, with exact amounts, per-counterparty totals, per-UTC-day totals, and an accounting CSV. Reads public chain data only. The range is queried in full 2000-block pieces and the report refuses (rather than truncates) when more than 2000 transfers match.
      operationId: paid_evm_spend_report
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                chain:
                  type: string
                wallet:
                  type: string
                token:
                  type: string
                fromBlock:
                  type: string
                toBlock:
                  type: string
                direction:
                  type: string
                  enum:
                  - out
                  - in
              required:
              - chain
              - wallet
              - token
              - fromBlock
              - toBlock
              additionalProperties: false
            example:
              chain: eip155:8453
              wallet: '0x78845031f7bCA8fB9F3Ac0cc86678Ef8cE33Ea0e'
              token: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
              fromBlock: '52952700'
              toBlock: '52952720'
              direction: in
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '400':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '402':
          description: 'Payment Required: terms are in the base64 PAYMENT-REQUIRED response header'
        '404':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '422':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '501':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '502':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '503':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
      tags:
      - Payments and verification
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.005'
        protocols:
        - x402: {}
        x-logicnodes:
          asset: USDC
          scheme: exact
          methods: https://logicnodes.io/v1/payments/methods
          terms: base64 PAYMENT-REQUIRED response header
  /paid/v1/tools/x402_settlement_verify:
    post:
      summary: Did this agent really pay me? (x402 settlement check) ($0.002 per call)
      description: 'For sellers taking x402 or other stablecoin payments: give the network, the settlement transaction (EVM hash or Solana signature) and your payout address, and optionally the asset, minimum amount (base units) and payer. Reads the chain itself and answers verdict "paid", "not_paid" (failed, or no matching transfer to you) or "unknown" (not found yet), with every token transfer it saw. Networks: eip155:84532, eip155:8453, eip155:1, eip155:137, eip155:42161, eip155:10, eip155:43114, eip155:1329, eip155:130, eip155:146, eip155:480, eip155:5042, eip155:999, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1. A match proves tokens reached you; it does not prove what they were for.'
      operationId: paid_x402_settlement_verify
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                network:
                  type: string
                  description: 'CAIP-2 id, one of: eip155:84532, eip155:8453, eip155:1, eip155:137, eip155:42161, eip155:10, eip155:43114, eip155:1329, eip155:130, eip155:146, eip155:480, eip155:5042, eip155:999, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1'
                tx:
                  type: string
                  description: EVM transaction hash (0x + 64 hex) or Solana transaction signature (base58)
                payTo:
                  type: string
                  description: your payout address (EVM 0x... or Solana base58)
                asset:
                  description: token contract (EVM) or mint (Solana) you expect; omit to accept any token
                  type: string
                amount:
                  description: 'minimum amount in base units (USDC: 1 USD = 1000000)'
                  type: string
                  pattern: ^(0|[1-9][0-9]{0,77})$
                payer:
                  description: the address you expect the payment from
                  type: string
              required:
              - network
              - tx
              - payTo
              additionalProperties: false
            example:
              network: eip155:8453
              tx: '0x600accdbbdaca7bcabef7f9e6a0777d0d22b5fd8188585db0c0d77ee2e7d34d9'
              payTo: '0x78845031f7bCA8fB9F3Ac0cc86678Ef8cE33Ea0e'
              asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
              amount: '1000'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '400':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '402':
          description: 'Payment Required: terms are in the base64 PAYMENT-REQUIRED response header'
        '404':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '422':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '501':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '502':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
        '503':
          description: Error. Same ToolResponse shape with ok:false and a typed error.code
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolResponse'
      tags:
      - Payments and verification
      x-payment-info:
        price:
          mode: fixed
          currency: USD
          amount: '0.002'
        protocols:
        - x402: {}
        x-logicnodes:
          asset: USDC
          scheme: exact
          methods: https://logicnodes.io/v1/payments/methods
          terms: base64 PAYMENT-REQUIRED response header
components:
  schemas:
    ToolResponse:
      type: object
      properties:
        tool:
          type: string
        ok:
          type: boolean
        value:
          description: present when ok
        error:
          type: object
          properties:
            code:
              type: string
              enum:
              - INVALID_INPUT
              - AMBIGUOUS_INPUT
              - UNSUPPORTED_CHAIN
              - UNSUPPORTED_CAPABILITY
              - NOT_FOUND
              - STALE_DATA
              - NO_DATA
              - UPSTREAM_ERROR
            message:
              type: string
            field:
              type: string
            options:
              type: array
              items: {}
          required:
          - code
          - message
        provenance:
          type: object
          description: source, CAIP-2 chain, ledger position, fetchedAt
        receipt:
          type: object
          properties:
            version:
              type: integer
            algorithm:
              type: string
            tool:
              type: string
            digest:
              type: string
      required:
      - tool
      - ok
      - receipt