crosscheck

Checks for AI agents over x402: review drafts, accept-check handoffs, scan skills before install.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
95%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,544Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (1.21% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "crosscheck": {
      "command": "npx",
      "args": [
        "crosscheckapi"
      ]
    }
  }
}

Runnable packages

npmcrosscheckapi0.5.5stdio

Remote endpoints

https://crosscheckapi.com/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check(draft, sources, open_review, moltbook_identity, ref)

Independent review of a draft (email, report, summary, PR description) before its human sees it. Returns pass or specific issues with fixes; arithmetic is recomputed in code. With sources, each claim is checked against them and quotes are verified. $0.02. Paid per call in USDC over x402 (Base, or free test USDC on Base Sepolia). An x402-aware MCP client pays automatically: the first call returns the price as an x402 PaymentRequired error, and the retry carries the payment in _meta["x402/payment"]. Without one, use the npm client `npx -y crosscheckapi`, which pays from a wallet you set.

Input Schema

{
  "type": "object",
  "properties": {
    "draft": {
      "type": "string",
      "description": "The draft text to review",
      "maxLength": 48000
    },
    "sources": {
      "type": "array",
      "maxItems": 10,
      "description": "Optional texts the draft relies on; turns on grounding",
      "items": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Source text"
          },
          "title": {
            "type": "string",
            "description": "Optional title"
          },
          "url": {
            "type": "string",
            "description": "Optional URL"
          }
        },
        "required": [
          "text"
        ]
      }
    },
    "open_review": {
      "type": "boolean",
      "description": "Optional: let a qualified outside reviewer take the job (not routed yet; crosscheck's reviewer does it and the receipt says so)"
    },
    "moltbook_identity": {
      "type": "string",
      "description": "Optional: a Moltbook identity token for the free tier, when it is on (a verified Moltbook agent gets free checks with no payment). Not stored. Without a free check left, the price comes back as usual"
    },
    "ref": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend."
    }
  },
  "required": [
    "draft"
  ]
}
⚪accept(task, deliverable, reference, payment_tx, payment_network, ...)

Checks work another agent handed back against the task it was given, before you pay, release escrow, or pass it on. Returns accept, reject, or verify_externally with every requirement judged; counts, required JSON fields, and sums are checked in code. Optional payment_tx is verified on chain. $0.03 base. Paid per call in USDC over x402 (Base, or free test USDC on Base Sepolia). An x402-aware MCP client pays automatically: the first call returns the price as an x402 PaymentRequired error, and the retry carries the payment in _meta["x402/payment"]. Without one, use the npm client `npx -y crosscheckapi`, which pays from a wallet you set.

Input Schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "description": "The task as given to the other agent"
    },
    "deliverable": {
      "type": "string",
      "description": "What came back"
    },
    "reference": {
      "type": "string",
      "description": "Optional reference material the task points to"
    },
    "payment_tx": {
      "type": "string",
      "description": "Optional transaction hash of the payment for this work"
    },
    "payment_network": {
      "type": "string",
      "description": "Network of payment_tx, for example eip155:8453"
    },
    "ref": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend."
    }
  },
  "required": [
    "task",
    "deliverable"
  ]
}
⚪skillcheck(files, fresh, ref)

Security review of a skill or MCP server's files before you install or connect it: read, never run. Free when these exact files were scanned before (looked up by bundle hash); otherwise paid, $0.03 base. Never says safe. Paid per call in USDC over x402 (Base, or free test USDC on Base Sepolia). An x402-aware MCP client pays automatically: the first call returns the price as an x402 PaymentRequired error, and the retry carries the payment in _meta["x402/payment"]. Without one, use the npm client `npx -y crosscheckapi`, which pays from a wallet you set.

Input Schema

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "minItems": 1,
      "maxItems": 200,
      "description": "Every text file of the skill or server, docs included; code rules read all of them",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Path inside the skill"
          },
          "content": {
            "type": "string",
            "description": "File content"
          }
        },
        "required": [
          "path",
          "content"
        ]
      }
    },
    "fresh": {
      "type": "boolean",
      "description": "Scan again even when a past scan of these exact files exists"
    },
    "ref": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend."
    }
  },
  "required": [
    "files"
  ]
}
⚪skillcheck_lookup(bundle_sha256)

Free. The latest skillcheck of an exact bundle, by its bundle_sha256 (SHA-256 of the canonical JSON of the files sorted by path, each as {path, sha256}).

Input Schema

{
  "type": "object",
  "properties": {
    "bundle_sha256": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    }
  },
  "required": [
    "bundle_sha256"
  ]
}
🟢verify_receipt(receipt_hash, receipt, draft, sources, task, ...)

Free. Before trusting work that arrives with a crosscheck receipt, check in code that crosscheck issued it, its signature is valid, what the outcome was, and that it covers exactly the text you were handed. Pass receipt_hash (or the receipt object) plus that text: draft and sources for check, task and deliverable for accept, files for skillcheck, and the verdict if one came with it.

Input Schema

{
  "type": "object",
  "properties": {
    "receipt_hash": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "The receipt's hash (the last part of its /r/ proof link)"
    },
    "receipt": {
      "type": "object",
      "description": "Or the whole receipt object {body, hash, sig}"
    },
    "draft": {
      "type": "string",
      "description": "check: the draft the receipt should cover"
    },
    "sources": {
      "type": "array",
      "description": "check: the sources, if the check had any, in the same order (strings or {text})"
    },
    "task": {
      "type": "string",
      "description": "accept: the task the receipt should cover"
    },
    "deliverable": {
      "type": "string",
      "description": "accept: the deliverable the receipt should cover"
    },
    "files": {
      "type": "array",
      "description": "skillcheck: the skill's files",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Path inside the skill"
          },
          "content": {
            "type": "string",
            "description": "File content"
          }
        },
        "required": [
          "path",
          "content"
        ]
      }
    },
    "verdict": {
      "type": "object",
      "description": "The verdict that came with the receipt, to confirm nobody edited it"
    }
  }
}
⚪result(job_id, result_token)

Free. Status, verdict, and signed receipt of an earlier paid call that was still running, using the job_id and result_token it returned.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "job_id from the paid call"
    },
    "result_token": {
      "type": "string",
      "description": "result_token from the paid call"
    }
  },
  "required": [
    "job_id",
    "result_token"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools