Skip to main content
Glama

Search tools

search_tools
Read-only

Find AI agents, MCP servers and AI developer tools in the AgentIndex directory by keyword and/or category. Use this when the user describes a need ("MCP server for Postgres", "browser automation agent"); use get_trending instead to browse the best tools without a query. Every keyword must appear (case-insensitive) in the name, description, tags or category. Results are ordered by rank_score, highest first. Returns an array of {id, name, category, description, stars, website, github_url, tags, rank_score}; an empty array means no match, so retry with fewer or broader keywords. Pass an id to get_tool_detail for features, use cases and the install command.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (1-50, default 10).
queryNoSpace-separated keywords, all of which must match, e.g. "postgres mcp" or "browser automation". Omit to list the top tools of a category.
categoryNoExact category name from list_categories (case-insensitive), e.g. "Browser Automation" or "RAG / Knowledge Base". Omit to search all categories.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
toolsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Filter by category name"New value: +"Exact category name from list_categories (case-insensitive), e.g. \"Browser Automation\" or \"RAG / Knowledge Base\". Omit to search all categories."
    • addedInput schema / properties / limit / default
      Added value: +10
    • changedInput schema / properties / limit / description
      Previous value: -"Max results (default 10, max 50)"New value: +"Maximum number of results (1-50, default 10)."
    • addedInput schema / properties / limit / maximum
      Added value: +50
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / query / description
      Previous value: -"Search keyword"New value: +"Space-separated keywords, all of which must match, e.g. \"postgres mcp\" or \"browser automation\". Omit to list the top tools of a category."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "tools": {
      +      "items": {
      +        "properties": {
      +          "category": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "description": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "github_url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "Tool id for get_tool_detail",
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "rank_score": {
      +            "description": "AgentIndex rank, 0-100",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "stars": {
      +            "description": "GitHub stars, e.g. \"12.3k\"",
      +            "type": [
      +              "string",
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "tags": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "website": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "tools"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint=false, so the description carries the real behavioral load: it explains the AND-all-keywords matching rule, the fields searched (name, description, tags, category), case-insensitivity, sort order by rank_score descending, and that an empty array is a legitimate no-match result. That is well 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.

Conciseness5/5

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

Front-loads purpose, then usage routing, then matching semantics, then return shape — each sentence introduces new information with no padding. The example queries are short and directly actionable.

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

Completeness5/5

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

An output schema exists, yet the description still names the sibling routing targets (list_categories for categories, get_tool_detail for the follow-up call), which is what an agent needs to chain tools correctly. Everything required for a correct zero-required-param call is present.

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 100%, including the AND semantics for query, the exact-category constraint and the limit bounds, so the schema already does the heavy lifting. The description restates the matching rule but adds no format, syntax or default detail the schema lacks, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Find) and resource (AI agents, MCP servers, AI developer tools in the AgentIndex directory) plus the retrieval axis (keyword and/or category). It explicitly names the sibling get_trending as the no-query alternative, so an agent can distinguish it without opening either schema.

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

Usage Guidelines5/5

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

Gives a concrete when-to-use trigger ('when the user describes a need') with example phrasings, names the alternative and the condition that selects it ('use get_trending instead to browse the best tools without a query'), and adds a recovery path for the empty-result case ('retry with fewer or broader keywords').

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.

Resources