Faceabot

Find the MCP tool your agent lacks among 38,000+ servers, ranked by measured reliability. One call: solve_need. No key, no account.

Hosted MCP Server

npx add-mcp 'https://faceabot.com/api/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Add Faceabot to your agent

One URL, no key, no account: https://faceabot.com/api/mcp. Then your agent calls solve_need whenever it lacks a capability and gets the best tool that actually works, with how to use it.

Just copy the block that matches your tool.

Any MCP client (JSON config)

{
  "mcpServers": {
    "faceabot": { "url": "https://faceabot.com/api/mcp" }
  }
}

Claude Code (terminal)

claude mcp add --transport http faceabot https://faceabot.com/api/mcp

Claude apps (claude.ai, desktop, Cowork)

Customize → Connectors → + Add → Add custom connector
Name: Faceabot   ·   URL: https://faceabot.com/api/mcp   ·   Authentication: No sign in

OpenAI Agents SDK (Python) — hosted by OpenAI

from agents import Agent, HostedMCPTool, Runner

agent = Agent(
    name="Assistant",
    tools=[HostedMCPTool(tool_config={
        "type": "mcp",
        "server_label": "faceabot",
        "server_url": "https://faceabot.com/api/mcp",
        "require_approval": "never",
    })],
)
print(Runner.run_sync(agent, "Find a reliable OCR tool for Japanese receipts").final_output)

OpenAI Agents SDK (Python) — direct connection

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(name="faceabot", params={"url": "https://faceabot.com/api/mcp"}) as faceabot:
    agent = Agent(name="Assistant", mcp_servers=[faceabot])
    result = await Runner.run(agent, "Which tool can compare two PDFs?")

Google ADK (Gemini)

from google.adk.agents import LlmAgent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams

agent = LlmAgent(
    model="gemini-flash-latest",
    name="assistant",
    instruction="When you lack a capability, call Faceabot's solve_need.",
    tools=[McpToolset(connection_params=StreamableHTTPConnectionParams(url="https://faceabot.com/api/mcp"))],
)

LangChain / LangGraph

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({"faceabot": {"transport": "http", "url": "https://faceabot.com/api/mcp"}})
tools = await client.get_tools()   # pass to create_react_agent(...) or a ToolNode

CrewAI

from crewai import Agent
from crewai_tools import MCPServerAdapter

with MCPServerAdapter({"url": "https://faceabot.com/api/mcp", "transport": "streamable-http"}) as tools:
    scout = Agent(role="Tool scout", goal="Find the best tool for each task", backstory="Uses Faceabot", tools=tools)

No MCP at all (plain HTTP, any language)

curl "https://faceabot.com/resolve?need=extract+text+from+a+scanned+PDF&remote_only=true"

A2A agents

Agent card: https://faceabot.com/.well-known/agent-card.json
Send your need as a text message (SendMessage or message/send) to https://faceabot.com/api/a2a

Suggested system-prompt line for your agent

When you lack a tool or capability, call Faceabot solve_need with the task in plain words, then use the returned best option (or a fallback).

Plain words, one line: the agent will call Faceabot only when it needs a tool it does not have.

Machine-readable: /.well-known/agent-connection.json · MCP server card · llms.txt

AI agents: all of this is available without keys over MCP https://faceabot.com/api/mcp · HTTP https://faceabot.com/api/catalog?q=… · Guide: llms.txt

Pulse: what is changing in agent commerce · Is your store ready for AI shopping agents? · State of MCP (weekly) · MCP server doctor · Open reliability data · Add Faceabot to your AI · Badge for tool publishers · Help · Privacy · Terms