Developers // FAKTS API + MCP

Verification,
as an endpoint.

Verify claims, ask questions with a consilium consensus, and check passages inline. REST for anything, JSON-RPC over MCP for any AI client.

REST // HTTP JSON

REST endpoints.

POST/api/public/verify
Verify one claim

Run a single factual claim through the consilium. Returns a verdict, confidence, one line summary, sources, and a shareable permalink.

Request
bash
curl -X POST https://fakts.rizzgroup.org/api/public/verify \
  -H "Content-Type: application/json" \
  -d '{
    "text": "The Eiffel Tower is 330 meters tall.",
    "mode": "fast"
  }'
Response (sample)
json
{
  "share_id": "8f2c1a4b",
  "permalink": "/verify/8f2c1a4b",
  "claim": "The Eiffel Tower is 330 meters tall.",
  "consensus_verdict": "verified",
  "confidence": 92,
  "one_line_summary": "The tower measures 330 m to the tip including its antenna.",
  "agreement": "8/9",
  "models": [ /* per panelist verdicts, anonymized */ ],
  "sources": ["https://..."],
  "dissent": [],
  "mode": "fast"
}
POST/api/public/askBearer token required
Ask a question

Route a question through the panel and return a consensus answer with agreement level, per panelist responses, and sources.

Request
bash
curl -X POST https://fakts.rizzgroup.org/api/public/ask \
  -H "Authorization: Bearer YOUR_FAKTS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "question": "Is intermittent fasting proven to extend lifespan?" }'
Response (sample)
json
{
  "consensus": "Evidence in humans is inconclusive...",
  "agreement": { "agree": 6, "total": 8 },
  "disagreements": [
    { "provider": "panelist_03", "point": "Scope: rodent studies show consistent benefits." }
  ],
  "answers": [
    { "provider": "panelist_01", "answer": "...", "confidence": 0.7 }
  ],
  "sources": ["https://..."]
}
POST/api/public/live-checkBearer token required
Live passage check

Fast passage scan for extensions and inline UIs. Uses only web grounded panelists for sub 10 second verdicts.

Request
bash
curl -X POST https://fakts.rizzgroup.org/api/public/live-check \
  -H "Authorization: Bearer YOUR_FAKTS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "passage": "The GDP of France grew by 12% in 2023." }'
Response (sample)
json
{
  "verdict": "false",
  "confidence": 0.88,
  "explanation": "Official statistics show growth of about 0.9% in 2023.",
  "sources": ["https://..."],
  "provider_votes": [
    { "provider": "panelist_01", "verdict": "false" }
  ]
}
MCP // JSON-RPC 2.0

Speak MCP directly.

Everything an MCP client does over the wire. Useful for debugging, custom clients, or hosting a bridge.

initialize
http
POST https://fakts.rizzgroup.org/api/mcp
Content-Type: application/json
Accept: application/json, text/event-stream

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {},
    "clientInfo": { "name": "my-client", "version": "0.1.0" }
  }
}
tools/list
json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list"
}
tools/call (fakts_verify)
json
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "fakts_verify",
    "arguments": {
      "claim": "The Eiffel Tower is 330 meters tall."
    }
  }
}

The Accept header must include both application/json and text/event-stream or the server will reject with 406. Anonymous rate limits apply the same way as REST.

Auth // limits

Anonymous by default.

Anonymous
3 per day per IP

No token required for verify or the MCP server. Rate limited by hashed IP.

Token
Higher ceiling + authed endpoints

Mint a personal token in your FAKTS account. Same token works for MCP, verify, ask, and live check. The secret is shown once.

HTTP header
Authorization: Bearer YOUR_FAKTS_TOKEN
Manage tokens
Errors

Status codes.

400
Invalid body. Check field names, types, and length limits.
401
Missing or revoked bearer token on a token gated endpoint.
429
Rate limit reached. Mint a token or wait for the daily window to reset.
500
The consilium hit an unexpected error. Safe to retry.
502
Fewer than two panelists were available at that instant. Retry.