Skip to main content
Glama

recall

Read-onlyIdempotent

Retrieve past memories by semantic similarity to answer queries about decisions, preferences, or people; refine results when initial confidence is low.

Instructions

Search memories by semantic similarity, or refine low-confidence results.

MODES:

  • Search (default): recall("project architecture decisions")

  • Refine: recall("PostgreSQL vs MySQL decision", refine_from="database choice", refine_exclude=["rid1"]) (Relevance feedback moved to memory(action="feedback") in v0.10 — recall is now purely read-only.)

WHEN TO USE: conversation start (summarize the user's first message); when the user references past decisions, people, preferences, or "last time"; when unsure about something the user assumes you know. Refine when first confidence < 0.5. After USING a recalled memory, reinforce it via memory(action="feedback", rid=..., feedback="relevant"). For "what is the CURRENT/latest X", prefer memory(action="chain_head") — similarity favors the most-similar revision, not the newest. For "what happened , in what order" ("tonight", "this week") use temporal(action="range") or since/until here — those words name the time frame, not the content; bare similarity cannot see the window.

QUERY: one short natural-language sentence (5-10 words), NOT a keyword list — keyword stuffing degrades quality. One focused question per call; separate calls for separate topics.

TRUST SIGNALS: each hit's why_retrieved may carry staleness warnings ("aged", "rarely confirmed", "superseded by a newer record"). Treat flagged hits as weak evidence — prefer fresher results or chain_head, and note the flag if you act on one anyway.

Args: query: Short natural language sentence (5-10 words). NOT a keyword list. top_k: Max results (default 10). 3-5 for focused, 10-20 for broad. memory_type: Filter: "semantic", "episodic", "procedural". domain: Filter: "work", "preference", "architecture", "people", etc. source: Filter: "user", "inference", "document", "system". namespace: Filter by namespace. include_consolidated: Include merged memories. include_superseded: v0.10 — recall EXCLUDES superseded records by default (current-by-default). Set True only for history / archaeology over a revision chain. expand_entities: Use knowledge graph boosting (default True). min_score_ratio: Drop hits scoring below this fraction of the TOP hit (0.8 = keep only near-as-good matches). Semantic search always returns top_k, even when one result is relevant and the rest are noise; this trims the tail instead of making you judge it. since: Only memories from this instant on — "2026-08-01", "2026-08-01T14:30:00Z", "6h"/"7d" (ago), or unix seconds. Filters BEFORE ranking: top_k is chosen inside the window. until: Window end (same formats; default now). Alone = up to then. refine_from: Original query text to refine from. query becomes the refinement. refine_exclude: Memory IDs to exclude when refining.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes
sinceNo
top_kNo
untilNo
domainNo
sourceNo
namespaceNo
memory_typeNo
refine_fromNo
refine_excludeNo
expand_entitiesNo
min_score_ratioNo
include_supersededNo
include_consolidatedNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive; the description adds context that feedback moved to memory and recall is now 'purely read-only.' It also discloses superseded-exclusion by default and staleness warnings in why_retrieved, going beyond the annotation hints without contradicting them.

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?

Long but every section earns its place: MODES with runnable examples, WHEN TO USE with alternatives, TRUST SIGNALS, and an Args table. Headings and bold labels make the size navigable, and the first sentence front-loads the core purpose.

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?

For a 14-parameter semantic search tool with only one required param, the description covers modes, when to use, parameter edge cases (superseded, min_score_ratio, since/until), trust signals, and follow-up actions. No meaningful gap remains for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema has 0% description coverage, but the Args section fully compensates: it explains query style (5-10 words, not keywords), top_k ranges, filters, include_superseded semantics, min_score_ratio's top-hit scaling, and since/until pre-ranking window behavior.

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?

First sentence states a specific verb and resource: 'Search memories by semantic similarity, or refine low-confidence results.' It distinguishes itself from siblings by naming alternatives like memory(action='chain_head') and temporal(action='range'), and by clarifying feedback moved to memory(action='feedback').

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?

WHEN TO USE section explicitly lists conversation-start, past references, and low-confidence criteria, plus exclusions: current/latest goes to memory(action='chain_head') and time-window queries go to temporal(action='range'). It also instructs reinforcing recalled memories via memory(action='feedback').

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yantrikos/yantrikdb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server