Codex Native Memory
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Codex Native Memoryshow my pinned memories"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Codex Native Memory
Local cross-session memory for Codex Desktop and Codex CLI.
Codex is the primary coding AI. Claude, Gemini, and other tools are optional attached sources or review targets. If you only use Codex, there is nothing extra to configure.
The goal is deliberately narrow: import Codex transcript JSONL files, index them
locally in SQLite, expose search through MCP, and optionally ask the local Codex
CLI to summarize conversations. No Claude, Gemini, OpenRouter, or vendor API key
is required. The summarizer uses the user's existing Codex/ChatGPT auth through
codex exec.
Documentation
Related MCP server: Codex Memory
How It Works
Codex transcripts -> local importer -> SQLite/FTS -> MCP tools -> Codex contextThe architecture is Codex-first and project-centric. Codex is the primary
coding shell and the default coding AI. Claude, Gemini, Cursor, Aider, or other
AI systems can attach later as optional external sources or review targets.
Codex-only mode is the normal default: if you do not use Claude, Gemini, or any
other AI, there is nothing extra to configure. Imported sessions are stored with
source_app and source_kind metadata so future external transcripts can flow
into the same local project memory without taking over the main Codex workflow.
Status
This is an MVP. It already supports:
importing
~/.codex/sessions/**/*.jsonl;SQLite storage with FTS5 search when available;
a stdio MCP server with search, import, recent sessions, and health tools;
project-oriented memory context with summaries, decisions, questions, and observations;
a dynamic project profile with preferences, constraints, warnings, and recent activity;
pinned manual memory items for durable user, project, and workflow rules, including update/delete and duplicate suppression;
JSON export/import for pinned memory backups and project-profile handoffs;
a bootstrap flow that imports recent memory, summarizes the queue, and returns context;
project candidate discovery for temporary Codex
new-chat*workspaces;queue processing with extractive summaries;
optional AI summaries through
codex exec --ephemeral;optional configurable external sources through
sources.json;optional review targets for Claude, Gemini, or generic external AI checks;
a Codex plugin manifest and helper scripts.
Planned adapter direction:
codex: current~/.codex/sessions/**/*.jsonlimporter;claude: local Claude transcript/history importer;gemini: local Gemini CLI/project history importer;generic-jsonl: user-supplied transcript folders mapped into the canonical schema.
Codex always remains the default coding AI. If you only use Codex, skip this section. Later, Claude, Gemini, and other tools can attach to it as memory sources or optional review targets by pointing the plugin at their transcript paths:
python -m codex_native_memory sources list
python -m codex_native_memory sources add claude --type claude --path "$HOME\.claude\**\*.jsonl" --review-enabled
python -m codex_native_memory sources add gemini --type gemini --path "$HOME\.gemini\**\*.jsonl" --review-enabled
python -m codex_native_memory backfill --all-sources
python -m codex_native_memory sources review-optionsBefore using external AI review, check whether review targets are configured. If none are configured, keep review inside Codex and do not ask the user to connect external AI tools.
Quick start
For the annotated install flow, see docs/INSTALL.md.
Clone the repository and install the Python package in editable mode:
git clone https://github.com/BulbuLbul86/codex-native-memory.git
cd codex-native-memory
python -m pip install -e ".[dev]"From the repository directory:
python -m codex_native_memory doctor
python -m codex_native_memory doctor --json
python -m codex_native_memory init
python -m codex_native_memory bootstrap "current task" --cwd "$PWD" --json
python -m codex_native_memory remember "Codex remains the primary coding AI." --cwd "$PWD"
python -m codex_native_memory revise 1 --text "Codex remains the primary coding AI for this project."
python -m codex_native_memory memories --cwd "$PWD"
python -m codex_native_memory export --cwd "$PWD" --output memory-export.json
python -m codex_native_memory import memory-export.json --cwd "$PWD"
python -m codex_native_memory backfill --limit 50
python -m codex_native_memory context "current task" --cwd "$PWD" --limit 5
python -m codex_native_memory search "VPN" --limit 5
python -m codex_native_memory process-queue --limit 5 --mode extractiveTo expose it to Codex as MCP:
.\scripts\install-for-codex.ps1On macOS/Linux:
./scripts/install-for-codex.shRestart Codex after installing the MCP entry. In Codex, a normal prompt such as
подними память проекта should be enough for the skill to call
memory_bootstrap. The CLI commands above are fallback and maintenance tools,
not something users should memorize for daily use.
If Codex starts inside a temporarynew-chat* folder, memory_bootstrap
can recommend the likely real project and return that project's context.
To attach Claude/Gemini sources interactively later:
.\scripts\configure-sources.ps1Commands
doctor Show paths, Codex CLI discovery, and DB stats.
init Create the local SQLite database.
backfill Import changed transcript JSONL files.
watch Poll transcript files and import changes.
search <query> Search messages, summaries, observations, and memories.
context [query] Build project-oriented memory context.
bootstrap [query] Import recent memory and return profile/context.
remember <text> Store a pinned memory item.
revise <id> Update a pinned memory item.
memories List pinned memory items.
forget <id> Delete a pinned memory item.
export Export pinned memory and project profile JSON.
import [path] Import pinned memory from an export JSON file/stdin.
process-queue Summarize imported sessions.
mcp Run the MCP stdio server.Development
python -m pip install -e ".[dev]"
python -m ruff check .
python -m compileall -q codex_native_memory
python -m unittest discover -s tests -vSee CONTRIBUTING.md, CHANGELOG.md, and SECURITY.md before publishing a
public release.
export writes pinned memory. When scoped with --project or --cwd, it also
includes a computed project profile for handoff context; unscoped exports omit
the project profile because they may contain memory from multiple projects.
Imported items carry an origin_key, so repeated imports update existing
records even when the source memory text changed. Use --project or --cwd
on import to move project/workflow memory into a new target project; user
scope memory remains global.
Data defaults to %USERPROFILE%\.codex-native-memory. Override it with
CODEX_NATIVE_MEMORY_HOME.
MCP tools
memory_search: search imported conversations.memory_context: build project-oriented context from recent sessions, summaries, decisions, open questions, observations, and optional query matches.memory_bootstrap: import recent memory, process pending summaries, and return a dynamic project profile plusmemory_contextoutput in one call. When the current cwd is a temporary Codexnew-chat*workspace with little memory, the result also includesproject_candidatesand, when useful,recommended_profile/recommended_contextfor the likely real project.memory_remember: store a pinned memory item for future bootstrap/context.memory_notes: list pinned memory items for a project/cwd.memory_update: update a pinned memory item by id.memory_export: export pinned memory and computed project profile as JSON.memory_import_bundle: import pinned memory from amemory_exportbundle.memory_forget: delete a pinned memory item by id.memory_recent: list recent imported sessions.memory_import: import changed Codex transcript files.memory_sources: list attached sources and external review options.memory_health: show DB, package, MCP wrapper, provider, and source health.
If a long-lived Codex thread reports that the MCP transport closed right after a
plugin reinstall, check doctor/memory_health and retry in a fresh thread. The
server uses JSON-lines stdio for Codex and opens SQLite lazily on the first tool
call.
For common setup issues, see docs/TROUBLESHOOTING.md.
Search results are intentionally normalized around sessions, messages, summaries, and observations. External adapters should write into the same shape and keep their original source path/source app metadata for traceability.
Provider behavior
process-queue --mode codex calls the local Codex CLI like this:
codex exec --ephemeral --ignore-user-config --ignore-rules --sandbox read-onlyThe run is ephemeral, so it should not create recursive transcript files. The
working directory is under the memory data directory and the command uses the
existing Codex auth stored in CODEX_HOME.
Use --mode extractive for a fully local, no-model pass. Use --mode auto to
try Codex and fall back to extractive summaries on failure.
Available Tools
13 toolsmemory_bootstrapC
Import recent memory, summarize pending sessions, and return a dynamic project profile plus project-oriented context.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| force | No | ||
| query | No | ||
| project | No | ||
| source_id | No | ||
| all_sources | No | ||
| import_limit | No | ||
| summary_mode | No | extractive | |
| context_limit | No | ||
| summary_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry full behavioral disclosure. It states it imports and summarizes, implying mutation, but does not clarify side effects, permissions, rate limits, or if it is safe to call repeatedly. The overview is too high-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?
The description is a single sentence, very concise. However, it lacks structure and omits details that could be included without much added length. It is not optimally front-loaded for key information.
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?
Given 10 parameters, no output schema, and no annotations, the description is far too brief. The agent cannot determine how to use the tool correctly without parameter documentation or return value explanation.
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 description adds zero information about parameters despite a complex 10-parameter input schema with 0% coverage. It does not describe any parameter meanings, defaults, or usage.
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 clearly states the tool imports memory, summarizes sessions, and returns a project profile. It uses specific verbs and resources. However, it does not explicitly differentiate from sibling tools like memory_import or memory_recent.
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?
No guidance is provided on when to use this tool versus alternatives. It lacks prerequisites, usage context, or exclusions. The description is purely declarative without usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_contextC
Build project-oriented memory context: summaries, decisions, open questions, observations, recent sessions, and optional query matches.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| limit | No | ||
| query | No | ||
| project | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. 'Build' could imply mutable side effects, but no mention of whether it modifies state, requires permissions, or has rate limits. Behavioral traits are unclear.
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?
Single sentence, no waste. However, it lacks front-loading of key information and structure that would aid quick parsing for an agent.
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?
No output schema. The description does not explain return format, side effects, or how the context is built from the parameters. For a tool with 4 parameters and no annotations, it is insufficiently complete.
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%. The description mentions 'optional query matches' but does not map parameters (cwd, limit, query, project) to their semantics or expected formats. Parameter meaning is largely left to schema defaults.
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 clearly states the tool 'Build project-oriented memory context' and lists components (summaries, decisions, etc.). This provides a specific verb and resource, distinguishing it from siblings like memory_search or memory_notes, though it doesn't explicitly differentiate.
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?
No guidance on when to use this tool versus alternatives (e.g., memory_search, memory_notes). The description implies it's for building a composite context, but lacks when-not-to-use or explicit alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_exportC
Export pinned memory and a computed project profile as a JSON bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| limit | No | ||
| scope | No | ||
| project | No | ||
| include_profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states the output format (JSON bundle) but does not disclose whether the operation is destructive, requires authentication, has limits (beyond input schema), or what happens under edge cases like no pinned memories.
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?
Single sentence, no redundancy. Front-loaded with the action and output. Could benefit from structured breakdown of parameters or examples, but remains efficient.
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?
Given 5 parameters, no annotations, and no output schema, the description is too sparse. It does not explain how parameters affect the export, what the JSON bundle contains, or any behavioral traits. Incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description provides no information about the 5 parameters (cwd, limit, scope, project, include_profile). The parameter names alone are insufficient for correct usage. Description fails to add meaning beyond the raw schema.
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?
Description clearly states it exports pinned memory and a computed project profile as a JSON bundle. It uses a specific verb and resource, but lacks differentiation from sibling tools (though no other export tool exists). Could be more precise about what 'pinned memory' and 'project profile' entail.
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?
No guidance on when to use this tool vs alternatives. No mention of prerequisites, context, or exclusions. Sibling tools are listed but description does not differentiate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_forgetB
Delete a pinned memory item by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. While it states the action is deletion, it does not mention irreversibility, authorization requirements, or side effects like cascade deletion. This is insufficient for a destructive 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 description is a single, concise sentence with no extraneous words. It is front-loaded but arguably too terse for a deletion tool.
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?
Given no output schema and many sibling tools, the description could explain the outcome (e.g., item removed from pinned list) or relation to other memory operations. It is minimally adequate but could be more helpful.
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 coverage is 0%, so the description must add meaning beyond the schema. It only says 'by id' without explaining the parameter format, source, or how to obtain the id. The constraint 'minimum: 1' is in schema but not elaborated.
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 clearly states the action 'delete' and the resource 'pinned memory item' using the identifier 'id'. It distinguishes itself from siblings like 'memory_remember' and 'memory_update' by specifying deletion of a pinned item.
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?
No guidance is provided on when to use this tool versus alternatives like 'memory_update' or 'memory_export' for changing or retrieving items. The description lacks context on prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_healthA
Show Codex Native Memory database health and counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Implies read-only operation ('Show'), but no annotations. Lacks details on safety, permissions, or side effects. Minimal transparency.
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?
Single sentence that is concise and front-loaded. No wasted words.
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?
Minimally adequate for a simple tool with no parameters and no output schema. Could elaborate on what 'health' or 'counts' means in the return value.
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?
No parameters, so description doesn't need to add param info. Schema coverage is 100% by default. Baseline score of 4 applies.
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?
Description clearly states the tool shows health and counts of a specific database. Verb 'Show' and resource 'Codex Native Memory database health and counts' are specific. Distinguishes from siblings which have different actions like bootstrap, export, etc.
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?
No guidance on when to use this tool versus alternatives. Only states what it does, not the context or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_importC
Import changed Codex transcript JSONL files into memory.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| limit | No | ||
| source_id | No | ||
| all_sources | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It only states the tool imports files into memory, implying a write operation, but does not disclose whether it overwrites existing data, appends, or checks for duplicates. Potential side effects like memory state changes or performance impacts are not mentioned.
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 description is a single sentence, which is concise, but it omits essential details for a tool with four parameters and no schema descriptions. It could be improved by adding brief parameter explanations without becoming overly long.
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?
Given the tool's complexity (4 parameters, no output schema, no annotations), the description is insufficient. It does not explain the import process, how files are selected, or what the output/result looks like. The agent lacks context to use it safely or effectively.
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 coverage is 0%, and the description provides no explanation of the four parameters (force, limit, source_id, all_sources). The agent has no guidance on their purpose or how to use them correctly, severely limiting effective invocation.
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 clearly states the action (import) and the resource (changed Codex transcript JSONL files into memory). It specifies the file type and condition 'changed', which adds precision. However, it does not differentiate from sibling tools like memory_import_bundle or memory_context, which may also involve importing or setting memory content.
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?
No guidance is provided on when to use this tool versus alternatives such as memory_import_bundle or memory_update. The description does not mention prerequisites, limitations, or conditions under which this tool is appropriate or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_import_bundleC
Import pinned memory items from a memory_export JSON bundle. Provide payload or payload_json.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| source | No | import | |
| payload | No | ||
| project | No | ||
| payload_json | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states the action. Missing details on whether it's destructive, authorization needs, or duplicate handling.
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 description is a single concise sentence but lacks structure and detail. It is appropriately short but sacrifices clarity.
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 tool with 5 parameters, no output schema, and no annotations, the description is severely incomplete. No context on return values, usage workflow, or prerequisites.
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 only mentions 'payload or payload_json', ignoring three other parameters (cwd, source, project). Adds minimal value.
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 clearly states the tool imports pinned memory items from a memory_export JSON bundle, using specific verb and resource. However, it does not differentiate from the similar sibling tool 'memory_import' or explain what 'pinned' means.
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?
No guidance is provided on when to use this tool versus alternatives like memory_import. The description lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_notesB
List pinned memory items for a project/cwd, including global user memory.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| limit | No | ||
| scope | No | ||
| project | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It indicates a read operation ('List'), which is correct. However, it omits details about required permissions, how parameters like 'scope' interact, and what happens if no cwd or project is specified, causing some ambiguity.
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 description is a single sentence with no redundancy, but it is somewhat vague. It is concise but could be more structured with better clarity without adding length.
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?
With 4 parameters, no output schema, and 0% schema coverage, the description is insufficient. It fails to explain how to use parameters for filtering, what 'pinned' means, and what the response looks like, making it hard for the agent to invoke correctly.
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 compensate. It hints at the use of 'cwd' and 'project' by mentioning 'project/cwd' but does not explain 'limit', 'scope' (including its enum values), or how they relate. Some meaning is added, but incompletely.
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 clearly states the verb 'List' and resource 'pinned memory items', with context 'for a project/cwd, including global user memory'. It distinguishes from sibling tools like memory_search and memory_recent by focusing on 'pinned' items, but could be more specific about what 'pinned' means.
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?
No guidance on when to use this tool versus alternatives like memory_search or memory_recent. No when-not-to-use or prerequisites are mentioned, leaving the agent without enough context to choose correctly among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_recentC
List recent imported Codex sessions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, but it only states the action without revealing behavioral traits such as read-only nature, what 'recent' means, or any authentication needs. No value added beyond the name.
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 description is extremely concise—a single sentence with no wasted words. However, it may be too terse given the lack of other documentation, missing opportunities to add value.
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?
Given one parameter and no output schema, the description is incomplete. It does not clarify what 'recent' means, the output format, or any usage nuances. Calibration LOW example had similar issues.
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 coverage is 0% and the description does not mention the 'limit' parameter. It fails to explain its purpose or meaning, adding no value beyond the schema definition.
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 'List recent imported Codex sessions' uses a specific verb ('list') and clearly identifies the resource ('recent imported Codex sessions'). Among sibling tools like memory_search and memory_import, this tool's purpose is distinct and 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?
No guidance is provided on when to use this tool versus alternatives like memory_search or memory_remember. The description does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_rememberC
Store a pinned memory item for future Codex project bootstrap/context.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| text | Yes | ||
| scope | No | project | |
| source | No | manual | |
| project | No | ||
| subject | No | general | |
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It mentions 'pinned' but does not explain what that implies (e.g., persistence, lifetime, side effects). The write operation lacks details on authorization, rate limits, or state changes.
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 description is very short (one sentence), which is concise but comes at the cost of missing critical details. It is front-loaded but does not earn its place by providing sufficient information.
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?
Given the tool's 7 parameters (including complex ones like 'scope' with enum and 'confidence' with range), no output schema, and no parameter descriptions, the description is wholly inadequate for proper tool invocation.
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 input schema has 7 parameters with 0% description coverage, yet the tool description adds zero parameter information. It does not explain fields like 'cwd', 'scope', 'source', or 'subject', leaving the agent with only raw schema 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 clearly states the action ('store'), the resource ('pinned memory item'), and the purpose ('future Codex project bootstrap/context'). It is specific and distinguishes itself from siblings like 'memory_forget' or 'memory_search'.
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?
The description provides no guidance on when to use this tool versus alternatives like 'memory_update' or 'memory_bootstrap'. It does not mention prerequisites, exclusions, or contextual cues for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_searchC
Search imported Codex conversations, summaries, observations, and memories.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | all | |
| limit | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It fails to disclose any behavioral traits: search algorithm, result ordering, permission requirements, or whether it's a global search. This is a critical gap for a search 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?
Single sentence with no filler. Every word is substantive, achieving maximum conciseness.
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?
A search tool with 3 parameters and no output schema requires rich behavioral context. The description omits how results are returned, whether it supports full-text or fuzzy search, pagination, or handling of missing results. Severely incomplete for reliable agent 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 should compensate by explaining parameters. It mentions the types of content (conversations, summaries, etc.) that map to the 'kind' enum, but does not explain 'query' semantics, default 'limit' behavior, or allowed values beyond enum. Minimal added value over schema.
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 clearly states the tool's function: searching imported Codex conversations, summaries, observations, and memories. It uses specific verbs and resources, effectively distinguishing it from sibling tools like memory_remember or memory_recent.
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?
No guidance on when to use this tool versus alternatives such as memory_recent or memory_context. Absence of when-not-to-use or context leaves the agent with no steering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_sourcesC
List attached AI sources and external review targets.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behaviors. It implies a read-only listing but does not explain the 'review-options' action or any potential side effects, leaving behavioral transparency low.
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 description is concise (one sentence) but critically incomplete, omitting the parameter and the alternative action. It prioritizes brevity over completeness.
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?
Given the single parameter and no output schema, the description should explain the 'action' parameter and describe what the output contains. It does neither, leaving the tool inadequately specified.
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 does not mention the 'action' parameter at all. It provides no guidance on when to use each enum value ('list' vs 'review-options'), failing to add meaning beyond the schema.
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 clearly states the tool lists attached AI sources and external review targets, using a specific verb and resource. However, it fails to mention the alternative 'review-options' action, leaving the full purpose slightly ambiguous.
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?
No guidance on when to use this tool versus sibling tools like memory_search or memory_context. The description does not specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
memory_updateC
Update a pinned memory item by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| cwd | No | ||
| text | No | ||
| scope | No | ||
| source | No | ||
| project | No | ||
| subject | No | ||
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose any behavioral traits such as what properties can be updated, whether the operation is destructive, permission requirements, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but the brevity sacrifices informativeness. It is concise but not sufficiently informative for an agent to use correctly.
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?
Given 8 parameters and no output schema, the description is severely incomplete. It does not specify what fields can be updated, return value, or validation rules.
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%. The description fails to explain any of the 8 parameters (except implying id is the identifier). No meaning added beyond the schema.
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 clearly states the action ('Update') and the resource ('a pinned memory item by id'). It is specific and unambiguous, but does not distinguish from sibling tools that might also modify memory items.
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?
No guidance on when to use this tool versus alternatives like memory_remember or memory_forget. The description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v0.1.0- First observed
memory_bootstrap - First observed
memory_context - First observed
memory_export - First observed
memory_forget - First observed
memory_health - First observed
memory_import - First observed
memory_import_bundle - First observed
memory_notes - First observed
memory_recent - First observed
memory_remember - First observed
memory_search - First observed
memory_sources - First observed
memory_update
TDQS
Each tool has a clearly distinct purpose: bootstrap and context handle project loading, import/export manage data transfer, remember/update/forget/notes cover CRUD on pinned items, search queries conversations, and sources lists AI attachments. No two tools overlap in functionality.
All tools follow a consistent pattern: memory_ prefix with snake_case verb_noun (e.g., memory_remember, memory_import_bundle). No mixing of styles or irregular verbs.
With 13 tools, the server covers a comprehensive range of memory operations without being bloated. It could potentially add a prune or merge tool, but the current count is well-scoped for a memory system.
The tool set provides full CRUD for pinned memory items, import/export, session bootstrap/context, search, and health monitoring. Minor gaps exist (e.g., no bulk delete), but the surface covers core workflows effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for AI agents — log and recall conversation context over MCP.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides persistent, local-first AI memory across sessions via MCP tools for storing, searching, and retrieving context from past interactions.1MIT
- AlicenseBqualityDmaintenanceLocal Markdown-backed memory tools for Codex and other MCP-capable agents. Exposes durable agent knowledge via CLI and MCP server.5MIT
- FlicenseNot gradedqualityCmaintenanceCollects session JSONL from Codex and Claude Code into local SQLite memory, exposed through MCP with tools for memory context, search, get, put, forget, sleep, and status.-
- AlicenseNot gradedqualityCmaintenanceMCP server providing durable Substrate organizational memory tools, including search, read, query, ingest, remember, and sync. It integrates with Codex to automatically capture completed turns and session boundaries for persistent memory.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BulbuLbul86/codex-native-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server