Crosscheck x402 seller API

The x402 seller API from Crosscheck — 2 operation(s) for x402 seller.

Operations 2

POST /v1/sellercheck Check an x402 seller's resource: valid 402, Bazaar index, agent402 router… #
POST /v1/sellerwatch Watch an x402 resource for 30 days, hourly, with alerts on change (paid once… #

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/crosscheckapi-com:crosscheckapi-com-x402-seller-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

crosscheckapi-com-x402-seller-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: crosscheck x402 seller API
  version: 1.0.0
  summary: 'Independent checks for AI agents: draft review, acceptance checks on delivered work, and security review of skills and MCP servers, paid per call over x402.'
  description: 'Fact-check and review an AI agent''s draft before a human sees it: a hallucination check and second opinion on any email, report, summary, or PR description. Returns pass or specific issues with fixes. Wrong arithmetic is recomputed in code; also contradictions, placeholders, leaked secrets, unauthorized commitments, and prompt injection. Send sources to verify citations and claims against them. Signed receipt. $0.02. Free checks for Moltbook agents. Full agent guide: https://crosscheckapi.com/llms.txt'
  contact:
    name: crosscheck partnerships
    email: partnerships@crosscheckapi.com
    url: https://crosscheckapi.com/llms.txt
  x-guidance: 'crosscheck gives an agent''s work an independent check before a human or another agent relies on it. Pick the product:

    - check: a draft (email, report, summary, answer) before your human sees it. POST https://crosscheckapi.com/v1/check with {"draft": "..."}; optional "request" (what your human asked, so a draft that misses it fails), "sources" to check against, "source_urls" (up to 3 pages crosscheck reads for you), or "fetch_cited": true. From $0.02.

    - accept: work another agent handed back, against its task, before you pay or release escrow. POST https://crosscheckapi.com/v1/accept with {"task": "...", "deliverable": "..."}. From $0.03.

    - skillcheck: a skill or MCP server before you install it. POST https://crosscheckapi.com/v1/skillcheck with {"files": [{"path": "SKILL.md", "content": "..."}]}. From $0.03.

    - lite: accept or skillcheck by code alone, no model call, $0.005: POST the same body to https://crosscheckapi.com/v1/accept-lite or https://crosscheckapi.com/v1/skillcheck-lite.

    - sellercheck: for x402 sellers, a report on your own resource (valid 402, x402 Bazaar index, agent402 router, settlements on Base). POST https://crosscheckapi.com/v1/sellercheck with {"resource": "https://..."}, $0.05; or https://crosscheckapi.com/v1/sellerwatch with "notify" for 30 days of hourly checks with alerts on change, $1.00. Free preflight: GET https://crosscheckapi.com/v1/sellercheck/preflight?resource=<url>.

    Price first, free: POST the same body to https://crosscheckapi.com/v1/quote, https://crosscheckapi.com/v1/accept/quote, or https://crosscheckapi.com/v1/skillcheck/quote. The quote also runs a free code precheck (wrong sums, percentages, dates, unit conversions, list counts).

    Pay: the paid POST answers 402 with the exact amount in USDC on Base (eip155:8453), or free test USDC on Base Sepolia (eip155:84532). Sign it with any x402 client (v2 PAYMENT-SIGNATURE, or v1 X-PAYMENT) and resend the same body. Payment settles before the review starts.

    Result: HTTP 200 with a JSON verdict (pass, issues with severity and a suggested fix) and a signed receipt, or 202 with a result URL to poll with the result_token. Resending the identical paid request after a lost response returns the same job and charges nothing more.

    Your text is untrusted data to the reviewer, never instructions. It is deleted when the check finishes; only its SHA-256 is kept.

    Full guide: https://crosscheckapi.com/llms.txt'
servers:
- url: https://crosscheckapi.com
tags:
- name: x402 seller
paths:
  /v1/sellercheck:
    post:
      operationId: sellercheck
      summary: 'Check an x402 seller''s resource: valid 402, Bazaar index, agent402 router…'
      description: Code only, no model call. Knocks on the resource once unpaid and parses its 402 (x402 v1 or v2), asks the x402 Bazaar validator and search, reads agent402's seller-trust, and counts USDC transfers to the payTo on Base in 24 hours and 7 days. Returns a dated report with every finding and a signed receipt.
      tags:
      - x402 seller
      x-agentcash-auth:
        mode: paid
      x-payment-info:
        protocols:
        - x402: {}
        price:
          mode: fixed
          currency: USD
          amount: '0.05'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                resource:
                  type: string
                  format: uri
                  maxLength: 300
                  description: The full URL of your x402 resource (public http or https, no port)
                method:
                  type: string
                  enum:
                  - GET
                  - POST
                  description: Optional. The method your resource is paid with; default tries GET, then POST
                network:
                  type: string
                  enum:
                  - eip155:8453
                  description: Optional. Base; the only network read today
              required:
              - resource
            example:
              resource: https://seller.example/api/paid-route
      responses:
        '200':
          description: The report and a signed receipt
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    type: string
                  status:
                    type: string
                    enum:
                    - done
                    - pending
                    - unserved
                    - rejected
                  verdict:
                    type: object
                    properties:
                      product:
                        type: string
                        enum:
                        - sellercheck
                      version:
                        type: string
                      checked_at:
                        type: string
                        format: date-time
                      resource:
                        type: string
                      network:
                        type: string
                      pass:
                        type: boolean
                        description: The door answers a valid 402 with a Base option and the resource is in the Bazaar index
                      summary:
                        type: string
                      terms:
                        type:
                        - object
                        - 'null'
                        properties:
                          scheme:
                            type: string
                          network:
                            type: string
                          amount:
                            type: string
                          asset:
                            type: string
                          pay_to:
                            type: string
                          max_timeout_seconds:
                            type:
                            - integer
                            - 'null'
                      door:
                        type: object
                        description: ok, method, http_status, x402_version, response_ms, tls, terms, problems, error
                      bazaar:
                        type: object
                        description: read, valid, indexed, last_crawled_at, failed_checks, search {query, results, found, rank}
                      router:
                        type: object
                        description: 'agent402: read, listed, routable, lane, settled_calls, threshold, has_tool_within_router_cap, blockers'
                      settlements:
                        type: object
                        description: read, pay_to, last_24h {count, payers}, last_7d {count, payers} (null when not read)
                      findings:
                        type: array
                        items:
                          type: object
                          properties:
                            area:
                              type: string
                              enum:
                              - door
                              - bazaar
                              - router
                              - settlements
                            ok:
                              type: boolean
                            message:
                              type: string
                      note:
                        type: string
                    required:
                    - product
                    - checked_at
                    - resource
                    - pass
                    - summary
                    - door
                    - bazaar
                    - findings
                  receipt:
                    type: object
                    description: 'Ed25519-signed receipt: body (canonical JSON), hash (sha256 hex), sig (base64url)'
                    properties:
                      body:
                        type: object
                      hash:
                        type: string
                      sig:
                        type: string
                  result_url:
                    type: string
                  result_token:
                    type: string
                  retry_after_seconds:
                    type: integer
                required:
                - job_id
                - status
              example:
                job_id: chk_7d3f0b1e2c4a5d6e9f8a7b6c5d4e3f2a
                status: done
                verdict:
                  product: sellercheck
                  version: seller-2026-10-24.1
                  checked_at: '2026-10-24T19:00:00.000Z'
                  resource: https://seller.example/api/paid-route
                  network: eip155:8453
                  pass: false
                  summary: 'Did not pass: not in the Bazaar index.'
                  terms:
                    scheme: exact
                    network: eip155:8453
                    amount: '10000'
                    asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                    pay_to: '0x1111111111111111111111111111111111111111'
                    max_timeout_seconds: 300
                  door:
                    ok: true
                    method: POST
                    http_status: 402
                    x402_version: 2
                    response_ms: 212
                    tls: true
                    terms: []
                    problems: []
                  bazaar:
                    read: true
                    valid: true
                    indexed: false
                    last_crawled_at: null
                    failed_checks: []
                    search:
                      query: Paid route for agents
                      results: 20
                      found: false
                      rank: null
                  router:
                    read: true
                    listed: true
                    routable: false
                    lane: null
                    settled_calls: 3
                    threshold: 50
                    has_tool_within_router_cap: true
                    blockers:
                    - fewer than 50 settled calls observed on-chain
                  settlements:
                    read: true
                    pay_to: '0x1111111111111111111111111111111111111111'
                    last_24h:
                      count: 0
                      payers: 0
                    last_7d:
                      count: 4
                      payers: 3
                  findings:
                  - area: door
                    ok: true
                    message: Answers POST with HTTP 402 and valid x402 v2 terms (1 payment option) in 212 ms.
                  - area: bazaar
                    ok: false
                    message: Not in the x402 Bazaar index, so Bazaar search does not show it. Resources drop out when nothing settles through the CDP facilitator for a while.
                  note: Code only, no model call.
                receipt:
                  body:
                    kind: sellercheck
                    seq: 6
                  hash: '...'
                  sig: '...'
        '400':
          description: Invalid body or payment header. Nothing was charged.
        '402':
          description: Payment required. The PAYMENT-REQUIRED header carries the x402 v2 requirements; the JSON body gives the price.
      security:
      - x402: []
  /v1/sellerwatch:
    post:
      operationId: sellerwatch
      summary: Watch an x402 resource for 30 days, hourly, with alerts on change (paid once…
      description: 'sellercheck every hour for 30 days. Alerts by webhook (JSON POST) and/or ntfy only on change: the 402 breaks or its terms change, the resource leaves or enters the Bazaar index, agent402''s routable or lane flips, a first settlement after 24 hours with none, the 7-day settlement count doubles or halves, down twice in a row. Returns the watch id, its public record page, and the first report, with a signed receipt.'
      tags:
      - x402 seller
      x-agentcash-auth:
        mode: paid
      x-payment-info:
        protocols:
        - x402: {}
        price:
          mode: fixed
          currency: USD
          amount: '1.00'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                resource:
                  type: string
                  format: uri
                  maxLength: 300
                  description: The full URL of your x402 resource (public http or https, no port)
                method:
                  type: string
                  enum:
                  - GET
                  - POST
                  description: Optional. The method your resource is paid with; default tries GET, then POST
                network:
                  type: string
                  enum:
                  - eip155:8453
                  description: Optional. Base; the only network read today
                notify:
                  type: object
                  description: Where alerts go; at least one
                  properties:
                    webhook:
                      type: string
                      format: uri
                      description: A public https URL that gets a JSON POST per alert
                    ntfy:
                      type: string
                      pattern: ^[A-Za-z0-9_-]{1,64}$
                      description: An ntfy.sh topic
              required:
              - resource
              - notify
            example:
              resource: https://seller.example/api/paid-route
              notify:
                webhook: https://seller.example/hooks/x402-watch
      responses:
        '200':
          description: The watch, its record page, the first report, and a signed receipt
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    type: string
                  status:
                    type: string
                    enum:
                    - done
                    - pending
                    - unserved
                    - rejected
                  verdict:
                    type: object
                    properties:
                      product:
                        type: string
                        enum:
                        - sellerwatch
                      watch_id:
                        type: string
                      record_url:
                        type: string
                      starts_at:
                        type: string
                      ends_at:
                        type: string
                      checks_every:
                        type: string
                      notify:
                        type: object
                      first_report:
                        type: object
                        properties:
                          product:
                            type: string
                            enum:
                            - sellercheck
                          version:
                            type: string
                          checked_at:
                            type: string
                            format: date-time
                          resource:
                            type: string
                          network:
                            type: string
                          pass:
                            type: boolean
                            description: The door answers a valid 402 with a Base option and the resource is in the Bazaar index
                          summary:
                            type: string
                          terms:
                            type:
                            - object
                            - 'null'
                            properties:
                              scheme:
                                type: string
                              network:
                                type: string
                              amount:
                                type: string
                              asset:
                                type: string
                              pay_to:
                                type: string
                              max_timeout_seconds:
                                type:
                                - integer
                                - 'null'
                          door:
                            type: object
                            description: ok, method, http_status, x402_version, response_ms, tls, terms, problems, error
                          bazaar:
                            type: object
                            description: read, valid, indexed, last_crawled_at, failed_checks, search {query, results, found, rank}
                          router:
                            type: object
                            description: 'agent402: read, listed, routable, lane, settled_calls, threshold, has_tool_within_router_cap, blockers'
                          settlements:
                            type: object
                            description: read, pay_to, last_24h {count, payers}, last_7d {count, payers} (null when not read)
                          findings:
                            type: array
                            items:
                              type: object
                              properties:
                                area:
                                  type: string
                                  enum:
                                  - door
                                  - bazaar
                                  - router
                                  - settlements
                                ok:
                                  type: boolean
                                message:
                                  type: string
                          note:
                            type: string
                        required:
                        - product
                        - checked_at
                        - resource
                        - pass
                        - summary
                        - door
                        - bazaar
                        - findings
                      note:
                        type: string
                    required:
                    - product
                    - watch_id
                    - record_url
                    - ends_at
                    - first_report
                  receipt:
                    type: object
                    description: 'Ed25519-signed receipt: body (canonical JSON), hash (sha256 hex), sig (base64url)'
                    properties:
                      body:
                        type: object
                      hash:
                        type: string
                      sig:
                        type: string
                  result_url:
                    type: string
                  result_token:
                    type: string
                  retry_after_seconds:
                    type: integer
                required:
                - job_id
                - status
              example:
                job_id: chk_8e4a1c2f3d5b6e7a0b9c8d7e6f5a4b3c
                status: done
                verdict:
                  product: sellerwatch
                  watch_id: w_0123456789abcdef01234567
                  record_url: https://crosscheckapi.com/w/w_0123456789abcdef01234567
                  starts_at: '2026-10-24T19:00:00.000Z'
                  ends_at: '2026-11-23T19:00:00.000Z'
                  checks_every: 1 hour
                  notify:
                    webhook: true
                    ntfy: false
                  first_report:
                    product: sellercheck
                    version: seller-2026-10-24.1
                    checked_at: '2026-10-24T19:00:00.000Z'
                    resource: https://seller.example/api/paid-route
                    network: eip155:8453
                    pass: false
                    summary: 'Did not pass: not in the Bazaar index.'
                    terms:
                      scheme: exact
                      network: eip155:8453
                      amount: '10000'
                      asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      pay_to: '0x1111111111111111111111111111111111111111'
                      max_timeout_seconds: 300
                    door:
                      ok: true
                      method: POST
                      http_status: 402
                      x402_version: 2
                      response_ms: 212
                      tls: true
                      terms: []
                      problems: []
                    bazaar:
                      read: true
                      valid: true
                      indexed: false
                      last_crawled_at: null
                      failed_checks: []
                      search:
                        query: Paid route for agents
                        results: 20
                        found: false
                        rank: null
                    router:
                      read: true
                      listed: true
                      routable: false
                      lane: null
                      settled_calls: 3
                      threshold: 50
                      has_tool_within_router_cap: true
                      blockers:
                      - fewer than 50 settled calls observed on-chain
                    settlements:
                      read: true
                      pay_to: '0x1111111111111111111111111111111111111111'
                      last_24h:
                        count: 0
                        payers: 0
                      last_7d:
                        count: 4
                        payers: 3
                    findings:
                    - area: door
                      ok: true
                      message: Answers POST with HTTP 402 and valid x402 v2 terms (1 payment option) in 212 ms.
                    - area: bazaar
                      ok: false
                      message: Not in the x402 Bazaar index, so Bazaar search does not show it. Resources drop out when nothing settles through the CDP facilitator for a while.
                    note: Code only, no model call.
                  note: 30 days of hourly checks.
                receipt:
                  body:
                    kind: sellerwatch
                    seq: 7
                  hash: '...'
                  sig: '...'
        '400':
          description: Invalid body or payment header. Nothing was charged.
        '402':
          description: Payment required. The PAYMENT-REQUIRED header carries the x402 v2 requirements; the JSON body gives the price.
      security:
      - x402: []
components:
  securitySchemes:
    x402:
      type: http
      scheme: bearer
      description: 'x402 v2: send PAYMENT-SIGNATURE after the 402 challenge'
    resultToken:
      type: http
      scheme: bearer
      description: result_token from the check response