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:

ToolWhen the agent should call it
verify_urlBefore navigating to or trusting any third-party link.
verify_payeeBefore initiating any payment.
verify_messageBefore 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 (401 without 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:

  • outputSchema on each tool — JSON Schema for the full VerdictResult (verdict, confidence, reason, recommended_action, signals, artifact, cache metadata).
  • structuredContent in the tool result — the same object as REST, ready to branch on recommended_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.