Citation Verification Agent
Tests whether a cited public source supports an exact factual claim.
Required input
claim, sourceUrl
Twelve independently purchasable research-verification APIs. Each POST request declares its price through x402, settles in USDC, and returns a structured JSON result.
1. Discover: Use POST and Content-Type: application/json. An unpaid request returns HTTP 402 and PAYMENT-REQUIRED; it does not charge you. GET only shows the endpoint documentation.
curl -i -X POST https://apexibis.com/verify-citation -H "Content-Type: application/json" --data '{"claim":"The United States declared war on Japan on December 8, 1941.","sourceUrl":"https://www.archives.gov/milestone-documents/joint-address-to-congress-declaration-of-war-against-japan"}'
2. Prepare: Install packages locally with npm install @x402/fetch @x402/core @x402/evm viem. Use a dedicated low-balance Base Mainnet wallet containing USDC and some ETH. Keep your private key in a local environment variable, never in a website or message.
3. Pay and retry: Save the code below to buy.mjs; set EVM_PRIVATE_KEY locally; run node buy.mjs. The quote guard accepts only exactly $0.01 USDC on Base and only the configured recipient.
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const key = process.env.EVM_PRIVATE_KEY;
if (!/^0x[0-9a-fA-F]{64}$/.test(key || "")) throw Error("Missing wallet key");
const client = new x402Client();
client.register("eip155:8453", new ExactEvmScheme(privateKeyToAccount(key)));
client.onBeforePaymentCreation(async ({ selectedRequirements: q }) => {
const valid = q.network === "eip155:8453" &&
q.scheme === "exact" && BigInt(q.amount) === 10000n &&
q.payTo?.toLowerCase() === "0xfbc4f75278c9f3c901efada9feb3de76089fcb99" &&
q.asset?.toLowerCase() === "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
return valid ? undefined : { abort: true, reason: "Unexpected payment terms" };
});
const paidFetch = wrapFetchWithPayment(fetch, client);
const response = await paidFetch("https://apexibis.com/verify-citation", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
claim: "The United States declared war on Japan on December 8, 1941.",
sourceUrl: "https://www.archives.gov/milestone-documents/joint-address-to-congress-declaration-of-war-against-japan"
})
});
if (!response.ok) throw Error("Request failed: HTTP " + response.status);
console.log(await response.json());
For other endpoints, inspect the service's actual x402 quote and enforce its price before paying. A 415 response means the client sent the wrong Content-Type; fix the JSON request before attempting payment.
Tests whether a cited public source supports an exact factual claim.
claim, sourceUrl
Extracts quotations, dates, people, organizations, numbers, and factual evidence from a public source.
sourceUrl
focus
Compares two factual claims and their sources for agreement, contradiction, and missing context.
claimA, sourceUrlA, claimB, sourceUrlB
Evaluates observable source credibility, transparency, evidence quality, bias signals, and limitations.
sourceUrl
context
Builds a structured research brief from one to three supplied public sources.
topic, sourceUrls
question
Checks a factual claim against one to three supplied public sources.
claim, sourceUrls
Extracts and organizes dated events from one to three public sources.
topic, sourceUrls
Finds contradictions, scope differences, shared ground, and unresolved tensions across sources.
topic, sourceUrls
Tests whether a numerical or statistical claim is supported and properly framed by its source.
claim, sourceUrl
Generates prioritized research questions and evidence needs from a topic and optional source.
topic
sourceUrl, goal
Source-grounded company intelligence.
company, sourceUrl
Compares two public documents for substantive changes.
oldUrl, newUrl