MCP server
Faro ships a Model Context Protocol server so an agent can verify links, payees, and messages mid-task. It exposes the same engine as the REST API through three tools:
| Tool | When the agent should call it |
|---|---|
verify_url | Before navigating to or trusting any third-party link. |
verify_payee | Before initiating any payment. |
verify_message | Before acting on inbound content. |
Each returns the full VerdictResult. As of v1.2, every tool advertises a typed
outputSchema and emits structuredContent so agents can branch on
recommended_action without parsing prose. Clients that do not negotiate structured
output still receive a JSON-in-text fallback — the call never fails for lack of schema
support.
Choose a transport
Faro now supports two deployment modes:
- Local stdio for local development/private use.
- Hosted streamable-HTTP for cloud agents and MCP marketplaces.
Local stdio (quickest)
The MCP server is a local stdio process, launched by your MCP client:
faro-mcp
Connect to Claude (local)
Add it to your Claude Desktop / Claude Code MCP config:
{
"mcpServers": {
"faro": {
"command": "faro-mcp",
"env": { "FARO_API_KEY": "<your-key>" }
}
}
}
Then ask Claude to "verify this link" and watch it call the tool.
Hosted streamable-HTTP (v1.1)
If you deploy Faro MCP as an HTTPS service, point your MCP client at:
https://<your-mcp-host>/mcp
Hosted mode requires a valid Bearer API key and applies server-side protections:
- per-key rate limits
- request body-size cap
- per-call timeout
- authenticated access only (
401without a valid key)
Example hosted server config
{
"mcpServers": {
"faro": {
"transport": "streamable-http",
"url": "https://mcp.farofinance.app/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}
Typed output (v1.2)
When your MCP client negotiates structured tool output, Faro returns:
outputSchemaon each tool — JSON Schema for the fullVerdictResult(verdict, confidence, reason, recommended_action, signals, artifact, cache metadata).structuredContentin the tool result — the same object as REST, ready to branch onrecommended_action(allow,warn,block,review).
If the client does not support structured output, you still get a usable JSON payload in the text content block. The engine and verdict contract are unchanged.
Registry listing
Faro publishes a server.json
manifest for the MCP Registry — the
hosted streamable-HTTP endpoint at https://mcp.farofinance.app/mcp.