Skip to main content
Glama

Server Details

XMemo is a user-owned Memory OS for AI agents, providing a shared, persistent memory layer across AI assistants, IDEs, CLIs, tools, projects, and sessions.

It enables ChatGPT, Claude, Codex, Cursor, Gemini, and other supported AI clients to access authorized long-term context without requiring users to repeatedly explain their preferences, project decisions, or previous work.

Beyond basic memory storage and retrieval, XMemo supports semantic search, contextual recall, memory updates and corrections, source attribution, version history, project-scoped context, task tracking, and governed memory lifecycle management.

Identity-aware access controls, scoped authorization, and memory isolation help users manage which agents and workflows can access their information. XMemo also provides advanced capabilities for structured knowledge, reusable procedures, and memory consolidation through its broader Memory OS platform.

Connect through hosted MCP with OAuth or bearer-token authentication, or integrate directly through REST APIs and supported client tools. Memory remains available across authorized clients and sessions, with user-controlled access, export, and deletion.

Website: https://xmemo.dev Documentation: https://xmemo.dev/docs

Ownership verified
Status
Healthy
Uptime
99.2% over 73 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
yonro/memory-os-cli
GitHub Stars
12
Server Listing
XMemo

TDQS

B3.4/5.0

Scored across 35 tools

Disambiguation3/5

Several retrieval/context tools overlap conceptually (recall, recall_context, read_memory, search_knowledge, get_project_context, get_timeline), though their descriptions attempt to draw clear boundaries. TODO-related tools (list_memory_todos, create_memory_todo, update_project_todo, propose_todo_mutation) and relationship tools also require careful reading to distinguish. Descriptions help, but the set still has meaningful ambiguity for an agent choosing among similar memory-access paths.

Naming Consistency3/5

Most names use snake_case, but the verb pattern is mixed: create_*, get_*, list_*, update_* coexist with bare verbs like recall, remember, forget, and noun-first names like memory_relationships and memory_stats. The convention is readable but not fully predictable across the 35-tool surface.

Tool Count2/5

With 35 tools, the surface is heavy for a memory server and includes many niche/admin operations such as proposal tools, audit queries, snapshots, and multiple recall variants. While the domain is broad, the count exceeds a well-scoped set and invites cognitive overload.

Completeness4/5

The tool set covers the memory lifecycle well: create/read/update/delete/restore, versions, conflicts, relationships, audit, timeline, project context, TODOs, snapshots, and cloud skills. Minor gaps exist around cloud-skill lifecycle operations (no explicit update/delete tool) and bulk operations, but core workflows are well supported.

Available Tools

35 tools
complete_memory_todoComplete XMemo memory TODOAInspect

Marks a TODO/action item completed when the user says a saved task is done, resolved, or no longer needed; its exact memory reference is shown by list_memory_todos.

NameRequiredDescriptionDefault
noteNoOptional completion note.
todo_idYesThe memory TODO/action-item ID to complete.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a mutating, non-destructive, non-idempotent operation, and the description does not contradict them. It adds the semantic that the TODO is 'marked completed' and points to list_memory_todos for the ID, but it does not disclose side effects such as whether completed TODOs vanish from active lists, whether repeated completion errors, or whether the action is reversible. The added context is useful but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that packs the operation, trigger, and cross-reference without wasted words. It is front-loaded with the verb and resource, making it immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a simple two-parameter mutation with an output schema and reasonable annotations, the description covers the core purpose, trigger, and ID sourcing. It lacks explicit mention of post-completion state or alternatives, but those gaps are minor and the overall package is sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The input schema already provides 100% coverage for both parameters (todo_id and note), so the baseline is 3. The description adds value by explaining that the todo_id is the exact memory reference shown by list_memory_todos, which helps the agent correctly obtain the ID before calling the tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Marks'), identifies the exact resource ('a TODO/action item'), and includes the user trigger ('when the user says a saved task is done, resolved, or no longer needed'). It clearly distinguishes this from sibling tools like create_memory_todo and list_memory_todos by focusing on the completion action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('when the user says a saved task is done, resolved, or no longer needed') and references list_memory_todos as the source for the exact memory reference, implying a look-then-complete workflow. It does not explicitly exclude alternatives like update_project_todo, but the narrow purpose makes the intended usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_memory_todoCreate XMemo memory TODOAInspect

Creates a TODO/action item in XMemo with an optional due time when the user asks to save a task, follow-up, action item, or reminder-style item to revisit at a later time.

NameRequiredDescriptionDefault
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.work
due_atNoOptional due time for a memory TODO/action item, preferably ISO 8601.
contentYesText body to save, such as a memory, TODO/action item, event note, or state summary.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, so the write nature is covered. The description adds that it creates a todo with optional due time, but doesn't disclose other behavioral traits like return format, idempotency, or side effects. With annotations present, the added value is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the core action ('Creates a TODO/action item'), and includes the key trigger context. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

With an output schema present, return values need no explanation. The description, annotations, and full parameter schema cover the essential use case. Could be more complete with explicit notes on when not to use, but for a simple create tool it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100%, and every parameter has a description. The tool description does not add additional meaning beyond the schema, so the baseline of 3 is appropriate. It mentions 'optional due time' which maps to due_at, but no further enrichment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a TODO/action item in XMemo, with optional due time, and specifies the trigger context (user asks to save a task, follow-up, action item, or reminder). This distinguishes it from sibling tools like complete_memory_todo or list_memory_todos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'when the user asks to save a task, follow-up, action item, or reminder-style item to revisit at a later time.' This gives a clear usage trigger, though it doesn't explicitly mention alternatives or exclusion cases, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_restart_snapshotCreate Restart SnapshotAInspect

Save active state, recent events, TODOs, and pending decisions for restart. Relevant before handoff or when context may be lost.

NameRequiredDescriptionDefault
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.work
state_keyNoWorking-state key to save, snapshot, or restore, such as active_task.active_task
session_idNoOptional session identifier associated with the event, timeline query, or snapshot.
ttl_secondsNoTime-to-live in seconds for working state or restart snapshot records.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
decision_limitNoMaximum number of pending decisions to include in a restart snapshot.
reminder_limitNoMaximum number of TODO/reminder items to include in a restart snapshot.
timeline_limitNoMaximum number of recent timeline events to include in a restart snapshot.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the safety profile is covered; the description usefully adds what content is captured. It does not say whether a second call supersedes or appends to an existing snapshot, how long the snapshot lives, or that state_key lets you target a particular working-state entry — the kind of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the capture contents front-loaded ahead of the trigger condition. Nothing is repeated from the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

Annotation coverage plus an output schema means the description need not restate safety or return shape; all parameters are optional with defaults, so the tool is callable with no arguments.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% with per-parameter descriptions and defaults for all 9 optional parameters, so the schema does the heavy lifting. The description's mention of TODOs, pending decisions and recent events implicitly maps to reminder_limit, decision_limit and timeline_limit, but says nothing about scope, bucket, session_id, ttl_seconds or metadata_json beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (save) and enumerates the resource contents it captures: active state, recent events, TODOs, pending decisions. This tells an agent it is a composite snapshot rather than a single-key write like update_state or remember, but it never names those siblings or restore_restart_snapshot to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Relevant before handoff or when context may be lost' gives a concrete trigger condition for use. It stops short of when-not guidance or naming restore_restart_snapshot as the counterpart that reads the snapshot back, so the agent must infer the save/restore pairing from names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_memoryExplain XMemo memoryA
Read-onlyIdempotent
Inspect

Explains why a memory exists or matched a query whenever the user asks why something was saved there or why it was retrieved.

NameRequiredDescriptionDefault
queryNoNatural-language question or search text.
memory_idYesExact XMemo memory reference shown by search or recall.
output_jsonNoReturn a machine-readable JSON response instead of a human-readable summary.
include_embeddingNoWhether to include embedding/vector metadata in the returned explanation.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, providing safety information. The description adds the two explanation modes (existence vs. retrieval match) but does not disclose additional behavioral traits such as how explanations are generated or any limitations. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the core action and scope. No wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a relatively simple, read-only tool with complete schema coverage, an output schema, and clear annotations, the description is largely sufficient. It could be slightly more complete by mentioning that it is complementary to recall/search tools, but the current text covers the essential use case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters clearly. The description adds no extra parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: explaining why a memory exists or matched a query. This is a specific verb+resource definition that distinguishes it from sibling tools like recall (retrieval) and update_memory (modification).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit context for when to use the tool ('whenever the user asks why something was saved there or why it was retrieved'). However, it does not mention any when-not scenarios or alternative tools by name, so it falls short of full guideline coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

forgetForget XMemo memory or TODOA
Destructive
Inspect

Delete one memory, TODO, or Ledger transaction by current/latest, an exact memory reference, an exact TODO ID from list_memory_todos, or an exact transaction ID from list_ledger_transactions. The default is a recoverable soft delete that restore_memory can undo; mode='hard' is permanent and unrecoverable; requires explicit user confirmation of permanent deletion. Ambiguous targets are resolved before deleting.

NameRequiredDescriptionDefault
modeNoDeletion mode: soft or soft_delete is the recoverable default; hard or hard_delete is permanent and unrecoverable; requires explicit user confirmation of permanent deletion.soft
reasonNoOptional user-facing reason for the deletion.
targetNoThe memory to forget: current or an exact memory ID shown by search.current
memory_idNoExact XMemo memory reference shown by search or recall.
query_hintNoInput value for the Forget tool.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
replacement_contentNoReplacement text to store when redacting or replacing deleted memory content.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructiveHint=true and idempotentHint=false; the description adds the crucial default (soft, recoverable), the undo path (restore_memory), and the confirmation requirement for hard deletes. It does not say what happens to linked relationships or whether hard delete is available for all target types, which limits it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the actionable delete targets before the mode/recoverability rules. The first sentence is dense but every clause carries routing information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

An output schema exists so return values need not be described, and the description covers the high-risk pieces: recoverability, permanence, confirmation, and ambiguity handling. Remaining gaps are secondary behaviors such as effects on memory links or which target types support hard deletion.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description goes further by explaining how target values are obtained ('current/latest', exact memory reference, exact IDs from list_memory_todos / list_ledger_transactions) and by naming mode='hard' explicitly, but it says nothing about query_hint, replacement_content, or metadata_json.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (delete) and enumerates the exact resource types (memory, TODO, Ledger transaction) plus how each target is addressed. It names the sibling tools that produce the required references (list_memory_todos, list_ledger_transactions), so it is distinguishable from restore_memory and update_memory 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear routing context: default soft delete is recoverable via restore_memory, mode='hard' is permanent and needs explicit user confirmation, and ambiguous targets are disambiguated before deletion. It does not contrast against other mutating siblings like update_memory or remove_memory_relationship, so the exclusion guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mcp_identityCheck XMemo connectionA
Read-onlyIdempotent
Inspect

Checks XMemo connection status and the currently connected account/agent when the user asks whether XMemo is connected.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying what the tool actually returns (connection status, connected account/agent), which the annotations do not cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the core purpose, trigger condition, and output. Every phrase earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

Given the tool's simplicity (0 params, output schema present, annotations covering safety), the description fully captures what the agent needs to know: what it does and when to invoke it. No additional context is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

The tool has zero parameters, so the description cannot add parameter-specific meaning. Baseline of 4 applies for no-parameter tools; the description correctly avoids inventing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Checks' and resource 'XMemo connection status and the currently connected account/agent'. It also includes the user trigger context, distinguishing this from all sibling memory/ledger/todo tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'when the user asks whether XMemo is connected', providing a clear usage context. It does not mention alternatives, but no sibling tool serves this connection-check purpose, so explicit exclusion is unnecessary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_project_contextGet project contextA
Read-onlyIdempotent
Inspect

Read one authorized project's bounded context pack: state, TODOs, decisions, timeline, recent memories, and optional durable recall. Requires memory:read; it does not mutate project memories, and access is audit-logged. Use an exact project_id for a whole-project snapshot; otherwise use recall_context. max_items/max_tokens bound the whole pack; recent_hours affects only timeline; durable_query requires include_durable_context.

NameRequiredDescriptionDefault
bucketNoAccessible bucket filter; % includes all accessible buckets.%
team_idNoOptional exact authorized team focus; other team rows are excluded.
agent_idNoOptional client-supplied agent label for memory attribution.
max_itemsNoWhole-pack item budget from 1 to 1000.
max_tokensNoWhole-pack approximate token budget from 1 to 50000.
project_idYesExact authorized project ID; project names are not accepted.
output_jsonNoTrue returns the full structured pack; false returns a text summary.
recent_hoursNoTimeline lookback from 1 to 8760 hours; other sections are unaffected.
durable_queryNoQuery only for durable recall; ignored when include_durable_context is false.
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.
include_durable_contextNoInclude semantic durable recall; false omits that section.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds meaningful context: requires memory:read permission, does not mutate project memories, access is audit-logged. It also clarifies the effect of parameters on the returned pack, enhancing transparency of behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary purpose, followed by permission/behavior notes and parameter guidance. Every sentence carries essential information with no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

