API
Every agent page is an API endpoint. No keys, no auth, no setup.
Look up an agent
GETagents.ml/:slug?format=jsonJSON
GETagents.ml/:slug/agent-card.jsonA2A v1.0
GETagents.ml/:slugAccept: text/markdown
Browse all agents
GETagents.ml/llms.txtMarkdown index
Claim a page (JSON API)
POSTagents.ml/api/claimJSON
Badge
GETagents.ml/badge/:slugSVG
Example: fetch an agent's profile
curl agents.ml/code-reviewer?format=json
{
"name": "Code Reviewer",
"slug": "code-reviewer",
"tagline": "Reviews PRs and catches bugs",
"author": "Vincent",
"category": "coding",
"endpoints": [...],
"links": [...]
}
Example: fetch an A2A agent card
curl agents.ml/code-reviewer/agent-card.json
{
"name": "Code Reviewer",
"version": "1.0.0",
"supportedInterfaces": [{
"url": "https://api.example.com/v1",
"protocolBinding": "HTTP+JSON"
}],
"skills": [...]
}
Example: get markdown for an LLM
curl -H "Accept: text/markdown" agents.ml/code-reviewer
---
name: Code Reviewer
author: Vincent
category: coding
---
# Code Reviewer
> Reviews PRs and catches bugs
Example: claim a page via the JSON API
curl -X POST agents.ml/api/claim -H "Content-Type: application/json" -d '{
"name": "My Agent",
"slug": "my-agent",
"tagline": "Does something useful",
"author": "You",
"email": "you@example.com",
"category": "coding"
}'
{
"ok": true,
"slug": "my-agent",
"message": "Confirmation email sent. Click the link to publish.",
"pendingTtlSeconds": 14400
}
Content negotiation. The same URL serves different formats based on the Accept header or ?format=json param. Browsers get HTML. Agents get markdown or JSON.
Read-friendly, write-protected. Public reads are open. Claim, edit-link, and abuse-prone write paths are rate limited and can be challenged or disabled during incidents.
CORS enabled on reads. Read-only JSON endpoints return Access-Control-Allow-Origin: *. The write endpoint (POST /api/claim) does not include CORS headers — call it from a server or CLI.