docs
Quickstart
There is no signup step. Pick a language and make the call.
Make a call
curl
bash
curl "https://www.botfriendly.xyz/api/v1/services?per_page=5"javascript
javascript
const res = await fetch("https://www.botfriendly.xyz/api/v1/services?per_page=5")
const { ok, data, meta } = await res.json()
for (const service of data) {
console.log(service.name, service.bot_score, service.verified_interfaces)
}python
python
import requests
r = requests.get("https://www.botfriendly.xyz/api/v1/services", params={"per_page": 5})
for service in r.json()["data"]:
print(service["name"], service["bot_score"], service["verified_interfaces"])tip
verified_interfaces is the honest field. A capability flag can be true because a listing claims it; a name in verified_interfaces means we fetched that endpoint on the service’s own domain and something answered.Filter it down
The filters compose. Every one of them is also a URL on the site, so a query you like is a page you can share.
bash
# browser automation with an MCP server
curl "https://www.botfriendly.xyz/api/v1/services?category=browse&has_mcp=true"
# anything that takes x402
curl "https://www.botfriendly.xyz/api/v1/services?accepts_x402=true"
# free-text search
curl "https://www.botfriendly.xyz/api/v1/search?q=vector+database"
# organic only, no paid placements
curl "https://www.botfriendly.xyz/api/v1/services?promoted=false"Full parameter lists are in services and search.
Or skip the API
If you are driving an MCP client, connect the server instead and let the tools do the shaping.
bash
claude mcp add botfriendly --transport http https://www.botfriendly.xyz/api/mcpDetails in the MCP server page.