Skip to main content
Glama

memory_add

Store durable project knowledge—preferences, decisions, conventions, bug fixes, and context—into shared Notion memory for future retrieval.

Instructions

Save a new durable memory into the shared Notion memory. USE THIS when: the user states a preference, a project decision is made, a convention is established, a non-obvious bug is fixed (root cause + fix), or important project/environment context is learned. Do NOT store secrets, tokens, or throwaway information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagsNoLowercase tags, e.g. ['typescript','ui','deploy']
agentYesWhich agent is saving this; use 'shared' for universal rules
titleYesShort, searchable, imperative title (<= 80 chars recommended)
sourceNoOrigin: agent, user, notion, import, or system
contentYesFull memory content: concise but complete, with examples when helpful
projectNoProject/repository scope; optional for legacy databases
categoryNoother
confidenceNo
importanceNomedium
supersedesNoID of an older memory replaced by this one
verifiedAtNoISO timestamp when this memory was last verified
freshnessDaysNoDays before this memory is considered stale
allowDuplicateNoExplicitly allow a similar memory to be saved
idempotencyKeyNoReuse the same key when retrying one memory_add operation

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv1.6.0
    • addedInput schema / properties / allowDuplicate
      Added value: +{
      +  "default": false,
      +  "description": "Explicitly allow a similar memory to be saved",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / confidence
      Added value: +{
      +  "enum": [
      +    "high",
      +    "medium",
      +    "low"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / freshnessDays
      Added value: +{
      +  "description": "Days before this memory is considered stale",
      +  "maximum": 3650,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / idempotencyKey
      Added value: +{
      +  "description": "Reuse the same key when retrying one memory_add operation",
      +  "maxLength": 128,
      +  "minLength": 8,
      +  "pattern": "^[A-Za-z0-9._:-]+$",
      +  "type": "string"
      +}
    • addedInput schema / properties / project
      Added value: +{
      +  "description": "Project/repository scope; optional for legacy databases",
      +  "maxLength": 120,
      +  "type": "string"
      +}
    • addedInput schema / properties / source
      Added value: +{
      +  "description": "Origin: agent, user, notion, import, or system",
      +  "maxLength": 40,
      +  "type": "string"
      +}
    • addedInput schema / properties / supersedes
      Added value: +{
      +  "description": "ID of an older memory replaced by this one",
      +  "type": "string"
      +}
    • addedInput schema / properties / verifiedAt
      Added value: +{
      +  "description": "ISO timestamp when this memory was last verified",
      +  "format": "date-time",
      +  "type": "string"
      +}
  2. First observedv1.0.0

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does disclose the core write behavior ('durable', 'shared Notion memory'). However, it omits behavioral details like duplicate rejection (despite allowDuplicate), idempotency retry semantics, and what the operation returns or confirms.

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?

The description is structured with an action sentence, a 'USE THIS when' list, and an exclusion clause. Every phrase earns its place and the core purpose is front-loaded.

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?

For a 14-parameter tool with no output schema, the description covers when to use it and content policy well, while the schema documents the parameters. A minor gap is the lack of any statement about return behavior or duplicate handling, though the schema's allowDuplicate and idempotencyKey fields hint at it.

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 79% and individual fields like title, content, agent, and tags already have meaningful descriptions. The tool description adds no per-parameter detail, which is acceptable given the schema's heavy lifting; the coverage baseline of 3 applies.

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+resource: 'Save a new durable memory into the shared Notion memory.' This clearly identifies an add/create operation and sets it apart from sibling tools like memory_update and memory_delete without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit 'USE THIS when' triggers (preferences, decisions, conventions, bug fixes, context) and a 'Do NOT' exclusion for secrets and throwaway info. It does not name alternative tools, such as memory_update for editing existing memories, so it stops short of the full when/when-not/alternatives pattern.

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