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.

· API