Engram
Server Details
Memory for AI agent teams across tools, sessions, repositories, and teammates.
The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 38.7% over 41 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 17 tools
The set separates session lifecycle from memory lifecycle, but there are several retrieval/briefing tools (recall, smarter, get_context, cross_pollinate, skill, start) whose boundaries, though explicitly documented, still overlap enough that an agent could misselect. Descriptions cross-reference each other, so confusion is mitigated but not eliminated.
All tools use the engram_ prefix and snake_case, yielding a predictable pattern. The main deviation is that a few names are nouns/adjectives (engram_proof, engram_skill, engram_setup, engram_smarter) rather than verb_noun, but the set remains readable and consistent overall.
17 tools is slightly above the typical 3-15 range but justified by the domain's breadth: session journaling, memory retrieval, lifecycle, auditing and onboarding. Each tool appears to have a distinct role rather than being redundant.
The surface covers session lifecycle (start, rehydrate, list, reflect, close) and memory lifecycle (store, recall/context/smarter/cross_pollinate, report_outcome, retract, restore, delete), plus setup, skill and proof. No obvious CRUD or lifecycle gap remains for the stated memory/session-management purpose.
Available Tools
17 toolsengram_close_sessionClose SessionADestructiveIdempotentInspect
Finish an exact journal at a real completion or handoff. Unlike engram_reflect, this atomically closes the session after saving a supplied final summary or confirming an existing checkpoint. Durable memories and journal history remain; closure ends journal writes without erasing knowledge. Returns JSON with session_id, closed_at, checkpoint_id, already_closed and memories_retained.
Get session_id from start/rehydrate/list_sessions. Only this session's member or a human workspace owner may close it; team read access does not grant close authority. A missing checkpoint or failed save leaves it active. Repeating close returns the original receipt without duplicate summaries. Closed journals are read-only for explicit rehydrate and cannot be implicitly reopened. Consumes daily call quota. OAuth: session:write.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | No | Final checkpoint text, at most 6000 characters and no credentials. Omit when reusing an existing checkpoint. Erased journals reject new text; omit to reuse their redacted checkpoint, or start a new session. | |
| session_id | Yes | Exact journal id to close; required. Never pass a repo slug or a natural-language query. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/idempotent, and the description adds real value on top: what survives closure ('durable memories and journal history remain'), the authorization model ('only this session's member or a human workspace owner may close it; team read access does not grant close authority'), quota consumption, OAuth scope, and idempotent-replay semantics.
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?
Front-loaded with the core action and its sibling contrast, then tight operational facts. It is dense and runs several long sentences, but each line carries non-redundant information; only the return-field enumeration is arguably duplicative of the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists so return values need not be restated, yet the description still covers auth scope, quota, idempotency, failure/re-entry behavior, and the fact that closure is not an erase. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds sourcing and negative-use guidance beyond the schema: where session_id comes from and 'never pass a repo slug', plus how to handle summary when a redacted checkpoint exists. These are practical constraints not present in 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?
States a specific verb and resource ('atomically closes the session') plus its trigger condition ('at a real completion or handoff'). It explicitly differentiates from the sibling engram_reflect, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (engram_reflect) and the selecting condition (completion or handoff), tells the agent where to obtain session_id (start/rehydrate/list_sessions), and specifies when closure does not take effect ('a missing checkpoint or failed save leaves it active'). Guidance is explicit rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_cross_pollinateCross-Pollinate KnowledgeARead-onlyIdempotentInspect
Reuse a lesson solved in another repository before rebuilding a shared pattern. Unlike engram_recall or engram_smarter, this explicitly excludes target_repo from source searches and adds transfer lessons and quality gates. Returns Markdown with ranked memories and source repos from other authenticated workspace repositories, with optional public knowledge.
source_repos restricts the search; include_public supplements sparse private results. Records retrieval telemetry without copying knowledge. Consumes workspace daily call quota. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget. | |
| limit | No | Maximum retrieved memories, 1–25. Omitted defaults: focused=5, deep=12; explicit values override these defaults. | |
| context | Yes | Natural-language task and relevant facts, e.g. migrate our PostgreSQL schema with zero downtime. Never include credentials or raw customer data. | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. | |
| target_repo | Yes | Destination repository slug for the current work; memories from this repo are excluded from the source search. | |
| source_repos | No | Restrict source repositories to these slugs; omit or pass an empty array to search other repositories. | |
| include_public | No | Default true: supplement private results with public knowledge when needed. False searches only other private workspace repositories. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds genuinely new operational facts: it records retrieval telemetry without copying knowledge, consumes the workspace daily call quota, and requires the memory:read OAuth scope. Quota consumption and auth scope are exactly the behavioral traits annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and sibling differentiation are front-loaded, followed by parameter semantics and operational constraints. It is dense and jargon-heavy ('transfer lessons and quality gates'), but every sentence carries information and nothing is repeated from the schema or annotations.
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 an output schema present, return values need not be re-explained, and the description still notes the Markdown/ranked-memory shape. Annotations cover the safety profile, the schema covers all 7 parameters, and quota, auth, and telemetry are disclosed — nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value beyond the schema: target_repo memories are excluded from the source search, source_repos restricts rather than expands scope, and include_public supplements sparse private results. These clarify the interaction between parameters that the schema describes only individually.
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 opening sentence states a specific verb and resource ('Reuse a lesson solved in another repository') and names the two sibling tools it differs from (engram_recall, engram_smarter). An agent can tell exactly what this tool does and how it differs from the closest alternatives without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger condition ('before rebuilding a shared pattern') and the explicit contrast with engram_recall/engram_smarter give clear context for selection. It stops short of stating when to prefer recall or smarter over this tool, so the routing is implied rather than fully enumerated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_delete_memoryPreview or Delete MemoryADestructiveIdempotentInspect
Preview or permanently erase one private memory and its explicit derived patterns from the live database. Unlike engram_retract_memory, execution cannot be undone. Requires a human workspace OWNER API key; OAuth agents and member keys cannot erase. Does not delete independent memories or unrelated sessions.
Default dry_run=true returns counts, derived IDs, affected session IDs (first 50), scope and confirmation. Inspect it first: execution redacts the entire free-text history/checkpoints/task/context of referencing sessions, plus associated outcomes, links, jobs and linked evidence; shared entities remain if still referenced. Execute only the reviewed ID using dry_run=false and confirmation="delete:<memory_id>". Returns erased_at/counts; repeated execution returns the original minimal ID/count receipt without erased text (a one-way content fingerprint blocks exact store replays). In-flight background writes and exact store retries cannot repopulate erased knowledge. Historical unlinked paraphrases, already delivered client context, application/provider logs, provider copies and backups are outside this live-database operation. Public-bank records are excluded. Consumes daily call quota.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Default true previews impact without changing knowledge. False executes only with the exact confirmation string and human OWNER authority. | |
| memory_id | Yes | Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text. | |
| confirmation | No | For execution only: copy delete:<exact memory_id> from the preview. Omit for preview; never substitute a repo name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far exceeds the annotations (destructiveHint, idempotentHint, readOnlyHint=false) by disclosing exactly what gets destroyed (free-text history/checkpoints/task/context of referencing sessions, outcomes, links, jobs, linked evidence), what survives (shared entities still referenced), idempotency semantics (repeat execution returns a minimal receipt), a content-fingerprint safeguard against replay repopulation, and quota consumption.
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?
Front-loaded with the core purpose and alternative, then proceeds through prerequisites, dry-run workflow, and scope exclusions. It is dense and long, but nearly every sentence carries a distinct operational fact (irreversibility, destruction scope, fingerprint safeguard, quota, out-of-scope stores), so waste is minimal.
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 high-stakes destructive operation, the description covers permissions, irreversibility, exact destruction scope, surviving data, execution workflow, idempotency behavior, and explicit out-of-scope exclusions. With an output schema present, return-value detail is optional, and the description is more than 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 100%, so dry_run, memory_id, and confirmation are already documented in the schema, including the exact confirmation format and the warning not to substitute a repo name. The description restates this workflow (dry_run default true, execute with the reviewed ID) but adds little syntax or meaning beyond the schema, so the baseline of 3 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?
States a specific verb and resource ('Preview or permanently erase one private memory and its explicit derived patterns from the live database') and explicitly distinguishes itself from the sibling engram_retract_memory. An agent can tell exactly what this does and how it differs from alternatives without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('Inspect it first'), how-to-execute ('Execute only the reviewed ID using dry_run=false and confirmation="delete:<memory_id>"'), the alternative it is not ('Unlike engram_retract_memory, execution cannot be undone'), and prerequisites ('Requires a human workspace OWNER API key; OAuth agents and member keys cannot erase'). Exclusions are also stated ('Does not delete independent memories or unrelated sessions').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_get_contextGet Repository ContextARead-onlyIdempotentInspect
Audit repository knowledge by category: conventions, gotchas, patterns, solutions and architecture. Unlike engram_recall or engram_smarter, this searches each category separately and returns five sample arrays for coverage review, rather than one task-ranked list. Returns JSON with repo/file/total and up to 21 entries; this is a bounded search, not a full repository-memory export.
repo is required; file/task refine search without reading files. Only when all five categories have no repo matches does the search broaden to workspace/public memory. Empty results are valid. Does not edit knowledge. Consumes workspace daily call quota. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | File path/name used only as a search hint, e.g. src/auth.ts. Engram does not read or modify local files. | |
| repo | Yes | Repository slug to inspect, e.g. billing-api. If no repo-specific memories match, the server broadens to workspace/public knowledge. | |
| task | No | Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read profile, but the description adds substantial operational context beyond them: OAuth scope memory:read, consumption of the workspace daily call quota, the bounded nature of the search (not a full memory export), the broadening behavior, and the explicit guarantee that it does not edit knowledge.
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?
Front-loaded with the purpose and the key contrast to siblings before moving to bounds, fallback behavior, and operational notes. It is dense but nearly every sentence carries distinct, decision-relevant information, with only minor redundancy against the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still sketches the JSON shape (repo/file/total, up to 21 entries). Combined with annotations, a full schema, and clear scope/fallback/quota notes, an agent has everything needed to invoke it 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 100%, so all three parameters are already documented in the schema. The description restates that repo is required and that file/task refine the search without reading files, but adds little syntax or format detail beyond the schema, so the baseline of 3 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?
States a specific verb and resource ('audit repository knowledge by category'), enumerates the categories, and explicitly distinguishes itself from engram_recall and engram_smarter by explaining the per-category sampling vs. a single task-ranked list. An agent can differentiate this from all siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives (engram_recall, engram_smarter) and the condition that selects this one (coverage review across five separate category arrays). It also states when broadening to workspace/public occurs and that empty results are valid, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_list_sessionsList SessionsARead-onlyIdempotentInspect
Find an exact session_id before recovery, closing or a handoff. Unlike engram_rehydrate, this lists bounded metadata without replaying journal content or changing a session. Returns JSON sessions with member/client attribution, status, activity and checkpoint availability, plus next_cursor.
Default scope=mine lists this member's sessions; scope=workspace explicitly includes teammates in the authenticated workspace. repo/status/agent_tool/member_id filter results; a teammate member_id requires workspace scope. limit defaults to 20, maximum 50. Pass next_cursor unchanged to continue newest-started-first pagination. Empty results are valid. Consumes daily call quota. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| limit | No | Page size, default 20; from 1 to 50. | |
| scope | No | Default mine lists your sessions across clients; workspace includes shared teammate session metadata. | |
| cursor | No | Opaque next_cursor from the prior response. Keep filters unchanged; omit for the first page. | |
| status | No | Filter journal state; omit to include both active and closed sessions. | |
| member_id | No | Member id to filter; another member requires scope=workspace. This is a filter, not authorization. | |
| agent_tool | No | Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds context annotations cannot express: it consumes daily call quota, requires the memory:read OAuth scope, and that member_id is a filter rather than authorization. It also discloses pagination ordering (newest-started-first) and the cursor contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the sibling contrast are front-loaded, then scope, filters, pagination, quota and auth follow in a logical order. Dense but each sentence carries distinct operational information; it runs slightly long for a list 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?
With 7 optional params, an output schema, and full annotations, the remaining agent questions are answerable: what it returns, how to page, what it costs, and what auth it needs. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented; the description largely restates defaults (scope=mine, limit 20/50) and the member_id+workspace coupling that the schema also states. Baseline 3 is appropriate since the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('lists bounded metadata' of sessions) and gives the concrete job it serves: 'Find an exact session_id before recovery, closing or a handoff.' It explicitly separates itself from the nearest sibling, engram_rehydrate, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (engram_rehydrate) and the discriminating condition (bounded metadata, no journal replay, no session mutation). It also warns that empty results are valid, preventing a retry loop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_proofGet Engram ProofARead-onlyIdempotentInspect
Audit adoption before a rollout or when checking whether the workspace is using memory and reporting outcomes. Takes no arguments. Returns JSON with memory-bank breakdowns, learning-loop activity, proof points and a benchmark checklist.
Does not change knowledge or run a benchmark. Use engram_setup for onboarding and engram_recall for task knowledge. Consumes workspace daily call quota. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, not open-world), and the description adds value beyond them: no arguments required, the shape of the response, a quota consumption warning ('Consumes workspace daily call quota'), and the required OAuth scope (memory:read). That is exactly the operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose/trigger first, negative boundaries and alternatives second, operational facts (quota, auth) last. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only audit tool with an output schema and full annotation coverage, the description supplies everything an agent needs: when to call it, what it returns, what it does not do, siblings to prefer, quota cost, and auth scope. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description explicitly confirms 'Takes no arguments', which is consistent with the empty schema but adds little beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (audit adoption) and the concrete artifact returned (JSON with memory-bank breakdowns, learning-loop activity, proof points, benchmark checklist). This is clearly distinguishable from siblings like engram_recall and engram_report_outcome.
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?
Gives explicit triggering conditions ('before a rollout', 'when checking whether the workspace is using memory'), an explicit non-use statement ('Does not change knowledge or run a benchmark'), and names alternatives with their own use cases (engram_setup for onboarding, engram_recall for task knowledge).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_recallRecall MemoryARead-onlyIdempotentInspect
Answer one concrete question from authenticated workspace/public memory before deciding or debugging. Unlike engram_smarter, this retrieves question-specific evidence without task checklists; unlike engram_get_context, it returns one ranked memory list instead of separate category samples. Use engram_rehydrate to recover an interrupted session.
Returns JSON with ranked memories, ids, trust/conflict signals and retrieval hints. Example: {"repo":"engram","query":"What did we learn about Netlify SSR costs?"}. No matches returns count=0; deepen or rephrase rather than assume the answer. repo/type/tags narrow the question; limit overrides the depth budget. Records retrieval telemetry without editing knowledge. Consumes workspace daily call quota; stop on quota errors and retry only transient failures. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| tags | No | Topic labels for storing or filtering memory; omit when no useful labels apply. | |
| type | No | Knowledge category: team rule, reusable pattern, pitfall, proven fix, design decision, or library/version quirk. | |
| depth | No | Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget. | |
| limit | No | Maximum retrieved memories, 1–20. Omitted defaults: focused=5, deep=12; explicit values override these defaults. | |
| query | Yes | Specific decision, error or question to search, e.g. how are checkout retries deduplicated? | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/non-destructive/closed-world), it discloses that retrieval telemetry is recorded without editing knowledge, that the call consumes workspace daily quota, to stop on quota errors, retry only transient failures, and the required OAuth scope memory:read. It also describes the zero-match behavior, which is behavioral, not schema, information.
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?
Dense and front-loaded: the routing comparison comes first, then return shape, then guardrails. Every sentence carries information, though the embedded JSON example and the compression of quota/OAuth/telemetry rules into run-on clauses make it heavier than needed.
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 an output schema present, the description needn't detail returns, yet it still summarizes ranked memories/ids/trust-conflict signals and retrieval hints. Filters, depth/limit interaction, auth scope, quota behavior, and fallback on zero matches are all covered — nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters with enums and defaults. The description adds only light framing ('repo/type/tags narrow the question; limit overrides the depth budget'), much of which duplicates the limit/depth interaction already stated in 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?
States a specific verb+resource: answering one concrete question from authenticated workspace/public memory. It explicitly distinguishes itself from engram_smarter (question-specific evidence, no checklists) and engram_get_context (one ranked list vs. category samples), so an agent can pick it apart from siblings without opening schemas.
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?
Gives the decision-time/debugging context ('before deciding or debugging'), names two alternatives with the conditions that select them, and routes session recovery to engram_rehydrate. It also tells the agent what to do when there are no matches (deepen or rephrase rather than assume).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_reflectCreate Memory CheckpointAInspect
Checkpoint a milestone or handoff for later recovery with engram_rehydrate. Supply at least one of summary, learnings, used_memories or feedback. Returns Markdown with stored/skipped counts, outcomes and next actions. Use engram_store for one lesson and engram_report_outcome for one outcome.
store=false skips learning storage only: the journal and supplied outcomes/feedback can still be written. This checkpoint leaves the session open. Retrying may duplicate writes; verify prior success first. Consumes workspace daily call quota and memory quota for saved lessons. OAuth: session:write, memory:write and outcome:write.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| task | No | Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery. | |
| store | No | Default true saves accepted durable learnings; false skips learning storage only. Session checkpoints, supplied outcomes and feedback are still recorded. | |
| summary | No | Milestone/handoff summary: what changed, evidence, decisions and remaining work. Required unless learnings, outcomes or feedback are supplied. | |
| feedback | No | Optional product feedback or feedback-pulse dismissal; separate from outcomes about individual memories. | |
| learnings | No | Durable private workspace lessons to persist when store=true; only the first 8 are processed. Low-quality entries may be skipped. The summary remains a journal checkpoint. | |
| agent_tool | No | Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown. | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. | |
| used_memories | No | Outcomes for memories actually used during this milestone; only the first 20 are processed. Omit when none were applied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false and idempotent=false, but the description goes further with quota consumption, required OAuth scopes, session-state behavior ('leaves the session open'), and a retry/duplication warning. This is exactly the operational context annotations cannot carry.
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?
Front-loaded with purpose, then constraints, then operational caveats; every sentence carries distinct information for a 9-parameter mutation tool. It is dense rather than padded, though the OAuth/quota sentence stack is heavy relative to the two guiding sentences at the top.
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?
Output schema exists, yet the description still sketches the return shape (stored/skipped counts, outcomes, next actions), and it covers quotas, auth scopes, session persistence and non-idempotent retries. An agent has everything needed to call it safely and interpret the result.
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 100%, so the baseline is 3, but the description adds real meaning beyond the schema: the cross-parameter constraint that at least one of four fields must be supplied (required list is empty), and the subtle store=false semantics that only affect learning storage while journal/outcomes/feedback still persist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Checkpoint a milestone or handoff') plus the downstream purpose ('later recovery with engram_rehydrate'). It explicitly distinguishes itself from engram_store and engram_report_outcome, so an agent can route correctly without opening sibling schemas.
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?
Gives an explicit precondition ('Supply at least one of summary, learnings, used_memories or feedback') and names the alternatives with their selecting conditions: engram_store for one lesson, engram_report_outcome for one outcome. It also states what this tool does that the alternatives don't (bundled journal checkpoint).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_rehydrateRehydrate ContextAInspect
Recover interrupted work after compaction, resume or lost context. Returns Markdown checkpoints, decisions, gotchas, open loops and recent events. Unlike engram_start, this restores the prior journal when available; unlike engram_recall or engram_smarter, it recovers session history rather than only searching durable knowledge.
session_id selects an accessible workspace session. Closed or teammate journals are read-only history, never reopened. Automatic recovery requires one active journal for this member, repo/project and authenticated OAuth connection or supplied agent_tool within the recovery window. Multiple matches return 409: list sessions and choose an id. since filters events after selection. If none matches, loads durable task memory and opens a journal. Repeating active recovery adds events; it does not erase history. Consumes workspace daily call quota. OAuth: memory:read and session:write.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| task | No | Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery. | |
| depth | No | Default standard: up to 30 events/4 summaries; brief uses 12/2, full 60/8. This controls journal detail, not retrieval depth. | |
| since | No | Optional ISO 8601 lower bound for journal events, e.g. 2026-10-16T10:00:00Z; omit for normal recent-session recovery. | |
| reason | No | Recovery trigger, e.g. context compaction or resumed after interruption; recorded in the journal. | |
| project | No | Product/project name for session context. Start/setup use it as the repository hint when repo is omitted. | |
| agent_tool | No | Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown. | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: closed/teammate journals are read-only and never reopened, repeated recovery appends events rather than erasing history, daily call quota is consumed, and OAuth scopes are memory:read and session:write. These are consistent with destructiveHint=false, idempotentHint=false and readOnlyHint=false, but the description does not detail error modes or response shape beyond the return contents.
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?
Front-loaded with purpose, then sibling differentiation, then mechanics — a sensible ordering with no filler sentences. It is dense and long, but each sentence carries operational information; slightly tighter grouping of the recovery preconditions would improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, zero-required, open-world-false recovery tool with an output schema present, the description covers purpose, alternatives, preconditions, disambiguation, quota and auth — everything needed to invoke it correctly. Return-value detail is correctly left to the output schema.
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 100%, so the baseline is 3, and the description goes further by explaining session_id's selection semantics (accessible workspace session; closed/teammate journals readable but not writable) and since's role (filters events after session selection). The remaining parameters (repo, task, depth, reason, project, agent_tool) are left to 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?
States a specific verb+resource ('Recover interrupted work after compaction, resume or lost context') and immediately names what it returns (Markdown checkpoints, decisions, gotchas, open loops, recent events). It explicitly distinguishes itself from three siblings (engram_start, engram_recall, engram_smarter), so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use-vs-alternatives ('unlike engram_start... unlike engram_recall or engram_smarter...'), states the preconditions for automatic recovery (one active journal for member/repo/OAuth connection within the window), and handles the 409 multi-match case by routing to list_sessions. Fallback behavior when nothing matches is also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_report_outcomeReport Memory OutcomeAInspect
Record whether a recalled memory helped; returns a confirmation. Use its exact memory_id and evidence in detail. success=false may include failure_reason; outdated marks obsolete knowledge, while success raises confidence.
Only accessible workspace/public memories may be reported. Repeating adds outcomes and changes confidence; do not blindly retry. Use engram_store with supersedes_memory_ids for a verified replacement, or engram_reflect to batch milestone outcomes. Consumes workspace daily call quota. OAuth: outcome:write.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| detail | No | Brief evidence of how the memory changed the decision, or why it failed. Exclude secrets. | |
| success | Yes | Whether this memory helped the actual task: true for a useful application, false for a misleading or unusable result. | |
| memory_id | Yes | Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text. | |
| session_id | No | Session where this memory was retrieved; used for outcome attribution, not to reopen or modify that journal. May be closed. | |
| failure_reason | No | Why an unsuccessful memory failed; outdated marks obsolete knowledge. Omit for a successful use. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnly=false, idempotent=false, destructive=false). The description goes well beyond: repeats accumulate outcomes and shift confidence, only accessible workspace/public memories are reportable, the call consumes daily quota, and OAuth scope outcome:write is required. It is also consistent with idempotentHint=false rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and most sentences carry distinct payloads (mechanics, restrictions, retry warning, alternatives, quota, auth). It is denser than ideal with several constraints packed into the second paragraph, but nothing is filler.
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 mutation tool with 6 params and an output schema, the description covers everything an agent needs: auth scope, quota cost, mutation/idempotency behavior, eligibility restrictions, and sibling routing. Return values are handled by the output schema, so no gap remains.
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 100%, so the baseline is 3. The description still adds value by tying semantics to behavior: exact memory_id (not a name/URL/text), detailed evidence, failure_reason's meaning, and that success raises confidence. It does not add syntax beyond the schema, but it reinforces how parameters are meant to be supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Record whether a recalled memory helped") plus the confirmation return. It also separates itself from engram_reflect ("batch milestone outcomes") and engram_store ("verified replacement"), so an agent can route without opening a sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (record a recall outcome with the exact memory_id and detailed evidence), when-not (do not blindly retry because repeats mutate confidence), and named alternatives with the conditions that select them (engram_store with supersedes_memory_ids, engram_reflect for milestones).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_restore_memoryRestore MemoryAIdempotentInspect
Make an explicitly retracted private memory available again. Unlike engram_store, this restores the original ID/content; storing matching retired content returns 409 rather than silently reviving it. Returns JSON memory_id, ACTIVE status and already_active. Retained source-dependent history becomes available when no other withdrawn sources remain.
Only the creator or a human workspace OWNER may restore. Memory quota still applies. A confirmed replacement or SUPERSEDED state requires the separate replacement-review workflow; permanently erased IDs cannot be restored. An already active record is an idempotent no-op. Consumes daily call quota. OAuth: memory:write.
| Name | Required | Description | Default |
|---|---|---|---|
| memory_id | Yes | Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only cover readOnly/idempotent/destructive/openWorld. The description discloses authorization requirements, quota consumption, the 409 anti-revival behavior, the already-active idempotent no-op, the retained source-dependent history rule, and the OAuth scope memory:write.
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?
Front-loaded with the core action and the key sibling contrast, then packs edge cases into tight sentences. Dense but every sentence carries distinct information; only minor cost is the packed final paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still names the return fields (memory_id, ACTIVE status, already_active). Combined with auth, quota, and error-path coverage, an agent has everything needed to call and interpret this 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 100% and the single parameter is fully documented in the schema ('exact id from a recalled memory...'). The description adds no syntax or format detail beyond that, so the baseline 3 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?
States a specific verb and resource ('make an explicitly retracted private memory available again') and immediately distinguishes itself from engram_store, the nearest sibling, by contrasting restore-original vs. store-new behavior. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names alternatives and their conditions explicitly: engram_store for matching retired content (which returns 409), the separate replacement-review workflow for confirmed replacements or SUPERSEDED state, and the fact that permanently erased IDs cannot be restored. Preconditions (creator or human workspace OWNER) are stated up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_retract_memoryRetract MemoryADestructiveIdempotentInspect
Withdraw an exact private memory that should no longer guide agents. Unlike engram_store with supersedes_memory_ids, this needs no replacement and keeps the content for explicit restoration. Unlike engram_delete_memory, it is reversible. Returns JSON memory_id, RETRACTED status and already_retracted.
Get memory_id from recall/context; provide a non-sensitive reason, 1–1000 characters. Only the creator or a human workspace OWNER may withdraw it; team read access is not write authority. Current retrieval excludes it and source-dependent patterns. Recovery suppresses free text in referencing journals rather than replay withdrawn guidance. Start a clean session for new work or restore the source. Repeating is idempotent. Public-bank and superseded records are excluded. Consumes daily call quota. OAuth: memory:write.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | Why this knowledge should stop guiding agents, 1–1000 characters. No secrets or copied sensitive content. | |
| memory_id | Yes | Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: names the returned JSON fields (memory_id, RETRACTED status, already_retracted), the authorization model (creator or human workspace OWNER; team read access is not write authority), the retrieval effect (excludes the memory and source-dependent patterns), recovery semantics, quota consumption, and the OAuth scope memory:write. This is unusually rich disclosure for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the two sibling comparisons, and every sentence carries information (permissions, idempotency, exclusions, quota). However, some phrasing is dense jargon ('source-dependent patterns', 'suppresses free text in referencing journals') that could cost clarity for marginal compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, yet the description still supplies the permission model, idempotency behavior, exclusion cases (public-bank/superseded records), and quota/auth requirements. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds sourcing guidance not present in the schema ('Get memory_id from recall/context') and reinforces the non-sensitive 1–1000 character reason constraint. It adds genuine value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Withdraw an exact private memory') and immediately distinguishes itself from two siblings: engram_store with supersedes_memory_ids (no replacement needed) and engram_delete_memory (this one is reversible). An agent can differentiate without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives and the conditions selecting them ('Unlike engram_store...', 'Unlike engram_delete_memory...'), tells the agent where to source memory_id (recall/context), and guides next steps after the operation (start a clean session or restore the source). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_setupExplain Engram SetupARead-onlyIdempotentInspect
Explain onboarding and inspect the authenticated workspace when an agent needs setup guidance. Returns one JSON response with plan/counts/limits, tool groups, activation checklist and suggested calls; no pagination or installation.
Hints personalize examples: project names the work; repo scopes activation guidance, falling back to project when omitted. Does not configure the machine, open a working session or edit knowledge. Use engram_start to begin work, engram_rehydrate to recover it and engram_proof to audit adoption. Consumes workspace daily call quota; exhaustion requires reset or a plan change. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| role | No | Agent responsibility used in task context, e.g. backend engineer. Start/setup default to implementation agent. | |
| task | No | Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery. | |
| stack | No | Project technologies used to focus context; omit when unknown. | |
| market | No | Business/domain context, e.g. fintech or education; not a geographic access setting. | |
| project | No | Product/project name for session context. Start/setup use it as the repository hint when repo is omitted. | |
| agent_tool | No | Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this safe (readOnly, idempotent, non-destructive), yet the description still adds quota behavior ('Consumes workspace daily call quota; exhaustion requires reset or a plan change'), the required OAuth scope (memory:read), and the absence of pagination/installation. A mildly useful return-shape summary is also given even though an output schema exists. Strong additive disclosure above the annotation floor — though quota language is terse about how much each call costs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return shape are front-loaded, then exclusions/alternatives, then hint semantics, then quota and auth — a logical order with no filler sentences. It is dense and slightly overpacked (four clauses in the quota/auth tail), but every sentence carries distinct 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?
Covers the areas an agent actually needs to call this correctly: what comes back, that pagination/installation are out of scope, the sibling routing, the quota cost, and the auth scope. With an output schema present, it is not obligated to detail return values, so nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all seven parameters in detail; the baseline is 3. The description's only param-relevant contribution — 'project names the work; repo scopes activation guidance, falling back to project when omitted' — largely restates what the schema already says about repo/project, so it adds little beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Explain onboarding and inspect the authenticated workspace') and immediately frames the trigger ('when an agent needs setup guidance'). It explicitly differentiates itself from siblings by naming engram_start, engram_rehydrate and engram_proof with their distinct purposes, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use (setup guidance) plus explicit exclusions ('Does not configure the machine, open a working session or edit knowledge') and names three alternatives with the condition that selects each (begin work, recover it, audit adoption). This is the full when/when-not/alternatives triad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_skillLoad Skill GuideARead-onlyIdempotentInspect
Find a procedural checklist before a repeatable task. Omit skill or pass an empty string to list available names; otherwise load a name such as code-review or skill:code-review.
Returns JSON with available_skills/usage for listing or skill/count/steps/combined for a guide. Unknown names return count=0 and a message. Reads workspace/public knowledge without installing or executing anything. Use engram_recall for a project fact and engram_smarter for task-based guide selection. Consumes workspace daily call quota. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| skill | No | Checklist name, e.g. code-review, security or skill:deployment. Omit or pass an empty string to list available names; unknown names return count=0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, but the description adds non-obvious operational facts: it 'reads workspace/public knowledge without installing or executing anything', it 'consumes workspace daily call quota', and it requires OAuth scope 'memory:read'. Quota and auth disclosure are exactly the behavioral context annotations cannot convey.
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?
Front-loaded with purpose, then parameter behavior, return shapes, alternatives, then side effects and auth. Dense but every sentence is actionable. Minor redundancy in enumerating return fields that the output schema already covers.
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 optional parameter, an output schema, and full annotations, the description covers everything an agent needs: purpose, both invocation modes, failure behavior, alternative tools, quota cost, and auth scope. No gaps for this tool's 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 coverage is 100% and the single parameter's description already documents the omit/empty-string-to-list behavior and the count=0 unknown-name result. The description largely restates this, adding only the 'skill:' prefix example, which the schema already shows via 'skill:deployment'. Baseline 3 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?
States a specific verb and resource — 'Find a procedural checklist before a repeatable task' — and immediately distinguishes itself from siblings by naming engram_recall (project facts) and engram_smarter (task-based guide selection). An agent can tell what this does and where it fits without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing rules: the no-argument/empty-string path for listing, named path for loading, and two named alternatives with the conditions that select them ('Use engram_recall for a project fact and engram_smarter for task-based guide selection'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_smarterLoad Task ContextARead-onlyIdempotentInspect
Brief a materially different task within the same session. Unlike engram_recall, this combines goal-focused memories with optional procedural checklists; unlike engram_get_context, it ranks evidence for the task instead of returning category samples. Returns Markdown with ranked workspace/public memory and retrieval hints. Use engram_start to begin work and engram_rehydrate for lost context.
Example: {"repo":"engram","context":"Improve public-page delivery on Netlify while preserving localized SEO and onboarding."}. context states the whole goal; repo/file focus retrieval without reading local files. limit overrides depth; include_skills=false suppresses checklists. Records retrieval/session telemetry without editing knowledge. Consumes workspace daily call quota. OAuth: memory:read.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | File path/name used only as a search hint, e.g. src/auth.ts. Engram does not read or modify local files. | |
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| depth | No | Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget. | |
| limit | No | Maximum retrieved memories, 1–30. Omitted defaults: focused=5, deep=12; explicit values override these defaults. | |
| context | Yes | Natural-language task and relevant facts, e.g. migrate our PostgreSQL schema with zero downtime. Never include credentials or raw customer data. | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. | |
| include_skills | No | Include relevant procedural checklists. If omitted, the server infers this from task/context keywords; false suppresses checklists. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotent/non-destructive, but the description adds behavior beyond them: it records retrieval and session telemetry 'without editing knowledge', consumes the workspace daily call quota, and requires the memory:read OAuth scope. Quota and auth requirements are exactly the operational context annotations cannot express.
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?
Front-loaded with the differentiators, then the example, then operational notes — every sentence carries information. It is dense and leans on jargon like 'materially different task' and 'retrieval hints', which slightly slows parsing, but there is little true filler.
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 7-parameter, single-required-param retrieval tool with an output schema, the description covers the remaining gaps: session semantics, quota cost, auth scope, and telemetry side effects, while leaving return-format explanation to the output schema. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema states only in isolation: 'context states the whole goal; repo/file focus retrieval without reading local files. limit overrides depth; include_skills=false suppresses checklists.' It clarifies the interaction between depth/limit and the meaning of repo/file, though it does not add format detail beyond the schema's own examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('brief a materially different task within the same session') and immediately positions itself against two named siblings, engram_recall and engram_get_context, explaining what it does differently (goal-focused memories plus optional checklists; ranked evidence rather than category samples). An agent can distinguish it from every other retrieval tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tools and the condition that selects them: 'Use engram_start to begin work and engram_rehydrate for lost context.' It also supplies a concrete example invocation showing the intended context shape, which removes ambiguity about when this tool is the right entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_startStart EngramAInspect
Begin meaningful work in a repository with a Markdown briefing: session id, ranked private/public memory, workspace guidance and optional checklists. Unlike engram_smarter, this includes workspace onboarding/activation guidance; unlike engram_rehydrate, it prepares a starting briefing instead of reconstructing a prior journal. Use once when beginning work; choose engram_smarter for a task switch and engram_rehydrate for recovery.
Supply repo and task when known; context overrides the generated project/market/role/stack/task query. Reuses one eligible active journal; new_session=true deliberately creates a separate journal. Supply session_id for parallel work. Ambiguous automatic selection returns 409; list sessions and choose an exact id. Records a session event; repeating may add events or open another session. Consumes workspace daily call quota; quota exhaustion requires reset or a plan change, not immediate retries. OAuth: memory:read and session:write.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| role | No | Agent responsibility used in task context, e.g. backend engineer. Start/setup default to implementation agent. | |
| task | No | Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery. | |
| depth | No | Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget. | |
| limit | No | Maximum retrieved memories, 1–30. Omitted defaults: focused=8, deep=16; explicit values override these defaults. | |
| stack | No | Project technologies used to focus context; omit when unknown. | |
| market | No | Business/domain context, e.g. fintech or education; not a geographic access setting. | |
| context | No | Optional full task context; overrides the query generated from project, role, market, stack and task. | |
| project | No | Product/project name for session context. Start/setup use it as the repository hint when repo is omitted. | |
| agent_tool | No | Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown. | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. | |
| new_session | No | Default false reuses one eligible active journal. True creates a separate journal for parallel work; retries can create another session. Keep the returned session_id. | |
| include_skills | No | Include relevant procedural checklists. If omitted, the server infers this from task/context keywords; false suppresses checklists. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations (which only say non-readonly, non-destructive, non-idempotent, closed-world): it discloses that a session event is recorded and repeats may add events or open another session, that it consumes a workspace daily call quota whose exhaustion requires a reset/plan change rather than retries, the required OAuth scopes (memory:read, session:write), and the 409 ambiguity outcome.
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?
Front-loaded with purpose and sibling differentiation before dense operational detail. Three paragraphs for a 13-parameter tool is proportionate, and each sentence (quota, OAuth, 409, session reuse) carries distinct information; density is high but not padded.
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 an output schema present, return values need no explanation, and the description still covers the substantive gaps an agent faces: auth scopes, quota limits, non-idempotent session-event recording, 409 ambiguity handling, and the context-override precedence. Nothing needed to invoke it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds interaction semantics the schema lists only in isolation: context overrides the generated project/market/role/stack/task query, new_session=true deliberately opens a separate journal versus default reuse of one eligible active journal, and session_id disambiguates parallel work. This is more than restatement, though a fair amount still duplicates the schema prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Begin meaningful work') plus resource ('repository') and enumerates the payload (session id, ranked private/public memory, workspace guidance, optional checklists). It also explicitly names and contrasts two siblings — engram_smarter (task switch) and engram_rehydrate (recovery) — so an agent can disambiguate without opening schemas.
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?
Gives explicit when-to-use ('Use once when beginning work'), names both alternatives with their selecting conditions, and adds edge-case routing: supply session_id for parallel work, use list_sessions and pick an exact id when automatic selection returns 409, and new_session=true for a deliberately separate journal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
engram_storeStore MemoryAInspect
Save one durable lesson privately for future workspace agents; returns a confirmation. Use engram_reflect for a milestone with several lessons/outcomes and engram_report_outcome to assess an existing memory.
To correct knowledge, supply the complete replacement in content and old ids in supersedes_memory_ids; change_reason explains the replacement. Old entries retain history; this is not permanent deletion. Similar content may deduplicate and boost confidence, so retries can have effects. Consumes memory/call quota; rejects secrets and low-quality content. OAuth: memory:write.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector. | |
| tags | No | Topic labels for storing or filtering memory; omit when no useful labels apply. | |
| type | Yes | Knowledge category: team rule, reusable pattern, pitfall, proven fix, design decision, or library/version quirk. | |
| content | Yes | One durable, self-contained lesson, up to 20,000 characters. State the decision/fix and why it matters; exclude secrets and transient debug logs. | |
| context | No | Non-sensitive supporting metadata, e.g. {language: "typescript", component: "auth"}; never credentials or raw customer data. | |
| agent_tool | No | Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown. | |
| session_id | No | Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history. | |
| change_reason | No | Why the supplied memories are superseded, up to 1,000 characters; used with supersedes_memory_ids. | |
| supersedes_memory_ids | No | Up to 20 accessible memory ids explicitly replaced by this lesson; omit for an ordinary new memory. Old entries retain their history. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool. |
| format | Yes | Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text. |
| truncated | Yes | True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare only the safety/idempotency profile; the description adds genuinely new behavior: dedup that can boost confidence so retries have side effects (consistent with idempotentHint=false), quota consumption, rejection of secrets/low-quality content, required OAuth scope memory:write, and the fact that superseding retains history rather than deleting. This is exactly the kind of context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and sibling routing are front-loaded in the first sentence, followed by the correction workflow, side effects, and auth scope. Every sentence carries distinct information, though the second paragraph strings several unrelated facts together and 'returns a confirmation' is mildly redundant given an output schema exists.
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 9-parameter, non-idempotent write tool with quota and auth requirements, the description covers the correction model, dedup side effects, rejection policy, and required scope, and it correctly defers return-value detail to the existing output schema. Nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond it by explaining how two parameters interact (content must hold the complete replacement when supersedes_memory_ids is supplied, and change_reason explains that replacement), which is relationship-level meaning the per-field schema text does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Save one durable lesson'), plus scope ('privately for future workspace agents'), and explicitly names the siblings it is not (engram_reflect, engram_report_outcome). An agent can distinguish it from the other 16 engram_* tools without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use routing: single lesson here, milestone with several lessons/outcomes via engram_reflect, assessment of an existing memory via engram_report_outcome. It also spells out the correction path (complete replacement in content + old ids in supersedes_memory_ids), which is a distinct usage mode.
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.
13 tool updates
- Added
engram_close_session - Changed
engram_cross_pollinate1 field changed- added
Input schema / properties / session_idAdded value: +{ + "description": "Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history.", + "type": "string" +}
- Added
engram_delete_memory - Added
engram_list_sessions - Changed
engram_recall1 field changed- added
Input schema / properties / session_idAdded value: +{ + "description": "Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history.", + "type": "string" +}
- Changed
engram_reflect1 field changed- added
Input schema / properties / session_idAdded value: +{ + "description": "Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history.", + "type": "string" +}
- Changed
engram_rehydrate1 field changed- changed
Input schema / properties / session_id / descriptionPrevious value: -"Session id returned by start/rehydrate. Omit to let the server resolve the applicable recent session or retrieval attribution."New value: +"Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history."
- Changed
engram_report_outcome1 field changed- changed
Input schema / properties / session_id / descriptionPrevious value: -"Session id returned by start/rehydrate. Omit to let the server resolve the applicable recent session or retrieval attribution."New value: +"Session where this memory was retrieved; used for outcome attribution, not to reopen or modify that journal. May be closed."
- Added
engram_restore_memory - Added
engram_retract_memory - Changed
engram_smarter1 field changed- added
Input schema / properties / session_idAdded value: +{ + "description": "Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history.", + "type": "string" +}
- Changed
engram_start2 fields changed- added
Input schema / properties / new_sessionAdded value: +{ + "description": "Default false reuses one eligible active journal. True creates a separate journal for parallel work; retries can create another session. Keep the returned session_id.", + "type": "boolean" +} - added
Input schema / properties / session_idAdded value: +{ + "description": "Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history.", + "type": "string" +}
- Changed
engram_store1 field changed- added
Input schema / properties / session_idAdded value: +{ + "description": "Exact journal id from start/rehydrate/list_sessions. Disambiguates parallel work; writing requires your active session. Rehydrate may read shared or closed history.", + "type": "string" +}
12 tool updates
- Changed
engram_cross_pollinate8 fields changed- added
Input schema / properties / context / descriptionAdded value: +"Natural-language task and relevant facts, e.g. migrate our PostgreSQL schema with zero downtime. Never include credentials or raw customer data." - added
Input schema / properties / depth / descriptionAdded value: +"Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget." - added
Input schema / properties / include_public / descriptionAdded value: +"Default true: supplement private results with public knowledge when needed. False searches only other private workspace repositories." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum retrieved memories, 1–25. Omitted defaults: focused=5, deep=12; explicit values override these defaults." - added
Input schema / properties / source_repos / descriptionAdded value: +"Restrict source repositories to these slugs; omit or pass an empty array to search other repositories." - added
Input schema / properties / source_repos / items / descriptionAdded value: +"Source repository slug in this workspace." - added
Input schema / properties / target_repo / descriptionAdded value: +"Destination repository slug for the current work; memories from this repo are excluded from the source search." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_get_context4 fields changed- added
Input schema / properties / file / descriptionAdded value: +"File path/name used only as a search hint, e.g. src/auth.ts. Engram does not read or modify local files." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug to inspect, e.g. billing-api. If no repo-specific memories match, the server broadens to workspace/public knowledge." - added
Input schema / properties / task / descriptionAdded value: +"Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_proof1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_recall8 fields changed- added
Input schema / properties / depth / descriptionAdded value: +"Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum retrieved memories, 1–20. Omitted defaults: focused=5, deep=12; explicit values override these defaults." - added
Input schema / properties / query / descriptionAdded value: +"Specific decision, error or question to search, e.g. how are checkout retries deduplicated?" - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / tags / descriptionAdded value: +"Topic labels for storing or filtering memory; omit when no useful labels apply." - added
Input schema / properties / tags / items / descriptionAdded value: +"Searchable topic label, e.g. oauth or postgres." - added
Input schema / properties / type / descriptionAdded value: +"Knowledge category: team rule, reusable pattern, pitfall, proven fix, design decision, or library/version quirk." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_reflect22 fields changed- added
Input schema / properties / agent_tool / descriptionAdded value: +"Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown." - added
Input schema / properties / feedback / descriptionAdded value: +"Optional product feedback or feedback-pulse dismissal; separate from outcomes about individual memories." - added
Input schema / properties / feedback / properties / dismiss / descriptionAdded value: +"True permanently dismisses the optional weekly feedback pulse for this agent member." - added
Input schema / properties / feedback / properties / notes / descriptionAdded value: +"Concrete non-sensitive feedback explaining the selected signal." - added
Input schema / properties / feedback / properties / signal / descriptionAdded value: +"Quality of Engram retrieval during this work; omit if only dismissing the feedback pulse." - added
Input schema / properties / learnings / descriptionAdded value: +"Durable private workspace lessons to persist when store=true; only the first 8 are processed. Low-quality entries may be skipped. The summary remains a journal checkpoint." - added
Input schema / properties / learnings / items / properties / content / descriptionAdded value: +"One durable, self-contained lesson, up to 20,000 characters. State the decision/fix and why it matters; exclude secrets and transient debug logs." - added
Input schema / properties / learnings / items / properties / content / maxLengthAdded value: +20000 - added
Input schema / properties / learnings / items / properties / context / descriptionAdded value: +"Non-sensitive supporting metadata, e.g. {language: \"typescript\", component: \"auth\"}; never credentials or raw customer data." - added
Input schema / properties / learnings / items / properties / tags / descriptionAdded value: +"Topic labels for storing or filtering memory; omit when no useful labels apply." - added
Input schema / properties / learnings / items / properties / tags / items / descriptionAdded value: +"Searchable topic label, e.g. oauth or postgres." - added
Input schema / properties / learnings / items / properties / type / descriptionAdded value: +"Knowledge category: team rule, reusable pattern, pitfall, proven fix, design decision, or library/version quirk." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / store / descriptionAdded value: +"Default true saves accepted durable learnings; false skips learning storage only. Session checkpoints, supplied outcomes and feedback are still recorded." - added
Input schema / properties / summary / descriptionAdded value: +"Milestone/handoff summary: what changed, evidence, decisions and remaining work. Required unless learnings, outcomes or feedback are supplied." - added
Input schema / properties / task / descriptionAdded value: +"Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery." - added
Input schema / properties / used_memories / descriptionAdded value: +"Outcomes for memories actually used during this milestone; only the first 20 are processed. Omit when none were applied." - added
Input schema / properties / used_memories / items / properties / detail / descriptionAdded value: +"Brief evidence of how the memory changed the decision, or why it failed. Exclude secrets." - added
Input schema / properties / used_memories / items / properties / failure_reason / descriptionAdded value: +"Why an unsuccessful memory failed; outdated marks obsolete knowledge. Omit for a successful use." - added
Input schema / properties / used_memories / items / properties / memory_id / descriptionAdded value: +"Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text." - added
Input schema / properties / used_memories / items / properties / success / descriptionAdded value: +"Whether this memory helped the actual task: true for a useful application, false for a misleading or unusable result." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_rehydrate9 fields changed- added
Input schema / properties / agent_tool / descriptionAdded value: +"Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown." - added
Input schema / properties / depth / descriptionAdded value: +"Default standard: up to 30 events/4 summaries; brief uses 12/2, full 60/8. This controls journal detail, not retrieval depth." - added
Input schema / properties / project / descriptionAdded value: +"Product/project name for session context. Start/setup use it as the repository hint when repo is omitted." - added
Input schema / properties / reason / descriptionAdded value: +"Recovery trigger, e.g. context compaction or resumed after interruption; recorded in the journal." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / session_id / descriptionAdded value: +"Session id returned by start/rehydrate. Omit to let the server resolve the applicable recent session or retrieval attribution." - added
Input schema / properties / since / descriptionAdded value: +"Optional ISO 8601 lower bound for journal events, e.g. 2026-10-16T10:00:00Z; omit for normal recent-session recovery." - added
Input schema / properties / task / descriptionAdded value: +"Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_report_outcome7 fields changed- added
Input schema / properties / detail / descriptionAdded value: +"Brief evidence of how the memory changed the decision, or why it failed. Exclude secrets." - added
Input schema / properties / failure_reason / descriptionAdded value: +"Why an unsuccessful memory failed; outdated marks obsolete knowledge. Omit for a successful use." - added
Input schema / properties / memory_id / descriptionAdded value: +"Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / session_id / descriptionAdded value: +"Session id returned by start/rehydrate. Omit to let the server resolve the applicable recent session or retrieval attribution." - added
Input schema / properties / success / descriptionAdded value: +"Whether this memory helped the actual task: true for a useful application, false for a misleading or unusable result." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_setup9 fields changed- added
Input schema / properties / agent_tool / descriptionAdded value: +"Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown." - added
Input schema / properties / market / descriptionAdded value: +"Business/domain context, e.g. fintech or education; not a geographic access setting." - added
Input schema / properties / project / descriptionAdded value: +"Product/project name for session context. Start/setup use it as the repository hint when repo is omitted." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / role / descriptionAdded value: +"Agent responsibility used in task context, e.g. backend engineer. Start/setup default to implementation agent." - added
Input schema / properties / stack / descriptionAdded value: +"Project technologies used to focus context; omit when unknown." - added
Input schema / properties / stack / items / descriptionAdded value: +"Technology name, e.g. TypeScript or PostgreSQL." - added
Input schema / properties / task / descriptionAdded value: +"Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_skill2 fields changed- added
Input schema / properties / skill / descriptionAdded value: +"Checklist name, e.g. code-review, security or skill:deployment. Omit or pass an empty string to list available names; unknown names return count=0." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_smarter7 fields changed- added
Input schema / properties / context / descriptionAdded value: +"Natural-language task and relevant facts, e.g. migrate our PostgreSQL schema with zero downtime. Never include credentials or raw customer data." - added
Input schema / properties / depth / descriptionAdded value: +"Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget." - added
Input schema / properties / file / descriptionAdded value: +"File path/name used only as a search hint, e.g. src/auth.ts. Engram does not read or modify local files." - added
Input schema / properties / include_skills / descriptionAdded value: +"Include relevant procedural checklists. If omitted, the server infers this from task/context keywords; false suppresses checklists." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum retrieved memories, 1–30. Omitted defaults: focused=5, deep=12; explicit values override these defaults." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_start13 fields changed- added
Input schema / properties / agent_tool / descriptionAdded value: +"Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown." - added
Input schema / properties / context / descriptionAdded value: +"Optional full task context; overrides the query generated from project, role, market, stack and task." - added
Input schema / properties / depth / descriptionAdded value: +"Default focused uses a small retrieval budget; deep expands it when focused results are insufficient. An explicit limit overrides the default budget." - added
Input schema / properties / include_skills / descriptionAdded value: +"Include relevant procedural checklists. If omitted, the server infers this from task/context keywords; false suppresses checklists." - added
Input schema / properties / limit / descriptionAdded value: +"Maximum retrieved memories, 1–30. Omitted defaults: focused=8, deep=16; explicit values override these defaults." - added
Input schema / properties / market / descriptionAdded value: +"Business/domain context, e.g. fintech or education; not a geographic access setting." - added
Input schema / properties / project / descriptionAdded value: +"Product/project name for session context. Start/setup use it as the repository hint when repo is omitted." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / role / descriptionAdded value: +"Agent responsibility used in task context, e.g. backend engineer. Start/setup default to implementation agent." - added
Input schema / properties / stack / descriptionAdded value: +"Project technologies used to focus context; omit when unknown." - added
Input schema / properties / stack / items / descriptionAdded value: +"Technology name, e.g. TypeScript or PostgreSQL." - added
Input schema / properties / task / descriptionAdded value: +"Concrete current goal or decision, e.g. diagnose checkout retries; used to focus context and session recovery." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
- Changed
engram_store12 fields changed- added
Input schema / properties / agent_tool / descriptionAdded value: +"Calling client name for attribution, e.g. codex, claude-code, cursor, or gemini. Omit if unknown." - added
Input schema / properties / change_reason / descriptionAdded value: +"Why the supplied memories are superseded, up to 1,000 characters; used with supersedes_memory_ids." - added
Input schema / properties / content / descriptionAdded value: +"One durable, self-contained lesson, up to 20,000 characters. State the decision/fix and why it matters; exclude secrets and transient debug logs." - added
Input schema / properties / content / maxLengthAdded value: +20000 - added
Input schema / properties / context / descriptionAdded value: +"Non-sensitive supporting metadata, e.g. {language: \"typescript\", component: \"auth\"}; never credentials or raw customer data." - added
Input schema / properties / repo / descriptionAdded value: +"Repository slug, e.g. engram or billing-api, within the authenticated workspace. This is a memory filter, not a filesystem path or workspace selector." - added
Input schema / properties / supersedes_memory_ids / descriptionAdded value: +"Up to 20 accessible memory ids explicitly replaced by this lesson; omit for an ordinary new memory. Old entries retain their history." - added
Input schema / properties / supersedes_memory_ids / items / descriptionAdded value: +"Exact id from a recalled memory; do not substitute a repository name, URL, or the memory text." - added
Input schema / properties / tags / descriptionAdded value: +"Topic labels for storing or filtering memory; omit when no useful labels apply." - added
Input schema / properties / tags / items / descriptionAdded value: +"Searchable topic label, e.g. oauth or postgres." - added
Input schema / properties / type / descriptionAdded value: +"Knowledge category: team rule, reusable pattern, pitfall, proven fix, design decision, or library/version quirk." - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "format": { + "description": "Payload encoding: Markdown context/checkpoint, serialized JSON data, or plain confirmation text.", + "enum": [ + "markdown", + "json", + "text" + ], + "type": "string" + }, + "text": { + "description": "The same bounded payload as content[0].text; interpret it using format. JSON text contains the endpoint-specific fields described by this tool.", + "type": "string" + }, + "truncated": { + "description": "True when the payload exceeded 120,000 characters and was cut with a notice. Narrow the request; truncated JSON is not parseable.", + "type": "boolean" + } + }, + "required": [ + "text", + "format", + "truncated" + ], + "type": "object" +}
12 tool updates
- First observed
engram_cross_pollinate - First observed
engram_get_context - First observed
engram_proof - First observed
engram_recall - First observed
engram_reflect - First observed
engram_rehydrate - First observed
engram_report_outcome - First observed
engram_setup - First observed
engram_skill - First observed
engram_smarter - First observed
engram_start - First observed
engram_store
Publisher details
- Operator
- Engram Tools · Publisher source
- Operator website
- https://engram.tools · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://engram.tools/en/documentation · Publisher source
- Trust center
- Not available
- Restrictions
- Requires an Engram account, email verification, and OAuth authorization. A free plan is available with usage quotas; paid plans provide higher limits. No credit card is required to start. · Publisher source
Related MCP Connectors
Shared project memory that keeps teammates and AI agents aligned across sessions.
Shared project memory for coding agents: decisions, lessons, guardrails and tasks per repository.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceLocal-first, multi-user shared memory for AI agents with semantic search, offline support, and team synchronization.MIT
- FlicenseNot gradedqualityDmaintenanceGives AI agents persistent memory, handoffs, and shared context across sessions, enabling seamless continuity and multi-agent collaboration.49 npm67-
- AlicenseNot gradedqualityAmaintenanceProvides AI coding agents with a persistent memory layer to save, recall, update, and track memories across sessions and repositories using hybrid semantic search.6MIT
- FlicenseNot gradedqualityDmaintenanceAuto-captured, auto-recalled, path-scoped memory for AI coding agents and teams.2-
Glama MCP Gateway
Add one secure layer between your agents and this server.