$ curl api/
Query the AgentRoot registry programmatically. Base URL: https://agentroot.io
List all registered manifests. Filters compose with AND — pass any combination, the response is the intersection. The web registry page's chip set and search-bar token grammar both lower to these params; deep-link any state.
| Param | Type | Description |
|---|---|---|
| q | string | Substring match on manifest.domain (case-insensitive) |
| type | string | Only manifests with at least one record of this type: agent, mcp, skill, a2a, payment |
| has_payment | bool | Only manifests with at least one record of type payment |
| recent | string | Only manifests verified within the last N days. Accepts true (defaults to 7), 7d, or a bare integer |
| domain | string | Substring filter on manifest.domain — pair with q only if you want stricter matching |
| tld | string | Domain TLD suffix — .ai or ai both work |
| capability | string | Manifests where at least one record's capabilities includes this substring |
| protocol | string | Manifests where at least one record's protocol matches |
| page | number | Page number (default: 1) |
| limit | number | Items per page (default: 20, max: 100) |
Get a specific manifest by domain. Returns the full manifest with all records, subdomain references, and verification status.
The subdomains field is enriched here into { domain, total_records } objects so a UI can render counts without a second fetch. In the manifest you serve from your own domain, it is just a string array of labels.
Get a specific record within a manifest by its ID.
Search across all records in the registry. This is the primary cross-manifest search endpoint — what the CLI's agent-root search and the web UI both call.
| Param | Type | Description |
|---|---|---|
| q | string | Search name, domain, description |
| type | string | Filter by type: agent, mcp, skill, a2a, payment |
| capability | string | Filter records by a capability keyword (matches capabilities[]) |
| protocol | string | Filter payment records by protocol (x402, mpp, a2a-payments, ...) |
| method | string | Filter payment records by accepted method |
| asset | string | Filter payment records by accepted asset (USDC, USD, ...) |
| payment | string | Convenience flag for "payment-related" rows (true / false) |
| page | number | Page number (default: 1) |
| limit | number | Items per page (default: 20, max: 100) |
Legacy. New integrations should use GET /api/records instead — it returns the same shapes plus pagination metadata, and is what the CLI and web UI both call. /api/discover is preserved for back-compat and currently caps results at 100.
| Param | Type | Description |
|---|---|---|
| q | string | Natural language search query |
| type | string | Filter by type: agent, mcp, skill, a2a, payment |
List every curated collection. Editorial groupings of records — e.g. featured-domains, payments, devtools.
Open a single collection by slug. Returns its items, each pointing at a manifest or record.
Submit a domain for registration. AgentRoot will query the _agentroot.<domain> DNS TXT record, fetch the manifest, and index all records.
| Param | Type | Description |
|---|---|---|
| domain | string | Domain to register (required) |
Submit a SKILL.md URL directly for unverified listing. Auto-converts GitHub blob URLs to raw content URLs.
| Param | Type | Description |
|---|---|---|
| url | string | URL to a SKILL.md file (required) |
Liveness + DB connectivity check. Returns 200 when the registry is healthy, non-2xx otherwise. The CLI's agent-root health wraps this so it can be used as a CI gate.
Registry statistics. Returns manifest and record counts broken down by type and status. Intended for the public stats page on agentroot.io — not part of the CLI surface.
SVG verification badge for a record. Embed in READMEs or marketing pages so visitors can confirm the record is currently indexed and verified.