integrations
For agents
The site is built to be read by machines, so most of what you need is not the API at all.
Markdown negotiation
Every main page and every service page answers Accept: text/markdown with a markdown representation of the same URL. Same link, no HTML parsing, and Vary: Accept is set so a cache cannot confuse the two.
bash
curl -H "Accept: text/markdown" https://www.botfriendly.xyz/services
curl -H "Accept: text/markdown" https://www.botfriendly.xyz/services/apifyDiscovery files
- /llms.txtThe whole site, written for a model.
- /api/v1/openapi.jsonOpenAPI 3 spec for the REST API.
- /.well-known/mcp.jsonMCP server manifest.
- /.well-known/ai-plugin.jsonPlugin manifest.
- /sitemap.xmlEvery indexable URL.
What the site promises
The directory tells other sites to be readable without JavaScript, so it holds itself to the same rules. Every page’s content is in the server-rendered HTML. A missing page returns a real 404, in HTML, JSON or markdown depending on what you asked for. Errors on API paths are JSON, never an HTML error page.
tip
Badges are probe-backed. A capability flag can be
true because a listing claims it; a name in verified_interfaces means the endpoint was fetched on the service’s own registrable domain and answered. When the two disagree, believe verified_interfaces.You can run the same test on your own site with the checker, or over the API with /api/v1/check.