Skip to main content
Glama

Store Memory

memorix_store

Save a new observation or memory to the shared knowledge graph. Automatically indexed for search, with type classification (gotcha, decision, problem-solution, etc.) for easy future retrieval.

Instructions

Store a new observation/memory. Automatically indexed for search. Use type to classify: gotcha ([GOTCHA] critical pitfall), decision ([DECISION] architecture choice), problem-solution ([FIX] bug fix), how-it-works ([INFO] explanation), what-changed ([CHANGE] change), discovery ([DISCOVERY] insight), why-it-exists ([WHY] rationale), trade-off ([TRADEOFF] compromise), session-request ([SESSION] original goal). Project visibility is the default. Personal or team visibility requires an explicitly joined coordination identity. Set longTerm only when the caller explicitly wants an additional source-backed long-term candidate; it is never injected until an operator records a review through the CLI. For a read-only task, do not store unless the user explicitly asks to save a record.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeYesObservation type for classification
factsNoStructured facts (e.g., "Default timeout: 60s")
titleYesShort descriptive title (~5-10 words)
conceptsNoRelated concepts/keywords
longTermNoOptional explicit request to create a source-backed long-term candidate alongside this observation. Candidates are not automatically injected.
progressNoProgress tracking for task/feature observations
topicKeyNoOptional topic identifier for upserts (e.g., "architecture/auth-model"). If an observation with the same topicKey already exists in this project, it will be UPDATED instead of creating a new one. Use memorix_suggest_topic_key to generate a stable key. Good for evolving decisions, architecture docs, etc.
narrativeYesFull description of the observation
entityNameYesThe entity this observation belongs to (e.g., "auth-module", "port-config")
visibilityNoRetrieval scope. Project is the normal shared default; personal/team require memorix_session_start with joinTeam=true.
attachmentsNoSafe public provenance references. They are stored as metadata for lexical retrieval; raw inline media is never stored.
filesModifiedNoFiles involved
relatedCommitsNoGit commit hashes this memory relates to (links ground truth ↔ reasoning)
relatedEntitiesNoOther entity names this memory cross-references
overrideReadOnlyNoUse only when the user explicitly asks to save memory during a read-only or no-modification task.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.3.3
    • addedInput schema / properties / attachments
      Added value: +{
      +  "description": "Safe public provenance references. They are stored as metadata for lexical retrieval; raw inline media is never stored.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "mimeType": {
      +        "type": "string"
      +      },
      +      "modality": {
      +        "enum": [
      +          "image",
      +          "audio",
      +          "video",
      +          "document"
      +        ],
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Public HTTPS provenance reference without query parameters or fragments. Memorix does not fetch this URL: attachment metadata is persisted and BM25-searchable, while observation vectors remain text-only.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "modality",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changedv1.3.2
    • addedInput schema / properties / longTerm
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional explicit request to create a source-backed long-term candidate alongside this observation. Candidates are not automatically injected.",
      +  "properties": {
      +    "applicability": {
      +      "description": "When this durable fact or procedure applies.",
      +      "type": "string"
      +    },
      +    "kind": {
      +      "description": "Cognitive kind for an additional long-term candidate.",
      +      "enum": [
      +        "episodic",
      +        "semantic",
      +        "procedural"
      +      ],
      +      "type": "string"
      +    },
      +    "scope": {
      +      "default": "project",
      +      "description": "Long-term scope. User capture is private source evidence and needs a bound agent identity.",
      +      "enum": [
      +        "project",
      +        "user",
      +        "team"
      +      ],
      +      "type": "string"
      +    },
      +    "tags": {
      +      "description": "Small set of retrieval tags for the candidate.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "kind"
      +  ],
      +  "type": "object"
      +}
  3. Changed5 schema fields changed
    • addedInput schema / properties / overrideReadOnly
      Added value: +{
      +  "description": "Use only when the user explicitly asks to save memory during a read-only or no-modification task.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / relatedCommits
      Added value: +{
      +  "description": "Git commit hashes this memory relates to (links ground truth ↔ reasoning)",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / relatedEntities
      Added value: +{
      +  "description": "Other entity names this memory cross-references",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "session-request",
      -  "gotcha",
      -  "problem-solution",
      -  "how-it-works",
      -  "what-changed",
      -  "discovery",
      -  "why-it-exists",
      -  "decision",
      -  "trade-off"
      -]New value: +[
      +  "session-request",
      +  "gotcha",
      +  "problem-solution",
      +  "reasoning",
      +  "how-it-works",
      +  "what-changed",
      +  "discovery",
      +  "why-it-exists",
      +  "decision",
      +  "trade-off",
      +  "probe"
      +]
    • addedInput schema / properties / visibility
      Added value: +{
      +  "description": "Retrieval scope. Project is the normal shared default; personal/team require memorix_session_start with joinTeam=true.",
      +  "enum": [
      +    "personal",
      +    "project",
      +    "team"
      +  ],
      +  "type": "string"
      +}
  4. First observedv1.0.0

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries full behavioral burden. It discloses auto-indexing, type classification prefixes, default visibility, visibility requirements (personal/team require joined coordination identity), longTerm not injected until operator review, and the read-only guard. This adds significant context beyond the schema.

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 dense but front-loaded with the core purpose. The type list is long but valuable. No fluff; every sentence adds functional information. Slightly long due to the type enumeration, but well-structured for the complexity.

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 complex tool with 15 parameters and no output schema, the description covers essential operational context (type, visibility, longTerm, read-only) while the schema descriptions cover remaining parameters. It does not mention upsert behavior of topicKey or attachment constraints, but these are in schema. Overall, sufficiently complete for safe invocation.

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 coverage is 100%, so baseline is 3. The description adds meaning beyond schema for key parameters: explains the type enum with bracketed prefixes and meanings (e.g., gotcha = critical pitfall), clarifies visibility defaults and requirements, and details longTerm semantics. This meaningfully enriches the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Store a new observation/memory. Automatically indexed for search.' This gives a specific verb and resource. However, it does not explicitly differentiate from sibling tool memorix_store_reasoning, which may be a related but distinct store operation.

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?

Provides explicit when-to-use and when-not-to-use guidance: 'For a read-only task, do not store unless the user explicitly asks to save a record.' Also gives conditions for longTerm: 'Set longTerm only when the caller explicitly wants an additional source-backed long-term candidate.' This is strong usage guidance.

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