Skip to main content
Glama
Vault Cortex Obsidian MCP Server

Vault Cortex Obsidian MCP Server

Get Memory

vault_get_memory
Read-onlyIdempotent

Read stored preferences, principles, and opinions from About Me/ memory files, filtered by file, H2 section, or date, to load persistent user context.

Instructions

Read semantic memory from About Me/ files. Each file holds dated bullet entries under H2 headings. With file: that file. With file+section: just that H2 section's entries. No args: every file, joined by --- lines — can be large.

With file+on_or_after: only the entries dated on or after that date, in document order (newest first by default), from one H2 section when section is given and otherwise from every section.

Example: vault_get_memory({ file: "Principles" }) — the whole file Example: vault_get_memory({ file: "Principles", section: "Decision heuristics (newest first)" }) Example: vault_get_memory({ file: "Opinions", section: "Code patterns", on_or_after: "2026-09-01" }) Example: vault_get_memory({ file: "Opinions", on_or_after: "2026-09-01" }) — every section's entries since the date

When to use: Reading user preferences, principles, opinions, or other persistent context stored in About Me/ files. Call vault_list_memory_files first to discover valid file and section names. Prefer vault_read_note for reading non-memory notes. To find entries by topic across every file, use vault_memory_recall.

Errors:

  • "section requires a file" / "on_or_after requires a file" — add file

  • "memory file not found" — call vault_list_memory_files to discover valid names

  • "memory file must not start with a dot" / "… must be a bare name without path separators" / "… must be named without .md" — each message names the part of the name to drop

  • "section not found: …" — no H2 heading matches; the message lists the file's sections

  • "date must be a real ISO calendar date" — on_or_after must be a valid YYYY-MM-DD date

  • "cannot read memory file …" / "cannot list memory folder …" — a memory file, or the About Me/ folder itself on a call without file, can't be read: check file against vault_list_memory_files and shorten an over-long name; otherwise ask the vault's owner to check the folder

Returns: Without on_or_after, raw markdown with the properties block stripped, or an empty string when no memory files exist yet. With on_or_after, JSON { entries, total, on_or_after } where each entry is { file, section, date, text } — text is the raw entry markdown (bullet + continuation lines, wikilinks intact). An empty match returns { entries: [], total: 0, on_or_after }.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "vault_get_memory"
  }
}

Input Schema

NameRequiredDescriptionDefault
fileNoMemory file name without .md (e.g. "Principles", "Opinions"). Use the exact letter case.
sectionNoH2 section heading (e.g. "Decision heuristics (newest first)"). Matched case-insensitively, with or without the "(newest first)" suffix.
on_or_afterNoInclusive date filter (YYYY-MM-DD).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.55.4
    • changedInput schema / properties / on_or_after / description
      Previous value: -"Inclusive date filter (YYYY-MM-DD). Requires a file."New value: +"Inclusive date filter (YYYY-MM-DD)."
    • changedInput schema / properties / section / description
      Previous value: -"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix. Omit to read the whole file."New value: +"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix."
  2. Changed2 schema fields changedv0.55.1
    • changedInput schema / properties / on_or_after / description
      Previous value: -"Inclusive date filter (YYYY-MM-DD). When provided with file, returns structured JSON entries dated on or after this date instead of raw markdown. Requires a file; add section to scope to one H2 section."New value: +"Inclusive date filter (YYYY-MM-DD). Requires a file."
    • changedInput schema / properties / section / description
      Previous value: -"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix. Omit to read the whole file (with on_or_after, every H2 section's entries). Call vault_list_memory_files first to discover valid names."New value: +"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix. Omit to read the whole file."
  3. Changed1 schema field changedv0.54.16
    • addedInput schema / additionalProperties
      Added value: +false
  4. Changed1 schema field changedv0.54.7
    • changedInput schema / properties / file / description
      Previous value: -"Memory file name without .md (e.g. \"Principles\", \"Opinions\")"New value: +"Memory file name without .md (e.g. \"Principles\", \"Opinions\"). Use the exact letter case."
  5. Changed2 schema fields changedv0.54.1
    • changedInput schema / properties / on_or_after / description
      Previous value: -"Inclusive date filter (YYYY-MM-DD). When provided with file and section, returns structured JSON entries dated on or after this date instead of raw markdown. Requires both file and section."New value: +"Inclusive date filter (YYYY-MM-DD). When provided with file, returns structured JSON entries dated on or after this date instead of raw markdown. Requires a file; add section to scope to one H2 section."
    • changedInput schema / properties / section / description
      Previous value: -"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix. Call vault_list_memory_files first to discover valid names."New value: +"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix. Omit to read the whole file (with on_or_after, every H2 section's entries). Call vault_list_memory_files first to discover valid names."
  6. Changed1 schema field changedv0.53.0
    • addedInput schema / properties / on_or_after
      Added value: +{
      +  "description": "Inclusive date filter (YYYY-MM-DD). When provided with file and section, returns structured JSON entries dated on or after this date instead of raw markdown. Requires both file and section.",
      +  "minLength": 1,
      +  "type": "string"
      +}
  7. Addedv0.32.1
  8. Removedv0.32.0
  9. Changed2 schema fields changedv0.22.1
    • addedInput schema / properties / file / minLength
      Added value: +1
    • addedInput schema / properties / section / minLength
      Added value: +1
  10. Changed1 schema field changedv0.19.2
    • changedInput schema / properties / section / description
      Previous value: -"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Call vault_list_memory_files first to discover valid names."New value: +"H2 section heading (e.g. \"Decision heuristics (newest first)\"). Matched case-insensitively, with or without the \"(newest first)\" suffix. Call vault_list_memory_files first to discover valid names."
  11. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare this a safe, idempotent read, but the description adds real operational context beyond them: the no-args call returns every file joined by --- lines and "can be large," the properties block is stripped from raw markdown output, document order is newest-first, and the date filter is inclusive. It also discloses failure modes and their remediation, which annotations never cover.

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 scope rules, then examples, then routing, then errors, then returns — a sensible information hierarchy with no filler sentences. The enumerated error table is long, though several entries repeat the same import-the-name-from-vault_list_memory_files remedy, which costs some tightness.

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?

There is no output schema, and the description compensates fully by specifying both return shapes — raw markdown (or empty string) without the date filter, and JSON { entries, total, on_or_after } with per-entry fields and plaintext wikilinks preserved when filtered. Combined with the error catalogue, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter is already documented, so the baseline is 3. The description earns above baseline by explaining cross-parameter interaction the schema cannot: section requires file, on_or_after requires file, and the section filter collapses from "every section" to one section depending on argument combination.

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 concrete verb and resource ("Read semantic memory from About Me/ files") and then precisely enumerates the three scoping modes: file alone, file+section, and no args. It names the sibling alternatives it is not (vault_read_note, vault_memory_recall, vault_list_memory_files), so an agent can separate it from the rest of the vault_* family without opening a 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?

Gives explicit when-to-use ("Reading user preferences, principles, opinions, or other persistent context"), a prerequisite ordering ("Call vault_list_memory_files first to discover valid file and section names"), and two exclusions routing to siblings: vault_read_note for non-memory notes and vault_memory_recall for cross-file topic lookup.

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