Skip to main content
Glama
memanto-mcp
by geoffsdesk

memanto-mcp

Типизированная семантическая память для Claude. Память с «мнением», разработанная для регулируемых B2B-агентов.

Большинство MCP-серверов для «памяти» предоставляют только save_memory(text) и на этом заканчиваются. Этот сервер предлагает продуманную модель памяти — типизированные записи (fact, decision, commitment, instruction и т. д.), данные о происхождении и уровне уверенности для каждой записи, разграничение доступа по арендаторам (tenants) и битемпоральное извлечение данных. В комплект входит навык (skill) для Claude, который подсказывает модели, когда нужно запоминать, когда извлекать, а когда отвечать, а также как правильно оформлять цитаты и соблюдать границы доступа.

Если вы создаете B2B-агентов на платформе Anthropic — для юридических технологий, финансов, здравоохранения, клиентского сервиса или внутренней корпоративной работы — этот инструмент создан именно для вас.

Что делает его особенным

  • Типизированная память. Тринадцать первоклассных типов памяти (fact, preference, goal, decision, commitment, instruction, relationship, context, observation, event, artifact, learning, error). Неверный тип = «шум» при поиске. Выбор правильного типа является частью контракта API.

  • Происхождение и уверенность для каждой записи. explicit_statement / inferred / observed / validated / corrected / imported, плюс оценка уверенности от 0.0 до 1.0. Фильтрация при поиске через min_confidence. Аудиторский след находится внутри данных, а не прикручен сбоку.

  • Битемпоральное чтение. recall_as_of(date) возвращает состояние памяти на определенную дату; recall_current исключает устаревшие/истекшие записи. Создано для рабочих процессов типа «что мы знали на ».

  • Встроенный навык для Claude. skills/memanto-memory/SKILL.md объясняет Claude, когда использовать каждый глагол, как ограничивать память границами арендатора через составной agent_id, когда «сырое» извлечение лучше синтезированных ответов (при составлении внешних текстов — всегда используйте «сырое» извлечение), и как относиться к содержимому памяти как к недоверенному при чтении.

  • Один процесс. Напрямую оборачивает слой Python-сервиса memanto — не нужно запускать отдельный REST-процесс.

Related MCP server: CozoDB Memory MCP Server

Чем это не является

  • Это не векторное хранилище общего назначения. Память здесь короткая, структурированная и типизированная; если вам нужно проиндексировать 100 тысяч контрактов, делайте это в своем хранилище документов, а здесь храните решения, обязательства и наблюдения, которые агент делает на их основе.

  • Не является агностическим к бэкенду (пока). В настоящее время привязано к Moorcheh как векторному бэкенду. Бесплатный уровень — 100 тыс. операций в месяц; подключаемые бэкенды есть в плане развития.

  • Не является корпоративной системой аудита. Навык содержит рекомендации о том, что нужно для регулируемых развертываний, но сервер пока не принуждает к соблюдению всех требований. См. план развития для уточнения пробелов.

Инструменты

Девять инструментов MCP, сгруппированных под пространством имен memanto:

Инструмент

Назначение

memanto_remember

Сохранить типизированную память (факт, предпочтение, цель, решение, …)

memanto_recall

Семантический поиск по памяти агента

memanto_recall_current

Извлечь только активные (не устаревшие) записи памяти

memanto_recall_as_of

Извлечь память на конкретную дату

memanto_answer

Ответ на основе RAG с использованием встроенной LLM memanto

memanto_create_agent

Создать нового агента (создает пространство имен Moorcheh)

memanto_list_agents

Список известных агентов

memanto_get_agent

Получить метаданные одного агента

memanto_delete_agent

Удалить агента и всю его память (деструктивное действие)

Установка

Как плагин Cowork (режим Cowork в Anthropic)

  1. Скачайте последний релиз memanto-mcp.plugin.

  2. Перетащите его в Cowork через интерфейс установки плагинов.

  3. Установите MOORCHEH_API_KEY в переменные окружения, которые наследует Cowork, затем перезапустите Cowork.

Как автономный MCP-сервер (Claude Code, Cline, Cursor, Continue и др.)

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

Затем укажите вашему MCP-хосту путь к бинарному файлу. Claude Code:

claude mcp add memanto -- memanto-mcp

Cursor / Cline / Continue: добавьте в конфигурацию MCP как stdio-сервер с командой memanto-mcp.

Чтобы встроенный навык загрузился в MCP-хостах, поддерживающих навыки (Cowork, Claude Code с плагином skills), скопируйте skills/memanto-memory/SKILL.md в директорию навыков хоста.

Получение API-ключа Moorcheh

Зарегистрируйтесь на https://console.moorcheh.ai/api-keys. Бесплатный уровень — 100 тыс. операций в месяц.

Первый запуск

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

Claude вызывает memanto_create_agent, затем memanto_remember(memory_type="fact", content="Matter 4711 (Acme): 60-day notice period.", confidence=0.95).

> What do we know about Matter 4711?

Claude вызывает memanto_recall(query="Matter 4711", agent_id="acme:matter-4711:user-jdoe") и цитирует сохраненный факт.

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

Claude вызывает memanto_recall_as_of(query="Matter 4711 position", agent_id=..., as_of_date="2026-02-28").

Как навык работает с областями видимости

Сервер использует agent_id как примитив области видимости. Навык учит Claude рассматривать его как составной ключ:

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

Например: acme:matter-4711:user-jdoe. Извлечение данных между арендаторами — это критическая ошибка в производственных системах памяти; навык заставляет Claude громко отказываться от таких действий, вместо того чтобы молча возвращать пустые результаты при нарушении границ.

Для осей, которые не вписываются в составной ключ (юрисдикция, регион, группа конфликта интересов, линейка продуктов), используйте tags — они доступны для фильтрации при поиске.

Правило составления текстов

Когда пользователь составляет внешний текст — дополнение к контракту, письмо клиенту, нормативный документ, клиническое резюме, брифинг — навык предписывает Claude использовать memanto_recall («сырые» результаты) и цитировать их, а не memanto_answer (синтезированный ответ). Стоимость аудита перефразированной цитаты слишком высока.

Когда пользователь занимается исследованиями, изучением или подготовкой для себя, memanto_answer вполне подходит.

План развития

Честные пробелы — то, что навык предполагает нужным в полностью регулируемом развертывании, и то, что сервер пока не делает — задокументированы в ROADMAP.md. Основное: структурированные поля source_uri + source_span (цитаты сейчас кодируются внутри content), версионированные изменения + API для удаления данных, подключаемые бэкенды хранения и HTTP-транспорт для хостов, не поддерживающих stdio.

Структура репозитория

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.md. Два наиболее важных вклада прямо сейчас: (1) подключаемый бэкенд хранения (интерфейс + реализация SQLite или pgvector) и (2) структурированная модель цитирования (source_uri + source_span + quote). Оба пункта есть в плане развития.

Лицензия

MIT. См. LICENSE.

Благодарности

  • memanto и Moorcheh — модель типизированной памяти и векторный бэкенд, которые здесь используются.

  • MCP от Anthropic и Agent Skills — протокол и формат навыков.

  • Команды, создающие корпоративные агентные системы, чьи опубликованные паттерны легли в основу навыка: Harvey, Hebbia, Robin AI, Clio, EvenUp, Casetext.

Не является аффилированным лицом Anthropic или 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