Skip to main content
Glama

Search skills

search_skills
Read-onlyIdempotent

Full-text search over the Skill of Skills directory (AI coding skills, plugins, MCP servers across Claude Code, Cursor, Codex, Windsurf, Cline). Results are ranked by the quality-first composite score, not popularity; when no tool matches every term, the closest partial matches are returned instead (match_mode: "any"), most relevant first. Critical-risk tools are excluded by default (risk_filter); every result carries risk_level and risk_reasons. Scores are evidence, not endorsements.

Input Schema

NameRequiredDescriptionDefault
limitNo
queryYesWhat capability you need, e.g. "postgres migrations"
min_tierNoQuality floor: curated ≥120, promising ≥80, experimental ≥40experimental
platformNoRestrict to one client platform
verifiedNoCurrent Verified Working result: runs only, or any verified tier
risk_filterNoRisk gate: exclude_critical omits critical risk (default); exclude_high omits high and critical risk; none omits no risk levelsexclude_critical
include_high_riskNoDeprecated alias for risk_filter=none

Output Schema

NameRequiredDescriptionDefault
countYes
queryYes
resultsYes
match_modeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / verified
      Added value: +{
      +  "description": "Current Verified Working result: runs only, or any verified tier",
      +  "enum": [
      +    "runs",
      +    "any"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / results / items / properties / verification
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "commit_sha": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "failing_check": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "path": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "path"
      +          ],
      +          "type": "object"
      +        },
      +        "stale": {
      +          "type": "boolean"
      +        },
      +        "status": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "runs",
      +                "loads-clean"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "verified_at": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "tier",
      +        "commit_sha",
      +        "verified_at",
      +        "stale"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "name",
      -  "slug",
      -  "tier",
      -  "quality_score",
      -  "composite_score",
      -  "risk_level",
      -  "risk_reasons",
      -  "type",
      -  "category",
      -  "platforms",
      -  "description",
      -  "repo_url",
      -  "profile_url",
      -  "stars",
      -  "is_official",
      -  "last_commit_at"
      -]New value: +[
      +  "name",
      +  "slug",
      +  "tier",
      +  "quality_score",
      +  "composite_score",
      +  "risk_level",
      +  "risk_reasons",
      +  "type",
      +  "category",
      +  "platforms",
      +  "description",
      +  "repo_url",
      +  "profile_url",
      +  "stars",
      +  "is_official",
      +  "last_commit_at",
      +  "verification"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "count": {
      +      "type": "number"
      +    },
      +    "match_mode": {
      +      "enum": [
      +        "all",
      +        "any"
      +      ],
      +      "type": "string"
      +    },
      +    "query": {
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "category": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "composite_score": {
      +            "type": "number"
      +          },
      +          "description": {
      +            "type": "string"
      +          },
      +          "is_official": {
      +            "type": "boolean"
      +          },
      +          "last_commit_at": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "platforms": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "profile_url": {
      +            "type": "string"
      +          },
      +          "quality_score": {
      +            "type": "number"
      +          },
      +          "repo_url": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "risk_level": {
      +            "type": "string"
      +          },
      +          "risk_reasons": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "slug": {
      +            "type": "string"
      +          },
      +          "stars": {
      +            "type": "number"
      +          },
      +          "tier": {
      +            "enum": [
      +              "curated",
      +              "promising",
      +              "experimental",
      +              "review_required"
      +            ],
      +            "type": "string"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "slug",
      +          "tier",
      +          "quality_score",
      +          "composite_score",
      +          "risk_level",
      +          "risk_reasons",
      +          "type",
      +          "category",
      +          "platforms",
      +          "description",
      +          "repo_url",
      +          "profile_url",
      +          "stars",
      +          "is_official",
      +          "last_commit_at"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "count",
      +    "match_mode",
      +    "results"
      +  ],
      +  "type": "object"
      +}
  3. Changed3 schema fields changed
    • removedInput schema / properties / include_high_risk / default
      Removed value: -false
    • changedInput schema / properties / include_high_risk / description
      Previous value: -"Also return tools assessed high/critical risk (off by default)"New value: +"Deprecated alias for risk_filter=none"
    • addedInput schema / properties / risk_filter
      Added value: +{
      +  "default": "exclude_critical",
      +  "description": "Risk gate: exclude_critical omits critical risk (default); exclude_high omits high and critical risk; none omits no risk levels",
      +  "enum": [
      +    "exclude_critical",
      +    "exclude_high",
      +    "none"
      +  ],
      +  "type": "string"
      +}
  4. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds substantive context: ranking is by a quality-first composite score rather than popularity, partial-match fallback uses match_mode "any", critical-risk tools are excluded by default, and every result carries risk_level/risk_reasons. It does not explain pagination or result ordering beyond relevance, but the ranking semantics disclosure is genuinely beyond what the annotations provide.

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?

Three dense sentences with the resource, ranking model, and risk behavior front-loaded before the disclaimer. "Scores are evidence, not endorsements" earns its place by telling the agent how to interpret results, though the match_mode aside is slightly parenthetical.

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?

An output schema exists, so return-value explanation is not required, and the description still covers ranking, partial-match fallback, risk gating, and per-result risk fields. The one gap is that no cue is given about result limits or result-set size behavior, but for a 7-param search tool this is close to complete.

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

Parameters3/5

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

Schema description coverage is 86% and four parameters have enums, so the schema already carries the parameter burden — baseline 3. The description restates the risk_filter default ("Critical-risk tools are excluded by default") which the schema already documents, and adds nothing about min_tier, platform, or verified semantics.

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 first sentence names a specific verb and resource ("Full-text search over the Skill of Skills directory") and enumerates the corpus (AI coding skills, plugins, MCP servers). This scopes it clearly against siblings like get_skill (single lookup) and list_collections without needing to name them explicitly.

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

Usage Guidelines3/5

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

Usage is only implied — search is self-evidently for discovery — and no alternative tool is ever named (e.g., use get_skill once you have an identifier, or compare_tools for head-to-head evaluation). The fallback behavior ("when no tool matches every term, the closest partial matches are returned") describes mechanics rather than when-to-use guidance.

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.