…

Developers

Ask many models, and keep the disagreement

Every model API answers the same way: one model, one answer, delivered in the same confident register whether it is right or wrong. That is fine when what you want is text. It is not enough when your application has to act on whether something is true, because a single answer gives you nothing to check it against.

What changed is the supply. There are now a dozen capable models from companies that do not share training data, and calling several of them costs cents. That makes disagreement between them affordable to measure, and disagreement is the useful signal. A claim that models from four different labs independently accept sits in a different position from one that splits them three to one, and knowing which of the two you are holding is the part software can act on.

A normal model API exposes none of that. You get the answer, not the spread. Verafy runs the swarm and hands back the spread: ask once, read every model's vote, its written reasoning, and where the consensus landed.

There are four ways in, and they are the same system underneath: an HTTP API, a TypeScript client, three MCP servers for working from an editor, and the repositories behind all of it. Keys are issued by hand while the API is in beta, so there is no self-serve signup yet.

The API

One POST sends a question to the swarm and comes back with every vote and rationale, plus the consensus data Verafy already holds for that query. Validator discovery and your credit balance are their own endpoints, so you can build a panel and price a call before you spend anything. The host is api.verafy.ai.

Broadcast a query

This call asks three models and costs three credits.

curl -X POST https://api.verafy.ai/api/v1/public/broadcast-query \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $VERAFY_API_KEY" \
  -d '{
    "queryText": "The Great Wall of China is visible from space",
    "queryMode": "fact-check",
    "queriesRequested": 3
  }'

Full API reference

SDK

Calling the API with fetch works, and then you write the same three things everybody writes: a retry loop, a parser for the error body, and a cost calculation that has to stay in step with the server's. @verafy/sdk is those three things, done once.

Install

npm install @verafy/sdk

First call

import { VerafyClient } from "@verafy/sdk";

const verafy = new VerafyClient({ apiKey: process.env.VERAFY_API_KEY! });

const { data, rateLimit } = await verafy.broadcastQuery({
  queryText: "Did the 2024 Atlantic hurricane season have above-average activity?",
  queryMode: "fact-check",
  queriesRequested: 5,
});

for (const v of data.responses ?? []) {
  console.log(`${v.profileName}: ${v.vote} ${v.rationale}`);
}
console.log(`${rateLimit?.remaining} requests left this hour`);

Source and issues on GitHub

MCP servers

An agent writing code is in the same position as an application: it has one model's judgment and no second opinion. These three servers hand it one. They run over stdio in Claude Code, Cursor, Codex, Gemini CLI and anything else that speaks MCP. In each of them the tools that spend money are the exception rather than the rule, they refuse to run without explicit confirmation, and they report what was spent, because an agent holding a key should not be able to drain it because a tool looked harmless.

verafy

5 tools

The swarm, from your editor. Ships inside @verafy/sdk.

The public API as tools, so an agent can poll a panel of models mid-task instead of taking one model's word for a fact it is about to write down. verafy_broadcast is the only tool that spends credits: it checks the balance first and refuses without confirm: true, and every result reports credits spent and remaining so the agent's own context carries the budget.

Tools

verafy_validators
List validators, filter by provider, active only
verafy_validator
One validator in full
verafy_credits
Balance on the key
verafy_cost
Price a broadcast and say whether the key can afford it. Spends nothing
verafy_broadcast
Ask a panel. Spends credits, and requires confirm: true

Config

{
  "mcpServers": {
    "verafy": {
      "command": "npx",
      "args": ["-y", "--package=@verafy/sdk", "verafy-mcp"],
      "env": { "VERAFY_API_KEY": "..." }
    }
  }
}

A Verafy API key in VERAFY_API_KEY.

Repository

verafy-bias

8 tools

The eval harness behind bias.verafy.ai.

Runs a model against a versioned bank of contentious questions and scores where each answer lands using a jury drawn from other companies, so no vendor grades its own work. Report cards are comparable only against the same bank hash, and the tools refuse to mix banks. bias_run is the only tool that spends money: it will not start without confirm: true and a budget you name.

Tools

bias_banks
List banks with version, hash, question count
bias_bank
Read one bank, optionally the questions, filtered by axis
bias_roster
The standing roster and each model's vendor
bias_estimate
Call count and eligible panel for a pass. Spends nothing
bias_run
Run a pass. Spends money
bias_card
Read a report card by run id or path
bias_board
Rank every card from one bank
bias_diff
Movement between two cards of the same model

Config

{
  "mcpServers": {
    "verafy-bias": {
      "command": "node",
      "args": ["/path/to/verafy-bias/dist/mcp.js"],
      "env": { "OPENROUTER_API_KEY": "..." }
    }
  }
}

A local build of the repository, and an OpenRouter key for real runs. The mock provider exercises the whole pipeline for nothing.

Repository

verafy-explorer

7 tools

Read Verafy's Solana programs. No keys, no transactions.

Program certifications, jury rulings with every juror's revealed vote, and the AI harnesses registered to sit on juries. It imports the same account decoders the explorer pages use, so a page and an agent cannot disagree about what an account says, and every address comes back with a link to Solana Explorer so a claim about the chain can be checked independently. Every payload carries the cluster and a caveat about what the records do and do not show.

Tools

explorer_status
Cluster, RPC, current slot, the program addresses, and counts. Start here
explorer_certifications
Certifications, filterable by program and minimum level, newest first
explorer_program
One program in full: certification, grade, verdict history, proven builds
explorer_rulings
Jury rulings with status, answer, agreement, the bar, and every juror seat
explorer_harnesses
Registered harnesses: family, model, operator, endpoint, price, active or retired
explorer_account
Decode any address against the certification, ruling and harness layouts
explorer_grades
The grade scale and what each grade means

Config

{
  "mcpServers": {
    "verafy-explorer": {
      "command": "npx",
      "args": ["tsx", "/path/to/explorer/mcp/server.ts"],
      "env": { "DEVNET_RPC_URL": "https://api.devnet.solana.com" }
    }
  }
}

A local checkout of the repository. DEVNET_RPC_URL is optional and defaults to the public endpoint, which rate-limits.

Repository

Open source

A system that asks you to trust a ruling should let you read how the ruling was made. The validator harness, the filter that stands in front of it, the on-chain explorer, the contract layer, the fuzzer and both client libraries are public.