protogrid

Find MCP servers by intent and get exactly how to connect to them right now. No proxying.

Should I use this

Quality & Safety

A
Description quality
80%
Schema completeness
97%
Naming quality
100%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'get_connection' description contains placeholder textin get_connection
  • LOWTool 'get_server' description lacks action verbin get_server
  • LOWTool 'list_tools' description lacks action verbin list_tools
  • INFOTool description contains placeholder or incomplete textin get_connection

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~843Tokens (tool definitions)
~1.8 KBTypical response size
Moderate attention impact (0.66% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "registry": {
      "url": "https://api.protogrid.dev/mcp"
    }
  }
}

Remote endpoints

https://api.protogrid.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search(q, limit, class, transport, category, ...)

Hybrid (keyword + semantic) search over servers and their tools. Filter by connection class to keep only what you can reach autonomously (R0, R1).

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "What you want to do, in plain words, e.g. 'send an email' or 'query postgres'"
    },
    "limit": {
      "description": "Results to return (default 10)",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "class": {
      "description": "Connection classes to keep, e.g. ['R0','R1']",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "R0",
          "R1",
          "R2",
          "L0",
          "unknown"
        ]
      }
    },
    "transport": {
      "type": "string",
      "enum": [
        "streamable-http",
        "sse"
      ]
    },
    "category": {
      "type": "string",
      "enum": [
        "developer-tools",
        "databases",
        "web-search",
        "files-storage",
        "communication",
        "productivity",
        "ai-ml",
        "cloud-devops",
        "finance",
        "commerce",
        "maps-travel",
        "media",
        "science-health",
        "security",
        "iot-automation",
        "legal-government"
      ]
    },
    "min_trust": {
      "description": "Minimum trust score 0-100",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "flags": {
      "description": "Trust flags that must all be present",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "multi-version-spam",
          "duplicate-repo",
          "no-repository",
          "no-connection",
          "deprecated",
          "unreachable",
          "blocked",
          "deleted"
        ]
      }
    },
    "exclude_flags": {
      "description": "Trust flags, any of which excludes a server, e.g. ['multi-version-spam','duplicate-repo']",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "multi-version-spam",
          "duplicate-repo",
          "no-repository",
          "no-connection",
          "deprecated",
          "unreachable",
          "blocked",
          "deleted"
        ]
      }
    }
  },
  "required": [
    "q"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_server(name, schemas)

Official server.json plus connectability (class, remotes with auth/health, packages), current tools, trust breakdown and identity for one server name.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Official reverse-DNS name, e.g. io.github.acme/acme-mcp"
    },
    "schemas": {
      "description": "Include tool input/output schemas (default false; use list_tools for full schemas)",
      "type": "boolean"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_tools(name, limit, cursor)

Every current tool of a server with full input/output schemas, paginated by tool name.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Official reverse-DNS name"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "next_cursor from the previous page",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_connection(name, target)

Minimal connection block for the preferred remote (or package) with ${SECRET} placeholders, formatted for a target client. Secrets are never accepted or returned.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Official reverse-DNS name"
    },
    "target": {
      "description": "Output format (default mcpServers)",
      "type": "string",
      "enum": [
        "mcpServers",
        "vscode",
        "cursor",
        "claude-code-cli",
        "codex-toml",
        "opencode",
        "gemini",
        "goose"
      ]
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools