Skip to main content
Glama

Search the board

search_servers
Read-onlyIdempotent

Find MCP servers by name, title, description, or host, filter by status, and rank results by Claude token cost to discover servers or identify expensive and cheap ones.

Instructions

Finds servers on the public board by words in their name, title, description or host, with optional filters, sorted by exact Claude token cost (highest first) by default. With no query and no filter it ranks the whole board, so page 1 is the most expensive servers in the registry and sort=claude-asc the cheapest. Use it to discover servers or to rank them by cost; use lookup_server once you have a name, compare_servers for a few side by side, registry_summary for the totals. Returns up to twenty servers per page with name, host, status, tool count and tokens; hasNext says whether a next page exists.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number, 1 to 20, twenty servers each; default 1
sortNoclaude = exact Claude tokens, highest first (default); claude-asc = lowest first; tokens = the o200k_base estimate; tools = tool count; latency = initialize time; name; updated = registry date
queryNoWords to match, three or more characters each, as prefixes: "git copilot" finds the GitHub Copilot servers. Omit for the whole list.
statusNook = answers and lists tools; auth = needs credentials; payment = 402; newer_protocol = a protocol newer than the SDK; down = every other failure. Omit for all.

Output Schema

NameRequiredDescriptionDefault
nextNoCursor for the next page, when hasNext
pageNo
sortNoThe sort that was applied; a big unfiltered list keeps the token order
fieldsNoWhat claude_tokens, claude_tokens_cc and tools_tokens mean
hasNextNo
perPageNo
serversNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.3.4
    • addedInput schema / properties / page / description
      Added value: +"Page number, 1 to 20, twenty servers each; default 1"
    • addedInput schema / properties / query / description
      Added value: +"Words to match, three or more characters each, as prefixes: \"git copilot\" finds the GitHub Copilot servers. Omit for the whole list."
    • addedInput schema / properties / sort / description
      Added value: +"claude = exact Claude tokens, highest first (default); claude-asc = lowest first; tokens = the o200k_base estimate; tools = tool count; latency = initialize time; name; updated = registry date"
    • addedInput schema / properties / status / description
      Added value: +"ok = answers and lists tools; auth = needs credentials; payment = 402; newer_protocol = a protocol newer than the SDK; down = every other failure. Omit for all."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "fields": {
      +      "description": "What claude_tokens, claude_tokens_cc and tools_tokens mean",
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "hasNext": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "next": {
      +      "description": "Cursor for the next page, when hasNext",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "page": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "perPage": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "servers": {
      +      "items": {
      +        "properties": {
      +          "auth_scheme": {
      +            "description": "The WWW-Authenticate scheme of a server that needs auth",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "claude_tokens": {
      +            "description": "Exact Claude count, names as published",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "claude_tokens_cc": {
      +            "description": "Exact Claude count with the Claude Code prefix",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "host": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "http_status": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "init_ms": {
      +            "description": "initialize latency, milliseconds",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "description": "The registry name; the page on the board is https://mcpcost.ulehla.dev/s/<name>",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "protocol_version": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "shown_tokens": {
      +            "description": "The number the board shows: exact when it exists, else the estimate",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "ok (answered initialize and tools/list), auth (needs credentials), payment (402), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol, or for a local command: install_failed, no_bin, needs_env, needs_args, needs_network, crashed",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "tool_count": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "tools_tokens": {
      +            "description": "o200k_base estimate",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "transport": {
      +            "enum": [
      +              "streamable-http",
      +              "sse",
      +              "stdio"
      +            ],
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "sort": {
      +      "description": "The sort that was applied; a big unfiltered list keeps the token order",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world and non-destructive, so the safety profile is covered. The description adds behavior the annotations cannot: default sort is by exact Claude token cost descending, an empty query ranks the entire board, pages hold twenty servers, and hasNext signals pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four front-loaded sentences: what it does, the key edge case, which sibling to use instead, and what comes back. No sentence is redundant with the other.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists, the description still summarizes the return fields and pagination flag, and it covers the degenerate empty-query case an agent would otherwise have to infer. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description goes further by explaining the consequence of omitting query and status ("no query and no filter it ranks the whole board") and by contrasting the default descending cost sort with sort=claude-asc, which the enum alone only hints at.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("finds servers on the public board") plus the matchable fields (name, title, description, host) and the default ordering. The agent can distinguish it from lookup_server and compare_servers without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes: "Use it to discover servers or to rank them by cost; use lookup_server once you have a name, compare_servers for a few side by side, registry_summary for the totals." Each alternative is named with the condition that selects it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.