Skip to main content
Glama

memory_search

Read-only

Finds saved coding memories by exact keywords or identifiers and returns full text matches, with filters for project, scope, or kind.

Instructions

Keyword-search memories when you know exact terms or identifiers. Returns full body text for each match; use memory_search_index when you only need compact candidates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by memory kind
limitNoMax results
queryYesSearch query
projectNoFilter by project scope (matches sessions.project)
scope_idNoFilter by a single sharing domain scope_id
trust_biasNo
visibilityNo
personal_firstNo
ownership_scopeNo
exclude_actor_idsNo
exclude_scope_idsNoSharing domain scope_ids to exclude
include_actor_idsNo
include_scope_idsNoSharing domain scope_ids to include
exclude_visibilityNo
include_visibilityNo
exclude_trust_statesNo
include_trust_statesNo
exclude_workspace_idsNo
include_workspace_idsNo
widen_shared_when_weakNo
exclude_workspace_kindsNo
include_workspace_kindsNo
widen_shared_min_personal_scoreNo
widen_shared_min_personal_resultsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.44.2
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "items": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "body": {
      +            "type": "string"
      +          },
      +          "confidence": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "metadata": {
      +            "additionalProperties": {},
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "score": {
      +            "type": "number"
      +          },
      +          "session_id": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "kind",
      +          "title",
      +          "body"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "items"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.9/5.0
Behavior3/5

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

The description adds some behavioral context beyond the annotations by clarifying that its output is full body text of matching memories. However, it doesn't reveal other behavioral traits like ordering, match semantics, scope defaults, or performance implications, so it is only moderately more transparent. The absence of contradiction with the readOnlyHint/openWorldHint annotations is not an issue here.

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?

The description is exceptionally concise: two sentences, each contributing essential information. The first sentence states when and what the tool does; the second covers output behavior and the sibling alternative. No filler, no repeated schema details.

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

Completeness2/5

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

Given the tool's high complexity (24 parameters, only 29% schema description coverage), the description leaves out major needed context such as the semantics of many filtering fields, search ordering, and how results are scoped. It does provide a basic high-level contract, but for a tool of this complexity, the description is not complete enough to guide correct use without further investigation.

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

Parameters2/5

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

The input schema's description coverage is only 29%, so the description would need to compensate, but it does not discuss any of the many filter parameters. The tool provides no parameter semantics beyond the schema's minimal descriptions, leaving many associated parameters (e.g., trust_bias, ownership_scope, visibility arrays) unexplained, making this a weak area for correct agent selection and use.

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 description states a specific action ('keyword-search') and a specific resource ('memories'), clarifying it is a text-search tool for exact terms or identifiers. It also differentiates from the sibling tool by declaring that it returns full body text, whereas memory_search_index returns compact candidates.

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?

The description explicitly tells the agent when to use this tool: when the user knows exact terms or identifiers and needs full body text. It also provides an alternative by naming memory_search_index and the condition that selects it ('only need compact candidates'). This is explicit guidance on when not to use this tool.

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