Skip to main content
Glama
memanto-mcp
by geoffsdesk

memanto-mcp

Typed semantic memory for Claude. Memory with opinions, designed for regulated B2B agents.

Most "memory MCP" servers give you save_memory(text) and call it done. This one ships an opinionated memory model — typed records (fact, decision, commitment, instruction, …), provenance and confidence on every write, tenant-aware scoping, and bi-temporal recall — together with a Claude skill that tells the model when to remember vs. recall vs. answer, and how to keep citations and tenancy clean.

If you're building B2B agents on Anthropic's platform — legal tech, finance, healthcare, customer ops, internal knowledge work — that's the audience this is built for.

What's distinctive

  • Typed memory. Thirteen first-class memory types (fact, preference, goal, decision, commitment, instruction, relationship, context, observation, event, artifact, learning, error). Wrong type = noisy recall. Picking the right type is part of the API contract.

  • Provenance and confidence on every record. explicit_statement / inferred / observed / validated / corrected / imported, plus a 0.0–1.0 confidence score. Filterable on recall via min_confidence. The audit trail is in the data, not bolted on.

  • Bi-temporal reads. recall_as_of(date) returns memory as it stood on a date; recall_current excludes superseded/expired records. Built for "what did we know on " workflows.

  • A bundled Claude skill that earns its keep. skills/memanto-memory/SKILL.md tells Claude when to use each verb, how to scope memories to tenant boundaries via composite agent_id, when raw recall beats synthesized answers (drafting external-facing text → raw recall, every time), and how to treat memory bodies as untrusted on read.

  • One process. Wraps the memanto Python service layer directly — no separate REST process to run.

Related MCP server: CozoDB Memory MCP Server

What this is not

  • Not a general-purpose vector store. Memories are short, structured, and typed; if you need to index 100k contracts, do that in your document store and use this for the decisions, commitments, and observations the agent makes about them.

  • Not backend-agnostic (yet). Currently coupled to Moorcheh as the vector backend. Free tier is 100k ops/month; pluggable backends are on the roadmap.

  • Not an enterprise audit system. The skill is opinionated about what regulated deployments need; the server doesn't yet enforce all of it. See the roadmap for the gaps.

Tools

Nine MCP tools, namespaced under memanto:

Tool

Purpose

memanto_remember

Store a typed memory (fact, preference, goal, decision, …)

memanto_recall

Semantic search over an agent's memory

memanto_recall_current

Recall only currently-active (non-superseded) memories

memanto_recall_as_of

Recall as of a specific date

memanto_answer

RAG-grounded answer using memanto's built-in LLM

memanto_create_agent

Provision a new agent (creates a Moorcheh namespace)

memanto_list_agents

List known agents

memanto_get_agent

Get a single agent's metadata

memanto_delete_agent

Delete an agent and all its memory (destructive)

Install

