Skip to main content
Glama

Search the registry board

search_servers
Read-onlyIdempotent

Finds servers on the 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 20 servers per page with name, host, status, tool count and tokens. Page numbers go to 20; after that pass the next value of the previous answer as cursor. Sorting by the estimate, latency, protocol or registry date needs a query or a small status; on a bigger list the answer keeps the token order and says so in sort.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number, 1 to 20, twenty servers each; default 1. Not with cursor.
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.
cursorNoThe `next` value of a previous answer, to continue from there; replaces page
statusNook = answers and lists tools; auth = needs credentials; payment = 402; newer_protocol = a protocol newer than the SDK; down = no valid answer for two days or more; noanswer = no valid answer for less than two days. Omit for all.

Output Schema

NameRequiredDescriptionDefault
nextNoThe cursor for the next page, when hasNext
pageNoThe page number, absent when a cursor was used
sortYesThe sort that was applied
hasNextYes
serversYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / servers / items / properties / status / description
      Previous value: -"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), unprobed (an entry the probe does not run yet: an MCPB bundle, an OCI image, a NuGet or Cargo package, or nothing to connect to), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol, unsupported_version (rejects the protocol version the client asks for); package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed. A failure counts as down only after two days of failed probes (see failingSince)"New value: +"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), unprobed (an entry the probe does not run yet: an MCPB bundle, an OCI image, a NuGet or Cargo package, or nothing to connect to), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol, unsupported_version (rejects the protocol version the client asks for); package servers also install_failed, no_bin, needs_env, needs_args, needs_network, needs_old_sdk (starts and lists its tools only with mcp<2), crashed. A failure counts as down only after two days of failed probes (see failingSince)"
  2. Changed1 schema field changed
    • changedOutput schema / properties / servers / items / properties / status / description
      Previous value: -"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), unprobed (an entry the probe does not run yet: an MCPB bundle, an OCI image, a NuGet or Cargo package, or nothing to connect to), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol; package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed. A failure counts as down only after two days of failed probes (see failingSince)"New value: +"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), unprobed (an entry the probe does not run yet: an MCPB bundle, an OCI image, a NuGet or Cargo package, or nothing to connect to), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol, unsupported_version (rejects the protocol version the client asks for); package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed. A failure counts as down only after two days of failed probes (see failingSince)"
  3. Changed1 schema field changed
    • changedOutput schema / properties / servers / items / properties / status / description
      Previous value: -"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol; package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed. A failure counts as down only after two days of failed probes (see failingSince)"New value: +"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), unprobed (an entry the probe does not run yet: an MCPB bundle, an OCI image, a NuGet or Cargo package, or nothing to connect to), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol; package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed. A failure counts as down only after two days of failed probes (see failingSince)"
  4. Changed3 schema fields changed
    • changedInput schema / properties / status / description
      Previous 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."New value: +"ok = answers and lists tools; auth = needs credentials; payment = 402; newer_protocol = a protocol newer than the SDK; down = no valid answer for two days or more; noanswer = no valid answer for less than two days. Omit for all."
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "ok",
      -  "auth",
      -  "payment",
      -  "newer_protocol",
      -  "down"
      -]New value: +[
      +  "ok",
      +  "auth",
      +  "payment",
      +  "newer_protocol",
      +  "down",
      +  "noanswer"
      +]
    • changedOutput schema / properties / servers / items / properties / status / description
      Previous value: -"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; package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed"New value: +"ok (answered initialize and tools/list), auth (needs credentials), payment (402), needs_url (every URL in the registry has a placeholder each user fills in; not called), not_found, protocol_error (not MCP), timeout, dns, tls, refused, server_error, rate_limited, newer_protocol; package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed. A failure counts as down only after two days of failed probes (see failingSince)"
  5. Changed6 schema fields changed
    • changedInput schema / properties / cursor / description
      Previous value: -"The `next` value of a previous answer, to continue from there"New value: +"The `next` value of a previous answer, to continue from there; replaces page"
    • addedInput schema / properties / page / description
      Added value: +"Page number, 1 to 20, twenty servers each; default 1. Not with cursor."
    • changedInput schema / properties / query / description
      Previous value: -"Words to match, three or more characters each"New 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"
    • changedInput schema / properties / status / description
      Previous value: -"ok = answers and lists tools"New 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: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "hasNext": {
      +      "type": "boolean"
      +    },
      +    "next": {
      +      "description": "The cursor for the next page, when hasNext",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "page": {
      +      "description": "The page number, absent when a cursor was used",
      +      "type": "integer"
      +    },
      +    "servers": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "claudeTokens": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Exact count from the Anthropic count_tokens endpoint, names as published"
      +          },
      +          "host": {
      +            "description": "The endpoint host",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "The registry name, io.github.owner/name",
      +            "type": "string"
      +          },
      +          "page": {
      +            "description": "The server's page on the board",
      +            "type": "string"
      +          },
      +          "protocolVersion": {
      +            "description": "The MCP protocol version the server negotiated",
      +            "type": [
      +              "string",
      +              "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; package servers also install_failed, no_bin, needs_env, needs_args, needs_network, crashed",
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "The title the registry gives",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "toolCount": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "How many tools tools/list returned"
      +          },
      +          "toolsTokens": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "o200k_base estimate over the compact JSON of the tool definitions; the exact count is about 1.9 times this at the median"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "host",
      +          "status",
      +          "page"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sort": {
      +      "description": "The sort that was applied",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "sort",
      +    "hasNext",
      +    "servers"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / page / maximum
      Previous value: -1000New value: +20
  7. Changed1 schema field changed
    • changedInput schema / properties / page / maximum
      Previous value: -20New value: +1000
  8. First observed

TDQS

A4.8/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, but the description adds substantive traits they cannot express: default ordering is exact Claude token cost descending, empty query returns the full ranked board, paging caps at 20, and continuation uses the `next` value as `cursor`. It also discloses a non-obvious fallback: when sorting by estimate, latency, protocol or registry date on a bigger list, the answer keeps token order and says so in `sort`.

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

Conciseness4/5

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

Front-loaded with purpose and defaults, then alternatives, then returns and paging mechanics – a sensible information order. It is dense and slightly overpacked (the return-field list is partly redundant given the output schema), but almost every clause carries operative information.

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?

For a 5-parameter, optional-only search tool with full schema coverage, annotations and an output schema, the description covers the remaining unknowns: default ordering, whole-board behavior, pagination limits and cursor handoff, and sort degradation. An agent can call this correctly on the first attempt.

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 the baseline is 3, but the description goes beyond it by explaining prefix matching with a concrete example ('git copilot' finds GitHub Copilot servers), the three-character minimum, and that `cursor` replaces `page`. Minor gap: it does not elaborate the sort enum values beyond the schema's own explanation.

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 board') plus the matched fields (name, title, description, host) and the default ranking rule. Siblings are named explicitly, so an agent can distinguish search_servers from lookup_server, compare_servers and registry_summary without opening a 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?

Gives explicit when-to-use routing: 'use lookup_server once you have a name, compare_servers for a few side by side, registry_summary for the totals.' It also states the degenerate case (no query, no filter ranks the whole board) and warns that some sorts need a query or a status filter.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.