Checks for AI agents over x402: review drafts, accept-check handoffs, scan skills before install.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The task as given to the other agent
What came back
Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend.
Optional reference material the task points to
Optional transaction hash of the payment for this work
Network of payment_tx, for example eip155:8453
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| ref | string | Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend. |
| task* | string | The task as given to the other agent |
| reference | string | Optional reference material the task points to |
| payment_tx | string | Optional transaction hash of the payment for this work |
| deliverable* | string | What came back |
| payment_network | string | Network of payment_tx, for example eip155:8453 |
{
"type": "object",
"required": [
"task",
"deliverable"
],
"properties": {
"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."
},
"task": {
"type": "string",
"description": "The task as given to the other agent"
},
"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"
},
"deliverable": {
"type": "string",
"description": "What came back"
},
"payment_network": {
"type": "string",
"description": "Network of payment_tx, for example eip155:8453"
}
}
}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 request (what the human asked), it also checks the draft answers that. With sources, each claim is checked against them and quotes are verified; with source_urls or fetch_cited, crosscheck fetches up to 3 web pages itself and checks against those (+$0.01 a page, and a dead link the draft gives fails it). $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.
| Argument | Type | Description |
|---|---|---|
| ref | string | Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend. |
| draft* | string | The draft text to review |
| request | string | Optional: what the human asked for, word for word if you have it. The reviewer then also checks that the draft answers it (a missed question, a changed scope, a wrong period) |
| sources | array | Optional texts the draft relies on; turns on grounding |
| fetch_cited | boolean | Optional: also fetch the links the draft itself cites (up to 3 pages in all, +$0.01 each); a link that is gone fails the draft |
| open_review |
Free. Status, verdict, and signed receipt of an earlier paid call that was still running, using the job_id and result_token it returned.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | job_id from the paid call |
| result_token* | string | result_token from the paid call |
{
"type": "object",
"required": [
"job_id",
"result_token"
],
"properties": {
"job_id": {
"type": "string",
"description": "job_id from the paid call"
},
"result_token": {
"type": "string",
"description": "result_token from the paid call"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| ref | string | Optional: the hash of a crosscheck receipt that brought you here. Its wallet earns check credits from your first 90 days of spend. |
| files* | array | Every text file of the skill or server, docs included; code rules read all of them |
| fresh | boolean | Scan again even when a past scan of these exact files exists |
{
"type": "object",
"required": [
"files"
],
"properties": {
"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."
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "Path inside the skill"
},
"content": {
"type": "string",
"description": "File content"
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "Every text file of the skill or server, docs included; code rules read all of them"
},
"fresh": {
"type": "boolean",
"description": "Scan again even when a past scan of these exact files exists"
}
}
}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}).
| Argument | Type | Description |
|---|---|---|
| bundle_sha256* | string |
{
"type": "object",
"required": [
"bundle_sha256"
],
"properties": {
"bundle_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
}
}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, request, and sources for check, task and deliverable for accept, files for skillcheck, and the verdict if one came with it.
| Argument | Type | Description |
|---|---|---|
| task | string | accept: the task the receipt should cover |
| draft | string | check: the draft the receipt should cover |
| files | array | skillcheck: the skill's files |
| receipt | object | Or the whole receipt object {body, hash, sig} |
| request | string | check: the human's request, if the check had one |
| sources | array | check: the sources, if the check had any, in the same order (strings or {text}) |
| verdict | object | The verdict that came with the receipt, to confirm nobody edited it |
| deliverable | string | accept: the deliverable the receipt should cover |
| receipt_hash |
| boolean |
| Optional: let a qualified outside reviewer take the job (not routed yet; crosscheck's reviewer does it and the receipt says so) |
| source_urls | array | Optional: up to 3 web pages crosscheck fetches after payment and checks the draft against, as sources. +$0.01 each |
| moltbook_identity | string | 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 |
{
"type": "object",
"required": [
"draft"
],
"properties": {
"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."
},
"draft": {
"type": "string",
"maxLength": 48000,
"description": "The draft text to review"
},
"request": {
"type": "string",
"maxLength": 8000,
"description": "Optional: what the human asked for, word for word if you have it. The reviewer then also checks that the draft answers it (a missed question, a changed scope, a wrong period)"
},
"sources": {
"type": "array",
"items": {
"type": "object",
"required": [
"text"
],
"properties": {
"url": {
"type": "string",
"description": "Optional URL"
},
"text": {
"type": "string",
"description": "Source text"
},
"title": {
"type": "string",
"description": "Optional title"
}
}
},
"maxItems": 10,
"description": "Optional texts the draft relies on; turns on grounding"
},
"fetch_cited": {
"type": "boolean",
"description": "Optional: also fetch the links the draft itself cites (up to 3 pages in all, +$0.01 each); a link that is gone fails the draft"
},
"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)"
},
"source_urls": {
"type": "array",
"items": {
"type": "string",
"description": "A public http or https URL"
},
"maxItems": 3,
"description": "Optional: up to 3 web pages crosscheck fetches after payment and checks the draft against, as sources. +$0.01 each"
},
"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"
}
}
}| string |
| The receipt's hash (the last part of its /r/ proof link) |
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "accept: the task the receipt should cover"
},
"draft": {
"type": "string",
"description": "check: the draft the receipt should cover"
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "Path inside the skill"
},
"content": {
"type": "string",
"description": "File content"
}
}
},
"description": "skillcheck: the skill's files"
},
"receipt": {
"type": "object",
"description": "Or the whole receipt object {body, hash, sig}"
},
"request": {
"type": "string",
"description": "check: the human's request, if the check had one"
},
"sources": {
"type": "array",
"description": "check: the sources, if the check had any, in the same order (strings or {text})"
},
"verdict": {
"type": "object",
"description": "The verdict that came with the receipt, to confirm nobody edited it"
},
"deliverable": {
"type": "string",
"description": "accept: the deliverable the receipt should cover"
},
"receipt_hash": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "The receipt's hash (the last part of its /r/ proof link)"
}
}
}