Integration Guides

Connect 2O to your AI agent in 60 seconds. Choose your stack below.

MCP Server

Available

2O includes a native MCP (Model Context Protocol) server. Any MCP-compatible agent can connect and use human verification as a native tool.

Quick setup

1. Start the standalone MCP server:

1-accent-500">npm run mcp

2. Connect your MCP client to:

1http:-status-success">"text-text-tertiary">//localhost:-status-warning">3001/mcp?apiKey=2o_sk_YOUR_KEY

Available tools: list_domains, verify, check_status, get_result, get_balance

OpenClaw

Connect 2O to your OpenClaw agent for native human verification capabilities.

1. Register your agent at /register

2. In your OpenClaw settings, add a new MCP server:

Name2O - Second Opinion
URLhttp://localhost:3001/mcp?apiKey=2o_sk_YOUR_KEY
TransportSSE

Or send your OpenClaw agent this skill URL:

1https:-status-success">"text-text-tertiary">//www.2oapi.xyz/skill.md

Your agent now has access to human verification tools. It can call verify() whenever it encounters an uncertain claim.

Claude Code / Anthropic MCP

Add 2O to Claude Code or any Anthropic MCP-compatible environment.

Add to your MCP settings (claude_desktop_config.json or equivalent):

1{
2 "mcpServers": {
3 "2o": {
4 "url": "http:">//localhost:3001/mcp?apiKey=2o_sk_YOUR_KEY"
5 }
6 }
7}

Once connected, Claude will be able to verify claims by calling the verify tool.

Generic MCP Client

Any MCP-compatible client can connect using the official SDK.

1import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
3
4const transport = new SSEClientTransport(
5 new URL("http:">//localhost:3001/mcp?apiKey=2o_sk_YOUR_KEY")
6);
7const client = new Client({ name: "my-agent", version: "1.0.0" });
8await client.connect(transport);
9
10"text-text-tertiary">// List available tools
11const tools = await client.listTools();
12
13"text-text-tertiary">// Verify a claim
14const result = await client.callTool("verify", {
15 claim: "The population of Tokyo exceeds 14 million",
16 domain: "geographic",
17 budget_cents: 200,
18});
19console.log(result);

LangChain

Use 2O as a LangChain tool via the REST API.

1from langchain.tools import Tool
2import requests
3import time
4
5API_KEY = class="text-status-success">"2o_sk_YOUR_KEY"
6BASE = class="text-status-success">"https:class="text-text-tertiaryclass="text-status-success">">//www.2oapi.xyz/api/v1"
7HEADERS = {class="text-status-success">"Authorization": fclass="text-status-success">"Bearer {API_KEY}"}
8
9def verify_claim(query: str) -> str:
10 class="text-status-success">""class="text-status-success">"Verify a claim using 2O human experts."class="text-status-success">""
11 response = requests.post(
12 fclass="text-status-success">"{BASE}/verify",
13 headers=HEADERS,
14 json={
15 class="text-status-success">"claim": query,
16 class="text-status-success">"domain": class="text-status-success">"general",
17 class="text-status-success">"budget_cents": class="text-status-warning">200,
18 },
19 )
20 request_id = response.json()[class="text-status-success">"id"]
21
22 class=class="text-status-success">"text-text-tertiary"># Poll for result
23 for _ in range(class="text-status-warning">60):
24 result = requests.get(
25 fclass="text-status-success">"{BASE}/verify/{request_id}/result",
26 headers=HEADERS,
27 )
28 data = result.json()
29 if data[class="text-status-success">"status"] == class="text-status-success">"completed":
30 return (
31 fclass="text-status-success">"Verdict: {data[class="text-status-success">'verdict']} "
32 fclass="text-status-success">"(confidence: {data[class="text-status-success">'confidence']})"
33 fclass="text-status-success">"\n{data[class="text-status-success">'explanation']}"
34 )
35 time.sleep(class="text-status-warning">5)
36 return class="text-status-success">"Verification timed out"
37
38verify_tool = Tool(
39 name=class="text-status-success">"2o_verify",
40 description=class="text-status-success">"Verify a factual claim using human experts via 2O",
41 func=verify_claim,
42)

REST API

Use the REST API directly from any language. No SDK required.

1-accent-500">curl -X POST https:-status-success">"text-text-tertiary">//www.2oapi.xyz/api/v1/verify \
2 -H -status-success">"Authorization: Bearer 2o_sk_YOUR_KEY" \
3 -H -status-success">"Content-Type: application/json" \
4 -d '{
5 -status-success">"claim": -status-success">"The FDA approved Ozempic for weight loss in June -status-warning">2021",
6 -status-success">"domain": -status-success">"medical",
7 -status-success">"budget_cents": -status-warning">500
8 }'

See the full API Reference for all endpoints.

Need help? Reach out at support@2o.dev