Skip to main content
Glama
RMS Memory MCP

RMS Memory MCP

rms_code_search

Search the semantic code index for symbols and code segments by query, returning file, language, line range, and optional notes, history, or graph context; supports cross-project federation.

Instructions

Search only the derived semantic code index. Results include language, file, symbol, kind, line range, and segment index. The code index is optional, so an unindexed project returns an empty result list. Pass projects: [key, …] for read-only cross-project code federation (when both project and projects are set, projects wins); does not change the active bind.

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum results; default 10, maximum 100.
queryYesThe semantic code query.
projectNoRegistered project key, used when the MCP client did not provide a workspace root. Ignored when `projects` is also set.
projectsNoExplicit list of registered project keys for read-only federated code search (max 8 after dedupe). Does not change the active bind. When set together with `project`, this list wins.
include_notesNoAttach vault notes (decisions, patterns) that mention the hit's file or symbol, with `code_changed_since_note` when the code is newer. Default true; not used with projects: […].
include_contentNoWhether to include indexed code content; default true.
include_file_historyNoWhen true, attach the last 3 commits from the derived code_path git-history cache to each code hit. Not allowed together with projects: […] federation. Default false.
include_graph_neighborsNoWhen true, attach durable graph neighbors for each hit path. Not allowed together with projects: […] federation. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.4.3
    • addedInput schema / properties / include_notes
      Added value: +{
      +  "description": "Attach vault notes (decisions, patterns) that mention the hit's file or symbol, with `code_changed_since_note` when the code is newer. Default true; not used with projects: […].",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changedv1.2.0
    • addedInput schema / properties / include_graph_neighbors
      Added value: +{
      +  "description": "When true, attach durable graph neighbors for each hit path. Not allowed together with projects: […] federation. Default false.",
      +  "type": "boolean"
      +}
  3. Changed1 schema field changedv1.1.2
    • addedInput schema / properties / include_file_history
      Added value: +{
      +  "description": "When true, attach the last 3 commits from the derived code_path git-history cache to each code hit. Not allowed together with projects: […] federation. Default false.",
      +  "type": "boolean"
      +}
  4. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations supplied, the description carries the full burden and does disclose meaningful behavior: the index is optional so unindexed projects yield an empty result list, federation is read-only, and it does not change the active bind. It does not state that the base search is side-effect free, nor anything about permissions, rate limits, or result ordering.

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 sentences, front-loaded with the core purpose before the return shape and then the federation caveat. The parenthetical precedence note is dense but earns its place; the semicolon-chained clauses make it slightly harder to scan than it needs to be.

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?

For an 8-parameter tool with no annotations and no output schema, the description compensates well by listing return fields and flagging the empty-result case. The interaction constraints among the optional `include_*` flags are left to the schema, which does document them, so nothing critical is missing.

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%, so the baseline would be 3, but the description adds cross-parameter meaning by spelling out the `project` vs `projects` precedence and framing `projects` as read-only federation that leaves the active bind untouched. That is a semantic relationship the schema states only per-field, not as an interaction rule.

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?

"Search only the derived semantic code index" names a specific verb and resource, and the word "only" implicitly separates it from the general-purpose rms_search sibling. It also enumerates the returned fields (language, file, symbol, kind, line range, segment index), so an agent knows exactly what this tool produces without opening a 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?

The description makes clear this is scoped to the derived code index and warns that an unindexed project returns an empty list, which tells the agent when this tool will be useless. It also explains the federation path via `projects`. It stops short of naming rms_search or rms_reindex as the alternative when the index is absent or stale.

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