streamable-httpApache-2.0updated 1mo ago
Check before an agent pays, clicks, or trusts.
What can you do with Faro?
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
Install
Add Faro to your client. Pick the one you use.
claude mcp add --transport http faro https://mcp.farofinance.app/mcpcodex mcp add faro --url https://mcp.farofinance.app/mcp{
"mcpServers": {
"faro": {
"url": "https://mcp.farofinance.app/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"faro": {
"type": "http",
"url": "https://mcp.farofinance.app/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"faro": {
"url": "https://mcp.farofinance.app/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"faro": {
"serverUrl": "https://mcp.farofinance.app/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance16/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 50 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.2.0Latest | Jun 23, 2026 |