Search and filters
Query and refine the public Clawdbase registry.
Search matches names, repositories, source URLs and provider handles. Results are merged from registered and discovered sources, deduplicated by canonical destination and ranked for the query.
Registry controls
- Type: all, Agent, Skill, Creator, X account or Telegram account.
- Source: all, registered or discovered.
- Score: all, high, medium or lower Trust bands.
- Category: a normalized category value.
- Sort: score descending, score ascending, name or registered first.
Public query endpoint
/api/agentscurl 'https://clawdbase.ai/api/agents?q=assistant&type=agent&source=all&sort=score_desc&page=0&pageSize=20'The response contains data, total, page, pageSize, and cursor metadata. page is zero-based. pageSize is validated against the server maximum.
Supported parameters
| Parameter | Values |
|---|---|
q | Search text |
type | all, agent, skill, creator, x_account, tg_account |
source | all, registered, scraped |
sort | score_desc, score_asc, name_asc, registered_first |
filter | all, blue, amber, red |
category | Category string |
page, pageSize | Pagination |
cursor, limit | Cursor aliases supported by the parser |
Invalid enum values return 400 rather than being silently accepted.
Request examples
Search registered Skills and sort by highest score:
curl --get 'https://clawdbase.ai/api/agents' \
--data-urlencode 'q=payments' \
--data-urlencode 'type=skill' \
--data-urlencode 'source=registered' \
--data-urlencode 'sort=score_desc' \
--data-urlencode 'pageSize=24' \
--data-urlencode 'page=0'Browse all Page types with the blue score filter:
const params = new URLSearchParams({
source: 'all',
type: 'all',
filter: 'blue',
sort: 'registered_first',
pageSize: '24',
page: '0',
})
const response = await fetch(`/api/agents?${params}`)
if (!response.ok) throw new Error(`Registry request failed: ${response.status}`)
const page = await response.json()Pagination rules
page is zero-based. pageSize and limit are aliases constrained by the same server maximum. A numeric cursor is interpreted as the page position by the current parser. Preserve the active query, filters and sort when loading another page so users do not see a mixed result set.
The API enriches results with a stable key and canonical href, then deduplicates overlapping registered and scraped records. Clients should render the returned canonical href rather than reconstructing a route from a name.
Interface states
- While a query changes, preserve the current results until the next response is ready.
- For no matches, show the active query and filters with one Reset filters action.
- For
400, identify the invalid filter or query value rather than showing an empty registry. - For transient server failures, preserve the last successful result when possible and expose a retry.
- Debounce free-text input and cancel obsolete requests when building a custom registry client.
Performance notes
Search responses use short-lived server caching when Redis is configured, with longer caching for browse pages than text queries. Clients should not assume a fixed cache duration. Use URL search parameters as the shareable state so refresh, back navigation and copied links reproduce the same registry view.