Crosscheck acceptance test API

The acceptance test API from Crosscheck — 2 operation(s) for acceptance test.

Operations 2

POST /v1/accept Verify a deliverable from another agent against its task before paying (paid… #
POST /v1/accept-lite Check a deliverable from another agent by code alone, no model call (paid, x402… #

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-acceptance-test-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-acceptance-test-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: crosscheck acceptance test 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: acceptance test
paths:
  /v1/accept:
    post:
      operationId: accept
      summary: Verify a deliverable from another agent against its task before paying (paid…
      description: 'Acceptance check for agent-to-agent work: checks what another agent handed back against the task it was given, requirement by requirement, before the buyer pays or releases escrow. Returns accept or reject with the unmet requirements, plus a signed receipt the buyer can show.'
      tags:
      - acceptance test
      x-agentcash-auth:
        mode: paid
      x-payment-info:
        protocols:
        - x402: {}
        price:
          mode: dynamic
          currency: USD
          min: '0.03'
          max: '0.06'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                task:
                  type: string
                  minLength: 1
                  description: The task you gave the other agent or service, including every requirement
                deliverable:
                  type: string
                  minLength: 1
                  description: What came back, exactly as received
                reference:
                  type: string
                  maxLength: 200
                  description: Optional order id or transaction hash to record on the receipt
                payment_tx:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: 'Optional: the transaction you paid the other agent with; verified on-chain and bound to the receipt'
                payment_network:
                  type: string
                  description: CAIP-2 network of payment_tx, default eip155:8453
                ref:
                  type: string
                  pattern: ^[0-9a-f]{64}$
                  description: 'Optional: the hash of a crosscheck receipt that referred you. Its wallet earns check credits from your first 90 days of spend.'
              required:
              - task
              - deliverable
              additionalProperties: false
            example:
              task: List 5 competitors of Acme Robotics, each with its headquarters city and founding year, as a JSON array.
              deliverable: '[{"name": "Northwind Robotics", "hq": "Denver", "founded": 2011}, {"name": "Globex Automation", "hq": "Austin", "founded": 2016}, {"name": "Initech Motion", "hq": "Toronto", "founded": 2019}]'
      responses:
        '200':
          description: accept or reject, 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:
                      accept:
                        type: boolean
                        description: True only when every requirement is met
                      decision:
                        type: string
                        enum:
                        - accept
                        - reject
                        - verify_externally
                        description: 'verify_externally: nothing is wrong except requirements the text alone cannot confirm'
                      summary:
                        type: string
                      requirements:
                        type: array
                        items:
                          type: object
                          properties:
                            requirement:
                              type: string
                            met:
                              type: string
                              enum:
                              - 'yes'
                              - 'no'
                              - partly
                              - cannot_tell
                            evidence:
                              type: string
                            subjective:
                              type: boolean
                            blocking:
                              type: boolean
                              description: This requirement alone is enough to reject
                          required:
                          - requirement
                          - met
                          - evidence
                          - subjective
                          - blocking
                      injection_suspected:
                        type: boolean
                    required:
                    - accept
                    - summary
                    - requirements
                    - injection_suspected
                  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_8d0c3f1e2b7a4c5d9e6f0a1b2c3d4e5f
                status: done
                verdict:
                  accept: false
                  summary: 'Rejected: 1 of 3 requirements not met. First: List 5 competitors (partly).'
                  requirements:
                  - requirement: List 5 competitors of Acme Robotics
                    met: partly
                    evidence: The array has 3 entries, not 5.
                    subjective: false
                    blocking: true
                  - requirement: Each with headquarters city and founding year
                    met: 'yes'
                    evidence: Every entry has hq and founded.
                    subjective: false
                    blocking: false
                  - requirement: As a JSON array
                    met: 'yes'
                    evidence: The deliverable is a valid JSON array.
                    subjective: false
                    blocking: false
                  injection_suspected: false
                receipt:
                  body:
                    kind: accept
                    seq: 2
                  hash: '...'
                  sig: '...'
                result_url: https://crosscheckapi.com/v1/checks/chk_8d0c3f1e2b7a4c5d9e6f0a1b2c3d4e5f
                result_token: '...'
        '202':
          description: Paid and queued; poll result_url
          content:
            application/json:
              schema:
                type: object
                properties:
                  job_id:
                    type: string
                  status:
                    type: string
                    enum:
                    - done
                    - pending
                    - unserved
                    - rejected
                  verdict:
                    type: object
                    properties:
                      accept:
                        type: boolean
                        description: True only when every requirement is met
                      decision:
                        type: string
                        enum:
                        - accept
                        - reject
                        - verify_externally
                        description: 'verify_externally: nothing is wrong except requirements the text alone cannot confirm'
                      summary:
                        type: string
                      requirements:
                        type: array
                        items:
                          type: object
                          properties:
                            requirement:
                              type: string
                            met:
                              type: string
                              enum:
                              - 'yes'
                              - 'no'
                              - partly
                              - cannot_tell
                            evidence:
                              type: string
                            subjective:
                              type: boolean
                            blocking:
                              type: boolean
                              description: This requirement alone is enough to reject
                          required:
                          - requirement
                          - met
                          - evidence
                          - subjective
                          - blocking
                      injection_suspected:
                        type: boolean
                    required:
                    - accept
                    - summary
                    - requirements
                    - injection_suspected
                  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
        '400':
          description: Invalid body or payment header. Nothing was charged.
        '402':
          description: Payment required. The PAYMENT-REQUIRED header carries the x402 v2 requirements for this request; the JSON body gives the price, the free trial, the free quote URL in plain words, and a free code precheck of the deliverable.
        '409':
          description: This payment authorization was already used. Nothing was charged.
        '413':
          description: Draft longer than 48000 characters. Nothing was charged.
        '503':
          description: Daily review capacity is full. Nothing was charged.
      security:
      - x402: []
  /v1/accept-lite:
    post:
      operationId: acceptLite
      summary: Check a deliverable from another agent by code alone, no model call (paid, x402…
      description: 'The lite tier of accept: code recomputes the deliverable''s own sums, totals, percentages, dates, weekdays, time spans, unit conversions, and list counts, checks lengths the task asks for, flags placeholders and prompt-injection phrases, and measures words, list items, and JSON shape. It does not judge the task''s requirements one by one; use /v1/accept for that. Returns pass or the problems found, plus a signed receipt marked tier lite.'
      tags:
      - acceptance test
      x-agentcash-auth:
        mode: paid
      x-payment-info:
        protocols:
        - x402: {}
        price:
          mode: fixed
          currency: USD
          amount: '0.005'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                task:
                  type: string
                  minLength: 1
                  description: The task you gave the other agent or service, including every requirement
                deliverable:
                  type: string
                  minLength: 1
                  description: What came back, exactly as received
                reference:
                  type: string
                  maxLength: 200
                  description: Optional order id or transaction hash to record on the receipt
                payment_tx:
                  type: string
                  pattern: ^0x[0-9a-fA-F]{64}$
                  description: 'Optional: the transaction you paid the other agent with; verified on-chain and bound to the receipt'
                payment_network:
                  type: string
                  description: CAIP-2 network of payment_tx, default eip155:8453
                ref:
                  type: string
                  pattern: ^[0-9a-f]{64}$
                  description: 'Optional: the hash of a crosscheck receipt that referred you. Its wallet earns check credits from your first 90 days of spend.'
              required:
              - task
              - deliverable
              additionalProperties: false
            example:
              task: Summarize Q3 spend by category in under 50 words.
              deliverable: Q3 spend came to $8,450 in total ($4,200 on ads, $2,850 on tools, and $1,900 on contractors).
      responses:
        '200':
          description: Code result 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:
                      tier:
                        type: string
                        enum:
                        - lite
                      result:
                        type: string
                        enum:
                        - problems_found
                        - no_problems_found
                      pass:
                        type: boolean
                        description: True only when code found no problem; never means the task was met
                      summary:
                        type: string
                      problems:
                        type: integer
                      code_checks:
                        type: object
                        description: What code found (wrong_sums, wrong_percentages, wrong_weekdays, wrong_date_spans, wrong_time_spans, wrong_time_zones, wrong_units, wrong_list_counts, wrong_superlatives, wrong_lengths) and measured (words, list_items, json, json_items)
                      placeholder:
                        type: boolean
                      injection_suspected:
                        type: boolean
                      note:
                        type: string
                    required:
                    - tier
                    - result
                    - pass
                    - summary
                    - problems
                    - code_checks
                    - placeholder
                    - injection_suspected
                    - note
                  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_6c2e9a0f1d3b4e5a8c7d6e5f4a3b2c1d
                status: done
                verdict:
                  tier: lite
                  result: problems_found
                  pass: false
                  summary: 'Code found 1 problem in the deliverable: 1 wrong figure or date (see code_checks).'
                  problems: 1
                  code_checks:
                    found: 1
                    wrong_sums:
                    - sentence: Q3 spend came to $8,450 in total ($4,200 on ads, $2,850 on tools, and $1,900 on contractors).
                      says: $8,450
                      comes_to: 8,950
                    wrong_percentages: []
                    wrong_weekdays: []
                    wrong_date_spans: []
                    wrong_time_spans: []
                    wrong_time_zones: []
                    wrong_units: []
                    wrong_list_counts: []
                    wrong_superlatives: []
                    wrong_lengths: []
                    measured:
                      words: 17
                  placeholder: false
                  injection_suspected: false
                  note: 'Lite tier: code only, no model call. Code checked the deliverable''s own sums, percentages, dates, time spans, time zones, units, list counts, and lengths the task asks for; whether it is a placeholder; and known prompt-injection phrases; and measured its words, list items, and JSON shape. It did not read the task''s requirements one by one; POST /v1/accept ($0.03) for that.'
                receipt:
                  body:
                    kind: accept_lite
                    seq: 4
                  hash: '...'
                  sig: '...'
                share_url: https://crosscheckapi.com/r/...
                result_url: https://crosscheckapi.com/v1/checks/chk_6c2e9a0f1d3b4e5a8c7d6e5f4a3b2c1d
                result_token: '...'
        '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 and a free code precheck of the deliverable.
        '409':
          description: This payment authorization was already used. Nothing was charged.
        '413':
          description: Draft longer than 48000 characters. Nothing was charged.
        '503':
          description: Daily review capacity is full. Nothing was charged.
      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