Skip to main content
Glama

memory_list

Read-only

List memories for a project or personal scope, newest first, as a numbered inventory to present conversationally; use the audit view to include superseded and archived entries.

Instructions

List memories in a scope, newest first, as a numbered inventory. Each line keeps the raw fields — [type] id=… created=… source=… — say them back to the user in plain words (source=user → 'you told me this'; inference → 'I inferred this, check me'; keyword → 'caught from your own wording'), never read the raw id aloud unless they ask. When the user asks 'what do you remember about me?', use scope=both and present the inventory conversationally. The user may point at an entry by its number ('delete #3'): numbers are only valid for the listing you just produced — re-run memory_list, read the candidate back in full, and get a confirmation before calling memory_forget (deletion is permanent). include=all is the audit view (superseded versions, retracted, archived also shown).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
scopeNoWhich scope(s) to list. `project` = tied to this repo. `personal` = global across all your projects. `both` lists each scope's newest. Default: project.
includeNoD68: `active` (default) shows what is currently remembered — newest version of each fact, retracted/archived hidden. `all` is the audit view: every stored row including superseded versions and hidden ones. The default CHANGED in D68: superseded versions no longer appear unless include=all.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, but the description adds real behavioral context: numbering is only valid for the listing just produced, deletion downstream is permanent and requires re-reading plus confirmation, and include=all exposes superseded/retracted/archived rows. It also prescribes how results should be surfaced to the user, which is well beyond 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.

Conciseness4/5

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

Purpose and output format are front-loaded in the first sentence, and every subsequent sentence carries actionable guidance. It is dense and runs long for a list tool, but there is little outright padding.

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 usefully defines the return shape (numbered inventory with [type] id= created= source=) and how to render it, which is the main gap it needs to fill. The remaining gap is the undocumented type and limit parameters.

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 50%: scope and include carry detailed schema descriptions (including the D68 default change), while type and limit have no schema description at all. The description explains scope=both and include=all usage but never clarifies what type filters on or what limit does, so it only partially compensates for the gap.

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 first clause states a specific verb, resource, ordering, and output shape: 'List memories in a scope, newest first, as a numbered inventory.' It also implicitly separates itself from memory_search (retrieval by query) and memory_forget (deletion), which it names explicitly later.

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?

It gives explicit triggering conditions ('When the user asks what do you remember about me?, use scope=both'), a named alternative for deletion (memory_forget), and the precondition for using include=all (audit view). Nothing about when to choose this over siblings is left to inference.

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