Skip to main content
Glama

basic-memory-mcp

An MCP server that gives a model a persistent notebook backed by a folder of Markdown files.

Tools

  • discover_topics(query=None, tag=None, limit=50) — list topics, optionally filtered.

  • read(topic_id) — return the full Markdown file including frontmatter.

  • write(topic_id, content, title=None, tags=[]) — create or replace a topic.

  • edit(topic_id, old, new, replace_all=False) — exact string replacement.

  • delete(topic_id) — soft-delete into <root>/.trash/<timestamp>/....

Topic ids are slash-paths relative to --root without .md, e.g. projects/atlas-ports.

Related MCP server: Local Knowledge Desk

Usage

# stdio (default)
basic-memory-mcp --stdio --root ~/ATLAS-GROUP/basic-memory/memory

# HTTP
basic-memory-mcp --http --host 127.0.0.1 --port 8101 --root ...

Set BASIC_MEMORY_READ_ONLY=1 or --read-only to expose only discover_topics and read. Set BASIC_MEMORY_HARD_DELETE=1 or --hard-delete to unlink files instead of moving them (only for throwaway/test roots).

Multi-tenancy (ATLAS deployments only, off by default)

--multi-tenant (or BASIC_MEMORY_MULTI_TENANT=1) namespaces every topic per authenticated user, for the ATLAS deployment where the backend injects the caller's email into tool calls.

  • Off (default): tool schemas are exactly as above — no _atlas_user parameter exists anywhere, and behavior is byte-identical to a single-user server.

  • On: every tool grows a trailing _atlas_user: str | None = None parameter ("injected by the Atlas backend; do not supply"). ATLAS fills it from the authenticated session and strips anything the model supplies, so the LLM cannot impersonate another user. A call arriving without it is refused with a clear error — never silently mapped to a shared/default tenant.

  • The email is sanitized to a filesystem-safe slug (lowercase, @ and ._, must match [a-z0-9_-]+ afterward): garland3@gmail.comgarland3_gmail_com/. All topic ids then resolve under <root>/<slug>/, and the usual path-escape rules apply after prepending, so one tenant can never name another tenant's files.

  • Each tenant gets their own .trash/; sweep, catalog priming, and discover_topics are scoped to the calling tenant. memory:// resources are disabled in this mode (resources get no _atlas_user injection, so they cannot be scoped to the caller).

  • Accepted slug collision: a.b@c.d and a_b@c_d sanitize to the same slug and share a folder. Emails are the trust boundary and ATLAS authenticates them, so this requires two authenticated users with pathological addresses.

  • This is namespacing for the trusted-ATLAS case, not security against a hostile client — stdio gives whoever spawns the process the whole folder anyway.

  • No migration tool. Turning the flag on over an existing flat root leaves old topics invisible; move them under the tenant folder with a one-time mv <root>/projects <root>/<slug>/ (etc.) if you enable it later.

Storage

Files are UTF-8 Markdown with YAML frontmatter; only .md files are visible. The server manages created and updated; the model supplies title and tags. The memory folder is plain files, so git and ordinary editors work.

Development

uv sync
uv run pytest

Available Tools

9 tools
appendA
Destructive

Append text to an existing topic without rewriting the whole body.

Inserts with exactly one blank line between the old body and the new text. If heading is supplied, appends under an existing ## heading or creates it at the end. Fails if the topic does not exist. Bumps the 'updated' timestamp. A retention argument only extends the current expiry; it never shortens it.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMarkdown text to append
headingNoOptional ## heading under which to append
topic_idYesTopic id to append to
retentionNoIf given, extends the topic's expiry (never shortens it). Same values as write().

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses detailed behavioral traits: insertion with exactly one blank line, heading creation behavior, failure on nonexistent topic, timestamp bumping, and retention never shortening. This goes well beyond the annotation (destructiveHint: true) and gives the agent a clear model of side effects.

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 compact and front-loaded with the primary purpose. Each subsequent sentence adds meaningful behavior detail without unnecessary fluff. It is well-structured and easy to parse.

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 moderate complexity, the description covers failure conditions, side effects (timestamp), and retention semantics. Since an output schema exists, return values are not needed in the description. It is sufficiently complete for effective invocation.

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?

