cyanheads-mcp-server
Server Details
Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/cyanheads-mcp-server
- GitHub Stars
- 1
- Server Listing
- cyanheads-mcp-server
Available Tools
2 toolscyanheads_describe_entryDescribe Fleet Tool or ServerARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Whether 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. | |
| name | Yes | Tool 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. | |
| client | No | Return install snippets for this client only (both local and remote transports when available). Omit to return snippets for all supported clients. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| result | No | The resolved entry — either a tool detail or a server detail depending on the resolved kind. |
TDQS
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.
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.
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.
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.
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.
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 ServersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (1-20). Default 5. | |
| query | Yes | Natural language search query. Describe what you want to accomplish, a workflow, or a capability area. 1-500 characters. | |
| scope | No | What to search. "tools" returns individual tool matches; "servers" returns server-level matches. | tools |
| category | No | Filter by catalog category. Omit to search all categories. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| scope | No | Scope that was searched. |
| notice | No | Guidance when no results matched — e.g. how to broaden the query or try a different scope. Absent on successful result pages. |
| results | No | Ranked matches, best first. |
| servers | No | 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. |
| totalCount | No | Total relevant matches before the limit was applied. |
| serversTotal | No | Total distinct servers in the full match set (before the cap of 10 is applied). Present only when servers is present. |
| effectiveQuery | No | The query that was searched. |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
- Changed
cyanheads_describe_entry6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "result" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "result" -]
- Changed
cyanheads_search_catalog6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "results", + "scope", + "effectiveQuery", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded 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" +} - removed
Output schema / requiredRemoved value: -[ - "results", - "scope", - "effectiveQuery", - "totalCount" -]
4 tool updates
- Removed
cyanheads_describe - Added
cyanheads_describe_entry - Removed
cyanheads_search - Added
cyanheads_search_catalog
1 tool update
- Changed
cyanheads_describe1 field changed- changed
Output schema / properties / result / oneOfPrevious 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" + } +]
1 tool update
- Changed
cyanheads_describe2 fields changed- changed
Input schema / properties / client / descriptionPrevious 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." - changed
Output schema / properties / result / oneOfPrevious 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" + } +]
1 tool update
- Changed
cyanheads_search2 fields changed- added
Output schema / properties / serversAdded 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" +} - added
Output schema / properties / serversTotalAdded 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" +}
1 tool update
- Changed
cyanheads_search6 fields changed- added
Output schema / properties / effectiveQueryAdded value: +{ + "description": "The query that was searched.", + "type": "string" +} - added
Output schema / properties / noticeAdded 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" +} - removed
Output schema / properties / queryRemoved value: -{ - "description": "The query that was searched.", - "type": "string" -} - added
Output schema / properties / totalCountAdded value: +{ + "description": "Total relevant matches before the limit was applied.", + "type": "number" +} - removed
Output schema / properties / totalMatchedRemoved value: -{ - "description": "Total relevant matches before the limit was applied.", - "type": "number" -} - changed
Output schema / requiredPrevious value: -[ - "results", - "totalMatched", - "query", - "scope" -]New value: +[ + "results", + "scope", + "effectiveQuery", + "totalCount" +]
2 tool updates
- First observed
cyanheads_describe - First observed
cyanheads_search
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Search and install 4,000+ security-scanned MCP servers from inside any MCP-aware AI client.
Search and get install details on MCP servers, right from your agent -- a unified marketplace index.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Capability registry for the agentic economy. Semantic search over verified MCP server listings.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAI-first MCP server discovery tool that enables agents to search, inspect, and install MCP servers from multiple registries.12AGPL 3.0
- AlicenseAqualityDmaintenanceLocal-first MCP server for semantic + keyword hybrid code search. Zero external services, no API keys required.2MIT
- AlicenseNot gradedqualityDmaintenanceMCP of MCPs. Automatic discovery and configure MCP servers on your local machine. Integration with Claude and Cursor.53Apache 2.0
- AlicenseNot gradedqualityBmaintenanceSelf-hosted documentation and code indexing with MCP integration.17MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
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.
Both tools follow the same verb_noun pattern with the 'cyanheads_' prefix (describe_entry, search_catalog). The naming is perfectly consistent and predictable.
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.
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.