API reference for humans and agents
https://www.botfriendly.xyz/api/v1// No auth required. CORS enabled (*). JSON responses.
// Rate limits: 100 req/min by IP.
/api/v1/servicesList and filter all services. Returns paginated results with full protocol details.
curl "https://www.botfriendly.xyz/api/v1/services?category=browse&has_mcp=true"
/api/v1/services/{slug}Get full details for a single service including all protocol support, URLs, and metadata.
curl "https://www.botfriendly.xyz/api/v1/services/browserbase"
/api/v1/searchFull-text search across services. Returns results ranked by bot_score.
curl "https://www.botfriendly.xyz/api/v1/search?q=vector+database"
/api/v1/categoriesList all categories with service counts
curl "https://www.botfriendly.xyz/api/v1/categories"
/api/v1/featuredGet site-wide promoted/featured services (max 3). Clearly marked as ads.
curl "https://www.botfriendly.xyz/api/v1/featured"
/api/v1/protocolsProtocol adoption stats — MCP, OpenAPI, MPP, x402, ACP, UCP
curl "https://www.botfriendly.xyz/api/v1/protocols"
/api/v1/statsDirectory statistics — total services, per-category counts, protocol coverage
curl "https://www.botfriendly.xyz/api/v1/stats"
/api/v1/verifyCheck whether a service really exposes the interfaces it claims. Each endpoint you name is fetched and inspected, and the verdicts come back. Nothing is written and no auth is required — this is the same probe that runs on submissions, owner updates and discovery, exposed so an external workflow doesn't have to reimplement it and drift. Returns listable (did anything check out), verified (the flags that passed) and a probe result per claim. Rate limited to 60 calls/hour per IP.
curl -X POST "https://www.botfriendly.xyz/api/v1/verify" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","has_mcp_server":true,"mcp_server_url":"https://example.com/mcp"}'/api/v1/submissionsSubmit a new service. No auth required. Interface URLs must be on the service's own domain and are fetched during the request — the listing publishes immediately if one answers, or returns 422 with the probe results if none do. Every listing needs an icon: send icon_url or icon_base64, or leave both out and the service's own site is checked for one.
curl -X POST "https://www.botfriendly.xyz/api/v1/submissions" \
-H "Content-Type: application/json" \
-d '{"name":"YourService","url":"https://example.com","category":"browse","description":"What it does"}'/api/v1/healthHealth check and endpoint discovery
curl "https://www.botfriendly.xyz/api/v1/health"
/api/v1/checkScore how bot-friendly a site is. Fetches it the way an agent would (no JavaScript) and reports access, no-JS content, and machine discovery out of 100, with advice per failed check. Rate limited to 6 checks/min per IP.
curl "https://www.botfriendly.xyz/api/v1/check?url=yourservice.dev"
Directory endpoints return JSON with a consistent envelope (/health returns a bare status object):
{
"ok": true,
"data": [...],
"meta": {
"total": 80,
"page": 1,
"per_page": 20,
"total_pages": 4
}
}BotFriendly has a remote MCP server that agents can connect to directly. Add it to Claude Desktop, Claude Code, or any MCP-compatible client.
Settings → Connectors → Add custom connector:
claude mcp add botfriendly --transport http https://www.botfriendly.xyz/api/mcp
// Endpoint: /api/mcp