For AI agents

Give your agent official records to check against

Factline is a set of MCP servers and a REST API. Your agent calls it when its user asks about a person, company, Dutch address or car, and answers with official data and a source line it can quote. Pay per call in USDC (x402) with no account, or use an API key.

Pick a server

URLForTools
https://factline.dev/mcp/kycCompanies, people and agent paymentsone-call company check, x402 payee check and seller health, bulk screening, 30-day watches, self-hosted wallet evidence, ECB rates and EU law (free), sanctions, PEP, one-call KYC, company registers (10 countries), Dutch insolvency, EU VAT, EORI, IBAN, domain, email, phone, EU tenders
https://factline.dev/mcp/nlDutch homes and placesaddress facts and reports, neighbourhoods, crime, flood risk, rent check, house prices, energy labels, schools, address lookup and batch
https://factline.dev/mcp/vehiclesDutch vehicleslicence plate checks, APK expiry, recalls, odometer verdict, model reliability, plate comparison
https://factline.dev/mcpEverythingall of the above in one server (44 tools)
https://factline.dev/mcp/claudeClaude (directory), free onlyfree read-only tools: Dutch addresses, neighbourhoods, schools, plates, car models, ECB rates, EU law, x402 sellers
https://factline.dev/mcp/chatChat assistants, free onlythe free address, neighbourhood, plate, car model and schools tools; no payment needed

Smaller servers help models pick the right tool. All use Streamable HTTP and need no login. In the official MCP Registry as io.github.snefhew/factline, factline-kyc, factline-nl and factline-vehicles.

Paying

  • No account: paid tools answer with an x402 payment request (USDC on Base or Solana). Agents with an x402 wallet pay per call, from USD 0.001; bulk screening is metered per name (x402 upto). Failed calls are not charged, and a retry with the same payment-identifier is never charged twice.
  • Free trial key, no form: curl -X POST https://factline.dev/v1/key/trial -H "content-type: application/json" -d '{"email":"you@company.com"}' returns a key with 2,000 credits a month. In MCP, the get_trial_key tool does the same (it asks the user for their email).
  • API key: send x-api-key: fl_live_... (or Authorization: Bearer fl_live_...) and calls use credits instead. Free trial key, a EUR 19 pack or monthly plans on /business. Building for many end users? Ask about the platform plan.
  • Free: address, neighbourhood, plate, car model and schools tools, and a free preview of every paid check.

Before your agent pays someone else

Agents that buy from other x402 sellers can call the payee check first (x402_payee_check, USD 0.01): it reads the seller's 402, screens its wallets against OFAC, checks the domain and uptime and answers allow, review or deny. The free x402 Seller Health Index (x402_sellers) lists 500 Bazaar sellers with payers and daily probe results.

Receipts: every paid answer carries a receipt signed with Ed25519 (public key). Paying wallets can download a monthly statement from /v1/statement by signing in with the wallet (x402 sign-in-with-x).

Claude

claude.ai and Claude Desktop: Settings, Connectors, Add custom connector, then paste a server URL, for example https://factline.dev/mcp/chat.

Claude Code:

claude mcp add --transport http factline-kyc https://factline.dev/mcp/kyc
# with an API key:
claude mcp add --transport http factline-kyc https://factline.dev/mcp/kyc --header "x-api-key: fl_live_..."

ChatGPT

Settings, Apps and connectors, Advanced, turn on developer mode, then Create and paste https://factline.dev/mcp/gpt (free tools). The Factline plugin for the ChatGPT directory is in review.

Cursor, VS Code and GitHub Copilot, Gemini CLI

Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "factline-kyc": { "url": "https://factline.dev/mcp/kyc", "headers": { "x-api-key": "fl_live_..." } }
  }
}

VS Code / Copilot (.vscode/mcp.json):

{
  "servers": {
    "factline-kyc": { "type": "http", "url": "https://factline.dev/mcp/kyc" }
  }
}

Gemini CLI (~/.gemini/settings.json):

{
  "mcpServers": {
    "factline-kyc": { "httpUrl": "https://factline.dev/mcp/kyc" }
  }
}

Microsoft Copilot Studio: in your agent, Tools, Add a tool, Model Context Protocol, then enter the server URL with no authentication (or an API key header).

Agent frameworks

OpenAI Agents SDK (Python):

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(params={"url": "https://factline.dev/mcp/kyc"}) as factline:
    agent = Agent(name="Onboarding", instructions="Screen new customers.", mcp_servers=[factline])
    result = await Runner.run(agent, "Is Acme Trading Ltd on a sanctions list?")

LangChain / LangGraph (pip install langchain-mcp-adapters):

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({"factline": {"url": "https://factline.dev/mcp/kyc", "transport": "streamable_http"}})
tools = await client.get_tools()

Vercel AI SDK (TypeScript):

import { experimental_createMCPClient } from "ai";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const mcp = await experimental_createMCPClient({
  transport: new StreamableHTTPClientTransport(new URL("https://factline.dev/mcp/kyc")),
});
const tools = await mcp.tools();

n8n: add an AI Agent node with an MCP Client Tool, endpoint https://factline.dev/mcp/kyc, transport HTTP Streamable. Or import the ready-made workflow Screen new signups with Factline KYC (Workflows, Import from file, then paste your key in the "Factline KYC check" node).

Python: pip install factline, then Factline(api_key=...).sanctions_screen(name="Acme"). PyPI

Plain HTTP

# free preview: checks the input and shows what the paid answer contains
curl "https://factline.dev/v1/sanctions/screen/preview?name=Acme%20Trading"

# paid call with an API key
curl -H "x-api-key: fl_live_..." "https://factline.dev/v1/sanctions/screen?name=Acme%20Trading"

Without a key, paid endpoints answer 402 with an x402 payment request. Full list: docs, OpenAPI, llms.txt.

What answers look like

Every MCP result carries a one-line summary where the shape allows and a cite_as line, for example: Source: Factline (factline.dev), from RDW Open Data, retrieved 2026-10-11. Field names are stable. How screening works, list dates and data handling: trust page. Uptime: status.