Skip to main content
Glama

cyanheads-mcp-server

Server Details

Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/cyanheads-mcp-server
GitHub Stars
1
Server Listing
cyanheads-mcp-server

Available Tools

2 tools
cyanheads_describe_entryDescribe Fleet Tool or ServerA
Read-only
Inspect

Return the description and install snippets for a named tool or server. For tools: the description and the server it belongs to. For servers: local (stdio, via npx) install snippets for every published server, plus remote (HTTP) connection snippets when a hosted endpoint exists — for every supported client, or one client via the client parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhether name refers to a tool or server. Omit to auto-detect: names containing underscores are treated as tools; names containing hyphens are treated as servers.
nameYesTool name (snake_case, e.g. "earthquake_search") or server name (kebab-case, e.g. "earthquake-mcp-server"). 1-64 characters. Use cyanheads_search_catalog to discover valid names.
clientNoReturn install snippets for this client only (both local and remote transports when available). Omit to return snippets for all supported clients.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
resultNoThe resolved entry — either a tool detail or a server detail depending on the resolved kind.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the description doesn't need to state that it's read-only. The description adds meaningful behavioral context beyond the schema: it explains that server install snippets include local (stdio via npx) for every published server and remote (HTTP) when a hosted endpoint exists, and how the `client` parameter influences output (one client vs all). There is no contradiction with annotations, and the openWorldHint=false is consistent with the enum-constrained `kind` and `client` parameters.

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?

The description is a single, well-structured paragraph of three sentences that front-loads the core purpose, immediately explains the tool-vs-server distinction, and then details output variations. Every sentence earns its place; there is zero fluff or redundant restating of the title or annotations.

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

Completeness4/5

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

Given the tool's moderate complexity (3 parameters, 2 enums, output schema present), the description is nearly complete: it covers purpose, scoping, and output shape. The only minor gap is that it doesn't spell out what exactly the 'description' field contains for a server or tool, but the output schema presumably covers return values. Since an output schema exists, the description doesn't need to explain return values in depth, so this is quite complete.

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% and includes detailed parameter descriptions, so the baseline is 3. The description adds value by elaborating on what the returned output contains per kind and client, and by explaining the auto-detection logic for `kind` (underscores vs hyphens) which reinforces and extends the schema description. It clearly maps the `client` parameter to the behavior of limiting output. This goes beyond the schema, warranting a 4.

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?

The description uses a clear verb-resource structure ('Return the description and install snippets') and explicitly distinguishes behavior for tools vs servers, which differentiates it from its only sibling tool (cyanheads_search_catalog, which discovers names). It is immediately clear what this tool does and what class of objects it operates on.

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?

The description and parameter schema provide explicit usage guidance: the `kind` parameter explains when to set it vs auto-detect, and the `name` parameter explicitly says to use cyanheads_search_catalog to discover valid names. This is an explicit when/alternative routing (sibling tool for discovery, this tool for retrieval) and clarifies optional vs required parameters.

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

cyanheads_search_catalogSearch Fleet Tools and ServersA
Read-only
Inspect

Search fleet tools and servers by natural-language description. Returns ranked matches with brief summaries and the server each tool belongs to. Use scope "servers" to find which server handles a workflow; use the default scope "tools" to find specific tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1-20). Default 5.
queryYesNatural language search query. Describe what you want to accomplish, a workflow, or a capability area. 1-500 characters.
scopeNoWhat to search. "tools" returns individual tool matches; "servers" returns server-level matches.tools
categoryNoFilter by catalog category. Omit to search all categories.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
scopeNoScope that was searched.
noticeNoGuidance when no results matched — e.g. how to broaden the query or try a different scope. Absent on successful result pages.
resultsNoRanked matches, best first.
serversNoRoll-up of distinct servers across the full match set, before the limit slice. Present only for scope "tools". Ordered by topScore desc (name-tiebroken); capped at 10. Use serversTotal to see how many distinct servers matched in total.
totalCountNoTotal relevant matches before the limit was applied.
serversTotalNoTotal distinct servers in the full match set (before the cap of 10 is applied). Present only when servers is present.
effectiveQueryNoThe query that was searched.

TDQS

A4.4/5.0
Behavior4/5

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

The annotation readOnlyHint=true already discloses the read-only nature,REDUCING the burden. The description adds concrete behavior: returns ranked matches, includes summaries, and reports which server each tool belongs to. It also defines what the two scopes return. No contradiction with annotations. Not perfect because it doesn't hint at result limits or staleness, but the added value is solid.

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?

