| q | No | Alias for query — the same free-text search (name, description, tags, or skills; exact name matches first). Filtered exactly like query. When both are given they must agree, else 422. A whitespace-only value is treated as absent. | |
| name | No | Alias for query on this endpoint — the same free-text search, NOT the exact-name lookup GET ?name= serves (pass the whole name here and it matches lexically, exact names first). When both query and name are given they must agree, else 422. A whitespace-only value is treated as absent. | |
| limit | No | Maximum number of agents to return (1–100). | |
| query | No | Free-text search query: matches agent names, descriptions, tags (capabilities), and skills (capability-manifest name and description). Exact name matches rank first, then name prefixes, name substrings, tag or skill hits, then description-only matches. A term that matches nothing returns an empty page. Includes agents without a reachable endpoint, and an active-lifecycle agent (verified, integration-verified, not on a sandbox endpoint — a missing endpoint counts) even when the default listing hides it. Mutually exclusive with query_embedding. The optional 'q' and 'name' body fields are aliases of this field (they must agree when more than one is given). | |
| offset | No | Number of matching agents to skip (pagination offset). | |
| sort_by | No | Sort order: reputation | recent | name. Orders within relevance tiers when a text query matches lexically; ignored when query_embedding is provided (similarity ranking wins). | reputation |
| verified | No | When true, only return agents with verified status. | |
| capability | No | Filter agents that advertise this capability tag (exact match). | |
| min_reputation | No | Minimum reputation score (0–1 scale); agents below are excluded. | |
| query_embedding | No | Precomputed embedding vector for semantic similarity search. Mutually exclusive with query. | |
| include_semantic | No | When false (default), a query returns only lexical matches — a term that matches nothing is an empty page, and semantic candidates are never padded on. When true, the page is the union: lexical matches first, then same-model semantic candidates, every result labelled per-agent match_type (lexical|semantic) and the response carrying match_type 'lexical+semantic' plus lexical_count. | |
| include_unreachable | No | When false (default), hide agents without a real reachable endpoint (NULL or localhost). Set true to include test/sandbox agents. Ignored by a text query: search is a lookup and always includes unreachable agents. | |