{"name":"Arclan Registry API","version":"1.0","baseUrl":"https://arclan.ai","description":"Machine-evaluated registry of MCP servers. Every server is validated, scored, and monitored continuously.","endpoints":[{"method":"GET","path":"/api/registry","description":"List MCP servers. Defaults to connectable states (active, auth_gated, mcp_partial).","params":{"status":"Filter by state. Values: active | auth_gated | mcp_partial | degraded | stdio | unreachable | invalid | zombie | all. Default: connectable.","capability":"Filter by tool name or description keyword.","min_score":"Minimum score (0–100). Default: 0.","transport":"Filter by transport type (http, stdio).","include":"Comma-separated extra blocks: trust, auth, capabilities, flags.","production_safe":"true = uptime_7d > 0.97 AND handshake_success_rate > 0.95 AND status active.","min_uptime":"Minimum 7-day uptime fraction (0.0–1.0).","max_latency_p95":"Maximum p95 latency in ms.","auth_type":"Filter by auth type: none | bearer | api_key | oauth.","read_only":"true = only servers with no write-classified tools.","limit":"Results per page. Max 200. Default 50.","offset":"Pagination offset. Default 0."},"example":"/api/registry?status=active&limit=10"},{"method":"GET","path":"/api/registry/:id","description":"Get a single server by ID.","example":"/api/registry/123"},{"method":"GET","path":"/api/recommend","description":"Ranked MCP server recommendations with reason codes. Scores by production safety, keyword relevance, registry score, latency, and freshness.","params":{"q":"Task or capability query (optional). Searched across name, description, and tool names.","auth":"Include auth-required servers (default: true). Set false to exclude.","production_safe":"true = only servers with uptime_7d > 97% and handshake_success_rate > 95%.","read_only":"true = only servers with no write-classified tools.","limit":"Max results 1-20. Default 5."},"example":"/api/recommend?q=web+search&production_safe=true&limit=5"},{"method":"GET","path":"/api/stats","description":"Registry-wide counts by state, total tools, average score, and pending candidates.","example":"/api/stats"},{"method":"POST","path":"/api/submit","description":"Submit an MCP server URL for validation.","body":{"url":"string (required)","transport":"http | stdio (optional, default: http)"},"example":"POST /api/submit  { \"url\": \"https://example.com/mcp\" }"},{"method":"POST","path":"/mcp","description":"Arclan itself as an MCP server (Streamable HTTP, JSON-RPC 2.0). Use this to query the registry from inside an agent.","tools":["query_registry","get_server","recommend_server","report_server"],"example":"POST /mcp  { \"jsonrpc\": \"2.0\", \"method\": \"initialize\", ... }"}],"states":{"active":"Full MCP handshake passed. Connectable.","auth_gated":"Reachable but requires credentials.","degraded":"Was active, now intermittently failing.","mcp_partial":"Responds to HTTP but fails full MCP compliance.","stdio":"Local-only transport. Not network callable.","unreachable":"No HTTP response. May recover.","invalid":"HTTP works but not an MCP server.","zombie":"Was validated, now permanently dark."}}