API Reference

No authentication required. All endpoints return JSON. Rate limited to 60 requests/minute.

Base URL: https://agentnativeregistry.com

OpenAPI spec: /openapi.json

GET /api/tools

Search and filter all tools in the registry. Returns tools sorted by Agent Native Score descending.

Parameters

NameTypeDescription
qstringSearch by name, description, category, or review notes
categorystringFilter by category (e.g. "payments", "database", "ai")
min_scorenumberMinimum Agent Native Score (0-100)
has_mcp"true"Only return tools with an MCP server
limitnumberMax results (default: 100, max: 100)

Examples

curl
JavaScript
Python
# List all tools
curl https://agentnativeregistry.com/api/tools

# Search for payment tools with MCP servers
curl "https://agentnativeregistry.com/api/tools?category=payments&has_mcp=true"

# Search by keyword
curl "https://agentnativeregistry.com/api/tools?q=email&limit=5"
// List all payment tools with MCP servers
const res = await fetch(
  "https://agentnativeregistry.com/api/tools?category=payments&has_mcp=true"
);
const { tools } = await res.json();
console.log(tools.map(t => `${t.name}: ${t.agent_native_score}/100`));
import requests

# List all payment tools with MCP servers
r = requests.get("https://agentnativeregistry.com/api/tools", params={
    "category": "payments",
    "has_mcp": "true"
})
for tool in r.json()["tools"]:
    print(f"{tool['name']}: {tool['agent_native_score']}/100")

Response

{
  "count": 3,
  "total": 126,
  "tools": [
    {
      "id": "stripe",
      "name": "Stripe",
      "agent_native_score": 58,
      "scores": { "discovery": 100, "auth": 100, "pricing": 100, "tooling": null, "reliability": null },
      "checklist": { "has_openapi_spec": true, "has_mcp_server": true, ... },
      ...
    }
  ]
}

POST /api/score

Score a tool against the checklist. Returns an existing score if the tool is in the registry, otherwise scores it on-demand using public checks only.

Request Body

NameTypeDescription
toolNamestring (required)Name of the tool to score
toolUrlstringURL of the tool (improves accuracy)

Examples

curl
JavaScript
Python
curl -X POST https://agentnativeregistry.com/api/score \
  -H "Content-Type: application/json" \
  -d '{"toolName": "Stripe", "toolUrl": "https://stripe.com"}'
const res = await fetch("https://agentnativeregistry.com/api/score", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ toolName: "Stripe", toolUrl: "https://stripe.com" })
});
const { source, tool } = await res.json();
console.log(`${tool.name}: ${tool.agent_native_score}/100 (${source})`);
import requests

r = requests.post("https://agentnativeregistry.com/api/score", json={
    "toolName": "Stripe",
    "toolUrl": "https://stripe.com"
})
data = r.json()
print(f"{data['tool']['name']}: {data['tool']['agent_native_score']}/100")

Response

{
  "source": "registry",   // or "scored" for on-demand
  "tool": {
    "id": "stripe",
    "name": "Stripe",
    "agent_native_score": 58,
    "checklist": { ... },
    ...
  }
}

MCP Server

JSON-RPC endpoint for Model Context Protocol clients. Supports search_tools, get_score, compare_tools, and list_categories.

Install

claude mcp add --transport http agent-native-registry https://agentnativeregistry.com/api/mcp

Direct JSON-RPC call

curl
JavaScript
Python
curl -X POST https://agentnativeregistry.com/api/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_score",
      "arguments": { "name": "Stripe" }
    }
  }'
const res = await fetch("https://agentnativeregistry.com/api/mcp", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: { name: "get_score", arguments: { name: "Stripe" } }
  })
});
const { result } = await res.json();
console.log(result.content[0].text);
import requests

r = requests.post("https://agentnativeregistry.com/api/mcp", json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "get_score",
        "arguments": {"name": "Stripe"}
    }
})
print(r.json()["result"]["content"][0]["text"])

Response Headers

All API responses include:

HeaderDescription
X-Request-IdUnique UUID for this request (for debugging)
X-API-VersionCurrent API version (1.0)
X-RateLimit-LimitRequests allowed per window (60)
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetSeconds until rate limit resets

If rate limited, the response includes a Retry-After header with seconds to wait.