For an 11-parameter tool with an output schema, the description covers purpose, auth requirements, behavioral guarantees, parameter relationships, and points to the sibling alternative. With an output schema present, return values don't need description. Comprehensive for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

While the schema documents all parameters (100% coverage), the description adds cross-parameter semantics: max_items/max_tokens bound the whole pack, recent_hours affects only timeline, durable_query requires include_durable_context. This adds value beyond individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a bounded context pack for one project, listing its contents (state, TODOs, decisions, timeline, recent memories, optional durable recall). It distinguishes itself from sibling tools by specifying exact project_id for a whole-project snapshot and recommending recall_context otherwise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: use with exact project_id for whole-project snapshot, otherwise use recall_context. Also explains parameter scoping (max_items/max_tokens bound whole pack, recent_hours affects only timeline, durable_query requires include_durable_context), which clarifies when to adjust each parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_timelineGet memory timelineA
Read-onlyIdempotent
Inspect

Read authorized timeline events newest first. Requires memory:read and makes no memory changes. Use it for recent history or session resumption; use recall_context for semantic multi-memory context. limit is clamped to 1-500; session_id and event_type are exact filters.

NameRequiredDescriptionDefault
limitNoMaximum events to return; values are clamped to 1-500.
scopeNoOptional authorized scope; blank uses the token default.
bucketNoAccessible bucket filter; % includes all accessible buckets.%
event_typeNoOptional exact event type after lowercase normalization.
session_idNoOptional exact session ID filter.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral details beyond annotations: requires memory:read permission, makes no memory changes, clamps limit to 1-500, and exact filters for session_id and event_type. The readOnlyHint and idempotentHint annotations are consistent, so no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the primary action, and every sentence adds meaningful value (purpose, permissions, alternatives, parameter behavior). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

Given the readOnly annotations, output schema, and the sibling tool context, the description fully covers the key aspects: purpose, ordering, permissions, parameter constraints, and use cases. Nothing critical is missing for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% and parameter descriptions already explain limit clamping and exact filters. The description repeats these constraints without adding new semantic information, so it meets but does not exceed the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads timeline events newest first, distinguishing it from siblings like recall_context. The verb 'Read' and resource 'timeline events' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use this tool ('recent history or session resumption') and when to use the alternative ('recall_context for semantic multi-memory context'). This provides direct usage guidance and differentiates from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_memory_conflictsList Memory ConflictsA
Read-onlyIdempotent
Inspect

List conflicting/inconsistent memories. Relevant when the user/admin asks to review unresolved conflicts.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
output_jsonNoReturn a machine-readable JSON response instead of a human-readable summary.
unresolved_onlyNoWhether to show only unresolved memory conflicts.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond that beyond the notion of 'unresolved conflicts', which the schema default on unresolved_only already implies. Adequate but not additive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, purpose front-loaded, no filler. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

A read-only list tool with rich annotations, a full output schema, and 100% parameter coverage needs little prose to be callable correctly. The only gap is not routing the agent between this and resolve_memory_conflict, which is a usage rather than completeness issue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100% for all three parameters (limit, output_json, unresolved_only), so the schema carries the semantics. The description's mention of 'unresolved conflicts' mildly reinforces unresolved_only but adds no format, pagination, or default guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List conflicting/inconsistent memories.' That is unambiguous about what the tool returns. It does not distinguish itself from the sibling resolve_memory_conflict, which an agent could easily confuse with a listing tool, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Relevant when the user/admin asks to review unresolved conflicts' gives a clear trigger condition. It does not say when to prefer resolve_memory_conflict over this listing, nor does it note what to do after finding conflicts, so the exclusions/alternatives side is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_memory_todosList XMemo memory TODOsA
Read-onlyIdempotent
Inspect

Lists open or completed TODO/action items as a concise text answer when the user asks how many tasks, follow-ups, or saved action items are currently pending or completed; do not use it to open, browse, filter, or manage the visual TODO workspace.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.%
due_beforeNoOnly show memory TODO/action items due before this time.
item_statusNoOptional memory TODO/action-item status filter.open

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds useful behavioral context by stating the output is a 'concise text answer' and that it covers 'open or completed' item statuses. It does not go deep into pagination or response details, but with annotations covering safety, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, highly informative sentence that front-loads the main action and includes a conditional usage note. Every clause earns its place, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the tool's simplicity, the presence of a full output schema, and annotations guaranteeing safety, the description is mostly complete. It covers the core use case and exclusions, but does not explicitly mention how to set filters like due_before or item_status, which are left to the schema. Still, this is adequate for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, and the parameter descriptions in the schema fully document each parameter. The tool description adds no additional parameter semantics, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists open or completed TODO/action items as a concise text answer, with a specific verb and resource. It also distinguishes itself from the visual TODO workspace, making its scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool ('when the user asks how many tasks, follow-ups, or saved action items are currently pending or completed') and explicitly states what not to use it for ('do not use it to open, browse, filter, or manage the visual TODO workspace'). However, it does not name alternative tools, leaving a slight gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_memory_versionsList Memory VersionsA
Read-onlyIdempotent
Inspect

Show version history for a memory. Relevant when the user asks for previous content or changes over time.

NameRequiredDescriptionDefault
memory_idYesExact XMemo memory reference shown by search or recall.
output_jsonNoReturn a machine-readable JSON response instead of a human-readable summary.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds no behavioral detail beyond purpose — nothing about ordering, how many versions are returned, or whether the current version is included. With annotations carrying the load, this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose front-loaded, zero filler or restatement of the title. Every clause contributes either what the tool does or when to reach for it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

An output schema exists, so return-value explanation is unnecessary, and both parameters are fully described in-schema. What remains unstated is minor but real: ordering of versions and whether the latest/current revision is part of the list, which an agent may need to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100% and both parameters (memory_id, output_json) are documented in-schema, including that memory_id is the "Exact XMemo memory reference shown by search or recall." The description adds no further parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: "Show version history for a memory." An agent can immediately tell this is a read of historical revisions rather than the current record. It does not explicitly contrast with siblings like read_memory or restore_memory, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear triggering condition: "Relevant when the user asks for previous content or changes over time." This maps intent to tool selection well. It stops short of naming when not to use it (e.g., use read_memory for current content), so no exclusions or explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_relationshipsMemory RelationshipsA
Read-onlyIdempotent
Inspect

Read explicit personal links for one visible Memory; no automated analysis.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
cursorNoOpaque cursor for loading the next TODO Board page.
memory_idYesExact XMemo memory reference shown by search or recall.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered elsewhere. The description adds that results are limited to explicit links on a visibility-scoped memory, which is genuinely useful context, but it says nothing about pagination behavior, ordering, or what happens when no links exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the scope constraint front-loaded and no filler. It is arguably over-compressed for a tool with pagination, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a simple read-only tool with full schema coverage and annotations that carry the safety profile, the description covers the essential scoping. Since there is no output schema, a brief word on what a returned relationship looks like would have closed the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so memory_id, limit, and cursor are already documented in the schema; the baseline is therefore 3. The description reinforces that the lookup targets a single visible Memory, but adds no format, cursor, or limit semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Read") and resource ("explicit personal links for one visible Memory"), which distinguishes it from write-side siblings such as link_memories and remove_memory_relationship. It does not, however, name those siblings or otherwise explicitly route the agent, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause "no automated analysis" implies this tool returns only human/agent-authored links rather than inferred ones, which is a useful usage boundary. But there is no explicit when-to-use, when-not-to-use, or named alternative, so usage is only implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_statsShow XMemo memory statisticsA
Read-onlyIdempotent
Inspect

Shows aggregate statistics for all saved XMemo memories — counts by type, source, location, and optional time range when the user asks for counts, breakdowns, or distributions.

NameRequiredDescriptionDefault
scopeNoOptional scope that narrows memory access; leave blank for the token default.
sinceNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.
top_nNoMaximum number of aggregate groups to return.
untilNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically.
group_byNoOptional grouping: none, month, agent, location, memory_type, type, source, path, bucket, day, or comma-separated advanced fields.
memory_typeNoMemory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.%
output_jsonNoReturn a machine-readable JSON response instead of a human-readable summary.
path_filterNoMemory path filter; % matches all paths.%

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only the scope of aggregation ('all saved memories') and the optional time range, without disclosing behaviors such as top_n truncation of groups or what an unbounded window defaults to. Adequate but thin against an already-rich annotation set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the core capability, with zero redundant text. The tail clause blends purpose and usage guidance, but nothing is wasted and nothing important is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

With an output schema present, rich annotations, and 100% schema coverage across 8 optional params, the description only needs to establish purpose and trigger, which it does. A note on group truncation via top_n or default time-window behavior would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100% and the parameter docs are unusually detailed (RFC 3339 formats, half-open interval semantics, heuristic fallback for since/until). The description's mention of grouping by type, source, location and time range loosely maps to group_by/memory_type/since/until but adds no syntax or behavior beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Shows') and resource ('aggregate statistics for all saved XMemo memories') and enumerates the aggregate dimensions (type, source, location, time range), which clearly separates it from retrieval siblings like read_memory or recall. It stops short of naming an alternative tool explicitly, so it lands just under the top tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the triggering intent plainly: 'when the user asks for counts, breakdowns, or distributions.' That is a concrete when-to-use condition. It gives no when-not condition or named alternative (e.g. use recall for individual memories), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_profile_mutationPropose Profile MutationBInspect

Propose a profile mutation under the proposals bucket at path 'profile.{field}'.

NameRequiredDescriptionDefault
fieldYesInput value for the Propose Profile Mutation tool.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
valueYesInput value for the Propose Profile Mutation tool.
team_idNoOptional team/workspace identifier for team-scoped memory access.
agent_idNoOptional client-supplied agent label for memory attribution.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation (readOnlyHint=false) and not idempotent. The description adds the 'proposals bucket' context, suggesting a staged proposal workflow, but does not explain what 'propose' entails (e.g., whether approval is needed, whether it is directly applied, or what happens on success/failure). It provides some value beyond annotations but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise, front-loaded sentence. It states the primary action and resource without unnecessary filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given the tool has 7 parameters, a proposal mechanism, and a complex conceptual model (proposals bucket, profile paths), the description is too sparse. It does not explain the proposal workflow, the relationship between 'field' and 'value', or how this interacts with memory. While an output schema exists, the description still leaves major operational gaps for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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

Despite 100% schema description coverage, the descriptions for the required parameters 'field' and 'value' are tautological ('Input value for the Propose Profile Mutation tool.'), adding no real meaning. The tool description hints at the path template but does not define allowed field names or value formats. The optional parameters have somewhat better descriptions (e.g., scope, team_id), but key semantics are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Propose'), the resource ('profile mutation'), and adds a specific location ('proposals bucket at path profile.{field}'). This distinguishes it from sibling tools like propose_write and propose_todo_mutation, which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives. The description implies it is for profile changes, but it does not explain when to choose this over propose_write, update_memory, or other siblings, nor mention any exclusions or necessary conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_todo_mutationPropose Todo MutationAInspect

Propose a todo mutation under the proposals bucket at path 'todos/{action}'.

NameRequiredDescriptionDefault
scopeNoOptional scope that narrows memory access; leave blank for the token default.
actionYesUsage action or audit-event action filter, depending on the tool.
contentYesText body to save, such as a memory, TODO/action item, event note, or state summary.
team_idNoOptional team/workspace identifier for team-scoped memory access.
agent_idNoOptional client-supplied agent label for memory attribution.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only (readOnlyHint=false), and the description adds the storage location ('proposals bucket' and 'todos/{action}'). However, it does not disclose what happens when a proposal is made, whether it is actually applied, or any side effects or approval flow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the tool's purpose and path template. Every word contributes meaning, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The description is minimal for a tool with 7 parameters, an output schema, and many siblings. It lacks context on the proposal lifecycle, what 'propose' means in practice, and how this differs from other proposal and todo tools. It is adequate but leaves important gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents parameter meanings. The description only adds the 'todos/{action}' path template, which gives slight context for the 'action' parameter but does not compensate for the generic schema descriptions of 'content' or other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('propose') and resource ('todo mutation'), and further specifies the storage path 'todos/{action}'. This clearly distinguishes it from sibling tools like propose_write and propose_profile_mutation, which target other resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'under the proposals bucket' implies this is for proposing rather than applying mutations directly, but there is no explicit guidance on when to use this tool versus alternatives like create_memory_todo or update_project_todo. No exclusions or alternative tool names are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_writePropose WriteAInspect

Propose a write operation (memory, todo, profile etc.) when direct modifications are denied due to tier-gating.

NameRequiredDescriptionDefault
pathYesA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.proposals
contentYesText body to save, such as a memory, TODO/action item, event note, or state summary.
team_idNoOptional team/workspace identifier for team-scoped memory access.
agent_idNoOptional client-supplied agent label for memory attribution.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the annotations by clarifying that this operation is a 'proposal' rather than a direct modification, and it identifies the tier-gating trigger. Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description supplements with the proposal semantics without contradicting the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately identifies the action and context. It is front-loaded with the verb 'Propose' and contains zero wasted words, making it highly concise and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given the detailed input schema and the presence of an output schema, the description adequately covers purpose and usage. It explains when to use the tool and what it proposes, which is sufficient for a generic proposal tool. It does not describe the proposal lifecycle (e.g., approval or queuing), but this is likely captured by the output schema, so the description is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The input schema provides 100% description coverage for all 8 parameters, so the schema already handles parameter semantics. The tool description adds little parameter-specific meaning beyond listing resource types (memory, todo, profile), which aligns with the baseline score of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Propose a write operation (memory, todo, profile etc.)' with a specific verb and resource types. It also provides a trigger condition ('when direct modifications are denied due to tier-gating'), which gives context. However, it does not explicitly distinguish itself from the sibling tools propose_todo_mutation and propose_profile_mutation, missing the highest bar for differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'when direct modifications are denied due to tier-gating.' This is a clear usage context. It does not name alternative tools or state when not to use it, so it falls short of the 'explicit when/when-not/alternatives' criterion for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_auditQuery AuditA
Read-onlyIdempotent
Inspect

Query audit records within the caller's authorized memory scope. source='events' selects action/time/target events; source='consolidation' selects consolidation/lifecycle/reflection history. This does not grant cross-user or system administration access.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
sinceNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.
untilNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically.
actionNoUsage action or audit-event action filter, depending on the tool.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.
offsetNoNumber of matching records to skip for pagination.
sourceNoOptional source filter for system statistics.events
target_idNoOptional audit target ID to filter audit events.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description contributes the meaningful extra constraint that this does not grant cross-user or admin access. It says nothing about result volume, pagination semantics, or the 90-day span limit that lives only in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose and scope, then the source semantics, then the access boundary. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

An output schema exists and nine parameters are fully documented, so the description needn't explain returns. It covers scope, source modes, and the access boundary, but leaves the agent to discover pagination (limit/offset defaults) and the since/until window rules from the schema alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, but the description adds real semantics for the source parameter that the schema obscures ('source' is described generically as a 'source filter for system statistics'). Clarifying that 'events' returns action/time/target events while 'consolidation' returns consolidation/lifecycle/reflection history is genuine value beyond the structured field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Query audit records') plus the scoping constraint ('within the caller's authorized memory scope'), and enumerates the two source modes. It doesn't differentiate from nearby siblings like get_timeline or explain_memory, so an agent must infer which one to reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The source='events' vs source='consolidation' split gives implied usage guidance for choosing a record class. However, there is no explicit statement of when to use this tool versus the audit-adjacent siblings (get_timeline, memory_stats, explain_memory), and no prerequisites are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_memoryRead MemoryA
Read-onlyIdempotent
Inspect

Read one exact authorized XMemo memory or Document in character windows.

Use a bare memory ID (e.g. returned by recall or search) for the initial read (offset 0). The response includes 'revision' (e.g. '<memory_id>@v') and 'version'. To continue reading long content across multiple pages (when 'has_more' is True), callers MUST pass the returned 'revision' as memory_id along with 'next_offset'. This pins continuation pages to that exact snapshot and prevents torn reads if concurrent updates occur between requests. Querying with a bare memory ID always resolves to the latest active version (head), which is unpinned and subject to version tearing across updates. A Document item's reference ('document:') reads the whole Document the same way. For a Document, 'anchor' (a heading path) with 'ordinal' (1 = its first chunk) starts the page at that section; continue with 'next_offset' and no anchor. 'version' pins like a revision; a Document that changed since returns version_changed=true and no content, so restart at offset 0. Embeddings are never returned.

NameRequiredDescriptionDefault
limitNoMaximum content characters in this page; defaults to 4000.
anchorNoOptional Document heading path to start the page at; leave offset at 0.
offsetNoZero-based character offset into this memory's content; defaults to 0.
ordinalNoWhich chunk carrying the anchor to start at (1 = first); defaults to 1.
versionNoOptional version pin, the same as a '@v<version>' revision.
memory_idYesExact XMemo memory reference or 'document:<id>' returned by recall or search.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses critical behavior: bare IDs resolve to latest head and are unpinned, revision-pinned continuation prevents torn reads, and version_changed forces restart. It also states that embeddings are never returned. This is exactly the kind of behavioral context the annotations cannot provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well front-loaded, starting with the core operation and then explaining continuation and pinning. Every paragraph carries necessary behavioral detail about revisions, offsets, anchors, and Documents. There is little wasted language for a tool with this much continuation semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

Given the rich annotations, full schema description coverage, and output schema, the description covers the remaining gaps an agent needs: revision pinning, Document anchor behavior, version mismatch handling, and the no-embeddings guarantee. No essential call behavior is omitted for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning: memory_id can be a bare ID, revision, or document reference; anchor pairs with ordinal; version pins like a revision. The only ambiguity is that it refers to 'next_offset' while the schema parameter is named 'offset', which could cause a minor lookup mismatch.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: reading one exact authorized XMemo memory or Document in character windows. It clearly distinguishes this precise-read tool from recall/search discovery tools by noting that IDs are returned by recall or search. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: use a bare memory ID for the initial read, then use the returned revision with next_offset to continue long content. It also explains Document anchor/ordinal starts and version pinning. It does not explicitly state exclusions against siblings such as recall, but the discovery-versus-exact-read split is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recallRecall XMemo memoryA
Read-onlyIdempotent
Inspect

Recall a few relevance-ranked memories before answering, with path/type controls and optional working-memory preference. Unscoped by default: it searches all of your buckets; pass bucket to search only that bucket (never widened by fallback). Use it for a quick best-effort lookup; use recall_context when the answer needs a bounded multi-memory context pack.

NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
queryYesNatural-language question or search text.
sinceNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.
untilNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically.
bucketNoBucket of your own memories to search; % (default) searches all buckets. An explicit bucket is never widened by fallback.%
explainNoWhether to include retrieval explanation details with search or recall results.
agent_idNoOptional client-supplied agent label for memory attribution.
query_modeNoOptional query intent: 'topic' (default) or 'activity_log'. Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. 'activity_log' requires explicit bounded 'since' and 'until' timestamps. 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass.
time_orderNoSort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Set 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting.
memory_typeNoMemory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.%
path_filterNoMemory path filter; % matches all paths.%
owner_timezoneNoThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
prefer_workingNoWhether to prioritize working/session-state memories in retrieval.
reference_timeNoOptional ISO 8601 reference time snapshot for deterministic evaluation. Leave blank to use the real clock; setting this does not replace owner_timezone for calendar day boundaries.
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.
temporal_axis_modeNoOptional temporal axis resolution policy: 'created_at' (Scheme A), 'updated_at' (Scheme B), or 'split_filter_created_order_updated' (Scheme C).
hypothetical_answerNoOptional hypothetical answer or semantic expansion of the query, used to improve matching.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low, and the description adds real behavior: results are relevance-ranked and few in number, default search spans all buckets, and an explicit bucket disables fallback widening. It does not discuss result volume limits or when ranking may be overridden by time ordering, but the output schema covers the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, then default scoping, then sibling routing. Every sentence carries distinct information and none is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a 17-parameter retrieval tool with an output schema, the description covers purpose, default scope, the bucket override, and the sibling boundary — the decisions an agent must get right before calling. Time-window and query_mode behavior is left to the schema, which documents it well, so the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 17 parameters thoroughly, including time semantics and query_mode. The description echoes the high-level knobs (path/type controls, working-memory preference) and the bucket fallback rule, which largely restates the schema rather than adding new meaning — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("recall a few relevance-ranked memories") plus the operating scope ("before answering", path/type controls, working-memory preference). It also names the sibling it is not — recall_context — 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit selection rule: "Use it for a quick best-effort lookup; use recall_context when the answer needs a bounded multi-memory context pack." It also documents the bucket-scoping decision (unscoped by default; pass bucket to narrow, never widened by fallback), 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.

recall_cloud_skillRecall Cloud SkillA
Read-onlyIdempotent
Inspect

Recall reusable Cloud Skills, instructions, or sub-resources saved in XMemo. Supports Level 0 discovery by query, Level 1 root recall, and Level 2 resource recall with pinned revision_id.

NameRequiredDescriptionDefault
slugNoInput value for the Recall Cloud Skill tool.
queryNoNatural-language question or search text.
resourceNoInput value for the Recall Cloud Skill tool.
skill_idNoInput value for the Recall Cloud Skill tool.
revision_idNoInput value for the Recall Cloud Skill tool.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a safe, idempotent, non-destructive read with no open-world access. The description adds the tiered retrieval structure, which is useful behavioral context, but says nothing about failure behavior (e.g., missing skill/revision) or result shape. With annotations covering the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler; the core purpose is front-loaded and the level taxonomy follows immediately. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

An output schema exists, so return values need not be described. However, the description rests on undefined jargon (Level 0/1/2, XMemo) and never clarifies which parameter drives which level, leaving the agent to guess the required inputs for root vs resource recall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is nominally 100%, but four of five parameter descriptions are boilerplate ('Input value for the Recall Cloud Skill tool'), so the schema adds little real meaning. The description partially compensates by tying query to Level 0 and revision_id to Level 2 pinning, but leaves slug, skill_id, and resource unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Recall reusable Cloud Skills, instructions, or sub-resources saved in XMemo'), which is clear. It does not explicitly differentiate itself from close siblings like recall, recall_context, or read_memory, so an agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It outlines three retrieval modes (Level 0 discovery by query, Level 1 root recall, Level 2 resource recall with pinned revision_id), which implies when each invocation style applies. However, it names no alternative tool and gives no when-not guidance, so the routing logic 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.

recall_contextBuild XMemo contextA
Read-onlyIdempotent
Inspect

Build a read-only, bounded context pack from multiple relevant memories. Use it when an answer needs several memory items or scoped/path-filtered context; use recall for a quick best-effort lookup or get_project_context for a whole-project snapshot. max_items/max_tokens bound output: memories that do not fit are omitted and reported, so raise max_tokens or use recall when you need the records themselves.

NameRequiredDescriptionDefault
limitNoCandidate-result limit; 0 derives it from the item/token budgets.
queryYesNatural-language query used to rank memories for the context pack.
scopeNoOptional authorized scope; blank uses the token default.
sinceNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.
untilNoRFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically.
bucketNoAccessible bucket filter; % includes all accessible buckets.%
team_idNoOptional exact authorized team filter.
agent_idNoOptional client-supplied agent label for memory attribution.
max_itemsNoMaximum memories rendered in the context pack.
max_tokensNoApproximate token budget for the rendered context pack.
query_modeNoOptional query intent: 'topic' (default) or 'activity_log'. Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. 'activity_log' requires explicit bounded 'since' and 'until' timestamps. 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass.
time_orderNoSort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Set 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting.
memory_typeNoMemory type filter; auto searches the normal mixed set.auto
output_jsonNoTrue returns the full structured pack; false returns rendered context text.
path_filterNoCase-insensitive memory-path pattern; % matches all paths.%
owner_timezoneNoThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
prefer_workingNoTrue prioritizes active working/session-state signals.
reference_timeNoOptional ISO 8601 reference time snapshot for deterministic evaluation. Leave blank to use the real clock; setting this does not replace owner_timezone for calendar day boundaries.
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.
temporal_axis_modeNoOptional temporal axis resolution policy: 'created_at' (Scheme A), 'updated_at' (Scheme B), or 'split_filter_created_order_updated' (Scheme C).
hypothetical_answerNoOptional hypothetical answer or semantic expansion of the query, used to improve matching.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: output is bounded, over-budget memories are omitted and reported, and the remedy is raising max_tokens or switching to recall. It does not mention other edge behaviors such as the activity_log fail-closed case, but those are handled by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no waste: purpose first, routing second, budget semantics third. Every sentence carries decision-relevant information for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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

For a 21-parameter tool, the description covers the decision axes an agent needs: when to choose it, which siblings to prefer, and how output bounding works. The schema and the output schema carry the remaining parameter and return-value detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by explaining the practical consequence of max_items/max_tokens: what gets dropped and how it is reported, which helps an agent set those two budgets correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Build a read-only, bounded context pack from multiple relevant memories') and explicitly contrasts it with sibling tools ('recall' for quick lookup, 'get_project_context' for a whole-project snapshot). An agent can pick this tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the when-to-use condition ('when an answer needs several memory items or scoped/path-filtered context') and names both alternatives with the conditions that favor them. It also gives an escalation path when results are truncated ('raise max_tokens or use recall').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_eventRecord EventAInspect

Record a significant session event, milestone, decision, or handoff note useful for reconstructing recent work. Not for durable facts/preferences (use remember).

NameRequiredDescriptionDefault
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.work
contentYesText body to save, such as a memory, TODO/action item, event note, or state summary.
event_typeNoTimeline event type, such as event, milestone, decision, or handoff.event
session_idNoOptional session identifier associated with the event, timeline query, or snapshot.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate it is a write operation (readOnlyHint=false) and non-destructive. Description adds no further behavioral context (e.g., side effects, permissions). Adequate but no extra value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with verb and purpose. No wasted words. Every sentence serves a distinct purpose (what it does, what it doesn't).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

Given 6 parameters (1 required), output schema exists, and many sibling tools, the description is sufficiently complete. It clarifies the tool's niche without needing longer explanation. Slightly lacking on what exactly 'record' means in terms of storage/retrieval, but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema coverage is 100%, so parameters are fully documented. Description adds no additional meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Record' and specific resources: 'significant session event, milestone, decision, or handoff note'. Explicitly distinguishes from sibling 'remember' by noting it is not for durable facts/preferences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-not-to-use ('Not for durable facts/preferences') and suggests alternative ('use remember'). Also hints at context ('useful for reconstructing recent work').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rememberRemember in XMemoAInspect

Save durable information for future recall; skip transient chat. Existing Projects paths attach automatically. The create_project compatibility input may create a missing project only when explicitly enabled. Use add_expense for financial records and create_memory_todo for actionable work.

NameRequiredDescriptionDefault
pathYesA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.public
dedupeNoWhether to check for and merge likely duplicate memories before saving.
contentYesText body to save, such as a memory, TODO/action item, event note, or state summary.
team_idNoOptional team/workspace identifier for team-scoped memory access.
agent_idNoOptional client-supplied agent label for memory attribution.
device_idNoOptional client-supplied device identifier for attribution.
memory_idNoExact XMemo memory reference shown by search or recall.
confidenceNoConfidence score for the saved or updated memory, from 0.0 to 1.0.
expires_atNoOptional ISO 8601 expiration timestamp for the memory.
importanceNoImportance score for the saved or updated memory, from 0.0 to 1.0.
memory_typeNoMemory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.auto
device_labelNoOptional human-readable device label for attribution.
semantic_keyNoOptional stable key for one evolving fact: changed body upserts it, the same normalized body is idempotent; metadata_json.semantic_key_mode='merge_metadata' preserves the body while merging metadata.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
create_projectNoCreate a missing formal project from a valid Projects / <Project Name> path. Defaults to false; enable only when the user explicitly asks.
embedding_jsonNoOptional JSON array or object containing a precomputed embedding; leave blank for normal use.
provenance_jsonNoOptional JSON object string describing memory source, evidence, or attribution.{}
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, idempotentHint=false), the description discloses useful behavioral details: 'Existing Projects paths attach automatically' and that create_project 'may create a missing project only when explicitly enabled.' These are not present in the annotations and add meaningful context for the agent. However, it does not cover other behavioral aspects like deduplication or mutation details, but the bar is lowered given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four short sentences, purpose-first, with no filler. Every sentence adds value: the main purpose, a behavioral note, a compatibility caveat, and explicit alternative routing. It is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

With 20 parameters and full schema coverage plus an output schema, the description does not need to enumerate parameters. It provides the essential context: durable vs. transient, auto-attachment behavior, and sibling tool alternatives. It could mention the default dedupe behavior or that it can also update existing memories, but the coverage is sufficient for a tool with a rich schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds a small amount of parameter behavior by explaining the create_project compatibility input's gating, but it mostly restates what the schema already says. No additional syntax or format details are given for required parameters like content or path beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Save durable information for future recall'—a specific verb and resource—and explicitly contrasts with transient chat. It also distinguishes from sibling tools by directing financial records to add_expense and actionable work to create_memory_todo, clarifying the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance ('Save durable information for future recall') and when-not-to-use guidance ('skip transient chat', 'Use add_expense for financial records and create_memory_todo for actionable work'). It also notes the create_project compatibility input should only be enabled when explicitly requested, providing a clear usage boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_memory_relationshipRemove Memory RelationshipBInspect

Remove only an explicit personal association, preserving both Memories and a retry receipt.

NameRequiredDescriptionDefault
memory_idYesExact XMemo memory reference shown by search or recall.
relationship_idYesInput value for the Remove Memory Relationship tool.
expected_versionYesOptimistic-concurrency version read from the current record; a stale value is rejected with VERSION_CONFLICT.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish this is a non-destructive, non-idempotent write, and the description adds genuinely useful context beyond them: what is removed (the association only) and what survives (both Memories plus a retry receipt). This explains why destructiveHint is false for a 'remove' operation and touches on retry behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition; the constraint 'only an explicit personal association' leads and the preservation guarantee follows. It is efficient, though very terse relative to the operation's concurrency semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a 3-parameter mutation tool with annotation coverage, the description states the key behavioral contract (association removed, memories preserved). It does not address permission requirements or what the retry receipt contains, but with no output schema and full schema coverage this is adequate rather than rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds nothing about memory_id, relationship_id, or expected_version beyond what the schema already documents, and the schema itself covers the VERSION_CONFLICT behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Remove') and resource ('an explicit personal association'), and the qualifier 'only' plus 'preserving both Memories' clarifies this is not a memory deletion, which separates it from siblings like forget or restore_memory. It stops short of naming an alternative outright.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative (e.g., update_memory_relationship or link_memories). The phrase 'only an explicit personal association' hints at a scope restriction but leaves the selection decision entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_memory_conflictResolve Memory ConflictA
Destructive
Inspect