The schema already provides descriptions for all parameters (100% coverage). The tool description adds extra meaning for 'heading' (appends under existing ## heading or creates it) and 'retention' (extends but never shortens). This enriches understanding beyond the schema, warranting a score above the baseline.

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 clearly states the action: 'Append text to an existing topic.' The phrase 'without rewriting the whole body' differentiates it from sibling tools like write and edit, making the purpose specific and unambiguous.

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?

The description implies when to use this tool (when adding text to an existing topic without rewriting the whole body) and provides context about behavior (e.g., heading handling, failure if topic doesn't exist). However, it does not explicitly name alternatives or state when-not-to-use, so it falls short of a 5.

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

deleteA
Destructive

Soft-delete a topic, moving it to /.trash//.md.

Returns the trash path so it can be manually restored. Parent folders are pruned if empty. Topics are never unlinked.

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idYesTopic id, e.g. 'projects/atlas-ports'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the destructiveHint annotation, explaining that deletion is soft, files are moved to a timestamped trash path, the path is returned for manual restoration, parent folders are pruned when empty, and topics are never unlinked. This provides comprehensive behavioral transparency with no contradictions.

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 extremely concise, with the main action in the first sentence and supplementary details in two short follow-up sentences. Every sentence adds meaningful information without redundancy.

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?

For a simple tool with one parameter, an output schema, and a clear annotation, the description covers all essential aspects: the action, the destination, the return value, side effects, and restoration. It is self-contained and leaves no major gaps.

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?

The input schema already fully describes the single parameter 'topic_id' with 100% coverage and an example. The description adds minor context by showing how the topic_id is used in the trash path template, but this is not essential since the schema already defines the parameter clearly.

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 clearly identifies the tool as a soft-delete operation for a topic, specifying the destination as a trash path and contrasting with potential permanent deletion. The phrase 'never unlinked' and the return of the trash path distinguish it from related sibling tools like 'sweep' and 'rename'.

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?

The description clearly implies when to use this tool: for reversible deletion that can be manually restored. It does not explicitly compare to alternatives like 'sweep' (likely permanent deletion), so it lacks an explicit 'when not to use' statement, but the context of soft-delete and manual restore is strong.

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

discover_topicsA
Read-only

List available topics. Call this before read/write/edit/delete/append/rename/sweep.

Returns a JSON list of {id, title, tags, updated, size, snippet, outbound_links, expires, match_reason}, newest first. With a query, snippets are centered on the first body match. Expired topics are hidden by default; pass include_expired=true to reveal them, marked with "expired": true. Reports when results are truncated by limit or when expired topics were hidden.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoOptional exact tag match
limitNoMaximum topics to return
queryNoOptional case-insensitive AND search across id, title, tags, and body. Quoted "exact phrase" matches as a single term.
include_expiredNoInclude topics whose expiry has passed

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds rich behavioral detail: the exact JSON fields returned, newest-first ordering, snippet centering on body matches, default hiding of expired topics, the 'expired' marker when revealed, and reporting of truncation/hidden results. This fully discloses behavior without contradicting annotations.

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 front-loaded with the primary purpose and usage directive, followed by a compact list of return fields and behavioral notes. Every sentence contributes unique information; there is no padding or repetition of schema content.

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 (4 parameters, list return with fields, filtering, expiration handling), the description covers all essential aspects: what it returns, ordering, query behavior, expiry handling, and truncation reporting. With readOnlyHint annotation and output schema, nothing is left ambiguous.

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?

Input schema already covers all four parameters with descriptions (100% coverage), so baseline is 3. The description adds meaning beyond the schema, notably that query affects snippet centering and that include_expired reveals topics marked with 'expired': true. This enriches the agent's understanding of parameter effects.

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 clearly states 'List available topics' — a specific verb and resource that distinguishes this discovery tool from siblings like read, write, and related. It also positions itself as the precursor to mutation operations, further clarifying its unique role.

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?

Explicitly instructs to 'Call this before read/write/edit/delete/append/rename/sweep', giving a clear when-to-use directive. It also explains optional query and include_expired behavior, which helps the agent decide when to pass those parameters.

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

editA
Destructive

Exact-string replacement inside an existing topic, like the Claude Code Edit tool.

Fails if the topic does not exist. Fails if 'old' is not found. Fails if 'old' appears more than once and replace_all is false. Bumps the 'updated' timestamp. To change title, tags, or expiry, use write instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
newYesReplacement text
oldYesExact text to replace. Must match character-for-character, including whitespace
topic_idYesTopic id, e.g. 'projects/atlas-ports'
replace_allNoReplace every occurrence of old; default is exactly one occurrence

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description reveals failure modes (topic not existing, old not found, multiple occurrences without replace_all) and the side effect of bumping the 'updated' timestamp. This is rich behavioral context not present in annotations.

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 five tightly written sentences with no fluff. The first sentence defines the core purpose, and each subsequent sentence provides essential failure, side-effect, or alternative information. Nothing is redundant.

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 an output schema is present, there is no need to explain return values. The description covers purpose, exact behavior, failure modes, side effects, and alternative sibling tools, making it fully adequate for a tool of this complexity.

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 description coverage is 100%, so baseline is 3. The description adds value by contextualizing parameters: e.g., it explains that 'old' appearing more than once causes failure if replace_all is false, which connects parameter semantics to runtime behavior. This is beyond what the schema states.

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 clearly states 'Exact-string replacement inside an existing topic' with a specific verb and resource, and distinguishes itself from siblings by explicitly directing metadata changes to write. This is unambiguous.

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 provides explicit when-to-use guidance ('Exact-string replacement') and an explicit alternative for metadata changes ('To change title, tags, or expiry, use write instead'). It also lists failure conditions that effectively say when not to use without replace_all, aiding correct tool selection.

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

readA
Read-only

Read a single topic in full, including its YAML frontmatter.

Errors with a clear message if the topic does not exist; call discover_topics first. Expired topics are still readable by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idYesTopic id, e.g. 'projects/atlas-ports'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already signals a safe read operation. The description adds valuable behavioral details about error handling ('Errors with a clear message if the topic does not exist') and expiry behavior ('Expired topics are still readable by id'), going beyond what annotations provide.

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 consists of three concise sentences, front-loaded with the primary purpose. Every sentence contributes useful information (purpose, error handling, expiry behavior) without unnecessary verbosity.

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?

For a simple read operation with one parameter, readOnlyHint, and an output schema, the description covers essential behavioral aspects (error, expiry) and prerequisites. It is complete enough for an agent to decide when and how to call the tool.

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%, so the parameter 'topic_id' is fully documented in the schema. The description adds minimal parameter semantics (only the prerequisite to call discover_topics first), which is a slight enhancement but does not significantly exceed the schema baseline.

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 clearly states the tool's function: 'Read a single topic in full, including its YAML frontmatter.' It specifies both the resource (topic) and the scope (single, full, including frontmatter), and distinguishes it from sibling tools like discover_topics (listing) and write/edit (mutations).

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?

The description provides contextual guidance: 'call discover_topics first' indicates a prerequisite for obtaining valid topic IDs, and 'Expired topics are still readable by id' clarifies behavior for edge cases. It does not explicitly exclude alternatives, but the guidance is clear.

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

renameA
Destructive

Move a topic and rewrite wiki links that pointed to it.

Also rewrites prefix links: renaming scratch/archive/scratch/ fixes [[scratch/x]] links. Refuses if new_id already exists. Returns the count of rewritten links so the model knows the blast radius.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_idYesDestination topic id
old_idYesExisting topic id to move

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses multiple behavioral traits: rewrites wiki links, handles prefix links with an example, refuses if new_id exists, and returns the count of rewritten links. This is rich, actionable context.

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 three sentences, with the core purpose front-loaded. The second sentence adds a concrete example, and the third covers constraints and return value—every sentence earns its place.

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?

The description covers the operation, edge cases (prefix links, existing new_id), and return value. With an output schema present, there's no need to explain the count format. It's complete for a two-parameter tool.

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 100%, so the schema already documents both parameters. The description adds context about the overall operation but doesn't elaborate on parameter specifics beyond what the schema provides. 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 clearly states 'Move a topic and rewrite wiki links that pointed to it,' giving a specific verb and resource. It also distinguishes the tool from siblings like write, edit, and delete by emphasizing the link-rewriting aspect.

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?

The description gives clear context for when to use the tool (moving a topic and updating links) without explicitly naming alternatives. It doesn't provide exclusions or compare to siblings, but the unique behavior of rewriting links implies its specific use case.

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

sweepA
Destructive

List or soft-delete topics whose expiry has passed.

dry_run=true returns the list without changing anything; the model should review it and then call sweep(dry_run=false) to move the topics into .trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoWhen true (default), lists expired topics without moving them.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only provide destructiveHint=true. The description adds valuable context: the operation is a soft-delete that moves topics to .trash, and dry_run=true is safe, while dry_run=false triggers the destructive action. This explains the behavior beyond the annotation.

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 only two sentences, front-loaded with the core purpose, and every word earns its place. It explains the behavior, the parameter's role, and the intended usage pattern without any fluff.

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 simplicity (one parameter) and the presence of an output schema, the description fully covers the operation, safety considerations, and usage workflow. No additional return type details are needed.

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?

The schema already describes the dry_run parameter with 100% coverage. The description enriches this by explaining the two-step workflow, clarifying that true is a preview and false performs the move. This adds meaningful context beyond the schema's basic 'lists without moving'.

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 uses a specific verb+resource combination: 'List or soft-delete topics whose expiry has passed.' This clearly states the tool's function and distinguishes it from sibling tools like 'delete' (hard delete) and 'read' (general reading).

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?

The description gives explicit usage guidance: first call with dry_run=true to review, then call with dry_run=false to perform the soft-delete. This is a clear when-to-use workflow. It doesn't explicitly mention alternatives like 'delete' for permanent deletion, but the soft-delete designation implies that distinction.

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

writeA
Destructive

Create or replace a topic. Overwrites existing topics without asking; use edit for targeted changes.

Parent folders are created implicitly. Returns the resolved id and whether the topic was created or replaced. Rejects content over approximately 1 MB; split large memories into multiple topics. Retention controls expiry: permanent means never; session/today means 24 hours; week means 7 days; month means 30 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional list of tags
titleNoOptional display title; defaults to the topic id
contentYesMarkdown body text (frontmatter is managed by the server)
topic_idYesTopic id, e.g. 'scratch/2026-08-05-note'
retentionNoExpiry: permanent (default), session/today, week, month, never, or an ISO-8601 date/time.permanent

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the destructiveHint annotation by detailing overwrite behavior, implicit folder creation, the return payload (resolved id and created/replaced), the 1 MB content limit, and exact retention durations. 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.

Conciseness5/5

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

Four tight sentences, no filler. The description is front-loaded with the core purpose, then efficiently covers destructive behavior, path creation, size limits, and retention in a logical order.

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, the annotations, and the presence of an output schema, the description covers all essential aspects: purpose, destructive behavior, constraints, return values, and retention options. An agent has enough to select and invoke this tool correctly.

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%, so the baseline is 3, but the description adds useful meaning: retention options are expanded with concrete durations (e.g., 'session/today means 24 hours'), and content is given a size constraint. Tags and title are self-explanatory and already well-described in the schema.

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?

Opens with 'Create or replace a topic' – a specific verb and resource. It distinguishes itself from the sibling 'edit' tool ('use edit for targeted changes') and clearly conveys the overwrite behavior.

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?

Explicitly directs users to 'edit' for targeted changes, which is a clear when-not-to-use alternative. It also gives practical guidance on splitting large content, notes implicit parent folder creation, and clarifies retention semantics.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedappend
    • First observeddelete
    • First observeddiscover_topics
    • First observededit
    • First observedread
    • First observedrelated
    • First observedrename
    • First observedsweep
    • First observedwrite

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: discover_topics for listing, read for full content, related for links, write for full replacement, edit for targeted string changes, append for adding text, rename for moving, delete for trash, and sweep for expired cleanup. No two tools overlap in function.

Naming Consistency3/5

Most tools use single-word verbs (read, write, edit, append, rename, delete, sweep), but discover_topics introduces an underscore and related is an adjective rather than a verb. This mixed convention breaks the otherwise predictable verb-only pattern.

Tool Count5/5

The 9 tools are well-scoped for a personal memory server, covering the full lifecycle of topics from discovery to deletion without unnecessary redundancy. Each tool addresses a distinct need and the count feels appropriate.

Completeness5/5

The tool surface is comprehensive: create, read, update (via edit, append, rename), delete, list, relationship traversal, and expiration cleanup are all covered. There are no discernible gaps for the stated purpose of managing topics in a knowledge base.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP server that gives AI assistants long-term memory by storing, searching, and recalling notes as Markdown files on your machine.
    14
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that stores notes as Markdown files on your machine, enabling you to save, search, and manage notes through natural language with Claude Code or Claude Desktop.
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/garland3/basic-memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server