As a Cowork plugin (Anthropic's Cowork mode)

  1. Download the latest memanto-mcp.plugin release.

  2. Drop it into Cowork via the plugin install UI.

  3. Set MOORCHEH_API_KEY in the environment Cowork inherits, then restart Cowork.

As a standalone MCP server (Claude Code, Cline, Cursor, Continue, …)

pip install memanto-mcp
export MOORCHEH_API_KEY="mch_..."

Then point your MCP host at the binary. Claude Code:

claude mcp add memanto -- memanto-mcp

Cursor / Cline / Continue: add to your MCP config as a stdio server with command memanto-mcp.

For the bundled skill to load in MCP hosts that support skills (Cowork, Claude Code with the skills plugin), copy skills/memanto-memory/SKILL.md into the host's skills directory.

Get a Moorcheh API key

Sign up at https://console.moorcheh.ai/api-keys. Free tier is 100k ops/month.

First run

> Create a memanto agent called acme:matter-4711:user-jdoe and remember
> that this matter has a 60-day notice period.

Claude calls memanto_create_agent then memanto_remember(memory_type="fact", content="Matter 4711 (Acme): 60-day notice period.", confidence=0.95).

> What do we know about Matter 4711?

Claude calls memanto_recall(query="Matter 4711", agent_id="acme:matter-4711:user-jdoe") and quotes the stored fact.

> What was our position on Matter 4711 before the redesign on 2026-03-01?

Claude calls memanto_recall_as_of(query="Matter 4711 position", agent_id=..., as_of_date="2026-02-28").

How the skill thinks about scoping

The server uses agent_id as the scoping primitive. The skill teaches Claude to treat it as a composite key:

agent_id = "<tenant>:<workspace>:<actor>"

For example: acme:matter-4711:user-jdoe. Cross-tenant recall is the highest-impact failure mode in production memory systems — the skill makes Claude refuse it loudly rather than silently returning empty results when the boundary is wrong.

For axes that don't fit the composite key (jurisdiction, region, conflict-of-interest group, product line), use tags — they're filterable on recall.

Drafting rule

When the user is composing external-facing text — a contract amendment, a customer-facing email, a regulatory filing, a clinical summary, a briefing memo — the skill instructs Claude to use memanto_recall (raw hits) and quote, not memanto_answer (synthesized). The audit cost of a paraphrased citation is too high.

When the user is researching, exploring, or briefing themselves, memanto_answer is fine.

Roadmap

The honest gaps — what the skill assumes you'd want in a fully regulated deployment and what the server doesn't do yet — are documented in ROADMAP.md. Highlights: structured source_uri + source_span fields (citations currently get encoded inside content), versioned mutations + redact API, pluggable storage backends, and an HTTP transport for non-stdio hosts.

Repository layout

memanto-mcp/
├── .claude-plugin/plugin.json       # Cowork plugin manifest
├── .mcp.json                        # MCP server registration (Cowork)
├── server/memanto_mcp_server.py     # FastMCP server (stdio)
├── skills/memanto-memory/SKILL.md   # the bundled skill
├── pyproject.toml                   # for `pip install memanto-mcp`
├── README.md                        # this file
├── ROADMAP.md                       # what's missing, ranked
├── CONTRIBUTING.md
├── CHANGELOG.md
├── LICENSE                          # MIT
└── docs/
    └── launch-post.md               # cross-post draft

Contributing

See CONTRIBUTING.md. The two highest-leverage contributions right now are (1) a pluggable storage backend (interface + a SQLite or pgvector implementation) and (2) a structured citation model (source_uri + source_span + quote). Both are on the roadmap.

License

MIT. See LICENSE.

Credits

  • memanto and Moorcheh — the typed memory model and vector backend this wraps.

  • Anthropic's MCP and Agent Skills — the protocol and skill format.

  • The teams shipping enterprise agentic systems whose published patterns informed the skill: Harvey, Hebbia, Robin AI, Clio, EvenUp, Casetext.

Not affiliated with Anthropic or Moorcheh.

Available Tools

9 tools
memanto_answerB

RAG-grounded answer using the agent's memory.

Memanto retrieves relevant memories and synthesizes an answer with citations. Use this when the user wants a synthesized response, not raw search hits.

NameRequiredDescriptionDefault
queryYes
agent_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full behavioral burden and does disclose the core pipeline: retrieval over the agent's memory followed by synthesis with citations. It does not state what happens when no relevant memories exist, whether the call is strictly read-only, latency/cost implications, or how agent_id scopes the retrieval corpus, all of which matter for a synthesis tool.

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?

Three short lines, front-loaded with the purpose and then the usage rule; no filler sentences. The second and third lines partially restate the synthesis idea, so it is tight but not maximally economical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the purpose plus usage rule are present. However, for a multi-stage RAG tool with zero annotation coverage and two undocumented required parameters, the definition leaves the agent guessing about scoping and empty-result behavior.

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

Parameters2/5

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

Both parameters are required with 0% schema description coverage, so the description must compensate and largely does not. 'query' is self-evident from the wording, but 'agent_id' is never explained — the phrase 'the agent's memory' only hints that it selects the memory scope, without saying whether it must be an existing agent or what happens on an unknown id.

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 states a specific verb+resource combination: it retrieves memories and synthesizes 'a RAG-grounded answer with citations.' The phrase 'not raw search hits' signals it is distinct from a plain retrieval sibling such as memanto_recall, but that sibling is never named, so the differentiation is implicit rather than explicit.

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 a clear selection rule: 'Use this when the user wants a synthesized response, not raw search hits,' which covers both when to use it and when not to. The gap is that it never points to the concrete alternative (memanto_recall / memanto_recall_current) an agent should pick for raw hits, so the routing is one-sided.

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

memanto_create_agentA

Create a new agent (provisions a dedicated Moorcheh namespace).

Args: agent_id: Unique kebab-case identifier (e.g. 'customer-support', 'geoff-personal'). description: Optional human description. pattern: One of support, project, tool. Default 'support'.

NameRequiredDescriptionDefault
patternNosupport
agent_idYes
descriptionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full behavioral burden. It does disclose the key non-obvious side effect — that creating an agent provisions a dedicated Moorcheh namespace — which is real value beyond the schema. However, it says nothing about behavior when the agent_id already exists (error vs. idempotent), whether creation is reversible, or any permission/auth requirements for a mutating operation.

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 single purpose sentence is front-loaded and the Args block is compact and scannable. Wording is efficient, though the inline Args formatting is a stylistic choice that slightly bloats what could be schema documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and all three parameters receive some prose. Still, for a mutating, unannotated creation tool, the definition leaves out duplicate-id behavior, the meaning of the pattern enum, and any permission or irreversibility context an agent would want before calling it.

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 0%, so the description must supply the meaning, and it largely does: agent_id is documented as a unique kebab-case identifier with concrete examples, description as optional human-readable text, and pattern as one of support/project/tool with a stated default. The only gap is that the three pattern values themselves are never explained, so an agent cannot tell which pattern fits its use case.

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 opens with a specific verb+resource ("Create a new agent") and adds the meaningful parenthetical that it "provisions a dedicated Moorcheh namespace". It does not differentiate itself from siblings like memanto_list_agents or memanto_get_agent, but the create action 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 Guidelines3/5

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

Usage is only implied by the verb "Create": an agent reading it can infer this is the tool for provisioning a new agent. There is no explicit guidance on when to create versus inspect existing agents first (e.g. via memanto_list_agents), and no noted prerequisites or side-effect warnings.

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

memanto_delete_agentA

Delete an agent and its memory namespace.

DESTRUCTIVE: this removes the agent's stored memories. Confirm with the user before calling.

NameRequiredDescriptionDefault
agent_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full disclosure burden, and it does the most important part: it flags the operation as DESTRUCTIVE and states precisely what is lost (the agent's stored memories), which is more than the bare verb would convey. It omits whether deletion is recoverable, what happens if agent_id does not exist, and whether the namespace is shared with other agents, so it is not fully transparent for an irreversible operation.

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?

Two short sentences with the destructive warning front-loaded in caps before the confirmation requirement. Nothing is redundant and the ordering matches the decision the agent must make.

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?

An output schema exists, so return values need no explanation, and for a single-parameter destructive tool the essential facts (what is destroyed, that confirmation is required) are present. Only the origin/validation of agent_id and post-failure behavior are missing.

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 0%, so the description should explain agent_id, and it does not — no format, no statement that the ID comes from memanto_list_agents or memanto_get_agent. The parameter name itself is largely self-explanatory and there is only one, which keeps this from being a real failure.

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?

"Delete an agent and its memory namespace" names a specific verb and resource and, critically, states the scope of collateral damage (the memory namespace), which distinguishes it from memanto_create_agent, memanto_get_agent and the recall siblings. An agent can tell exactly what this tool destroys without opening the schema.

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 an explicit pre-call protocol (confirm with the user before calling), which is the main usage condition for a destructive tool. It stops short of routing guidance such as verifying the agent with memanto_get_agent or memanto_list_agents first, or stating whether memories should be retained instead, so there is no true when-not-to-use.

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

memanto_get_agentB

Get metadata for a single agent (or None if it doesn't exist).

NameRequiredDescriptionDefault
agent_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose one useful trait: a missing agent yields None rather than an error. It says nothing about permissions, whether the lookup is read-only, or what the metadata contains.

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?

One front-loaded sentence with no filler; the parenthetical about the None return is the only extra and it is informative. It is efficient, though it could have spent the same space on the agent_id meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return shape need not be explained, and the None case is covered. Still, the missing agent_id format is a real gap for a lookup tool whose only input is that identifier.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter, and the description adds no meaning: it never says what an agent_id looks like or where an agent obtains one. For a one-param tool this is a clear compensating gap.

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?

States a specific verb and resource ("Get metadata for a single agent"). The words "single" and "metadata" implicitly separate it from memanto_list_agents, but no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives such as memanto_list_agents or memanto_recall_current. The agent must infer that this is for looking up a known agent_id rather than discovering agents.

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

memanto_list_agentsA

List all agents this MCP server knows about.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden, and it only conveys that the result is unfiltered and server-scoped. It says nothing about whether the operation is read-only, whether deleted or archived agents appear, or whether results are paginated. The presence of an output schema relieves it of explaining the return shape, which keeps this at an adequate rather than poor level.

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?

One short sentence with the scope qualifier placed immediately after the verb-resource pair, so the key information is front-loaded. It is efficient but borders on thin for a tool with no annotations backing it up.

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 zero-parameter list tool with an output schema that documents return values, the description covers what is needed to select and invoke it. The remaining gap is behavioral nuance such as pagination or inclusion of inactive agents, which is minor at this complexity level.

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 tool takes zero parameters, so the baseline is 4; there is no parameter meaning for the description to add or omit. The single sentence correctly avoids inventing filtering options that the empty schema does not support.

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 pairs the specific verb "List" with the resource "agents" and scopes it to "this MCP server knows about," which separates it from a global or external agent registry. It does not explicitly name the sibling memanto_get_agent as the single-agent alternative, so differentiation is implied rather than stated.

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

Usage Guidelines3/5

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

Usage is inferable: an agent wanting an inventory of agents would pick this over memanto_get_agent, which needs an identifier. However, the description never states when to prefer listing versus fetching a specific agent, and gives no exclusions or prerequisites.

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

memanto_recallB

Semantic search over an agent's memory.

Args: query: Natural-language query. agent_id: Whose memory to search. memory_types: Optional filter by type(s). tags: Optional filter by tag(s). limit: Max results (default 10). min_confidence: Optional minimum confidence threshold.

Returns: dict with search hits (content, score, metadata).

NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
agent_idYes
memory_typesNo
min_confidenceNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden and does disclose the return shape (hits with content, score, metadata), the relevance-ranked 'semantic' nature of matching, the default limit of 10, and that filters/thresholds are optional. It does not state auth/permission requirements, result ordering, pagination beyond limit, or whether the search crosses agent boundaries — meaningful gaps for a tool with zero 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 is front-loaded in a single sentence, followed by an ordered Args block that mirrors parameter order, plus a brief Returns line. The Args entries mostly restate schema titles and defaults, which is mild redundancy, but there is no filler or hedging.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with no annotations and full output schema, the description covers inputs and the general return shape adequately. Still missing are the valid memory_types vocabulary, the temporal distinction from the as_of/current siblings, and any note on result ordering or scope — gaps an agent would hit on first real use.

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 0%, so the description must compensate, and it does: all six parameters get a one-line gloss (natural-language query, whose memory, type filter, tag filter, max results with default 10, confidence threshold). It stops short of a 5 because memory_types has no enum in the schema and the description never names the valid memory type values, leaving a required filter unbounded.

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?

States a specific verb and resource: 'Semantic search over an agent's memory,' which is clearly distinct from memanto_remember (write) and memanto_answer (QA). However, it never distinguishes itself from the closest siblings memanto_recall_as_of and memanto_recall_current, so an agent cannot tell from the description alone which recall variant to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all — no statement of when to prefer this over memanto_recall_current, memanto_recall_as_of, or memanto_answer. Usage is only inferable from the tool name and the word 'search'; exclusions and alternatives are absent.

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

memanto_recall_as_ofC

Recall memories as they existed at a specific date.

Args: as_of_date: ISO 8601 date or datetime (e.g. '2026-01-15' or '2026-01-15T12:00:00Z').

NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
agent_idYes
as_of_dateYes
memory_typesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden and largely drops it. 'Recall' implies a read, but nothing states whether the tool is side-effect free, what happens when the date precedes a memory's creation, whether deleted memories are visible at their historical timestamp, or how results are ranked and truncated.

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 core sentence is front-loaded and wastes nothing, and the parameter note is compact. The Google-style 'Args:' block is slightly awkward in a tool description whose schema already enumerates the same argument, but it is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is fairly excused, but for a six-parameter retrieval tool with zero annotation coverage and zero schema description coverage, one documented parameter and no usage routing leaves substantial gaps. An agent cannot confidently decide between this, memanto_recall, and memanto_recall_current, nor infer how query and tags interact.

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 0% across six parameters, yet the description documents only as_of_date, and even there the input schema already names the field 'As Of Date'; the ISO 8601 examples are the one genuine addition. The four remaining parameters (query, agent_id, tags, limit, memory_types) get no explanation of matching behavior, scoping, or allowed type values.

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?

States a specific verb and resource with a temporal qualifier: 'Recall memories as they existed at a specific date.' That is meaningfully distinct from a plain recall, and the date clause signals point-in-time snapshot semantics. It stops short of naming the obvious sibling (memanto_recall_current) or otherwise making the distinction explicit.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: nothing says to prefer memanto_recall_current for present state or memanto_recall for unversioned search, and no prerequisites or exclusions are stated. The temporal framing weakly implies the use case, but the agent must infer the routing decision entirely from the name and one clause.

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

memanto_recall_currentC

Recall only currently-active memories (excludes superseded, expired, deleted).

NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
agent_idYes
memory_typesNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does add real behavioral value by enumerating what is filtered out (superseded, expired, deleted), which is more than the schema says, but it omits read-only guarantees, whether agent_id scoping restricts visibility, ordering, and truncation behavior.

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?

A single front-loaded sentence with no filler, and the parenthetical exclusion list is efficient. It is arguably under-specified rather than verbose, but there is zero wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has five parameters, two required, with no schema descriptions and no annotations; the output schema covers return values, but that is the only relief. For a filtered retrieval tool this definition does not supply enough for an agent to construct a correct query or predict scoping behavior.

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

Parameters2/5

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

Schema description coverage is 0% and the description explains none of the five parameters. Query semantics (keyword vs. semantic), the role of agent_id, and the meaning of tags, limit, and memory_types are left entirely to inference from bare property names.

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 uses a specific verb ('Recall') plus a resource ('memories') and constrains the scope to currently-active records with an explicit exclusion list. This lets an agent distinguish it from the broader memanto_recall and the time-traveling memanto_recall_as_of, though the sibling names are never mentioned explicitly.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and none of the alternatives (memanto_recall, memanto_recall_as_of, memanto_answer) are named. The agent must infer from 'only currently-active' that this is the right pick when stale/historical memories should be suppressed.

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

memanto_rememberA

Store a typed memory for an agent.

Args: agent_id: Which agent's memory to write to (must already exist; create with memanto_create_agent). content: The memory content (1–10000 chars). memory_type: One of fact, preference, goal, decision, artifact, learning, event, instruction, relationship, context, observation, commitment, error. title: Optional short title; auto-derived from content if omitted. tags: Optional list of free-form tags for filtering on recall. confidence: Confidence score in [0.0, 1.0]; defaults to 0.8. source: Free-form source label (e.g. "claude", "user", a tool name). provenance: How the memory was obtained — explicit_statement, inferred, observed, validated, corrected, imported.

Returns: dict with the stored memory's id and namespace.

NameRequiredDescriptionDefault
tagsNo
titleNo
sourceNoclaude
contentYes
agent_idYes
confidenceNo
provenanceNoexplicit_statement
memory_typeNofact

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses the existence prerequisite, the 1–10000 char content bound, all defaults (confidence 0.8, source "claude", provenance explicit_statement, memory_type fact), and the return shape (id and namespace). It does not say what happens on a missing agent, whether duplicate memories are deduplicated, or whether the write is idempotent — meaningful gaps for a mutation tool.

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 opening sentence is front-loaded and the per-argument list is scannable and tight. The docstring scaffolding ("Args:", "Returns:") and a redundant "Returns" line despite an existing output schema cost it a point, but no individual line is 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?

For an 8-parameter write tool with no annotations, the definition covers purpose, prerequisite, parameter semantics, defaults, and return value — enough to call it correctly. Remaining gaps are behavioral rather than structural: error modes when agent_id is invalid, and duplicate/conflict handling on repeated writes.

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 description coverage is 0%, so the description must compensate entirely, and it does: every one of the 8 parameters gets a definition, including the full closed vocabularies for memory_type (13 values) and provenance (6 values), the [0.0, 1.0] range for confidence, and the auto-derivation behavior when title is omitted. This adds substantial meaning the bare schema cannot convey, notably the enum values that the schema does not encode.

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?

"Store a typed memory for an agent" gives a concrete verb (store) and resource (typed memory), and the enumerated memory_type list makes "typed" specific rather than decorative. Against siblings like memanto_recall and memanto_recall_as_of, the store-vs-retrieve split is unmistakable without opening any schema.

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 states a hard prerequisite — agent_id must already exist, and points to memanto_create_agent as the way to satisfy it — which is exactly the kind of routing guidance an agent needs. It stops short of any when-not-to-use guidance (e.g. what should not be persisted, or whether repeated identical writes are desirable), so it is clear context without exclusions.

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.

  1. 9 tool updatesv0.2.0
    • First observedmemanto_answer
    • First observedmemanto_create_agent
    • First observedmemanto_delete_agent
    • First observedmemanto_get_agent
    • First observedmemanto_list_agents
    • First observedmemanto_recall
    • First observedmemanto_recall_as_of
    • First observedmemanto_recall_current
    • First observedmemanto_remember

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation3/5

The forget/remember/recall core is clear, but three retrieval tools (recall, recall_as_of, recall_current) overlap: the docs never state whether plain `recall` already excludes superseded memories, and recall_as_of/recall_current document no agent_id or filter args, so an agent cannot tell whether they are scoped per-agent or global. The remember-vs-answer split (raw storage vs synthesized RAG) is well delineated.

Naming Consistency5/5

Every tool uses the same `memanto_` prefix with a snake_case verb or verb_object form (remember, recall, answer, create_agent, list_agents, get_agent, delete_agent). The recall_* variants form a predictable modifier pattern rather than a convention break.

Tool Count5/5

Nine tools is well-scoped: five memory operations plus four agent lifecycle operations, each earning its place. No obvious filler tools or redundancies that would bloat the surface.

Completeness3/5

Agent management is full CRUD except update_agent, but the memory lifecycle is write-and-read only — there is no way to update, forget, delete, or supersede an individual memory, despite memory types like 'error' and 'commitment' implying correction workflows. recall_as_of and recall_current also lack documented parameters, leaving dead ends for filtered use.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Persistent memory API for AI agents — store, recall, and inject semantically-searchable context across sessions. EU-hosted, GDPR-compliant. Supports Claude, Cursor, Cline, and any MCP-compatible client.
    4
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude Code and other LLM agents to capture, consolidate, and retrieve memories from conversation history, building a local-first knowledge graph with semantic search and dream-state consolidation.
    63 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude and other AI agents to store and retrieve decisions, patterns, and knowledge persistently across sessions and context compaction, either self-hosted on Redis/Valkey or through a managed SaaS.
    24 npm
    MIT