Faro
Verify URLs, payees, and messages before acting: red/yellow/green trust verdicts for agents.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http faro 'https://mcp.farofinance.app/mcp' --header 'Authorization: <Faro API key as a Bearer token. Get a key at https://farofinance.app (format: Bearer faro_live_…)>'
{
"mcpServers": {
"faro": {
"type": "http",
"url": "https://mcp.farofinance.app/mcp",
"headers": {
"Authorization": "<Faro API key as a Bearer token. Get a key at https://farofinance.app (format: Bearer faro_live_…)>"
}
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
Faro
Check before an agent pays, clicks, or trusts.
Faro is a trust layer for AI agents and apps. You send a URL, payee, message, or
agent-payment payload — Faro returns one clear answer: green, yellow, or
red, a one-line reason, and what to do next (allow / warn / block /
review).
This repo is the open interface (Apache-2.0): the verdict contract, client SDKs, and auditable payment-protocol adapters. Scoring and the reputation graph stay on Faro’s hosted API, so you can audit what leaves your process without forking a black-box engine.
Get an API key → farofinance.app
What can you do with this package?
| You want to… | Use |
|---|---|
| Verify a link before an agent opens or shares it | Python/TS SDK verify_url, REST, or MCP verify_url |
| Check a UPI / payee / account before sending money | verify_payee |
| Screen an inbound SMS, email, or chat for scam tactics | verify_message |
| Gate an AP2 / x402 / ACP payment before settle | Open adapters in adapters/faro_agentpay/ → then verify each artifact |
| Let Claude / Cursor / any MCP client call Faro | Hosted MCP at https://mcp.farofinance.app/mcp |
| Branch in code on a stable contract | contracts/verdict.schema.json + typed SDKs |
Typical users: agent builders, wallet/checkout integrators, MCP app authors, and security teams who need a single red/yellow/green decision at the moment of action — not a dashboard full of raw threat intel.
Quick start
pip install faro-client
import asyncio, os
from faro_client import FaroClient
async def main() -> None:
async with FaroClient(os.environ["FARO_API_KEY"]) as client:
result = await client.verify_url("https://example.com")
print(result.verdict, result.reason, result.recommended_action)
# Branch: allow | warn | block | review
if result.recommended_action == "block":
raise SystemExit("blocked by Faro")
asyncio.run(main())
curl -s -X POST https://api.farofinance.app/v1/verify/url \
-H "Authorization: Bearer $FARO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"https://example.com"}'
TypeScript: see sdk/typescript/.
Payment parsers (no engine inside): adapters/faro_agentpay/.
Recipes: recipes/.
What’s in this repo
| Piece | Path |
|---|---|
| Verdict JSON Schema | contracts/verdict.schema.json |
| OpenAPI | sdk/openapi.json |
Python SDK (faro-client) | sdk/python/ |
| TypeScript SDK | sdk/typescript/ |
| AP2 / x402 / ACP adapters | adapters/faro_agentpay/ |
| Verify-before-pay recipes | recipes/ |
| MCP registry manifest | server.json · docs/tools.md |
Why open / what’s closed
Open here: schema, SDKs, protocol adapters, recipes, MCP tool docs — so integrators and protocol ecosystems can cite and fork the interface.
Closed (hosted API): signal providers, scoring, reputation graph, prompts.
Adapters stop at a documented seam: parse → artifacts → POST /v1/verify (or
your own checks) → optional worst_of.
Trust, plainly
Hosted verifies can carry signed trust receipts and a transparency log (hashes and signatures — not your raw PII). Product docs: farofinance.app.
Roadmap / future scope
Shipped or in flight on the hosted product (not all of this lives in this public repo):
- Stronger verify-before-pay coverage across AP2 / x402 / ACP as specs churn
- Richer payee / message / URL signals and reputation write-back
- Watches & webhooks when a previously clean entity flips
- Trust receipts and day-rooted transparency log verification tooling
- More SDK languages and framework examples (LangGraph, Crew, etc.)
- Optional public examples (e.g. agent defense patterns) without opening the engine
Community PRs welcome for adapter/SDK/docs fixes (DCO required). Engine
changes are not accepted here — see CONTRIBUTING.md.
What this is not
- Not a self-hosted scam ML model — default is the hosted API
- Not a generic prompt-injection detector — Faro verifies artifacts at action time
Branches: BRANCHES.md · Security: SECURITY.md
License
Frequently asked questions
What is Faro?
Verify URLs, payees, and messages before acting: red/yellow/green trust verdicts for agents.
How do I install Faro?
It runs as a remote server. In Claude Code: claude mcp add --transport http faro 'https://mcp.farofinance.app/mcp' --header 'Authorization: <Faro API key as a Bearer token. Get a key at https://farofinance.app (format: Bearer faro_live_…)>'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does Faro need an API key?
Yes. It expects Authorization, which you set in its configuration.
Is Faro open source?
Yes. Its code is on GitHub under the Apache-2.0 license.
Who maintains Faro?
It is published by vedux98. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.