Skip to main content
Glama

memory_read

Read-onlyIdempotent

Search your long-term memory before answering anything that may have come up before — user preferences, past decisions, project setup, people, or earlier context. This memory is shared: it persists across sessions and across every AI tool the user has connected (Claude, ChatGPT, Cursor, VS Code). ALWAYS check here first when you're unsure whether you already know something; no need to call it for general world knowledge you already hold. Returns matches ranked by relevance (or newest-first with order_by: 'recency'); each result carries an id you can pass to memory_feedback. A wrong or stale memory is corrected by writing a fresh one with memory_write, not by deleting it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesNatural-language description of what you're looking for, e.g. 'database choice for the API' or 'user's preferred testing framework'.
sinceNoOnly memories created at/after this ISO-8601 instant (naive = UTC) — e.g. your last-seen watermark in a shared room.
top_kNoRequested number of results (default: 5, what this connector asks for when you omit it; the engine's own default of 10 never applies, because the field is always sent). ⚠️ Not a hard cap: association expansion can return MORE than this, and the relevance floor can return fewer — raising it does not reliably widen the result set. For a complete, exactly-bounded listing use memory_list_recent instead.
untilNoOnly memories created at/before this ISO-8601 instant.
domainNoRestrict the search to one domain namespace (e.g. 'project:acme'). Omitting it searches your OWN domains — it does NOT include shared rooms, which are separate stores: to search a room, pass its address here (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms.
order_byNo'relevance' (default) = ranking order. 'recency' = the matched set re-sorted newest-first. For a complete newest-first feed with no search at all, use memory_list_recent instead.
exclude_authorNoDrop memories written by this author PRINCIPAL — the server-side identity. ⚠️ NOT USABLE FROM HERE YET: the principal is not shown in these results, so there is no value you can obtain through this tool, and a guess like 'me' silently matches nothing and filters nothing. Only pass it if your system knows the exact principal from elsewhere (e.g. the REST API). A self-exclusion shortcut is planned.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYesMatching memories, ordered per order_by.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / domain / description
      Previous value: -"Restrict recall to a single namespace, e.g. 'project:x' (default: all)."New value: +"Restrict the search to one domain namespace (e.g. 'project:acme'). Omitting it searches your OWN domains — it does NOT include shared rooms, which are separate stores: to search a room, pass its address here (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms."
    • removedInput schema / properties / domain / maxLength
      Removed value: -100
    • changedInput schema / properties / exclude_author / description
      Previous value: -"Drop memories written by this author PRINCIPAL (the server-side identity, not shown in these results). Useful when your system knows principals; a self-exclusion shortcut is planned server-side."New value: +"Drop memories written by this author PRINCIPAL — the server-side identity. ⚠️ NOT USABLE FROM HERE YET: the principal is not shown in these results, so there is no value you can obtain through this tool, and a guess like 'me' silently matches nothing and filters nothing. Only pass it if your system knows the exact principal from elsewhere (e.g. the REST API). A self-exclusion shortcut is planned."
    • changedInput schema / properties / order_by / description
      Previous value: -"'relevance' (default) keeps ranking order; 'recency' re-sorts the matched set newest-first. For a complete newest-first listing without a search, use memory_list_recent."New value: +"'relevance' (default) = ranking order. 'recency' = the matched set re-sorted newest-first. For a complete newest-first feed with no search at all, use memory_list_recent instead."
    • changedInput schema / properties / query / description
      Previous value: -"Natural-language query for saved memories. Do not include passwords, API keys, payment data, MFA codes, government IDs, or health records."New value: +"Natural-language description of what you're looking for, e.g. 'database choice for the API' or 'user's preferred testing framework'."
    • changedInput schema / properties / since / description
      Previous value: -"Only memories created at/after this ISO-8601 instant (naive = UTC) — e.g. a last-seen watermark in a shared room."New value: +"Only memories created at/after this ISO-8601 instant (naive = UTC) — e.g. your last-seen watermark in a shared room."
    • changedInput schema / properties / top_k / description
      Previous value: -"Maximum number of memories to return (1-50, default 5)."New value: +"Requested number of results (default: 5, what this connector asks for when you omit it; the engine's own default of 10 never applies, because the field is always sent). ⚠️ Not a hard cap: association expansion can return MORE than this, and the relevance floor can return fewer — raising it does not reliably widen the result set. For a complete, exactly-bounded listing use memory_list_recent instead."
    • changedInput schema / properties / top_k / maximum
      Previous value: -50New value: +500
    • removedOutput schema / properties / items / items / properties / memory_id / format
      Removed value: -"uuid"
    • removedOutput schema / properties / items / items / properties / memory_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare this tool read-only, non-destructive, and idempotent; the description adds valuable behavioral context beyond that: memory persists across sessions and across all connected AI tools, results are ranked by relevance or recency, and each result carries an id usable by memory_feedback. It also explains the correction workflow via memory_write, which helps an agent understand the broader memory ecosystem. No contradiction with annotations.

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?

The description is front-loaded with the core purpose and includes useful guidance, alternatives, and behavioral notes, but it is somewhat dense and includes a few sentences that could be trimmed (e.g., the 'ALWAYS check here first' emphasis could be shortened). Still, every sentence adds value, so it earns a 4 rather than a 5.

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?

Given the tool's complexity (7 parameters, an output schema, and several siblings), the description provides the essential context for correct invocation: shared-memory semantics, search vs. list distinction, alternatives, and feedback routing. The output schema already covers return values, so the description need not explain them. Nothing an agent needs to select and call this tool correctly is missing.

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 description coverage is 100% and each parameter has a rich, self-explanatory description (e.g., domain, order_by, since/until). The tool description itself adds minimal parameter-level meaning—only re-mentioning order_by 'recency' in the context of output ranking. With the schema carrying the full semantic load, the baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Search your long-term memory' and lists concrete example contents (user preferences, past decisions, project setup, people, earlier context). It names sibling tools (memory_list_recent, memory_feedback, memory_write) and distinguishes search from listing/writing, so an agent can tell it apart from memory_list_recent and memory_write without opening the 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?

The description gives explicit when-to-use guidance: 'ALWAYS check here first when you're unsure whether you already know something,' and a clear exclusion: 'no need to call it for general world knowledge you already hold.' It also directs agents to memory_list_recent for complete, bounded listings and to memory_write for correcting stale memories, providing concrete alternatives and conditions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.