Two sentences, front-loaded with purpose and key output featuresasi. The scope guidance is placed in the second sentence and earns its place. No filler or repetition of schema content.

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

Completeness4/5

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

The description gives enough for an agent to properly invoke the tool: it explains the two scopes)Skip, notes ranked results with summaries, and the output schema (marked present) covers return structure. The 'category' parameter is not mentioned but is self-explanatory in the schema, and the tool's moderate complexity doesn't require more.

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?

With 100% schema coverage, the baseline is 3. The description compensates by adding meaning to the 'scope' parameter (choose 'servers' for workflows, 'tools' for specifics), which is genuinely useful beyond the schema text. Other parameters (query, limit, category) are adequately covered by their schema descriptions, so no further elaboration needed.

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?

The description opens with the verb 'Search' and the specific resource 'fleet tools and servers', immediately stating what it does. It also disambiguates from the sibling cyanheads_describe_entry by emphasizing natural-language description and ranked matches, making the purpose unmistakable.

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

Usage Guidelines4/5

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

It gives explicit guidance on when to use each scope: 'use scope "servers" to find which server handles a workflow; use default "tools" to find specific tools.' This tells the agent exactly how to select scope. It doesn't explicitly state when NOT to use the tool (e.g., when you need full details of a known entry, use describe_entry), but the clear scope disambiguation compensates.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updates
    • Changedcyanheads_describe_entry6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "result"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: No tool or server with the given name exists in the catalog. `ambiguous_kind`: Name matches both a tool and a server (collision in catalog). `catalog_empty`: Catalog has not finished loading. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "ambiguous_kind",
        +            "catalog_empty"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
    • Changedcyanheads_search_catalog6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "results",
        +      "scope",
        +      "effectiveQuery",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `catalog_empty`: Catalog has not finished loading. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "catalog_empty"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "results",
        -  "scope",
        -  "effectiveQuery",
        -  "totalCount"
        -]
  2. 4 tool updates
    • Removedcyanheads_describe
    • Addedcyanheads_describe_entry
    • Removedcyanheads_search
    • Addedcyanheads_search_catalog
  3. 1 tool update
    • Changedcyanheads_describe1 field changed
      • changedOutput schema / properties / result / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "A resolved tool entry — its description and the server that owns it.",
        -    "properties": {
        -      "description": {
        -        "description": "Brief description of what the tool does.",
        -        "type": "string"
        -      },
        -      "kind": {
        -        "const": "tool",
        -        "description": "Resolved as a tool entry.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "description": "Resolved name (as looked up).",
        -        "type": "string"
        -      },
        -      "server": {
        -        "description": "Server package name that owns this tool.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "name",
        -      "description",
        -      "server"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "description": "A resolved server entry — metadata, optional hosted endpoint, and per-client install snippets.",
        -    "properties": {
        -      "auth": {
        -        "description": "Auth requirement for the hosted deployment (currently always \"none\").",
        -        "type": "string"
        -      },
        -      "description": {
        -        "description": "Brief description of what the server does.",
        -        "type": "string"
        -      },
        -      "displayName": {
        -        "description": "Human-readable server label.",
        -        "type": "string"
        -      },
        -      "endpoint": {
        -        "description": "Streamable HTTP endpoint for the hosted deployment. Absent for local-only (stdio) servers.",
        -        "type": "string"
        -      },
        -      "github": {
        -        "description": "GitHub repository URL.",
        -        "type": "string"
        -      },
        -      "installSnippets": {
        -        "description": "Install instructions: local (stdio) snippets for every server, plus remote (HTTP) snippets when an endpoint exists. Filtered to one client when input.client is set.",
        -        "items": {
        -          "additionalProperties": false,
        -          "description": "A single install instruction entry.",
        -          "properties": {
        -            "client": {
        -              "description": "MCP client this snippet targets.",
        -              "enum": [
        -                "claude-code",
        -                "codex",
        -                "cursor",
        -                "curl",
        -                "gemini",
        -                "streamable-http"
        -              ],
        -              "type": "string"
        -            },
        -            "label": {
        -              "description": "Human-readable install method label.",
        -              "type": "string"
        -            },
        -            "payload": {
        -              "description": "Install payload (JSON fragment or CLI command).",
        -              "type": "string"
        -            },
        -            "transport": {
        -              "description": "Transport this snippet installs — stdio (local) or http (remote).",
        -              "enum": [
        -                "stdio",
        -                "http"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "client",
        -            "transport",
        -            "label",
        -            "payload"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "kind": {
        -        "const": "server",
        -        "description": "Resolved as a server entry.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "description": "Resolved name (as looked up).",
        -        "type": "string"
        -      },
        -      "npm": {
        -        "description": "npm package name (e.g. \"@cyanheads/arxiv-mcp-server\"). Drives the local stdio snippets.",
        -        "type": "string"
        -      },
        -      "requiredEnvVars": {
        -        "description": "Env var names the local (stdio) install requires (e.g. [\"MAILCHIMP_API_KEY\"]). Absent when none.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "toolCount": {
        -        "description": "Number of tools exposed by this server.",
        -        "type": "number"
        -      },
        -      "version": {
        -        "description": "Published version captured at fleet-generation time.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "name",
        -      "displayName",
        -      "description",
        -      "version",
        -      "npm",
        -      "github",
        -      "auth",
        -      "toolCount",
        -      "installSnippets"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "A resolved tool entry — its description and the server that owns it.",
        +    "properties": {
        +      "description": {
        +        "description": "Brief description of what the tool does.",
        +        "type": "string"
        +      },
        +      "kind": {
        +        "const": "tool",
        +        "description": "Resolved as a tool entry.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Resolved name (as looked up).",
        +        "type": "string"
        +      },
        +      "server": {
        +        "description": "Server package name that owns this tool.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "name",
        +      "description",
        +      "server"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "A resolved server entry — metadata, optional hosted endpoint, and per-client install snippets.",
        +    "properties": {
        +      "auth": {
        +        "description": "Auth requirement for the hosted deployment (currently always \"none\").",
        +        "type": "string"
        +      },
        +      "description": {
        +        "description": "Brief description of what the server does.",
        +        "type": "string"
        +      },
        +      "displayName": {
        +        "description": "Human-readable server label.",
        +        "type": "string"
        +      },
        +      "endpoint": {
        +        "description": "Streamable HTTP endpoint for the hosted deployment. Absent for local-only (stdio) servers.",
        +        "type": "string"
        +      },
        +      "github": {
        +        "description": "GitHub repository URL.",
        +        "type": "string"
        +      },
        +      "installSnippets": {
        +        "description": "Install instructions: local (stdio) snippets for every server, plus remote (HTTP) snippets when an endpoint exists. Filtered to one client when input.client is set.",
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "A single install instruction entry.",
        +          "properties": {
        +            "client": {
        +              "description": "MCP client this snippet targets.",
        +              "enum": [
        +                "claude-code",
        +                "codex",
        +                "cursor",
        +                "curl",
        +                "gemini",
        +                "streamable-http"
        +              ],
        +              "type": "string"
        +            },
        +            "label": {
        +              "description": "Human-readable install method label.",
        +              "type": "string"
        +            },
        +            "payload": {
        +              "description": "Install payload (JSON fragment or CLI command).",
        +              "type": "string"
        +            },
        +            "transport": {
        +              "description": "Transport this snippet installs — stdio (local) or http (remote).",
        +              "enum": [
        +                "stdio",
        +                "http"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "client",
        +            "transport",
        +            "label",
        +            "payload"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "server",
        +        "description": "Resolved as a server entry.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Resolved name (as looked up).",
        +        "type": "string"
        +      },
        +      "npm": {
        +        "description": "npm package name (e.g. \"@cyanheads/arxiv-mcp-server\"). Drives the local stdio snippets.",
        +        "type": "string"
        +      },
        +      "requiredEnvVars": {
        +        "description": "Env var names the local (stdio) install requires (e.g. [\"MAILCHIMP_API_KEY\"]). Absent when none.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "toolCount": {
        +        "description": "Number of tools exposed by this server.",
        +        "type": "number"
        +      },
        +      "tools": {
        +        "description": "Every tool this server exposes, each with its name and a brief description — one describe call reveals the full surface without a second lookup.",
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "A single tool exposed by this server.",
        +          "properties": {
        +            "description": {
        +              "description": "Brief description of what the tool does.",
        +              "type": "string"
        +            },
        +            "name": {
        +              "description": "Tool name (snake_case, e.g. \"earthquake_search\").",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "description"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "version": {
        +        "description": "Published version captured at fleet-generation time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "name",
        +      "displayName",
        +      "description",
        +      "version",
        +      "npm",
        +      "github",
        +      "auth",
        +      "toolCount",
        +      "tools",
        +      "installSnippets"
        +    ],
        +    "type": "object"
        +  }
        +]
  4. 1 tool update
    • Changedcyanheads_describe2 fields changed
      • changedInput schema / properties / client / description
        Previous value: -"Return the install snippet for this specific client only. Omit to return snippets for all supported clients."New value: +"Return install snippets for this client only (both local and remote transports when available). Omit to return snippets for all supported clients."
      • changedOutput schema / properties / result / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "description": {
        -        "description": "Brief description of what the tool does.",
        -        "type": "string"
        -      },
        -      "kind": {
        -        "const": "tool",
        -        "description": "Resolved as a tool entry.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "description": "Resolved name (as looked up).",
        -        "type": "string"
        -      },
        -      "server": {
        -        "description": "Server package name that owns this tool.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "name",
        -      "description",
        -      "server"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "auth": {
        -        "description": "Auth requirement for the hosted deployment (currently always \"none\").",
        -        "type": "string"
        -      },
        -      "description": {
        -        "description": "Brief description of what the server does.",
        -        "type": "string"
        -      },
        -      "displayName": {
        -        "description": "Human-readable server label.",
        -        "type": "string"
        -      },
        -      "endpoint": {
        -        "description": "Streamable HTTP endpoint for the hosted deployment.",
        -        "type": "string"
        -      },
        -      "github": {
        -        "description": "GitHub repository URL.",
        -        "type": "string"
        -      },
        -      "installSnippets": {
        -        "description": "Install instructions, one per supported client (or filtered by input.client).",
        -        "items": {
        -          "additionalProperties": false,
        -          "description": "A single install instruction entry.",
        -          "properties": {
        -            "client": {
        -              "description": "MCP client this snippet targets.",
        -              "enum": [
        -                "claude-code",
        -                "codex",
        -                "cursor",
        -                "curl",
        -                "gemini",
        -                "streamable-http"
        -              ],
        -              "type": "string"
        -            },
        -            "label": {
        -              "description": "Human-readable install method label.",
        -              "type": "string"
        -            },
        -            "payload": {
        -              "description": "Install payload (JSON fragment or CLI command).",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "client",
        -            "label",
        -            "payload"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "kind": {
        -        "const": "server",
        -        "description": "Resolved as a server entry.",
        -        "type": "string"
        -      },
        -      "name": {
        -        "description": "Resolved name (as looked up).",
        -        "type": "string"
        -      },
        -      "npm": {
        -        "description": "npm package name (e.g. \"@cyanheads/arxiv-mcp-server\").",
        -        "type": "string"
        -      },
        -      "toolCount": {
        -        "description": "Number of tools exposed by this server.",
        -        "type": "number"
        -      },
        -      "version": {
        -        "description": "Published version captured at fleet-generation time.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "kind",
        -      "name",
        -      "displayName",
        -      "description",
        -      "version",
        -      "npm",
        -      "github",
        -      "endpoint",
        -      "auth",
        -      "toolCount",
        -      "installSnippets"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "A resolved tool entry — its description and the server that owns it.",
        +    "properties": {
        +      "description": {
        +        "description": "Brief description of what the tool does.",
        +        "type": "string"
        +      },
        +      "kind": {
        +        "const": "tool",
        +        "description": "Resolved as a tool entry.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Resolved name (as looked up).",
        +        "type": "string"
        +      },
        +      "server": {
        +        "description": "Server package name that owns this tool.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "name",
        +      "description",
        +      "server"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "description": "A resolved server entry — metadata, optional hosted endpoint, and per-client install snippets.",
        +    "properties": {
        +      "auth": {
        +        "description": "Auth requirement for the hosted deployment (currently always \"none\").",
        +        "type": "string"
        +      },
        +      "description": {
        +        "description": "Brief description of what the server does.",
        +        "type": "string"
        +      },
        +      "displayName": {
        +        "description": "Human-readable server label.",
        +        "type": "string"
        +      },
        +      "endpoint": {
        +        "description": "Streamable HTTP endpoint for the hosted deployment. Absent for local-only (stdio) servers.",
        +        "type": "string"
        +      },
        +      "github": {
        +        "description": "GitHub repository URL.",
        +        "type": "string"
        +      },
        +      "installSnippets": {
        +        "description": "Install instructions: local (stdio) snippets for every server, plus remote (HTTP) snippets when an endpoint exists. Filtered to one client when input.client is set.",
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "A single install instruction entry.",
        +          "properties": {
        +            "client": {
        +              "description": "MCP client this snippet targets.",
        +              "enum": [
        +                "claude-code",
        +                "codex",
        +                "cursor",
        +                "curl",
        +                "gemini",
        +                "streamable-http"
        +              ],
        +              "type": "string"
        +            },
        +            "label": {
        +              "description": "Human-readable install method label.",
        +              "type": "string"
        +            },
        +            "payload": {
        +              "description": "Install payload (JSON fragment or CLI command).",
        +              "type": "string"
        +            },
        +            "transport": {
        +              "description": "Transport this snippet installs — stdio (local) or http (remote).",
        +              "enum": [
        +                "stdio",
        +                "http"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "client",
        +            "transport",
        +            "label",
        +            "payload"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "kind": {
        +        "const": "server",
        +        "description": "Resolved as a server entry.",
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Resolved name (as looked up).",
        +        "type": "string"
        +      },
        +      "npm": {
        +        "description": "npm package name (e.g. \"@cyanheads/arxiv-mcp-server\"). Drives the local stdio snippets.",
        +        "type": "string"
        +      },
        +      "requiredEnvVars": {
        +        "description": "Env var names the local (stdio) install requires (e.g. [\"MAILCHIMP_API_KEY\"]). Absent when none.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "toolCount": {
        +        "description": "Number of tools exposed by this server.",
        +        "type": "number"
        +      },
        +      "version": {
        +        "description": "Published version captured at fleet-generation time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "name",
        +      "displayName",
        +      "description",
        +      "version",
        +      "npm",
        +      "github",
        +      "auth",
        +      "toolCount",
        +      "installSnippets"
        +    ],
        +    "type": "object"
        +  }
        +]
  5. 1 tool update
    • Changedcyanheads_search2 fields changed
      • addedOutput schema / properties / servers
        Added value: +{
        +  "description": "Roll-up of distinct servers across the full match set, before the limit slice. Present only for scope \"tools\". Ordered by topScore desc (name-tiebroken); capped at 10. Use serversTotal to see how many distinct servers matched in total.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A server roll-up entry.",
        +    "properties": {
        +      "brief": {
        +        "description": "One-line description of what the server does.",
        +        "type": "string"
        +      },
        +      "category": {
        +        "description": "Catalog category.",
        +        "enum": [
        +          "research",
        +          "government",
        +          "public-data",
        +          "utility"
        +        ],
        +        "type": "string"
        +      },
        +      "matchedTools": {
        +        "description": "Count of this server's tools in the full match set.",
        +        "type": "number"
        +      },
        +      "name": {
        +        "description": "Server package name (e.g. \"cdc-health-mcp-server\").",
        +        "type": "string"
        +      },
        +      "topScore": {
        +        "description": "Best cosine similarity among this server's matched tools. Drives ordering. Distinct from the score a server gets under scope \"servers\".",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "brief",
        +      "category",
        +      "matchedTools",
        +      "topScore"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / serversTotal
        Added value: +{
        +  "description": "Total distinct servers in the full match set (before the cap of 10 is applied). Present only when servers is present.",
        +  "type": "number"
        +}
  6. 1 tool update
    • Changedcyanheads_search6 fields changed
      • addedOutput schema / properties / effectiveQuery
        Added value: +{
        +  "description": "The query that was searched.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance when no results matched — e.g. how to broaden the query or try a different scope. Absent on successful result pages.",
        +  "type": "string"
        +}
      • removedOutput schema / properties / query
        Removed value: -{
        -  "description": "The query that was searched.",
        -  "type": "string"
        -}
      • addedOutput schema / properties / totalCount
        Added value: +{
        +  "description": "Total relevant matches before the limit was applied.",
        +  "type": "number"
        +}
      • removedOutput schema / properties / totalMatched
        Removed value: -{
        -  "description": "Total relevant matches before the limit was applied.",
        -  "type": "number"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "results",
        -  "totalMatched",
        -  "query",
        -  "scope"
        -]New value: +[
        +  "results",
        +  "scope",
        +  "effectiveQuery",
        +  "totalCount"
        +]
  7. 2 tool updates
    • First observedcyanheads_describe
    • First observedcyanheads_search

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool serves a distinct function: one retrieves detailed information about a specific known entry, the other performs broad searches across the catalog. They are complementary with no overlap in purpose.

Naming Consistency5/5

Both tools follow the same verb_noun pattern with the 'cyanheads_' prefix (describe_entry, search_catalog). The naming is perfectly consistent and predictable.

Tool Count4/5

The server exposes only 2 tools, which is slightly thin but appropriate for its narrow purpose of discovery. Two tools fully cover the describe-and-search workflow without redundancy.

Completeness5/5

The search and describe tools together form a complete discovery workflow: agents can search to find tools/servers, then describe to get installation and usage details. No functional gaps exist for the stated purpose.