streamable-httpApache-2.0updated 9d ago
Fact-check claims against independent sources โ from any MCP client.
What can you do with Lenz Fact Check?
Lenz is a fact-checking platform. It takes a factual claim, runs it through a multi-model pipeline (framing โ research โ debate โ panel review โ conclusion) against independent sources, and returns a verdict with a confidence level. This is the official remote MCP server โ a hosted Model Context Protocol endpoint that exposes Lenz's fact-checking as tools your AI assistant can call.
It verifies claims against the open web, independent of whatever context your model was given โ so it complements retrieval/groundedness checkers rather than replacing them.
- Hosted, no install: point your client at
https://lenz.io/mcp. Nothing to run locally. - Auth: OAuth (no key โ for clients that support it) or a free Lenz API key (
Authorization: Bearer lenz_โฆ). - Transport: Streamable HTTP.
Tools
| Tool | What it does |
|---|---|
assess_claim |
Fast verdict (~10s) via a 3-model panel. The default for checking a claim. Returns one verdict per atomic claim (True / Mostly True / Mixed / Mostly False / False) plus bucketed confidence. |
verify_claim |
Deep, multi-step investigation (~90s: research โ debate โ panel review) for high-stakes claims. Returns a task_id immediately; poll it with get_verification. Costs an order of magnitude more credits than assess_claim โ reserve it. Pass depth: "low" for a shallower, faster research pass (fewer sources, same models) at half the credits. |
get_verification |
Retrieve or poll a verify_claim result by task_id. Returns processing, needs_input, or completed (verdict, summary, top sources, and the depth the verdict was produced at). |
select_claims |
Resolve a needs_input verification โ when a verify_claim turns up multiple claims or an ambiguity, pick which claim text(s) to run. |
ask_followup |
Ask a grounded follow-up about a completed verify_claim (by its verification_id) โ answered from the full research, debate, and panel review, not just the summary. Costs credits at the cheap rate, same as assess_claim. |
check_usage |
Your remaining credits, the per-tool price list (costs, plus cost_options for prices that depend on a parameter such as depth), and your current plan. |
Verdicts are directional, not absolute โ confidence is returned as bucketed language with a caveat, not a raw score. Surface it, and the link back to Lenz, to the user.
Quickstart
Two ways to connect, depending on your client:
- OAuth โ for clients that support it (e.g. Claude connectors). No key to paste; you sign in to Lenz and authorize the connection.
- API key โ works with any MCP client via an
Authorizationheader.
Connect with OAuth (no API key)
Claude (web and desktop): Lenz is listed in the Claude connectors directory โ open Settings โ Connectors โ Browse connectors, find Lenz, and connect. One-time OAuth sign-in, nothing to configure.
For any other client that supports OAuth for MCP, add the server with just its URL and no headers:
{
"mcpServers": {
"lenz": {
"type": "http",
"url": "https://lenz.io/mcp"
}
}
}
The first time you use it, your client walks you through a one-time sign-in: you authenticate on Lenz's own screen and authorize the connection โ no key is stored in your config. Your assistant then fact-checks on your behalf against your Lenz account's credits. You can revoke the connection at any time; see the privacy policy.
Connect with an API key
1. Get a free API key at lenz.io/api-credentials
(format lenz_โฆ).
2. Add the server to your client (examples below). Authenticate with
Authorization: Bearer <your-key>.
Claude Code
claude mcp add --transport http lenz https://lenz.io/mcp \
--header "Authorization: Bearer ${LENZ_API_KEY}"
Claude Desktop / any client that reads .mcp.json
{
"mcpServers": {
"lenz": {
"type": "http",
"url": "https://lenz.io/mcp",
"headers": {
"Authorization": "Bearer ${LENZ_API_KEY}"
}
}
}
}
Cursor
One click: use the Add Lenz to Cursor button above โ it adds the server and signs you in via OAuth (no key to paste).
Manual: Settings โ MCP โ Add new MCP server โ type HTTP, URL
https://lenz.io/mcp, and add a header Authorization: Bearer <your-key>. (Or drop the
JSON above into .cursor/mcp.json.)
VS Code
One click: use the Install in VS Code button above (OAuth, no key). Manual, with a key:
code --add-mcp '{"name":"lenz","type":"http","url":"https://lenz.io/mcp","headers":{"Authorization":"Bearer ${LENZ_API_KEY}"}}'
ChatGPT
ChatGPT connects to Lenz as a custom connector over OAuth โ no API key.
Settings โ Apps โ Advanced settings โ turn Developer mode on โ
Add app โ URL https://lenz.io/mcp โ Create, then Sign in with Lenz
to authorize.
(A one-click install from the ChatGPT app directory is coming.)
MCP Inspector (try the tools by hand)
npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP ยท URL: https://lenz.io/mcp
# Header: Authorization: Bearer <your-key>
Example
You: Is it true that honey never spoils?
The assistant calls
assess_claim("Honey never spoils")and gets back: Mostly True โ high confidence. Properly sealed honey can keep effectively indefinitely thanks to its low moisture and acidity; the caveat is contamination or added water. For a sourced deep-dive it can escalate withverify_claim.
Credits
Every tool call draws on one pool of credits on your Lenz account. There is no
separate budget per tool: spending on assess_claim reduces what is left for
verify_claim, and vice versa. check_usage returns the balance
(credits_remaining) alongside costs, the live price list โ read the weight from
there rather than assuming one.
verify_claim is the expensive path by an order of magnitude; assess_claim and
ask_followup are the cheap ones. verify_claim also takes an optional depth:
"low" runs a shallower research pass โ fewer sources, faster, the same models โ for
half the credits of the default "standard". That price sits under
cost_options.verify.depth.low on check_usage. You are charged for the depth you
request; the depth on the completed result is the depth the verdict was
produced at, so a "low" request answered from an existing deeper check reads
"standard" โ the echo describes the evidence, the charge follows the request.
check_usage also reports assess_remaining and verify_remaining, which are the
SAME balance projected into each tool's own unit โ "how many of these could I still
make" โ not separate allowances.
Free keys include a monthly allowance that resets each period; grants and top-ups add non-expiring bonus credits on top, spent only once the allowance is gone. See plans at lenz.io/plans.
When you run out, tools return status: "quota_exhausted" with a message and a
manage_url pointing at the plans page. It is not retryable โ the balance is spent
until you top up or the monthly allowance resets. An agent should say so plainly rather
than retrying or quietly skipping the check.
status: "rate_limited" is a different thing: a rate limit (today, the per-account daily
extract cap, which costs no credits at all). That one does clear on its own, and the
result carries retry_after_seconds telling you when.
Skills
Prefer a guided workflow to calling the tools yourself? The
lenz-fact-check skill turns "is this true?" into a
structured pass โ it extracts the checkable claims, runs assess_claim on each, escalates
high-stakes ones to a deep verify_claim, and reports verdicts with confidence and
sources (with the directional-not-absolute caveat built in). Point your agent at
skills/lenz-fact-check/SKILL.md.
Links
- Website: lenz.io
- Get a key: lenz.io/api-credentials
- Developer docs: lenz.io/developers
- SDKs: Python ยท Node
Support
Questions or issues? Open an issue or get in touch.
License
Apache-2.0 ยฉ lenzhq. The Lenz name and logos (assets/) are
trademarks of lenzhq and are not granted by the license โ see NOTICE.
Maintainer
Install
Add Lenz Fact Check to your client. Pick the one you use.
claude mcp add --transport http lenz-fact-check https://lenz.io/mcpcodex mcp add lenz-fact-check --url https://lenz.io/mcp{
"mcpServers": {
"lenz-fact-check": {
"url": "https://lenz.io/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"lenz-fact-check": {
"type": "http",
"url": "https://lenz.io/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"lenz-fact-check": {
"url": "https://lenz.io/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"lenz-fact-check": {
"serverUrl": "https://lenz.io/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance25/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 1 days ago
- Has a release history
- Repository is not archived
- Licensed Apache-2.0
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint โ no local install
Version history
| Versions | Published |
|---|---|
| 1.0.3Latest | Aug 30, 2026 |
| 1.0.1 | Jul 6, 2026 |
| 1.0.0 | Jul 6, 2026 |