Second Opinion
An independent adversarial agent tries to break your claim before you act on it. Pay a few cents per verdict — in USDC on any of 3 chains (Algorand · Base · Solana). No account, no API key, no subscription — just HTTP 402.
Why agents call this
Agents fail worst when they are most confident, and self-checking shares the same blind spots as the original reasoning. Second Opinion is a different model instance with fresh context, live web access, and one paid incentive: refute the claim if it can be refuted. Call it at the moment of irreversible commitment — before code, money, publication, or a promise:
- A coding agent, before building a day's work on "library X v3 supports streaming natively" — 25¢ against a wasted day.
- A research agent, before a blog-sourced stat ships in a client report — the verdict's citations become the footnotes.
- A support agent, before promising "the warranty covers water damage" — a 5¢ reasoning check on its reading of the policy.
- An agent that hired another agent, spot-checking the deliverable's load-bearing claims before accepting and paying.
Every verdict doubles as an audit receipt: independent check, timestamped, payment on-chain — something self-verification can never produce.
Endpoints & pricing
| Endpoint | Price | What you get |
|---|---|---|
POST /v1/verify/quick | $0.03 | Reasoning-only check, no web research — the habit tier. Honest "needs research" escalation |
POST /v1/verify | $0.20 | One skeptic, live web research, structured verdict |
POST /v1/verify/panel | $0.75 | Three skeptics (evidence · logic · currency), majority verdict |
POST /v1/verify/async | $0.20 | Async variant: instant job id, poll free result_url. Required for Solana payers |
POST /v1/verify/panel/async | $0.75 | Async panel |
GET /v1/schema | free | Machine-readable version of this page |
Verdicts are refuted, supported, or inconclusive, each with calibrated confidence, findings, and the URLs actually consulted. Failed sync requests (5xx) are never settled, and failed async jobs retry free — you only pay for delivered verdicts.
Chains: pay on Algorand · Base · Solana — same price, same product. Algorand is the preferred rail (listed first in every 402). Solana payers must use the /async routes: Solana transactions expire in ~1 minute, so the async flow settles your payment in seconds and serves the verdict via the free result URL.
Call it (any x402 client)
import { wrapFetchWithPayment, x402Client } from "@x402-avm/fetch";
import { toClientAvmSigner, ALGORAND_MAINNET_CAIP2, NETWORK_TO_ALGOD } from "@x402-avm/avm";
import { ExactAvmScheme } from "@x402-avm/avm/exact/client";
// signer: your Algorand account (holds a little USDC on algorand mainnet)
const signer = toClientAvmSigner(process.env.PAYER_SK_B64);
// Pin the scheme to the network's algod node — an unconfigured wildcard
// registration silently builds testnet transactions and fails verification.
const client = new x402Client().register(
ALGORAND_MAINNET_CAIP2,
new ExactAvmScheme(signer, { algodUrl: NETWORK_TO_ALGOD[ALGORAND_MAINNET_CAIP2] }),
);
const payingFetch = wrapFetchWithPayment(fetch, client);
const res = await payingFetch("https://secondopinionx402.com/v1/verify", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
claim: "Library X v3 supports streaming responses natively",
context: "About to migrate our retry logic to rely on this",
}),
});
const verdict = await res.json();
if (verdict.verdict === "refuted") { /* stop and re-plan */ }
Or inspect the payment requirements yourself — request without payment and read the 402:
curl -s -X POST https://secondopinionx402.com/v1/verify \
-H 'content-type: application/json' \
-d '{"claim":"HTTP 402 was reserved in 1997 and first standardised for real use by x402"}'
# → HTTP 402 + JSON: accepts[], network, asset, payTo, amount — pay, then retry with X-PAYMENT header
Example verdict
{
"id": "so_9f2c…",
"mode": "single",
"verdict": "refuted",
"confidence": 0.93,
"summary": "The claim conflates two products. v3 added streaming to the Pro tier only; the open-source core still buffers responses (changelog, issue #4812).",
"findings": [
{ "point": "v3.0 changelog scopes streaming to Pro", "direction": "against_claim", "source_url": "https://…/changelog" }
],
"citations": ["https://…/changelog", "https://…/issues/4812"],
"engine": { "model": "claude-sonnet-4-5", "searched_web": true },
"checked_at": "2026-07-21T12:00:00Z"
}
Honesty properties
No manufactured doubt. The skeptic is scored on calibration, not on finding problems. "Supported" after a real refutation attempt is the product working, not the product failing.
Citations are real. Only URLs actually consulted are returned. If web search was unavailable, searched_web:false is set and confidence drops.
Verification, not truth. Treat verdicts as strong evidence and check citations on anything load-bearing. The response says this too, every time.