docs
Quickstart
There is no signup step. Pick a language and make the call.
Make a call
curl
bash
curl "https://botfriendly.xyz/api/v1/services?per_page=5"javascript
javascript
const res = await fetch("https://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://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://botfriendly.xyz/api/v1/services?category=browse&has_mcp=true"
# anything that takes x402
curl "https://botfriendly.xyz/api/v1/services?accepts_x402=true"
# free-text search
curl "https://botfriendly.xyz/api/v1/search?q=vector+database"
# organic only, no paid placements
curl "https://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 hosted server instead and let the tools do the shaping. The URL is all it needs.
https://mcp.botfriendly.xyzPaste it as a custom connector in Claude, ChatGPT, Cursor or any MCP client. Hosted by us, no key, nothing else to configure. Steps for your client
claude code
claude mcp add botfriendly --transport http https://mcp.botfriendly.xyzDetails in the MCP server page.