memanto-mcp
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:
Инструмент | Назначение |
| Сохранить типизированную память (факт, предпочтение, цель, решение, …) |
| Семантический поиск по памяти агента |
| Извлечь только активные (не устаревшие) записи памяти |
| Извлечь память на конкретную дату |
| Ответ на основе RAG с использованием встроенной LLM memanto |
| Создать нового агента (создает пространство имен Moorcheh) |
| Список известных агентов |
| Получить метаданные одного агента |
| Удалить агента и всю его память (деструктивное действие) |
Установка
Как плагин Cowork (режим Cowork в Anthropic)
Скачайте последний релиз
memanto-mcp.plugin.Перетащите его в Cowork через интерфейс установки плагинов.
Установите
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-mcpCursor / 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 toolsmemanto_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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | No | support | |
| agent_id | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | Yes | ||
| agent_id | Yes | ||
| memory_types | No | ||
| min_confidence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | Yes | ||
| agent_id | Yes | ||
| as_of_date | Yes | ||
| memory_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| limit | No | ||
| query | Yes | ||
| agent_id | Yes | ||
| memory_types | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| title | No | ||
| source | No | claude | |
| content | Yes | ||
| agent_id | Yes | ||
| confidence | No | ||
| provenance | No | explicit_statement | |
| memory_type | No | fact |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v0.2.0- First observed
memanto_answer - First observed
memanto_create_agent - First observed
memanto_delete_agent - First observed
memanto_get_agent - First observed
memanto_list_agents - First observed
memanto_recall - First observed
memanto_recall_as_of - First observed
memanto_recall_current - First observed
memanto_remember
TDQS
Scored across 9 tools
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.
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.
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.
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
Related MCP Connectors
Persistent memory for AI agents. EU-hosted, privacy-first, hybrid recall, contradiction detection.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
One memory for your AI agents and your team: Claude, ChatGPT, Cursor and your agents share it.
1Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Related MCP Servers
- AlicenseAqualityDmaintenancePersistent 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.42MIT
- AlicenseNot gradedqualityDmaintenanceLocal-first memory for Claude & AI agents with hybrid search, Graph-RAG, and time-travel, runs entirely on your machine.76 npm1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables 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 npm1MIT
- AlicenseNot gradedqualityAmaintenanceEnables 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 npmMIT