Find the right MCP server or skill for a task: ranked, install-ready results from 50K+ servers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Find MCP servers that provide a capability for a task. Pass a short capability phrase (e.g. "read Linear issues"), not the user's full request. Results are ranked provisionally (no outcome evidence yet) and each includes an install snippet for the given runtime. Lookups are free.
Short capability phrase, 1-200 characters
Only mcp_server in this release
Caller's runtime; selects the install snippet
Optional capability tag from lookupd's taxonomy to prefer
Default 5
Only registered publishers (none yet)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http lookupd https://api.lookupd.com/mcp
Find MCP servers that provide a capability for a task. Pass a short capability phrase (e.g. "read Linear issues"), not the user's full request. Results are ranked provisionally (no outcome evidence yet) and each includes an install snippet for the given runtime. Lookups are free.
| Argument | Type | Description |
|---|---|---|
| kind | string | Only mcp_server in this release |
| task* | string | Short capability phrase, 1-200 characters |
| runtime | string | Caller's runtime; selects the install snippet |
| capability | string | Optional capability tag from lookupd's taxonomy to prefer |
| max_results | integer | Default 5 |
| verified_only | boolean | Only registered publishers (none yet) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task"
],
"properties": {
"kind": {
"enum": [
"mcp_server"
],
"type": "string",
"description": "Only mcp_server in this release"
},
"task": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Short capability phrase, 1-200 characters"
},
"runtime": {
"enum": [
"claude-code",
"claude-desktop",
"cursor",
"vscode",
"generic"
],
"type": "string",
"description": "Caller's runtime; selects the install snippet"
},
"capability": {
"enum": [
"web-search",
"web-fetch",
"browser-automation",
"scraping",
"http-api",
"pdf-extract",
"document-ocr",
"docs-office",
"spreadsheets",
"file-system",
"git",
"github",
"gitlab",
"code-execution",
"code-search",
"ci-cd",
"kubernetes",
"cloud-aws",
"cloud-gcp",
"cloud-azure",
"database-sql",
"database-nosql",
"vector-search",
"memory",
"monitoring",
"logs",
"security-scan",
"auth-identity",
"email",
"calendar",
"chat-slack",
"chat-discord",
"chat-teams",
"issue-tracking",
"project-management",
"notion",
"crm",
"payments",
"ecommerce",
"finance-market",
"maps-geo",
"weather",
"translation",
"speech",
"image-generation",
"video",
"music",
"other"
],
"type": "string",
"description": "Optional capability tag from lookupd's taxonomy to prefer"
},
"max_results": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "Default 5"
},
"verified_only": {
"type": "boolean",
"description": "Only registered publishers (none yet)"
}
}
}Full details for one entry: raw server.json, install snippets for the runtime, lookupd metadata. Pass the registry name (e.g. io.github.acme/linear-mcp), or, for a server already in your MCP config, its remote url or its npm/PyPI package; that finds the registry name to use with report_outcome. When several entries launch the same url or package, `matches` lists them all, most likely first.
| Argument | Type | Description |
|---|---|---|
| url | string | Remote URL from the MCP config |
| name | string | Registry name |
| package | string | npm or PyPI package from the MCP config, e.g. @acme/pdf-mcp |
| runtime | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"url": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Remote URL from the MCP config"
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Registry name"
},
"package": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "npm or PyPI package from the MCP config, e.g. @acme/pdf-mcp"
},
"runtime": {
"enum": [
"claude-code",
"claude-desktop",
"cursor",
"vscode",
"generic"
],
"type": "string"
}
}
}Probe status of an entry: whether its remote endpoint is up, needs a login (auth_required), is down or dead, with 7-day uptime, median latency, tool count and the last probe. Stdio-only servers are not_probeable.
| Argument | Type | Description |
|---|---|---|
| name* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
}
}After a task used an MCP server, report once per server whether it worked: servers found via lookupd in this conversation and servers already installed alike. `entry` is the registry name; for an installed server, get it from get_entry with the server's url or package (skip the report if there is no entry). `success` is required. Structured fields only (entry, capability_tag, success, latency_bucket, runtime, error_class); never task text, prompts or paths. Rankings improve from these reports.
| Argument | Type | Description |
|---|---|---|
| entry* | string | |
| runtime | string | |
| success* | boolean | |
| error_class | string | |
| capability_tag | string | |
| latency_bucket | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"entry",
"success"
],
"properties": {
"entry": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"runtime": {
"enum": [
"claude-code",
"claude-desktop",
"cursor",
"vscode",
"generic"
],
"type": "string"
},
"success": {
"type": "boolean"
},
"error_class": {
"enum": [
"auth",
"timeout",
"schema",
"tool_error",
"other"
],
"type": "string"
},
"capability_tag": {
"enum": [
"web-search",
"web-fetch",
"browser-automation",
"scraping",
"http-api",
"pdf-extract",
"document-ocr",
"docs-office",
"spreadsheets",
"file-system",
"git",
"github",
"gitlab",
"code-execution",
"code-search",
"ci-cd",
"kubernetes",
"cloud-aws",
"cloud-gcp",
"cloud-azure",
"database-sql",
"database-nosql",
"vector-search",
"memory",
"monitoring",
"logs",
"security-scan",
"auth-identity",
"email",
"calendar",
"chat-slack",
"chat-discord",
"chat-teams",
"issue-tracking",
"project-management",
"notion",
"crm",
"payments",
"ecommerce",
"finance-market",
"maps-geo",
"weather",
"translation",
"speech",
"image-generation",
"video",
"music",
"other"
],
"type": "string"
},
"latency_bucket": {
"enum": [
"lt1s",
"lt5s",
"lt30s",
"gte30s"
],
"type": "string"
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.