Skip to main content
Glama
bethington

Ghidra MCP Server

by bethington

search_tools

Read-only

Search the full Ghidra tool catalog by keyword to discover tools in unloaded groups, then see if each result is callable or which load_tool_group call enables it.

Instructions

Search the full Ghidra tool catalog by keyword — including tools whose group is not currently loaded. Use this to discover the right tool without paying the context cost of loading all groups (run the bridge with --lazy and search on demand). Matches against tool name, description, and category.

Each result reports whether the tool is callable right now; if not, it includes the exact load_tool_group(...) call needed to make it callable.

Args: query: Space-separated keywords, e.g. "rename function" or "xref struct". limit: Maximum number of results to return (default 15).

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 15).
queryYesSpace-separated keywords, e.g. "rename function" or "xref struct".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv7.0.0
    • addedInput schema / properties / limit / description
      Added value: +"Maximum number of results to return (default 15)."
    • addedInput schema / properties / query / description
      Added value: +"Space-separated keywords, e.g. \"rename function\" or \"xref struct\"."
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "title": "Result",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "search_toolsOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv5.15.0

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds real behavior: matching fields (name/description/category) and the fact that each result reports callability plus the exact load_tool_group(...) call to fix it. It stops short of describing result ordering or truncation behavior beyond the limit.

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

Conciseness4/5

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

Front-loaded with purpose and usage rationale before mechanics, and the callability/load_tool_group sentence earns its place. The Args block duplicates the schema descriptions and is the one redundant portion.

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?

With no output schema, the description correctly compensates by explaining what results contain (callable status and the exact load_tool_group call). Combined with annotations and full parameter coverage, an agent has enough to call it and act on the response, though result count/ordering is unstated.

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 coverage is 100%, so the schema fully documents both query and limit. The description's Args block restates the same examples and default verbatim, adding no syntax or edge-case detail beyond what the structured field already says. Baseline 3 applies when the schema does the work.

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

Purpose5/5

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

States a specific verb and resource ('Search the full Ghidra tool catalog by keyword') plus the distinguishing scope: it includes tools whose group is not currently loaded, and matches against name, description, and category. An agent can tell this apart from list_tool_groups or check_tools without opening the schema.

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?

Gives a clear when-to-use: discover the right tool without paying the context cost of loading all groups, and names the enabling mode (--lazy). It also points forward to load_tool_group as the follow-up action, but does not explicitly contrast with siblings like check_tools or list_tool_groups.

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