Resolve a listed memory conflict. Intended only for when the user/admin explicitly chooses a resolution strategy.

NameRequiredDescriptionDefault
conflict_idYesExact memory-conflict ID returned by list_memory_conflicts.
merge_contentNoMerged memory content to apply when resolving a conflict with a merge strategy.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
winning_memory_idNoMemory ID that should win when resolving a conflict.
resolution_strategyNoConflict resolution strategy, such as mark_conflict, keep_existing, replace, or merge.mark_conflict

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and non-idempotent, so the danger is signposted structurally. The description adds the meaningful governance constraint that a human must pick the strategy, but it never says which memories are destroyed, whether resolution is reversible, or that the default strategy is mark_conflict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, both load-bearing: the first states the action, the second states the precondition. No filler and the action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

For a destructive, non-idempotent mutation with five parameters and no enum on resolution_strategy, the description says nothing about what consequences a resolution has on the conflicting memories or which strategies are lossy. Because an output schema exists, return values need not be described, but the destructive semantics are a substantial omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so all five parameters including strategy names are already documented in structured form. The description adds nothing beyond the word 'listed' pointing at conflict_id, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (resolve) and resource (memory conflict), and the qualifier 'listed' signals the conflict must already exist rather than be created here, which distinguishes it from list_memory_conflicts. It stops short of saying what 'resolving' actually does to the underlying memories.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Intended only for when the user/admin explicitly chooses a resolution strategy' is a real precondition and an exclusion, not just a restatement. It does not name list_memory_conflicts as the required discovery step in the description (that only appears in the schema) or say what to do when no strategy is chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_memoryRestore XMemo memoryAInspect

Restore a previously deleted memory. Intended only for when the user explicitly asks to restore or undo a deletion.

NameRequiredDescriptionDefault
reasonNoOptional user-facing reason for the deletion.
memory_idYesExact XMemo memory reference shown by search or recall.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the description does not need to restate them. It adds the useful explicit-request policy, but it says nothing about preconditions (what happens if the memory was never deleted), what is actually restored (versions, links, metadata), or the consequences of the non-idempotent flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the core action is front-loaded before the usage restriction. Nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

An output schema and annotations are present, so return values and safety are covered elsewhere, and all three parameters are documented in the schema. The remaining gap is failure behavior and precondition detail for a non-idempotent restore, which is a moderate rather than critical omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents memory_id, reason, and metadata_json. The description adds no further parameter semantics; at best it hints that a previously deleted memory_id is expected. Baseline 3 applies when the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Restore a previously deleted memory.' This implicitly distinguishes it from the inverse operation (forget/remove), but it never names that sibling, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Intended only for when the user explicitly asks to restore or undo a deletion' is an explicit gate: it states the exact condition that should select this tool and implicitly excludes speculative or proactive use. That is stronger guidance than most siblings offer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_restart_snapshotRestore Restart SnapshotB
Destructive
Inspect

Resume previous work from a saved snapshot. Relevant when the user asks to resume/restart or after context loss.

NameRequiredDescriptionDefault
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.work
state_keyNoWorking-state key to save, snapshot, or restore, such as active_task.
snapshot_idNoExact restart snapshot memory ID to restore.
ttl_secondsNoTime-to-live in seconds for working state or restart snapshot records.
restore_stateNoWhether restore_restart_snapshot should restore the saved working-state record.
source_session_idNoSession ID whose saved restart snapshot should be restored.
target_session_idNoSession ID to associate with restored state and restore events.
record_restore_eventNoWhether to write a timeline event after restoring a restart snapshot.

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=false, meaning this operation overwrites current state; the description never mentions that restoring will replace existing working state, nor is it reversible, nor what happens to a session that already has state. With annotations carrying the safety flag, the bar is lower, but a destructive state-overwriting tool deserves at least a warning about what gets replaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the trigger context; no filler. It is arguably too terse for a nine-parameter destructive tool, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

An output schema exists and the input schema is fully described, but the description is silent on core behavior: which snapshot is picked when snapshot_id and source_session_id are both empty, what the restore_state/record_restore_event flags actually do in combination, and the destructive consequence of the restore. For a destructive tool with nine optional parameters, this leaves the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all nine parameters, including snapshot_id, restore_state, record_restore_event, and the source/target session IDs. The description adds no parameter meaning at all, which is acceptable at baseline 3 but a missed opportunity to explain precedence (e.g. snapshot_id vs source_session_id).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: it resumes prior work by restoring a saved restart snapshot. It does not differentiate itself from close siblings like restore_memory or create_restart_snapshot, so the agent still has to infer which one to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a trigger condition ('when the user asks to resume/restart or after context loss'), which is more than most tools offer. But it never says when NOT to use it, nor names restore_memory or create_restart_snapshot as alternatives, so routing between the closely-named siblings is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_cloud_skillSave Cloud SkillAInspect

Save a reusable procedure, rule, or SOP as a Cloud Skill in XMemo for future recall across connected AI agents.

Supports two usage modes (API Evolution Note: additive parameter 'url'):

  1. Direct creation: Provide non-empty 'name' and 'instructions'.

  2. Remote import: Provide 'url' (ClawHub slug/URL, GitHub repo/tree/raw URL, or direct HTTPS zip/markdown).

NameRequiredDescriptionDefault
urlNoInput value for the Save Cloud Skill tool.
nameNoProject display name for project/create.
slugNoInput value for the Save Cloud Skill tool.
publishNoInput value for the Save Cloud Skill tool.
descriptionNoProject description for project/create.
instructionsNoInput value for the Save Cloud Skill tool.
components_jsonNoInput value for the Save Cloud Skill tool.[]

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=false, idempotentHint=false, destructiveHint=false, so the write/no-side-effect-on-third-parties profile is covered elsewhere. The description adds that skills persist in XMemo and are recallable across connected agents, which is useful visibility context. However, it is silent on the notable behaviors an agent would want to know: publish defaults to true (what does publishing do?), and whether re-saving the same slug/name overwrites an existing skill.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded statement of purpose followed by a compact two-item mode list — no padding. The 'API Evolution Note: additive parameter' framing is slightly awkward phrasing for a definition but carries real information about backward compatibility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

An output schema exists, so return values need not be described, and the two creation modes are covered. Still, for a 7-parameter, non-idempotent write tool with all parameters optional and none required, the definition omits what happens with the publish flag, slug collisions/overwrite behavior, and the components_json structure — meaningful gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is nominally 100%, but most schema descriptions are placeholders ('Input value for the Save Cloud Skill tool.'), so the description's detail on url (ClawHub slug/URL, GitHub repo/tree/raw, or direct HTTPS zip/markdown) genuinely compensates. Against that, slug, publish, description, and components_json get no semantic explanation anywhere, so the tool is only half-explained. Baseline 3 fits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Save a reusable procedure, rule, or SOP as a Cloud Skill in XMemo', plus the persistence scope ('future recall across connected AI agents'). It is clear what the tool does, but it never names the obvious sibling counterpart recall_cloud_skill or contrasts against remember/propose_write, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly enumerates two usage modes with the parameter conditions that select each ('Direct creation: Provide non-empty name and instructions'; 'Remote import: Provide url'), which is real routing guidance. It does not state when *not* to use this tool or when a sibling (e.g. remember) is the better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_knowledgeSearch XMemo KnowledgeA
Read-onlyIdempotent
Inspect

