Skip to main content
Glama
BulbuLbul86

Codex Native Memory

by BulbuLbul86

Codex Native Memory

CI Python License: MIT

Local cross-session memory for Codex Desktop and Codex CLI.

NOTE

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 context

The 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/**/*.jsonl importer;

  • 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-options

Before 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 extractive

To expose it to Codex as MCP:

.\scripts\install-for-codex.ps1

On macOS/Linux:

./scripts/install-for-codex.sh

Restart 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.

TIP

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.ps1

Commands

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 -v

See 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 plus memory_context output in one call. When the current cwd is a temporary Codex new-chat* workspace with little memory, the result also includes project_candidates and, when useful, recommended_profile/recommended_context for 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 a memory_export bundle.

  • 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-only

The 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 tools
memory_bootstrapC

Import recent memory, summarize pending sessions, and return a dynamic project profile plus project-oriented context.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
forceNo
queryNo
projectNo
source_idNo
all_sourcesNo
import_limitNo
summary_modeNoextractive
context_limitNo
summary_limitNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
limitNo
queryNo
projectNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
limitNo
scopeNo
projectNo
include_profileNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
limitNo
source_idNo
all_sourcesNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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

Given the tool's complexity (4 parameters, 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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
sourceNoimport
payloadNo
projectNo
payload_jsonNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
limitNo
scopeNo
projectNo

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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

Schema description coverage is 0%, so the description should 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
textYes
scopeNoproject
sourceNomanual
projectNo
subjectNogeneral
confidenceNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_sourcesC

List attached AI sources and external review targets.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNolist

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
cwdNo
textNo
scopeNo
sourceNo
projectNo
subjectNo
confidenceNo

TDQS

C2.2/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 13 tool updatesv0.1.0
    • First observedmemory_bootstrap
    • First observedmemory_context
    • First observedmemory_export
    • First observedmemory_forget
    • First observedmemory_health
    • First observedmemory_import
    • First observedmemory_import_bundle
    • First observedmemory_notes
    • First observedmemory_recent
    • First observedmemory_remember
    • First observedmemory_search
    • First observedmemory_sources
    • First observedmemory_update

TDQS

B3.1/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent, local-first AI memory across sessions via MCP tools for storing, searching, and retrieving context from past interactions.
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Local Markdown-backed memory tools for Codex and other MCP-capable agents. Exposes durable agent knowledge via CLI and MCP server.
    5
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Collects 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.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP 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

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