--- name: agentsearch-find-agent description: Find, vet and browse AI agents and MCP servers through Luther Systems' AgentSearch — public, free, no auth — over HTTP, MCP or A2A. api: openapi/luthersystems-com-agentsearch-openapi.yml operations: [searchAgents, getAgent, scoreFoundAgent, browseAgents, getStats] mcp: https://agentsearch.luthersystems.com/api/mcp a2a: https://agentsearch.luthersystems.com/api/a2a generated: '2026-09-19' method: generated source: Generated by API Evangelist from openapi/luthersystems-com-agentsearch-openapi.yml, the live MCP tools/list, https://agentsearch.luthersystems.com/api-docs and /llms.txt. Not provider-published. --- # Find an agent with AgentSearch AgentSearch (agentsearch.luthersystems.com) is a daily-scored index of ~4,300 AI agents and MCP servers. Every surface is public, needs no key, and is rate-limited only on a best-effort basis (~60 requests per minute per IP). Pick the surface you already speak: - **MCP** — `POST https://agentsearch.luthersystems.com/api/mcp` (Streamable HTTP), or `npx -y @luthersystems/agentsearch` for stdio. Tools: `search`, `agent_details`, `found_agent`, `browse`, `stats`. - **HTTP** — the operations below, base `https://agentsearch.luthersystems.com`. - **A2A** — JSON-RPC `message/send` at `/api/a2a`; skills carry the same five ids. ## 1. Search by what you need done — `searchAgents` `POST /api/search` with `{"query": "read invoice PDFs", "limit": 5}`. Results are `SearchResult` objects ranked by `final_score = query_fit × overall_score`, each with a one-line `reasoning`. Treat `query_fit` (does it match the task) and `overall_score` (is it any good) separately. ## 2. Vet one candidate — `getAgent` `GET /api/agent/{name}` with the exact indexed name (URL-encode slashes, e.g. `upstash%2Fcontext7`). Returns `AgentDetails`: `blocker.status` (alive/dead/timeout/error), layer scores (fame, usability, functionality, call_graph, overall) and the raw source payload. A **404** means the agent is not in the index — go to step 3, do not retry. ## 3. Score something not yet indexed — `scoreFoundAgent` `POST /api/found-agent` with `{"url": "...", "query": "optional task"}` runs the same crawl, probe and rubric live. This does **not** add the agent to the index; the provider documents `POST /api/submit-agent` for that (it is not in the OpenAPI or the tool list). ## 4. Walk or summarise the whole index — `browseAgents`, `getStats` `GET /api/browse?page=1&page_size=100` pages every agent by overall score; `GET /api/stats` returns totals, source and license breakdowns and the call graph. ## Rules - No authentication anywhere; do not send credentials. - All operations are reads; nothing here is idempotency-sensitive or reversible-sensitive. - Only `getAgent` declares a non-2xx (404). Other failures are undocumented — back off on 429/5xx. - Scores come from an LLM-judged rubric (methodology: github.com/luthersystems/agentsearch/blob/main/docs/methodology.md); surface the `reasoning` to the user rather than the bare number.