Search authorized personal Knowledge Base content over published current revisions, or read one exact item/revision with bounded pagination. Requires knowledge:read.

NameRequiredDescriptionDefault
modeNoSearch retrieval mode: 'hybrid' (default), 'lexical', 'semantic', or 'rrf'.hybrid
alphaNoHybrid score weighting factor between lexical (0.0) and semantic (1.0); defaults to 0.5.
queryNoNatural-language question or search text.
offsetNoZero-based character offset for an addressed read; defaults to 0.
limit_charsNoMaximum addressed-read characters from 1 to 10000; defaults to 4000.
max_resultsNoMaximum query results from 1 to 50; defaults to 10.
knowledge_base_idNoOptional exact personal Knowledge Base ID used to narrow a query search.
knowledge_item_idNoExact authorized Knowledge item ID for an addressed read.
knowledge_revision_idNoExact immutable revision ID; provide knowledge_item_id as its parent.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it operates 'over published current revisions,' supports 'bounded pagination,' and requires the 'knowledge:read' permission. This addresses auth needs and scope, which annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the primary purpose ('Search authorized personal Knowledge Base content') and then covers the secondary addressed-read mode and the auth requirement. Every phrase earns its place, with no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

The tool is complex with 9 parameters and two distinct modes, and an output schema is present. The description gives a reasonable overview but does not explicitly connect query to search mode or knowledge_item_id/knowledge_revision_id to addressed read mode. It is adequate for orientation but leaves the agent to infer mode-parameter relationships from the schema, so there is a clear completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mentions 'bounded pagination' and 'exact item/revision,' which loosely maps to offset, limit_chars, knowledge_item_id, and knowledge_revision_id, but it does not add syntax or decision details beyond what the schema already provides. No parameter is left undocumented, but the description also does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Search authorized personal Knowledge Base content' and 'read one exact item/revision.' It clearly identifies the tool as a Knowledge Base search/read operation, which distinguishes it from memory-focused siblings like recall and read_memory. However, it does not explicitly name or contrast sibling tools, so it stops just short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by describing two modes: searching published current revisions and performing an addressed read with bounded pagination. This gives an agent a sense of when to call the tool, but it provides no explicit alternatives, exclusions, or guidance on choosing between search and addressed read modes. Sibling tools exist for related memory operations, but no comparison is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_memoryUpdate XMemo memoryA
Destructive
Inspect

Updates the content, location, or type of a specific saved memory when the user asks to correct, revise, move, or reclassify it. An exact reference identifies the record.

NameRequiredDescriptionDefault
pathNoA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.
statusNoMemory status filter or update value, such as active, archived, deleted, or %.
contentNoText body to save, such as a memory, TODO/action item, event note, or state summary.
team_idNoOptional team/workspace identifier for team-scoped memory access.
memory_idYesExact XMemo memory reference shown by search or recall.
confidenceNoConfidence score for the saved or updated memory, from 0.0 to 1.0.
expires_atNoOptional ISO 8601 expiration timestamp for the memory.
importanceNoImportance score for the saved or updated memory, from 0.0 to 1.0.
memory_typeNoMemory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.
semantic_keyNoOptional stable key for one evolving fact: changed body upserts it, the same normalized body is idempotent; metadata_json.semantic_key_mode='merge_metadata' preserves the body while merging metadata.
metadata_jsonNoOptional JSON object string with extra metadata for the operation.{}
merge_metadataNoWhether to merge new metadata with existing metadata instead of replacing it.
provenance_jsonNoOptional JSON object string describing memory source, evidence, or attribution.{}
detect_conflictsNoWhether to detect possible conflicts with existing memories during an update.
merge_provenanceNoWhether to merge new provenance with existing provenance instead of replacing it.
supersession_reasonNoReason the updated memory supersedes older content.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows this is a write/update operation. The description adds valuable behavioral context by specifying that updates can affect 'content, location, or type' and that an 'exact reference' (memory_id) is required to identify the record. This goes beyond raw annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core action, and every phrase earns its place. It avoids fluff, restating the title, or repeating schema details. The structure is efficient and immediately informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

For a mutation tool with a rich schema and output schema, the description is sufficiently complete to guide usage. It conveys the essential context (when to use, what it updates) and the need for an exact reference. It does not describe return values, but the presence of an output schema makes that unnecessary. A minor omission is explicit mention of potential side effects like conflict detection or supersession, but these are evident from the parameter names.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

The input schema provides 100% coverage with descriptions for all 18 parameters. The description does not add parameter-specific details beyond what the schema already offers, but it does map 'content', 'location', and 'type' to likely parameters (content, path, memory_type). Since the schema is thorough, a baseline of 3 is appropriate; the description's mention adds only marginal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('updates') and the target resource ('a specific saved memory'), and distinguishes this tool from siblings like 'remember' (create), 'forget' (delete), and 'read_memory' by specifying it handles corrections, revisions, moves, or reclassifications. This unambiguously identifies the tool's unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use the tool: 'when the user asks to correct, revise, move, or reclassify it.' This provides clear contextual triggers. However, it does not explicitly mention when not to use it or name alternatives (e.g., use 'remember' for entirely new memories), so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_memory_relationshipUpdate Memory RelationshipAInspect

Edit an explicit personal link kind using the last read version; stale edits conflict.

NameRequiredDescriptionDefault
edge_kindYesInput value for the Update Memory Relationship tool.
memory_idYesExact XMemo memory reference shown by search or recall.
relationship_idYesInput value for the Update Memory Relationship tool.
expected_versionYesOptimistic-concurrency version read from the current record; a stale value is rejected with VERSION_CONFLICT.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so safety profile is covered. The description adds the optimistic-concurrency behavior (a stale version conflicts), which is genuine extra context, but it does not say what the edit affects, whether it is reversible, or what a successful result looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loading the action and appending the concurrency constraint. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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

For a non-idempotent mutation tool with no output schema, the description covers the concurrency contract but leaves gaps: the relationship between memory_id and relationship_id is unstated, valid edge_kind values are undocumented (no enums, and the schema text for edge_kind is a placeholder), and success behavior is not described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; expected_version is already fully documented in the schema as an optimistic-concurrency value with VERSION_CONFLICT. The description's 'link kind' and 'last read version' merely restate the schema and add no format or validity detail (e.g. allowed edge_kind values).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Edit) and a resource (an explicit personal link kind), which maps to the relationship/edge_kind model. It does not distinguish itself from siblings such as link_memories, remove_memory_relationship, or memory_relationships, and 'link kind' is looser phrasing than the tool's actual relationship concept.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'using the last read version; stale edits conflict' implies the required pre-read workflow and the failure mode, which is useful usage context. However, no alternative tool is named and there is no explicit when-not guidance (e.g. use link_memories to create, remove_memory_relationship to delete).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_decisionUpdate Project DecisionAInspect

Transition a project decision. action must be one of: resolve, supersede, reopen. resolution is required for action='resolve'. new_context (and optionally options_json/impact_level/resolution_note) is required for action='supersede'.

NameRequiredDescriptionDefault
actionYesUsage action or audit-event action filter, depending on the tool.
project_idYesOptional project identifier to filter the Ledger or TODO workspace.
resolutionNoChosen resolution text for a pending decision.
decision_idYesExact decision ID from an existing project decision or saved pending choice.
new_contextNoNew context for decision/supersede.
impact_levelNoInput value for the Update Project Decision tool.
options_jsonNoJSON array of candidate options for a pending decision.[]
resolution_noteNoInput value for the Update Project Decision tool.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write/safety profile (readOnly=false, destructive=false, idempotent=false), so the description's added value is the state-machine disclosure: this tool transitions among three named states with different per-action requirements. It stops short of describing the side effects of supersede/reopen beyond the required inputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero waste, front-loaded with the core verb and immediately followed by the valid action set. Every sentence carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

An output schema exists, so return values need no explanation, and annotations cover safety. The description completes the picture for the resolve/supersede paths, but leaves the reopen path's required inputs unstated relative to an 8-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantic value by mapping conditional dependencies (resolution -> resolve; new_context plus optional options_json/impact_level/resolution_note -> supersede) that the flat schema does not express. It does not clarify what action='reopen' consumes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (transition) plus resource (project decision) and enumerates the exact actions: resolve, supersede, reopen. This is far more than a restatement of the title, though it never explicitly positions itself against siblings like update_project_todo or the proposal tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides genuine conditional guidance -- resolution is required for action='resolve' and new_context for action='supersede' -- which tells the agent how to invoke each mode. However it gives no when-to-use-this-vs-alternatives guidance and never mentions what 'reopen' requires or when each transition is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_project_todoUpdate Project TodoAInspect

Transition a project TODO's status. action must be one of: accept, assign, block, unblock, complete, cancel. assignee_agent_id is required for action='assign'; reason is required for action='block' (optional for cancel); note is optional for action='complete'.

NameRequiredDescriptionDefault
noteNoOptional completion note.
actionYesUsage action or audit-event action filter, depending on the tool.
reasonNoOptional user-facing reason for the deletion.
todo_idYesThe memory TODO/action-item ID to complete.
project_idYesOptional project identifier to filter the Ledger or TODO workspace.
assignee_agent_idNoInput value for the Update Project Todo tool.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write/mutation profile (readOnlyHint=false, non-idempotent, non-destructive). The description usefully adds the closed action set and the conditional parameter requirements per action, but says nothing about irreversibility, permission requirements, or what happens to dependent state on cancel/block.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the core purpose followed by the action contract. No filler, though the per-action conditionals are packed into a single run-on sentence that could be enumerated more readably.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

With an output schema present, return values need not be described, and the action/parameter contract is fully specified. Gaps remain around state-transition legality (which actions are valid from which current status) and side effects on the project, but the definition is sufficient to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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

