Skip to main content
Glama

recall

Search saved notes by relevance with BM25 to retrieve timeless facts, rules, or decisions. Use query and optional domain/limit; fetch full records with get_memory(uid).

Instructions

Recall long-term knowledge saved with note() (type='note').

The dedicated verb for "bring back what I noted": a BM25 search scoped to type='note', ranked by relevance -- which is what you want for timeless facts/rules/decisions. This (or search(type='note')) is how notes come back by relevance; pending(type='note') lists the newest.

Returns {"results": [...], "est_tokens": N}. Content is snippet-truncated -- call get_memory(uid) for the full record; a result's est_tokens estimates what that full record costs, and the top-level est_tokens is the sum over the results.

domain scopes to a path and everything nested under it, and resolves a bare deep segment the same way search() does. Results carry the same succeeded_by / collapsed annotations search() explains.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
domainNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.1.1
    • changedInput schema / properties / limit / default
      Previous value: -20New value: +10
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "items": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "title": "Result",
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "recallOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it names the retrieval mechanism (BM25 scoped to type='note', relevance-ranked), the return shape ({"results": [...], "est_tokens": N}), the truncation behavior of snippets, the meaning of both the per-result and top-level est_tokens, and the domain path-resolution semantics. That is substantially more than the structured fields provide.

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 the core purpose and routing, then return format, then parameter notes. Mostly earns its length, though phrases like 'which is what you want for timeless facts/rules/decisions' are editorial filler.

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?

No output schema and no annotations, so the description must supply everything, and it covers returns, truncation, token cost, and the follow-up tool for full records. The only gap is the unexplained `limit` parameter, which is minor given the tool's simplicity.

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 0%, so the description must compensate. It gives real meaning for `domain` (scopes to a path plus everything nested, resolves bare deep segments like search()) but says nothing about `limit` (default 10) or `query` syntax, leaving two of three parameters undocumented.

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 ('recall long-term knowledge saved with note()') and immediately distinguishes itself from siblings search(type='note') and pending(type='note'). An agent can tell exactly what this tool is for without opening any schema.

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?

Explicitly routes the agent: use this (or search(type='note')) to bring notes back by relevance, use pending(type='note') for newest, and use get_memory(uid) when the truncated snippet isn't enough. When-to-use and alternatives are both named.

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