Skip to main content
Glama

recall

Read-onlyIdempotent

Search memories by keyword. Ranked by how many of your words match, then by importance. Current entries come first in every order. Pass order: 'latest' for time order.

Instructions

Search memories by keyword. Ranked by how many of your words match, then by importance. Current entries come first in every order. Pass order: 'latest' for time order. A standalone latest, newest, or most recent, together with other words, also asks for time order: it reorders those matches and does not change which rows match. A hyphenated word such as latest-budget, a negated 'not the latest', and a bare 'latest' are ordinary keywords. Expired and superseded entries stay in the result, marked with their end date and what replaced them. Pass history: true to read ended entries when current ones fill the limit.

Input Schema

NameRequiredDescriptionDefault
layerNoOptional: Search only in specific layer
limitNoMaximum number of results to return (default: 10)
orderNoPass 'latest' for time order: current matches first, then newer ones. This does not change which rows match the query.
queryYesSearch query to match against memory content. order: 'latest' is how you ask for time order. A standalone latest, newest, or most recent reorders the other words' matches.
historyNoReturn ended entries (superseded or expired), marked, up to limit. Default false: ended entries are included after current ones until limit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.2.5
    • addedInput schema / properties / history
      Added value: +{
      +  "description": "Return ended entries (superseded or expired), marked, up to limit. Default false: ended entries are included after current ones until limit.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / order
      Added value: +{
      +  "description": "Pass 'latest' for time order: current matches first, then newer ones. This does not change which rows match the query.",
      +  "enum": [
      +    "latest"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Search query to match against memory content"New value: +"Search query to match against memory content. order: 'latest' is how you ask for time order. A standalone latest, newest, or most recent reorders the other words' matches."
  2. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the lower bar applies; the description still adds meaningful result-composition behavior: ranking is by word-match count then importance, current entries sort first in every order, and expired/superseded entries remain in results marked with their end date and replacement. It does not describe pagination beyond the limit, but that is minor against the annotation coverage.

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

Conciseness3/5

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

The core ('Search memories by keyword', ranking, ordering) is front-loaded, which is good. But the middle is dense and repetitive, dwelling on edge cases like hyphenated 'latest-budget' and 'not the latest', and restating the 'latest' reordering rule several times; those sentences do not clearly earn their place for an agent's decision-making.

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 appropriately carries the burden of describing what comes back: ranked matches, current-first ordering, and marked ended entries with end dates and replacements. Layer filtering and limit defaults are only covered by the schema, but the description covers the return semantics an agent needs.

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 description coverage is 100%, so baseline is 3, and the description goes beyond the schema by explaining the special keyword semantics of 'order' and 'query' (bare/hyphenated/negated 'latest', standalone 'newest'/'most recent' reordering matches without changing the match set) and the interaction between history and the limit. This is genuine added meaning, though some of it restates the 'order' schema description almost verbatim.

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

Purpose4/5

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

States a specific verb and resource ('Search memories by keyword') and even specifies the matching mechanism (keyword vs. presumably semantic siblings). It does not name any sibling such as semantic_recall or corpus_recall, so an agent must infer which search tool to pick, but the purpose itself is unambiguous.

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?

It gives clear trigger conditions for two parameters ('Pass order: latest for time order', 'Pass history: true to read ended entries when current ones fill the limit'), which is real usage guidance. However it offers no guidance on when to choose this tool over the many sibling search tools (semantic_recall, corpus_recall, query_layer), so selection is only implied.

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