Schema coverage is 100%, but several schema descriptions are misleading copy-paste artifacts (reason described as 'for the deletion', action described generically as a filter). The description corrects this by specifying which parameters are required for which action values, adding genuine semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Transition) and resource (project TODO's status), which distinguishes it from read-oriented siblings like list_memory_todos or get_project_context. It does not explicitly name which sibling to prefer (e.g. complete_memory_todo or propose_todo_mutation), so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description enumerates the valid action values and the per-action prerequisites, which implies when each mode applies. However, it never states when to use this tool versus complete_memory_todo, propose_todo_mutation, or create_memory_todo, so the routing decision 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.

update_stateUpdate working stateA
Destructive
Inspect

Create or replace one scoped working-state record for resuming a task, next action, or blocker. Requires memory:write; it versions that state slot and refreshes its expiry without deleting other memories. Use remember for durable facts or record_event for history. Provide content or a structured state field; ttl_seconds=0 means no expiry.

NameRequiredDescriptionDefault
scopeNoScope containing the working-state slot; blank uses the token default.
bucketNoBucket containing the working-state slot; defaults to work.work
contentNoFree-form state body; otherwise provide at least one structured state field.
state_keyNoNormalized state slot; the same owner, bucket, scope, and key updates that slot.active_task
next_actionNoNext action; used to build the state body when content is blank.
ttl_secondsNoExpiry in seconds from 0 to 2592000; 0 means no expiry.
current_taskNoCurrent task; used to build the state body when content is blank.
metadata_jsonNoJSON object merged into the working-state metadata.{}
blocked_reasonNoBlocker; used to build the state body when content is blank.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context beyond the annotations by noting the memory:write permission requirement, that it versions the state slot, refreshes expiry, and does not delete other memories. This complements the destructiveHint: true and readOnlyHint: false annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences long, each serving a distinct purpose: purpose, behavior, alternatives, and parameter guidance. It is front-loaded and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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

The description covers the tool's purpose, usage guidance, side effects, and permission requirements. It does not mention return values, but the presence of an output schema mitigates the need. It is sufficiently complete for a mutation tool with rich schema annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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

With 100% schema description coverage, the schema already explains all parameters. The description adds minimal extra meaning by advising to 'Provide content or a structured state field,' which groups the parameters conceptually but does not go beyond the schema's detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Create or replace one scoped working-state record' and gives the intended use (resuming a task, next action, blocker). It also names alternatives, clearly distinguishing it from sibling tools like remember and record_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use remember for durable facts or record_event for history.' This tells the agent exactly when to prefer this tool over its alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedforget1 field changed
      • changedInput schema / properties / mode / description
        Previous value: -"Deletion mode: soft or soft_delete is the recoverable default; hard or hard_delete is permanent and unrecoverable and may be used only after explicit user confirmation."New value: +"Deletion mode: soft or soft_delete is the recoverable default; hard or hard_delete is permanent and unrecoverable; requires explicit user confirmation of permanent deletion."
    • Changedmemory_stats2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedquery_audit2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedrecall5 fields changed
      • changedInput schema / properties / hypothetical_answer / description
        Previous value: -"Optional multilingual hypothetical answer or dense semantic expansion written by the calling LLM for this query."New value: +"Optional hypothetical answer or semantic expansion of the query, used to improve matching."
      • changedInput schema / properties / query_mode / description
        Previous value: -"Optional query intent: 'topic' (default) or 'activity_log'. Trigger: Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. Model responsibility: 'activity_log' requires explicit bounded 'since' and 'until' timestamps. Consequence: 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass."New value: +"Optional query intent: 'topic' (default) or 'activity_log'. Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. 'activity_log' requires explicit bounded 'since' and 'until' timestamps. 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass."
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / time_order / description
        Previous value: -"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."New value: +"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Set 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedrecall_context5 fields changed
      • changedInput schema / properties / hypothetical_answer / description
        Previous value: -"Optional multilingual hypothetical answer or dense semantic expansion written by the calling LLM for this query."New value: +"Optional hypothetical answer or semantic expansion of the query, used to improve matching."
      • changedInput schema / properties / query_mode / description
        Previous value: -"Optional query intent: 'topic' (default) or 'activity_log'. Trigger: Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. Model responsibility: 'activity_log' requires explicit bounded 'since' and 'until' timestamps. Consequence: 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass."New value: +"Optional query intent: 'topic' (default) or 'activity_log'. Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. 'activity_log' requires explicit bounded 'since' and 'until' timestamps. 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass."
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Set this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Relative and natural language time expressions are given as absolute timestamps in the user's local time. If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / time_order / description
        Previous value: -"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."New value: +"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Set 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Set this when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Natural language end bounds are given as absolute timestamps with timezone offsets. If omitted, the window is open-ended on the upper side or derived heuristically."
  2. 1 tool update
    • Changedread_memory4 fields changed
      • addedInput schema / properties / anchor
        Added value: +{
        +  "default": "",
        +  "description": "Optional Document heading path to start the page at; leave offset at 0.",
        +  "type": "string"
        +}
      • changedInput schema / properties / memory_id / description
        Previous value: -"Exact XMemo memory reference returned by recall or search."New value: +"Exact XMemo memory reference or 'document:<id>' returned by recall or search."
      • addedInput schema / properties / ordinal
        Added value: +{
        +  "default": 1,
        +  "description": "Which chunk carrying the anchor to start at (1 = first); defaults to 1.",
        +  "type": "integer"
        +}
      • addedInput schema / properties / version
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional version pin, the same as a '@v<version>' revision."
        +}
  3. 1 tool update
    • Changedrecall1 field changed
      • addedInput schema / properties / bucket
        Added value: +{
        +  "default": "%",
        +  "description": "Bucket of your own memories to search; % (default) searches all buckets. An explicit bucket is never widened by fallback.",
        +  "title": "Bucket",
        +  "type": "string"
        +}
  4. 1 tool update
    • Changedrecall2 fields changed
      • changedInput schema / properties / hypothetical_answer / description
        Previous value: -"Input value for the Recall tool."New value: +"Optional multilingual hypothetical answer or dense semantic expansion written by the calling LLM for this query."
      • changedInput schema / properties / temporal_axis_mode / description
        Previous value: -"Input value for the Recall tool."New value: +"Optional temporal axis resolution policy: 'created_at' (Scheme A), 'updated_at' (Scheme B), or 'split_filter_created_order_updated' (Scheme C)."
  5. 5 tool updates
    • Addedlink_memories
    • Addedmemory_relationships
    • Addedremove_memory_relationship
    • Addedupdate_memory_relationship
    • Changedupdate_project_decision1 field changed
      • changedInput schema / properties / decision_id / description
        Previous value: -"Exact pending-decision ID returned by list_pending_decisions."New value: +"Exact decision ID from an existing project decision or saved pending choice."
  6. 1 tool update
    • Changedsave_cloud_skill4 fields changed
      • addedInput schema / properties / instructions / default
        Added value: +""
      • addedInput schema / properties / name / default
        Added value: +""
      • addedInput schema / properties / url
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Save Cloud Skill tool.",
        +  "title": "Url",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "name",
        -  "instructions"
        -]
  7. 41 tool updates
    • Removedanalyze_memory_text
    • Addedcomplete_memory_todo
    • Addedcreate_memory_todo
    • Addedcreate_restart_snapshot
    • Changedexplain_memory3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / include_embedding
        Added value: +{
        +  "default": false,
        +  "description": "Whether to include embedding/vector metadata in the returned explanation.",
        +  "title": "Include Embedding",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / output_json
        Added value: +{
        +  "default": false,
        +  "description": "Return a machine-readable JSON response instead of a human-readable summary.",
        +  "title": "Output Json",
        +  "type": "boolean"
        +}
    • Changedforget4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / metadata_json
        Added value: +{
        +  "default": "{}",
        +  "description": "Optional JSON object string with extra metadata for the operation.",
        +  "title": "Metadata Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / query_hint
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Input value for the Forget tool.",
        +  "title": "Query Hint"
        +}
      • addedInput schema / properties / replacement_content
        Added value: +{
        +  "default": "",
        +  "description": "Replacement text to store when redacting or replacing deleted memory content.",
        +  "title": "Replacement Content",
        +  "type": "string"
        +}
    • Changedget_mcp_identity1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedget_project_context
    • Removedget_project_summary
    • Addedget_timeline
    • Removedledger
    • Addedlist_memory_conflicts
    • Addedlist_memory_todos
    • Addedlist_memory_versions
    • Removedmemory_overview
    • Addedmemory_stats
    • Removedopen_ledger
    • Removedopen_project_workspace
    • Removedopen_todo_board
    • Removedproject
    • Addedpropose_profile_mutation
    • Addedpropose_todo_mutation
    • Addedpropose_write
    • Addedquery_audit
    • Changedread_memory1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrecall10 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional client-supplied agent label for memory attribution.",
        +  "title": "Agent Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / agent_instance_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional stable, non-secret agent instance ID for per-client attribution.",
        +  "title": "Agent Instance Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / explain
        Added value: +{
        +  "default": false,
        +  "description": "Whether to include retrieval explanation details with search or recall results.",
        +  "title": "Explain",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / memory_type
        Added value: +{
        +  "default": "%",
        +  "description": "Memory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.",
        +  "title": "Memory Type",
        +  "type": "string"
        +}
      • addedInput schema / properties / owner_timezone
        Added value: +{
        +  "default": "",
        +  "description": "The user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.",
        +  "title": "Owner Timezone",
        +  "type": "string"
        +}
      • addedInput schema / properties / path_filter
        Added value: +{
        +  "default": "%",
        +  "description": "Memory path filter; % matches all paths.",
        +  "title": "Path Filter",
        +  "type": "string"
        +}
      • addedInput schema / properties / prefer_working
        Added value: +{
        +  "default": false,
        +  "description": "Whether to prioritize working/session-state memories in retrieval.",
        +  "title": "Prefer Working",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / reference_time
        Added value: +{
        +  "default": "",
        +  "description": "Optional ISO 8601 reference time snapshot for deterministic evaluation. Leave blank to use the real clock; setting this does not replace owner_timezone for calendar day boundaries.",
        +  "title": "Reference Time",
        +  "type": "string"
        +}
      • addedInput schema / properties / temporal_axis_mode
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Recall tool.",
        +  "title": "Temporal Axis Mode",
        +  "type": "string"
        +}
    • Addedrecall_cloud_skill
    • Changedrecall_context14 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional client-supplied agent label for memory attribution.",
        +  "type": "string"
        +}
      • addedInput schema / properties / agent_instance_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional stable, non-secret agent instance ID for per-client attribution.",
        +  "type": "string"
        +}
      • addedInput schema / properties / bucket
        Added value: +{
        +  "default": "%",
        +  "description": "Accessible bucket filter; % includes all accessible buckets.",
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 0,
        +  "description": "Candidate-result limit; 0 derives it from the item/token budgets.",
        +  "type": "integer"
        +}
      • addedInput schema / properties / memory_type
        Added value: +{
        +  "default": "auto",
        +  "description": "Memory type filter; auto searches the normal mixed set.",
        +  "type": "string"
        +}
      • addedInput schema / properties / output_json
        Added value: +{
        +  "default": false,
        +  "description": "True returns the full structured pack; false returns rendered context text.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / owner_timezone
        Added value: +{
        +  "default": "",
        +  "description": "The user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.",
        +  "type": "string"
        +}
      • addedInput schema / properties / path_filter
        Added value: +{
        +  "default": "%",
        +  "description": "Case-insensitive memory-path pattern; % matches all paths.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prefer_working
        Added value: +{
        +  "default": true,
        +  "description": "True prioritizes active working/session-state signals.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / reference_time
        Added value: +{
        +  "default": "",
        +  "description": "Optional ISO 8601 reference time snapshot for deterministic evaluation. Leave blank to use the real clock; setting this does not replace owner_timezone for calendar day boundaries.",
        +  "type": "string"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "default": "",
        +  "description": "Optional authorized scope; blank uses the token default.",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional exact authorized team filter.",
        +  "type": "string"
        +}
      • addedInput schema / properties / temporal_axis_mode
        Added value: +{
        +  "default": "",
        +  "description": "Optional temporal axis resolution policy: 'created_at' (Scheme A), 'updated_at' (Scheme B), or 'split_filter_created_order_updated' (Scheme C).",
        +  "type": "string"
        +}
    • Addedrecord_event
    • Changedremember18 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional client-supplied agent label for memory attribution.",
        +  "title": "Agent Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / agent_instance_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional stable, non-secret agent instance ID for per-client attribution.",
        +  "title": "Agent Instance Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / bucket
        Added value: +{
        +  "default": "public",
        +  "description": "Memory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.",
        +  "title": "Bucket",
        +  "type": "string"
        +}
      • addedInput schema / properties / confidence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Confidence score for the saved or updated memory, from 0.0 to 1.0.",
        +  "title": "Confidence"
        +}
      • addedInput schema / properties / dedupe
        Added value: +{
        +  "default": true,
        +  "description": "Whether to check for and merge likely duplicate memories before saving.",
        +  "title": "Dedupe",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / device_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional client-supplied device identifier for attribution.",
        +  "title": "Device Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / device_label
        Added value: +{
        +  "default": "",
        +  "description": "Optional human-readable device label for attribution.",
        +  "title": "Device Label",
        +  "type": "string"
        +}
      • addedInput schema / properties / embedding_json
        Added value: +{
        +  "default": "",
        +  "description": "Optional JSON array or object containing a precomputed embedding; leave blank for normal use.",
        +  "title": "Embedding Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / expires_at
        Added value: +{
        +  "default": "",
        +  "description": "Optional ISO 8601 expiration timestamp for the memory.",
        +  "title": "Expires At",
        +  "type": "string"
        +}
      • addedInput schema / properties / importance
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Importance score for the saved or updated memory, from 0.0 to 1.0.",
        +  "title": "Importance"
        +}
      • addedInput schema / properties / memory_id
        Added value: +{
        +  "default": "",
        +  "description": "Exact XMemo memory reference shown by search or recall.",
        +  "title": "Memory Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / memory_type
        Added value: +{
        +  "default": "auto",
        +  "description": "Memory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.",
        +  "title": "Memory Type",
        +  "type": "string"
        +}
      • addedInput schema / properties / metadata_json
        Added value: +{
        +  "default": "{}",
        +  "description": "Optional JSON object string with extra metadata for the operation.",
        +  "title": "Metadata Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / provenance_json
        Added value: +{
        +  "default": "{}",
        +  "description": "Optional JSON object string describing memory source, evidence, or attribution.",
        +  "title": "Provenance Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "default": "",
        +  "description": "Optional scope that narrows memory access; leave blank for the token default.",
        +  "title": "Scope",
        +  "type": "string"
        +}
      • addedInput schema / properties / semantic_key
        Added value: +{
        +  "default": "",
        +  "description": "Optional stable key for one evolving fact: changed body upserts it, the same normalized body is idempotent; metadata_json.semantic_key_mode='merge_metadata' preserves the body while merging metadata.",
        +  "title": "Semantic Key",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional team/workspace identifier for team-scoped memory access.",
        +  "title": "Team Id",
        +  "type": "string"
        +}
    • Addedresolve_memory_conflict
    • Changedrestore_memory2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / metadata_json
        Added value: +{
        +  "default": "{}",
        +  "description": "Optional JSON object string with extra metadata for the operation.",
        +  "title": "Metadata Json",
        +  "type": "string"
        +}
    • Addedrestore_restart_snapshot
    • Addedsave_cloud_skill
    • Addedsearch_knowledge
    • Removedsearch_memory
    • Removedtodo
    • Changedupdate_memory16 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / bucket
        Added value: +{
        +  "default": "",
        +  "description": "Memory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.",
        +  "title": "Bucket",
        +  "type": "string"
        +}
      • addedInput schema / properties / confidence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Confidence score for the saved or updated memory, from 0.0 to 1.0.",
        +  "title": "Confidence"
        +}
      • addedInput schema / properties / detect_conflicts
        Added value: +{
        +  "default": true,
        +  "description": "Whether to detect possible conflicts with existing memories during an update.",
        +  "title": "Detect Conflicts",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / expires_at
        Added value: +{
        +  "default": "",
        +  "description": "Optional ISO 8601 expiration timestamp for the memory.",
        +  "title": "Expires At",
        +  "type": "string"
        +}
      • addedInput schema / properties / importance
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Importance score for the saved or updated memory, from 0.0 to 1.0.",
        +  "title": "Importance"
        +}
      • changedInput schema / properties / memory_type / description
        Previous value: -"Optional memory type/category for user-facing updates, such as semantic, episodic, or procedural."New value: +"Memory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %."
      • addedInput schema / properties / merge_metadata
        Added value: +{
        +  "default": true,
        +  "description": "Whether to merge new metadata with existing metadata instead of replacing it.",
        +  "title": "Merge Metadata",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / merge_provenance
        Added value: +{
        +  "default": true,
        +  "description": "Whether to merge new provenance with existing provenance instead of replacing it.",
        +  "title": "Merge Provenance",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / metadata_json
        Added value: +{
        +  "default": "{}",
        +  "description": "Optional JSON object string with extra metadata for the operation.",
        +  "title": "Metadata Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / provenance_json
        Added value: +{
        +  "default": "{}",
        +  "description": "Optional JSON object string describing memory source, evidence, or attribution.",
        +  "title": "Provenance Json",
        +  "type": "string"
        +}
      • addedInput schema / properties / scope
        Added value: +{
        +  "default": "",
        +  "description": "Optional scope that narrows memory access; leave blank for the token default.",
        +  "title": "Scope",
        +  "type": "string"
        +}
      • addedInput schema / properties / semantic_key
        Added value: +{
        +  "default": "",
        +  "description": "Optional stable key for one evolving fact: changed body upserts it, the same normalized body is idempotent; metadata_json.semantic_key_mode='merge_metadata' preserves the body while merging metadata.",
        +  "title": "Semantic Key",
        +  "type": "string"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "default": "",
        +  "description": "Memory status filter or update value, such as active, archived, deleted, or %.",
        +  "title": "Status",
        +  "type": "string"
        +}
      • addedInput schema / properties / supersession_reason
        Added value: +{
        +  "default": "",
        +  "description": "Reason the updated memory supersedes older content.",
        +  "title": "Supersession Reason",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "default": "",
        +  "description": "Optional team/workspace identifier for team-scoped memory access.",
        +  "title": "Team Id",
        +  "type": "string"
        +}
    • Addedupdate_project_decision
    • Addedupdate_project_todo
    • Addedupdate_state
  8. 2 tool updates
    • Changedproject2 fields changed
      • removedInput schema / allOf
        Removed value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "entity": {
        -          "not": {
        -            "const": "project"
        -          }
        -        }
        -      },
        -      "required": [
        -        "entity"
        -      ]
        -    },
        -    "then": {
        -      "required": [
        -        "project_id"
        -      ]
        -    }
        -  }
        -]
      • removedInput schema / oneOf
        Removed value: -[
        -  {
        -    "properties": {
        -      "action": {
        -        "const": "create"
        -      },
        -      "entity": {
        -        "const": "project"
        -      },
        -      "project_id": {
        -        "maxLength": 0
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action",
        -      "name"
        -    ],
        -    "title": "Project create"
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "content"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "tags"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "patch"
        -        ]
        -      }
        -    ],
        -    "properties": {
        -      "action": {
        -        "const": "update"
        -      },
        -      "entity": {
        -        "const": "memory"
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action",
        -      "memory_ref",
        -      "expected_version"
        -    ],
        -    "title": "Memory update"
        -  },
        -  {
        -    "properties": {
        -      "action": {
        -        "const": "set_review_due"
        -      },
        -      "entity": {
        -        "const": "memory"
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action",
        -      "memory_ref",
        -      "expected_version"
        -    ],
        -    "title": "Memory review due"
        -  },
        -  {
        -    "properties": {
        -      "action": {
        -        "enum": [
        -          "create",
        -          "resolve",
        -          "reopen",
        -          "supersede"
        -        ]
        -      },
        -      "entity": {
        -        "const": "decision"
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action"
        -    ],
        -    "title": "Decision mutation"
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "uri"
        -        ]
        -      },
        -      {
        -        "properties": {
        -          "provider_ref": {
        -            "pattern": "^https://[^\\s/]+",
        -            "type": "string"
        -          }
        -        }
        -      }
        -    ],
        -    "properties": {
        -      "action": {
        -        "const": "link"
        -      },
        -      "entity": {
        -        "const": "document"
        -      },
        -      "uri": {
        -        "pattern": "^https://[^\\s/]+",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action",
        -      "provider",
        -      "provider_ref",
        -      "title"
        -    ],
        -    "title": "Document link"
        -  },
        -  {
        -    "properties": {
        -      "action": {
        -        "enum": [
        -          "update_metadata",
        -          "set_availability",
        -          "unlink"
        -        ]
        -      },
        -      "entity": {
        -        "const": "document"
        -      },
        -      "resource_type": {
        -        "maxLength": 0
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action"
        -    ],
        -    "title": "Document edit or unlink"
        -  },
        -  {
        -    "properties": {
        -      "action": {
        -        "enum": [
        -          "link",
        -          "update_metadata",
        -          "set_availability",
        -          "unlink"
        -        ]
        -      },
        -      "entity": {
        -        "const": "conversation"
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action"
        -    ],
        -    "title": "Conversation mutation"
        -  },
        -  {
        -    "properties": {
        -      "action": {
        -        "const": "save"
        -      },
        -      "entity": {
        -        "const": "settings"
        -      }
        -    },
        -    "required": [
        -      "entity",
        -      "action"
        -    ],
        -    "title": "Settings mutation"
        -  }
        -]
    • Changedtodo1 field changed
      • removedInput schema / allOf
        Removed value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "action": {
        -          "const": "create"
        -        }
        -      },
        -      "required": [
        -        "action"
        -      ]
        -    },
        -    "then": {
        -      "anyOf": [
        -        {
        -          "required": [
        -            "content"
        -          ]
        -        },
        -        {
        -          "required": [
        -            "title"
        -          ]
        -        }
        -      ],
        -      "not": {
        -        "anyOf": [
        -          {
        -            "required": [
        -              "project_id",
        -              "metadata_json"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "project_id",
        -              "scope"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "project_id",
        -              "bucket"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "todo_id"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "status"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "note"
        -            ]
        -          }
        -        ]
        -      },
        -      "required": [
        -        "client_mutation_id"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "required": [
        -        "status"
        -      ]
        -    },
        -    "then": {
        -      "not": {
        -        "anyOf": [
        -          {
        -            "required": [
        -              "title"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "content"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "project_id"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "priority"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "due_at"
        -            ]
        -          }
        -        ]
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "action": {
        -          "const": "complete"
        -        }
        -      },
        -      "required": [
        -        "action"
        -      ]
        -    },
        -    "then": {
        -      "not": {
        -        "anyOf": [
        -          {
        -            "required": [
        -              "title"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "content"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "project_id"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "priority"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "due_at"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "status"
        -            ]
        -          }
        -        ]
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "action": {
        -          "const": "update"
        -        }
        -      },
        -      "required": [
        -        "action"
        -      ]
        -    },
        -    "then": {
        -      "required": [
        -        "todo_id",
        -        "expected_version",
        -        "client_mutation_id"
        -      ]
        -    }
        -  },
        -  {
        -    "if": {
        -      "not": {
        -        "properties": {
        -          "action": {
        -            "const": "list"
        -          }
        -        },
        -        "required": [
        -          "action"
        -        ]
        -      }
        -    },
        -    "then": {
        -      "not": {
        -        "anyOf": [
        -          {
        -            "required": [
        -              "search"
        -            ]
        -          },
        -          {
        -            "required": [
        -              "query"
        -            ]
        -          }
        -        ]
        -      }
        -    }
        -  }
        -]
  9. 5 tool updates
    • Changedanalyze_memory_text2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedmemory_overview2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedrecall3 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / time_order / description
        Previous value: -"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', '从新到旧', or timeline recency, or 'asc' for chronological order. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."New value: +"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedrecall_context3 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / time_order / description
        Previous value: -"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', '从新到旧', or timeline recency, or 'asc' for chronological order. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."New value: +"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedsearch_memory3 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint in any language (e.g., today, yesterday, last week, last month, recently, Aug 1, Aug 10 to Sep 1, since Monday, before Sep 15, in Q3). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / time_order / description
        Previous value: -"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', '从新到旧', or timeline recency, or 'asc' for chronological order. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."New value: +"Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', 'newest first', or recency, or 'asc' for chronological order ('oldest first') in any language. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting."
      • changedInput schema / properties / until / description
        Previous value: -"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window in any language (e.g., yesterday end of day, by Aug 10, Aug 10 to Sep 1). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
  10. 5 tool updates
    • Changedanalyze_memory_text2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"Only include memories or activity on or after this ISO 8601 timestamp."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / until / description
        Previous value: -"Only include memories or activity on or before this ISO 8601 timestamp."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedmemory_overview2 fields changed
      • changedInput schema / properties / since / description
        Previous value: -"Only include memories or activity on or after this ISO 8601 timestamp."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates."
      • changedInput schema / properties / until / description
        Previous value: -"Only include memories or activity on or before this ISO 8601 timestamp."New value: +"RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically."
    • Changedrecall5 fields changed
      • addedInput schema / properties / hypothetical_answer
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Recall tool.",
        +  "title": "Hypothetical Answer",
        +  "type": "string"
        +}
      • addedInput schema / properties / query_mode
        Added value: +{
        +  "default": "",
        +  "description": "Optional query intent: 'topic' (default) or 'activity_log'. Trigger: Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. Model responsibility: 'activity_log' requires explicit bounded 'since' and 'until' timestamps. Consequence: 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass.",
        +  "title": "Query Mode",
        +  "type": "string"
        +}
      • addedInput schema / properties / since
        Added value: +{
        +  "default": "",
        +  "description": "RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.",
        +  "title": "Since",
        +  "type": "string"
        +}
      • addedInput schema / properties / time_order
        Added value: +{
        +  "default": "",
        +  "description": "Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', '从新到旧', or timeline recency, or 'asc' for chronological order. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting.",
        +  "title": "Time Order",
        +  "type": "string"
        +}
      • addedInput schema / properties / until
        Added value: +{
        +  "default": "",
        +  "description": "RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically.",
        +  "title": "Until",
        +  "type": "string"
        +}
    • Changedrecall_context5 fields changed
      • addedInput schema / properties / hypothetical_answer
        Added value: +{
        +  "default": "",
        +  "description": "Optional multilingual hypothetical answer or dense semantic expansion written by the calling LLM for this query.",
        +  "type": "string"
        +}
      • addedInput schema / properties / query_mode
        Added value: +{
        +  "default": "",
        +  "description": "Optional query intent: 'topic' (default) or 'activity_log'. Trigger: Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. Model responsibility: 'activity_log' requires explicit bounded 'since' and 'until' timestamps. Consequence: 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass.",
        +  "type": "string"
        +}
      • addedInput schema / properties / since
        Added value: +{
        +  "default": "",
        +  "description": "RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.",
        +  "type": "string"
        +}
      • addedInput schema / properties / time_order
        Added value: +{
        +  "default": "",
        +  "description": "Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', '从新到旧', or timeline recency, or 'asc' for chronological order. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting.",
        +  "type": "string"
        +}
      • addedInput schema / properties / until
        Added value: +{
        +  "default": "",
        +  "description": "RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically.",
        +  "type": "string"
        +}
    • Changedsearch_memory5 fields changed
      • addedInput schema / properties / hypothetical_answer
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Search Memory tool.",
        +  "title": "Hypothetical Answer",
        +  "type": "string"
        +}
      • addedInput schema / properties / query_mode
        Added value: +{
        +  "default": "",
        +  "description": "Optional query intent: 'topic' (default) or 'activity_log'. Trigger: Set 'activity_log' for event feeds within a bounded [since, until) window; set 'topic' for topic retrieval. Model responsibility: 'activity_log' requires explicit bounded 'since' and 'until' timestamps. Consequence: 'activity_log' without bounds fails closed; explicit 'topic' blocks stream bypass.",
        +  "title": "Query Mode",
        +  "type": "string"
        +}
      • addedInput schema / properties / since
        Added value: +{
        +  "default": "",
        +  "description": "RFC 3339 timestamp with timezone offset (e.g., '2026-09-01T00:00:00+09:00'). Trigger: Call this whenever the user query mentions any relative or absolute time constraint (今天/今日/昨天/昨日/前天/上周/8月1日/8月10日到9月1日/最近...). Model responsibility: You (the calling LLM) know current date and user local time, so you must convert natural language time expressions into absolute timestamps. Consequence: If omitted, the server falls back to heuristic guessing which may misinterpret timezone day boundaries or relative dates.",
        +  "title": "Since",
        +  "type": "string"
        +}
      • addedInput schema / properties / time_order
        Added value: +{
        +  "default": "",
        +  "description": "Sort order for returned memories: 'desc' (newest first) or 'asc' (oldest first). Trigger: Pass 'desc' when the user asks for 'latest', 'recent', '从新到旧', or timeline recency, or 'asc' for chronological order. Model responsibility: Explicitly set desired temporal ordering when the user expresses recency intent. If omitted and since/until are omitted, default relevance ranking is used without temporal sorting.",
        +  "title": "Time Order",
        +  "type": "string"
        +}
      • addedInput schema / properties / until
        Added value: +{
        +  "default": "",
        +  "description": "RFC 3339 timestamp with timezone offset (e.g., '2026-09-02T00:00:00+09:00'). When used with since, defines the half-open interval [since, until) with until > since (maximum 90 days span). Trigger: Pass when the user query specifies an end date or bounded window (e.g., 昨天 end of day, 截至8月10日, 8月10日到9月1日). Model responsibility: Convert natural language end bounds into absolute timestamps with timezone offsets. Consequence: If omitted, the window is open-ended on the upper side or derived heuristically.",
        +  "title": "Until",
        +  "type": "string"
        +}
  11. 3 tool updates
    • Changedledger24 fields changed
      • removedInput schema / properties / account_hint
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Account Hint",
        -  "type": "string"
        -}
      • removedInput schema / properties / account_label
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Account Label",
        -  "type": "string"
        -}
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "add_expense",
        -  "list",
        -  "summary",
        -  "overview",
        -  "update_transaction",
        -  "subscription_create",
        -  "subscription_edit",
        -  "subscription_transition"
        -]New value: +[
        +  "add_expense",
        +  "list",
        +  "summary",
        +  "overview",
        +  "update_transaction"
        +]
      • removedInput schema / properties / amount_mode
        Removed value: -{
        -  "default": "fixed",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Amount Mode",
        -  "type": "string"
        -}
      • removedInput schema / properties / as_of
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "As Of",
        -  "type": "string"
        -}
      • removedInput schema / properties / cadence
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Cadence",
        -  "type": "string"
        -}
      • removedInput schema / properties / current_period_started_on
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Current Period Started On",
        -  "type": "string"
        -}
      • changedInput schema / properties / description / description
        Previous value: -"Input value for the Ledger tool."New value: +"Project description for project/create."
      • removedInput schema / properties / ended_on
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Ended On",
        -  "type": "string"
        -}
      • removedInput schema / properties / expected_amount
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Expected Amount",
        -  "type": "string"
        -}
      • removedInput schema / properties / interval_count
        Removed value: -{
        -  "default": 1,
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Interval Count",
        -  "type": "integer"
        -}
      • removedInput schema / properties / interval_unit
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Interval Unit",
        -  "type": "string"
        -}
      • removedInput schema / properties / next_charge_on
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Next Charge On",
        -  "type": "string"
        -}
      • removedInput schema / properties / notes
        Removed value: -{
        -  "default": "",
        -  "description": "Freeform notes explaining recall feedback or corrections.",
        -  "title": "Notes",
        -  "type": "string"
        -}
      • changedInput schema / properties / patch / description
        Previous value: -"Input value for the Ledger tool."New value: +"Memory/update alias: content and/or tags."
      • removedInput schema / properties / plan_name
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Plan Name",
        -  "type": "string"
        -}
      • removedInput schema / properties / plan_tier
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Plan Tier",
        -  "type": "string"
        -}
      • removedInput schema / properties / renewal_mode
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Renewal Mode",
        -  "type": "string"
        -}
      • removedInput schema / properties / review_lead_days
        Removed value: -{
        -  "default": 0,
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Review Lead Days",
        -  "type": "integer"
        -}
      • removedInput schema / properties / review_todo_opt_in
        Removed value: -{
        -  "default": false,
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Review Todo Opt In",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / service_key
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Service Key",
        -  "type": "string"
        -}
      • removedInput schema / properties / service_name
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Service Name",
        -  "type": "string"
        -}
      • removedInput schema / properties / subscription_id
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Subscription Id",
        -  "type": "string"
        -}
      • removedInput schema / properties / subscription_status
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Subscription Status",
        -  "type": "string"
        -}
    • Changedproject2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / title / description
        Previous value: -"Title for decision/document/conversation mutations."New value: +"Title for decision, document, or conversation mutations."
    • Changedrecall_context1 field changed
      • changedInput schema / properties / max_tokens / default
        Previous value: -1500New value: +8000
  12. 3 tool updates
    • Changedledger24 fields changed
      • addedInput schema / properties / account_hint
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Account Hint",
        +  "type": "string"
        +}
      • addedInput schema / properties / account_label
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Account Label",
        +  "type": "string"
        +}
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "add_expense",
        -  "list",
        -  "summary",
        -  "overview",
        -  "update_transaction"
        -]New value: +[
        +  "add_expense",
        +  "list",
        +  "summary",
        +  "overview",
        +  "update_transaction",
        +  "subscription_create",
        +  "subscription_edit",
        +  "subscription_transition"
        +]
      • addedInput schema / properties / amount_mode
        Added value: +{
        +  "default": "fixed",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Amount Mode",
        +  "type": "string"
        +}
      • addedInput schema / properties / as_of
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "As Of",
        +  "type": "string"
        +}
      • addedInput schema / properties / cadence
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Cadence",
        +  "type": "string"
        +}
      • addedInput schema / properties / current_period_started_on
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Current Period Started On",
        +  "type": "string"
        +}
      • changedInput schema / properties / description / description
        Previous value: -"Project description for project/create."New value: +"Input value for the Ledger tool."
      • addedInput schema / properties / ended_on
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Ended On",
        +  "type": "string"
        +}
      • addedInput schema / properties / expected_amount
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Expected Amount",
        +  "type": "string"
        +}
      • addedInput schema / properties / interval_count
        Added value: +{
        +  "default": 1,
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Interval Count",
        +  "type": "integer"
        +}
      • addedInput schema / properties / interval_unit
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Interval Unit",
        +  "type": "string"
        +}
      • addedInput schema / properties / next_charge_on
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Next Charge On",
        +  "type": "string"
        +}
      • addedInput schema / properties / notes
        Added value: +{
        +  "default": "",
        +  "description": "Freeform notes explaining recall feedback or corrections.",
        +  "title": "Notes",
        +  "type": "string"
        +}
      • changedInput schema / properties / patch / description
        Previous value: -"Memory/update alias: content and/or tags."New value: +"Input value for the Ledger tool."
      • addedInput schema / properties / plan_name
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Plan Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / plan_tier
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Plan Tier",
        +  "type": "string"
        +}
      • addedInput schema / properties / renewal_mode
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Renewal Mode",
        +  "type": "string"
        +}
      • addedInput schema / properties / review_lead_days
        Added value: +{
        +  "default": 0,
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Review Lead Days",
        +  "type": "integer"
        +}
      • addedInput schema / properties / review_todo_opt_in
        Added value: +{
        +  "default": false,
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Review Todo Opt In",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / service_key
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Service Key",
        +  "type": "string"
        +}
      • addedInput schema / properties / service_name
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Service Name",
        +  "type": "string"
        +}
      • addedInput schema / properties / subscription_id
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Subscription Id",
        +  "type": "string"
        +}
      • addedInput schema / properties / subscription_status
        Added value: +{
        +  "default": "",
        +  "description": "Input value for the Ledger tool.",
        +  "title": "Subscription Status",
        +  "type": "string"
        +}
    • Changedproject2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / title / description
        Previous value: -"Title for decision, document, or conversation mutations."New value: +"Title for decision/document/conversation mutations."
    • Changedrecall_context1 field changed
      • changedInput schema / properties / max_tokens / default
        Previous value: -8000New value: +1500
  13. 2 tool updates
    • Changedledger22 fields changed
      • removedInput schema / properties / account_hint
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Account Hint",
        -  "type": "string"
        -}
      • removedInput schema / properties / account_label
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Account Label",
        -  "type": "string"
        -}
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "add_expense",
        -  "list",
        -  "summary",
        -  "overview",
        -  "update_transaction",
        -  "subscription_create",
        -  "subscription_edit",
        -  "subscription_transition"
        -]New value: +[
        +  "add_expense",
        +  "list",
        +  "summary",
        +  "overview",
        +  "update_transaction"
        +]
      • removedInput schema / properties / amount_mode
        Removed value: -{
        -  "default": "fixed",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Amount Mode",
        -  "type": "string"
        -}
      • removedInput schema / properties / as_of
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "As Of",
        -  "type": "string"
        -}
      • removedInput schema / properties / cadence
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Cadence",
        -  "type": "string"
        -}
      • removedInput schema / properties / current_period_started_on
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Current Period Started On",
        -  "type": "string"
        -}
      • removedInput schema / properties / ended_on
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Ended On",
        -  "type": "string"
        -}
      • removedInput schema / properties / expected_amount
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Expected Amount",
        -  "type": "string"
        -}
      • removedInput schema / properties / interval_count
        Removed value: -{
        -  "default": 1,
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Interval Count",
        -  "type": "integer"
        -}
      • removedInput schema / properties / interval_unit
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Interval Unit",
        -  "type": "string"
        -}
      • removedInput schema / properties / next_charge_on
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Next Charge On",
        -  "type": "string"
        -}
      • removedInput schema / properties / notes
        Removed value: -{
        -  "default": "",
        -  "description": "Freeform notes explaining recall feedback or corrections.",
        -  "title": "Notes",
        -  "type": "string"
        -}
      • removedInput schema / properties / plan_name
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Plan Name",
        -  "type": "string"
        -}
      • removedInput schema / properties / plan_tier
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Plan Tier",
        -  "type": "string"
        -}
      • removedInput schema / properties / renewal_mode
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Renewal Mode",
        -  "type": "string"
        -}
      • removedInput schema / properties / review_lead_days
        Removed value: -{
        -  "default": 0,
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Review Lead Days",
        -  "type": "integer"
        -}
      • removedInput schema / properties / review_todo_opt_in
        Removed value: -{
        -  "default": false,
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Review Todo Opt In",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / service_key
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Service Key",
        -  "type": "string"
        -}
      • removedInput schema / properties / service_name
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Service Name",
        -  "type": "string"
        -}
      • removedInput schema / properties / subscription_id
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Subscription Id",
        -  "type": "string"
        -}
      • removedInput schema / properties / subscription_status
        Removed value: -{
        -  "default": "",
        -  "description": "Input value for the Ledger tool.",
        -  "title": "Subscription Status",
        -  "type": "string"
        -}
    • Changedrecall_context1 field changed
      • changedInput schema / properties / max_tokens / default
        Previous value: -1500New value: +8000

Publisher details

Operator
Yonro Co., Ltd. · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
An XMemo account and authentication are required to access the hosted MCP service. Standard memory capabilities are available through the Free plan. Supported OAuth clients can connect through the hosted MCP endpoint using browser-based authorization. Clients that do not support OAuth may use bearer-token authentication where supported. Access to memories and other resources is governed by the user's authorization, granted scopes, and applicable account permissions. Certain advanced capabilities may have additional availability, permission, or subscription requirements. Client compatibility depends on the supported MCP transport and authentication method. MCP endpoint: https://xmemo.dev/mcp · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to share persistent memory by ingesting knowledge from sources like Obsidian, code, documents, web clips, and terminal sessions, then providing token-optimized search, context, classification, synthesis, and capture tools through MCP and REST APIs.
    14 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Persistent memory API for AI agents — store, recall, and inject semantically-searchable context across sessions. EU-hosted, GDPR-compliant. Supports Claude, Cursor, Cline, and any MCP-compatible client.
    4
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI coding agents to maintain persistent, cross-session memory of codebase architecture, naming conventions, and decisions through MCP tools. Eliminates repetitive project re-explanation by automatically injecting stored context into every session with local-first SQLite storage and optional team sharing capabilities.
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a persistent, vendor-neutral memory layer that allows AI tools and agents to share context and knowledge across different platforms while maintaining local data ownership. It enables users to store, recall, and manage structured memories through hybrid semantic search and automated context assembly.
    11 npm
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.