Skip to main content
Glama
Ownership verified

Server Details

Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
yonro/memory-os-cli
GitHub Stars
12
Server Listing
XMemo

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.5/5 across 19 of 19 tools scored.

Server CoherenceA
Disambiguation3/5

Most tools target distinct resources, but memory retrieval has several overlapping entry points (recall, search_memory, recall_context, read_memory) and each domain pairs a data-action tool with an open_* widget (ledger/open_ledger, todo/open_todo_board). The descriptions help differentiate them, but the boundaries are subtle enough to cause misselection.

Naming Consistency3/5

The dominant pattern is snake_case verb_object (open_project_workspace, update_memory, get_project_summary), but there are bare-verb tools like forget, recall, and remember, plus noun-style tools like ledger, project, todo, and memory_overview. This mixed convention is readable but not uniform.

Tool Count4/5

19 tools cover three distinct domains—memory, project/TODO/ledger management, and workspace UI—so the count is defensible. It runs slightly heavy due to multiple retrieval variants and open_* companions, but each tool has a distinct enough role to justify its place.

Completeness4/5

The memory lifecycle is thoroughly covered with create, read, update, delete, restore, search, explain, analyze, and overview operations, and TODO, ledger, and project workflows are largely complete. Minor gaps exist, such as no explicit project deletion and restore_memory not covering soft-deleted TODOs or ledger transactions.

Available Tools

19 tools
analyze_memory_textAnalyze XMemo memory textA
Read-onlyIdempotent
Inspect

Counts a word or phrase across XMemo memories, optionally grouped by month, agent, location, or type, when the user asks how often a given word or topic appears.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly include memories or activity on or after this ISO 8601 timestamp.
untilNoOnly include memories or activity on or before this ISO 8601 timestamp.
phraseYesExact word or phrase to count across visible XMemo memories.
group_byNoOptional grouping: none, month, agent, location, memory_type, type, source, path, bucket, or day.none
match_modeNoHow to match phrase: exact, case_insensitive, or regex_lite.exact
max_examplesNoMaximum number of short snippets to include.
include_examplesNoWhether to include a few short matching memory snippets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
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 behavioral context by noting optional grouping and the counting semantics, going beyond the 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 a single, well-structured sentence that front-loads the action, resource, and key optional feature. 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 moderate parameter count, the presence of an output schema, and full schema coverage, the description provides sufficient context. It explains the core action, optional grouping, and trigger phrase. Slight gap: doesn't mention the 'visible memories' scope detailed in the 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?

The input schema covers all 7 parameters with detailed descriptions (100% coverage). The tool description adds minimal extra meaning, simply reinforcing the purpose of phrase and grouping. Baseline 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 counts a word or phrase across XMemo memories, with optional grouping. It distinguishes itself from sibling search/recall tools by emphasizing frequency counting.

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 specifies when to use it: 'when the user asks how often a given word or topic appears.' It doesn't explicitly name alternatives, but the context is clear and excludes retrieval use cases.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoNatural-language question or search text.
memory_idYesExact XMemo memory reference shown by search or recall.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
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, covering safety and side effects. The description adds the behavioral context of explaining memory rationale, but does not disclose additional traits such as output format or limitations; the output schema covers return structure. This is adequate given the strong annotation coverage.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that clearly states the action and condition. There is no redundancy or filler, making it highly 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?

The tool is simple with robust annotations and an output schema. The description covers purpose and usage, the schema covers parameters, and the annotations cover safety. A minor gap is the lack of an explicit prerequisite that memory_id must come from a prior search/recall, but the schema property description already states that, so the overall context is 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?

Both parameters (memory_id and query) have descriptive schema entries providing full coverage at 100%. The tool description does not add extra parameter-level detail, 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's function with a specific verb ('Explains') and resource ('why a memory exists or matched a query'). It distinguishes itself from sibling search/recall tools by focusing on the reasoning behind memory behavior rather than listing or retrieving 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?

The description gives an explicit usage condition: 'whenever the user asks why something was saved there or why it was retrieved.' This clearly signals when to invoke, though it does not explicitly name alternative tools or exclusions, which would have made it a 5.

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 natural target ('latest', 'current', an exact memory ID (with memory_id accepted as an equivalent exact-reference alias), an exact TODO ID from the current TODO listing, or an exact Ledger transaction ID from ledger(action='list')). Defaults to a recoverable soft delete (restore later with restore_memory); pass mode='hard' only after the user has explicitly confirmed a permanent, unrecoverable deletion in this conversation. Call this only when the user explicitly asks to delete a specific memory, TODO, or expense/income record; list/search or check activity first if the target is ambiguous.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoDeletion 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.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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description discloses important behavioral details: it defaults to a recoverable soft delete, mentions restore_memory as a recovery path, and warns that hard delete is permanent and unrecoverable, requiring explicit user confirmation. This adds significant value and aligns with the destructiveHint.

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

Conciseness4/5

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

The description is a single paragraph, dense but not bloated. Every sentence contributes value: the action, the target types, the default behavior, the hard-delete caution, and the usage rule. It could be slightly more scannable with a list, but it remains efficient for the complexity involved.

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 destructive nature and multiple targets/modes, the description covers all essential aspects: what it deletes, how targets are specified, the soft/hard mode distinction, recovery via restore_memory, and the prerequisite of explicit user confirmation for permanent deletion. Combined with the detailed schema and annotations, it is complete for an AI agent to select and invoke 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% description coverage for all 4 parameters. The description adds context by explaining valid target formats (exact memory ID, TODO ID from current listing, Ledger transaction ID) and clarifying the mode aliases (soft/soft_delete, hard/hard_delete). It enriches rather than merely repeats the schema, though the schema already does a good job.

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 purpose: 'Delete one memory, TODO, or Ledger transaction by natural target'. It specifies the verb (delete) and the resources (memory, TODO, Ledger transaction), and distinguishes itself from sibling tools like restore_memory and update_memory by focusing on deletion.

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 explicitly states when to use the tool: 'Call this only when the user explicitly asks to delete a specific memory, TODO, or expense/income record'. It also provides guidance for ambiguous targets ('list/search or check activity first') and warns against using hard delete without explicit confirmation. This is clear and actionable guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
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, covering the safety profile. The description adds the behavioral detail that the tool reports both connection status and the currently connected account/agent, which goes beyond the annotations and helps predict the tool's response. No contradictions exist.

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 with no unnecessary words. It front-loads the core action ('Checks XMemo connection status') and then provides the usage trigger, making it easy to scan and understand.

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 (no parameters, output schema provided, annotations covering safety), the description adequately covers the purpose, trigger, and expected output. The output schema presumably details return values, so no further description is needed. The description is fully 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 tool has zero parameters, and schema description coverage is trivially 100%. Even without parameters to document, the description adds meaning by clarifying what the tool checks and what information it exposes, meeting the baseline for parameterless tools.

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 'Checks' to state the action on the XMemo connection, and clearly identifies the resource ('connection status') and the additional output ('currently connected account/agent'). This distinguishes it from all sibling tools, none of which handle connection checking, making the purpose immediately clear.

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 provides explicit usage context by stating 'when the user asks whether XMemo is connected.' This gives a clear trigger for invocation. It does not explicitly mention alternatives or when-not-to-use scenarios, but no sibling tool offers a similar connection check, so the absence of exclusions is acceptable.

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

get_project_summaryProject quick summaryA
Read-onlyIdempotent
Inspect

Return a bounded quick-answer summary for one exact authorized project as concise text. Use this for brief status, blockers, progress, or next-action questions such as "how is this project doing" or "what is blocking this project". Do not use it to open, browse, or manage the project workspace; use open_project_workspace for that. When no exact project can be established, say so and guide the user to open Project Workspaces Home with open_project_workspace — never invent a multi-project summary. It never returns a raw context pack or a workspace resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoProject summary focus: status, blockers, progress, next_actions, or work.status
project_idNoOptional project identifier to filter the Ledger or TODO workspace.

Output Schema

ParametersJSON Schema
NameRequiredDescription
focusYes
errorsYes
bulletsYes
projectYes
headlineNo
freshnessYes
availabilityYes
completenessYes
schemaVersionYes
domainCoverageYes
Behavior4/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds behavior: it returns concise text, never a raw context pack or workspace resource, and when no exact project is established it says so and guides the user. This provides useful context without contradicting 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?

Four sentences, each serving a distinct function: purpose, usage examples, exclusion/alternative, and fallback behavior. No redundancy, properly front-loaded.

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 read-only summary tool with two optional parameters, the description covers purpose, usage, scope constraint, failure mode, and output type. Output schema and annotations handle the rest, making this 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?

Schema description coverage is 100%, with both parameters (focus and project_id) fully described. The description reinforces the single-project scope but adds no new parameter-level semantics, so 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 clearly states the tool's purpose: returning a bounded quick-answer summary for a single exact project as concise text. It distinguishes from siblings by explicitly naming the alternative for workspace management (open_project_workspace).

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 usage scenarios ('brief status, blockers, progress, or next-action questions') and explicitly says not to use it for opening/browsing/managing the workspace, naming the alternative. It also instructs how to handle ambiguous project references.

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

ledgerManage XMemo LedgerA
Destructive
Inspect

Manage Ledger transactions and renewal reminders for external services; reminders are not XMemo plans. For 'I paid 199 CNY for a membership', use ledger(action='add_expense'). For this-month totals, use action='summary' with months=1 and the user's real owner_timezone. Use subscription_create for future tracking only after collecting owner_timezone, service_name, expected_amount, currency, cadence, and next_charge_on. Actions: add_expense, list, summary, update_transaction, subscription_create, subscription_edit, subscription_transition.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemNoThe purchased item or service, for example 2 watermelons or Nintendo Switch 2.
noteNoOptional completion note.
pathNoA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.finance/ledger/expenses
as_ofNoInput value for the Ledger tool.
limitNoMaximum number of results to return.
notesNoFreeform notes explaining recall feedback or corrections.
patchNoInput value for the Ledger tool.
queryNoNatural-language question or search text.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
actionYesUsage action or audit-event action filter, depending on the tool.
amountNoPositive transaction amount as a number.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.
monthsNoNumber of recent ledger months to summarize.
offsetNoNumber of matching records to skip for pagination.
cadenceNoInput value for the Ledger tool.
date_toNoOnly include ledger transactions on or before this YYYY-MM-DD date.
team_idNoOptional team/workspace identifier for team-scoped memory access.
agent_idNoOptional client-supplied agent label for memory attribution.
categoryNoOptional spending category, such as food, transport, or electronics.
currencyNoCurrency code or label, such as CNY, RMB, JPY, yen, or USD. For ledger search/list tools, leave blank unless the user explicitly requested one currency; labels are normalized to codes.
ended_onNoInput value for the Ledger tool.
merchantNoOptional merchant or store name.
date_fromNoOnly include ledger transactions on or after this YYYY-MM-DD date.
device_idNoOptional client-supplied device identifier for attribution.
plan_nameNoInput value for the Ledger tool.
plan_tierNoInput value for the Ledger tool.
max_amountNoOnly include ledger transactions with amount less than or equal to this value.
min_amountNoOnly include ledger transactions with amount greater than or equal to this value.
project_idNoOptional project identifier to filter the Ledger or TODO workspace.
amount_modeNoInput value for the Ledger tool.fixed
descriptionNoInput value for the Ledger tool.
output_jsonNoReturn a machine-readable JSON response instead of a human-readable summary.
service_keyNoInput value for the Ledger tool.
account_hintNoInput value for the Ledger tool.
device_labelNoOptional human-readable device label for attribution.
renewal_modeNoInput value for the Ledger tool.
service_nameNoInput value for the Ledger tool.
account_labelNoInput value for the Ledger tool.
interval_unitNoInput value for the Ledger tool.
interval_countNoInput value for the Ledger tool.
next_charge_onNoInput value for the Ledger tool.
owner_timezoneNoThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
payment_methodNoOptional payment method, such as card, cash, Alipay, or WeChat Pay.
transaction_idNoInput value for the Ledger tool.
expected_amountNoInput value for the Ledger tool.
subscription_idNoInput value for the Ledger tool.
expected_versionNoOptimistic-concurrency version read from the current record; a stale value is rejected with VERSION_CONFLICT.
review_lead_daysNoInput value for the Ledger tool.
transaction_dateNoTransaction date in YYYY-MM-DD. Leave blank to use today's UTC date.
transaction_typeNoOptional ledger type filter: expense, income, refund, or transfer.
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.
review_todo_opt_inNoInput value for the Ledger tool.
subscription_statusNoInput value for the Ledger tool.
current_period_started_onNoInput value for the Ledger tool.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 description does not need to restate those. It adds useful behavioral context beyond annotations: reminders are not XMemo plans, the summary depends on the user's real owner_timezone, and subscription_create should only be used after prerequisite fields are collected. It does not detail destructive effects of update_transaction or subscription_transition, but annotations cover the general safety profile.

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?

Four sentences, front-loaded with purpose, followed by two high-value usage examples and a complete action list. Each sentence earns its place; there is no filler or restatement of schema details.

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

Completeness3/5

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

Given the tool's high complexity (8 actions, 54 parameters), the description is a useful orientation but not complete: it covers add_expense, summary, and subscription_create well, but leaves overview, update_transaction, subscription_edit, and subscription_transition with no usage guidance or parameter hints. Output schema and annotations cover some context, but action-specific semantics are still a gap.

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 description coverage is 100%, so the baseline is 3, but the description adds meaningful parameter context by bundling the right parameters with specific actions (e.g., months=1 and owner_timezone for summary; owner_timezone, service_name, expected_amount, currency, cadence, and next_charge_on for subscription_create). This helps disambiguate the large 54-parameter schema, though many parameters still rely on weak 'Input value for the Ledger tool' schema 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 opens with a specific verb and resource: 'Manage Ledger transactions and renewal reminders for external services'. It also distinguishes what it handles from XMemo plans and lists the full set of actions, making the tool's multi-purpose scope clear relative to siblings like open_ledger.

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 concrete when-to-use guidance: use action='add_expense' for phrasing like 'I paid 199 CNY for a membership', use action='summary' with months=1 and the real owner_timezone for this-month totals, and use subscription_create only after collecting the required fields. This is explicit, actionable, and prevents misuse.

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

memory_overviewShow XMemo memory overviewA
Read-onlyIdempotent
Inspect

Show exactly one requested XMemo memory view. For a broad workspace snapshot, use only the default overview. Use section='stats' only for an explicitly requested count or breakdown, and section='activity' only for explicitly requested recent changes; do not combine sections for one overview request.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
sinceNoOnly include memories or activity on or after this ISO 8601 timestamp.
top_nNoMaximum number of aggregate groups to return.
untilNoOnly include memories or activity on or before this ISO 8601 timestamp.
sectionNoInput value for the Memory Overview tool.overview
group_byNoOptional grouping: none, month, agent, location, memory_type, type, source, path, bucket, or day.
memory_typeNoOptional memory type/category for user-facing updates, such as semantic, episodic, or procedural.%
activity_typeNoActivity filter: all, writes, deletions, restorations, reads, reminders, ledger, or timeline.all

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
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 established. The description adds behavioral context beyond annotations by constraining the tool to a single requested view and prohibiting section combination, which is useful and does not contradict 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 sentences, front-loaded with the core purpose, followed by precise usage constraints. Every clause 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?

For an 8-parameter tool with rich annotations and output schema, the description covers the crucial combinatorial constraint (do not combine sections) and clarifies the main usage scenarios. The schema and output schema handle parameter details and return values, so no significant gaps remain.

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 description coverage is 100%, so the baseline is 3. The description adds semantic interpretation for the 'section' parameter (stats = count/breakdown, activity = recent changes) that goes beyond the generic schema descriptions, enriching 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 clearly states the tool's action and scope: 'Show exactly one requested XMemo memory view.' This is specific and distinguishes from broad search/recall tools by emphasizing 'exactly one' and 'overview.' However, it does not explicitly name sibling alternatives, so it falls slightly 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 Guidelines5/5

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

The description provides explicit when/when-not guidance: 'use only the default overview' for broad snapshots, section='stats' only for explicitly requested counts/breakdowns, section='activity' only for explicitly requested recent changes, and 'do not combine sections.' This is clear, actionable usage guidance with exclusions.

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

open_ledgerOpen LedgerA
Read-onlyIdempotent
Inspect

Open the interactive Ledger for Net flow or external-service Renewal reminders. Use the compatibility value view=subscriptions for reminder intent; it does not mean an XMemo plan. Do not look for or invent a separate open_subscriptions tool. Use this when the user asks to open, browse, explore, or work with Ledger. The owner_timezone input must be the user's real IANA timezone; never guess UTC. For a quick text-only monthly total use ledger(action='summary'), and for transaction rows or item search use ledger(action='list'). Recording a transaction uses ledger(action='add_expense'). Existing transactions can be edited inside the widget; deletion stays in Chat and requires explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoLedger workspace mode: overview for transactions and Net flow, or subscriptions (compatibility value) for external-service renewal reminders.overview
periodNoLedger period preset: current_month, previous_month, last_3_months, last_6_months, year_to_date, or custom.current_month
searchNoOptional title search query for the board.
date_toNoOnly include ledger transactions on or before this YYYY-MM-DD date.
categoryNoOptional spending category, such as food, transport, or electronics.
currencyNoCurrency code or label, such as CNY, RMB, JPY, yen, or USD. For ledger search/list tools, leave blank unless the user explicitly requested one currency; labels are normalized to codes.
date_fromNoOnly include ledger transactions on or after this YYYY-MM-DD date.
project_idNoOptional project identifier to filter the Ledger or TODO workspace.
owner_timezoneYesThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
transaction_typeNoOptional ledger type filter: expense, income, refund, or transfer.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the annotations (readOnlyHint=true, idempotentHint=true), the description adds valuable behavioral context: view=subscriptions is a compatibility value and does not imply an XMemo plan, owner_timezone must be the user's real IANA timezone and never guessed UTC, and existing transactions can be edited inside the widget while deletion stays in Chat requiring confirmation. These details clarify agent expectations without contradicting 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 compact yet information-dense, front-loading the primary purpose and then covering usage, disambiguation, and behavioral caveats. Every sentence serves a distinct disambiguation or instruction purpose, with no filler or repetition of schema fields beyond critical clarifications.

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 complexity (10 parameters, many sibling tools, rich schema), the description is complete: it covers purpose, use cases, alternatives, special parameter semantics, timezone rules, and widget interaction behaviors. The output schema exists, so return value details are not needed. No significant gaps.

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% with detailed parameter descriptions, so the baseline is 3. The description adds extra semantic clarity for view (clarifying subscription compatibility and XMemo warning) and owner_timezone (reinforcing real IANA timezone), which pushes it above baseline. However, most parameter meanings are already well-documented in 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 clearly states the tool opens the interactive Ledger for Net flow or Renewal reminders, with a specific verb and resource. It proactively distinguishes itself from a non-existent open_subscriptions tool and differentiates from sibling ledger tools by clarifying it is the entry point for opening/browsing the Ledger.

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 states when to use this tool ('when the user asks to open, browse, explore, or work with Ledger') and names alternatives: ledger(action='summary') for quick totals, ledger(action='list') for transaction rows/search, and ledger(action='add_expense') for recording. Also warns against inventing a separate open_subscriptions tool, providing clear when-not-to-use guidance.

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

open_project_workspaceOpen Project WorkspaceA
Read-onlyIdempotent
Inspect

Open the Project Workspace. With no project reference it always opens Project Workspaces Home — the caller's authorized project list — even when exactly one project is accessible. An exact project_id, or a project name/alias matching exactly one authorized project, opens that project's eight tabs (overview, memory, todo, decisions, documents, conversations, timeline, settings); multiple or no matches return Home with candidates or an honest no-match state. For a quick text-only status, blockers, or next-actions answer use get_project_summary. Explicit standalone TODO or Ledger intent keeps using open_todo_board or open_ledger.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoNatural-language project name or alias; resolved only within your authorized projects, never a global search.
project_idNoOptional project identifier to filter the Ledger or TODO workspace.
initial_tabNoProject Workspace tab to open first: overview, memory, todo, decisions, documents, conversations, timeline, or settings. Legacy ledger values open Overview; use open_ledger for the standalone Ledger.overview
source_modeNoPost-authorization presentation policy: focused on this project, or all_authorized sources.focused

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond the annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false), the description reveals resolution rules: no reference always opens Home even with one accessible project, exact matches open the eight tabs, multiple/no matches return Home with candidates or no-match state, and legacy ledger values open Overview. This is valuable behavioral context not available in 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 dense yet well-structured: it opens with the core action, then sequentially covers parameter resolution, tab enumeration, edge cases, and sibling differentiation. Every sentence contributes meaningful information, with no filler or redundancy.

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 complexity (4 parameters, 8 tabs, multiple edge cases), the description is fully complete: it covers no-reference behavior, match resolution outcomes, tab list, legacy handling, and alternative tools. The presence of an output schema reduces the need to describe return values, and annotations cover safety, so the description fills all remaining gaps.

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 important meaning: it explains project resolution logic (exact project_id vs. unique name/alias), outcome on multiple/no matches, and the initial_tab legacy behavior. This enriches the schema parameter descriptions with practical consequences.

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 the specific verb 'Open' with the resource 'Project Workspace' and lists the eight tabs, clearly distinguishing it from siblings like get_project_summary, open_todo_board, and open_ledger. It states exactly what the tool does: opens Home or a specific project's workspace.

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?

Explicit guidance is given for when to use alternatives: 'For a quick text-only status, blockers, or next-actions answer use get_project_summary. Explicit standalone TODO or Ledger intent keeps using open_todo_board or open_ledger.' The description also clarifies behavior with no project reference, making the usage context unambiguous.

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

open_todo_boardOpen TODO BoardA
Read-onlyIdempotent
Inspect

Open the interactive TODO Board workspace to view, browse, and manage tasks. The owner_timezone input must be the user's real IANA timezone; never guess UTC. Use this when the user wants to open, browse, filter, or work with their TODOs visually — e.g. "open my TODOs", "show the TODO board", "what should I focus on today", or "view this XMemo project's tasks". For a quick text-only answer such as "how many TODOs do I have", use todo(action='list') instead. Create, update, or complete TODOs with todo(action='create'|'update'|'complete'). When the user explicitly asks to delete a specific TODO, identify its exact ID and call forget(target=).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque cursor for loading the next TODO Board page.
searchNoOptional title search query for the board.
due_rangeNoOptional due-date range: overdue, today, this_week, later, or none.
project_idNoOptional project identifier to filter the Ledger or TODO workspace.
source_filterNoOptional source filter for the board.
status_filterNoOptional status filter for the board.
owner_timezoneYesThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
assignee_filterNoOptional assignee or creator filter for the board.

Output Schema

ParametersJSON Schema
NameRequiredDescription
focusYes
countsYes
cursorYes
columnsYes
filtersYes
projectYes
summaryYes
surfaceYes
pinnedItemsYes
globalCountsYes
activeFiltersYes
filteredCountsYes
availableActionsYes
relationReadAvailableYes
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds the important behavioral constraint: 'The owner_timezone input must be the user's real IANA timezone; never guess UTC.' It also clarifies that mutations are handled elsewhere, avoiding the possibility of the 'manage tasks' phrase suggesting write actions. No contradiction with annotations.

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

Conciseness4/5

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

The description is somewhat long but every sentence contributes: purpose, critical timezone note, use cases, and alternatives. It is front-loaded with the main purpose and structured clearly, though slightly wordy.

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 has an output schema and thorough annotations, the description adequately covers when to use it, key behavioral constraints, and how it differs from siblings. It could mention pagination behavior but that is not necessary for a board-opening tool with output 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 each parameter is already documented. The description repeats the owner_timezone requirement but adds no new parameter semantics beyond what the schema provides. Baseline 3 is appropriate because the schema does the heavy lifting.

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+resource: 'Open the interactive TODO Board workspace to view, browse, and manage tasks.' It clearly distinguishes from sibling tools by explaining that this is for visual/browse workflows while todo(action='list') is for quick text answers.

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?

Explicit usage guidance is provided: 'Use this when the user wants to open, browse, filter, or work with their TODOs visually' with examples, and explicit alternatives: 'For a quick text-only answer..., use todo(action='list') instead' and 'Create, update, or complete TODOs with todo(action='create'|'update'|'complete')' and deletion via 'forget'. This leaves no ambiguity about when to choose this tool.

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

projectManage XMemo projectA
Destructive
Inspect

Create or mutate an authorized project; use open_project_workspace or get_project_summary to read. Project create requires entity='project', action='create', and name, and omits project_id. Other actions require project_id. Memory update needs memory_ref (never memory_id) and expected_version; use top-level content/tags or patch.content/patch.tags, with conflicts rejected. Decision create needs context; transitions need decision_ref. Document link needs provider, provider_ref, title; resource_type is link-only. Conversation link needs provider, provider_ref, and title. Edits/unlinks need the matching ref and expected_version.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriNoHTTPS document URL for document/link.
nameNoRequired display name for project/create.
tagsNoReplacement memory tags for memory/update; max 20.
patchNoMemory/update alias: content and/or tags; dual values must match.
titleNoTitle for decision/document/conversation mutations.
actionYesOperation valid for the selected entity.
entityYesProject resource family to mutate.
contentNoReplacement memory content for memory/update.
contextNoRequired context for decision/create.
excerptNoShort note for the link or metadata update, not a full transcript.
optionsNoDecision options for create or supersede.
decisionNoOptional decision statement for create.
providerNoProvider name for document/conversation link.
timezoneNoSettings IANA timezone; empty clears.
rationaleNoDecision rationale for create.
memory_refNoExact memory:<id> for memory mutations.
project_idNoExact authorized project ID; omit only for project/create.
resolutionNoResolution text for decision/resolve.
default_tabNoSettings tab: overview, memory, todo, decisions, documents, conversations, timeline, or settings.
descriptionNoOptional project/create description; max 2000 characters.
new_contextNoReplacement context for decision/supersede.
occurred_atNoConversation time in ISO 8601.
access_stateNoset_availability value: available, unavailable, or revoked.
date_displayNoSettings date format: locale or iso.
decision_refNoDecision ref for resolve, reopen, or supersede.
project_tagsNoDocument tags for link or metadata update.
provider_refNoProvider-native ref for document/conversation link.
source_labelNoDocument source label for link or metadata update.
resource_typeNodocument/link; omitted means document; otherwise rejected.
review_due_atNoISO 8601 time with timezone for memory/set_review_due; empty clears.
expected_versionNoCurrent record version for edits; stale writes fail.
resource_link_refNoDocument ref for edit, availability, or unlink.
client_mutation_idNoReplay key (1-128 chars) for idempotent writes.
linked_entity_refsNoConversation-linked public refs (not project IDs); each starts memory:, decision:, todo:, prl-, pcl-, or pwp-.
default_source_modeNoSettings source mode: focused or all_authorized.
conversation_link_refNoConversation ref for edit, availability, or unlink.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
recordYes
changesNo
staleTabsNo
Behavior4/5

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

With annotations already declaring readOnlyHint=false and destructiveHint=true, the description reinforces and expands on behavioral traits. It reveals important details such as optimistic concurrency via 'expected_version' and 'conflicts rejected', the distinction between memory_ref and memory_id, and the link-only nature of resource_type. These are useful behavioral disclosures beyond 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.

Conciseness4/5

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

The description is a single dense paragraph, but it is front-loaded with the main purpose. It efficiently packs action-specific requirements into a compact form. Slightly run-on but each clause adds necessary nuance, and it avoids redundancies.

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 tool with 36 parameters and multiple oneOf branches, the description covers the most critical branches (project, memory, decision, document, conversation) but omits settings mutation and memory review due. It also includes guidance on read alternatives and mentions general edit/unlink requirements. Missing a couple of branches keeps it from being fully complete, but given the schema covers them, the shortfall is minor.

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?

Although the schema descriptions cover 100% of parameters, the description adds valuable semantic clarifications: 'memory_ref (never memory_id)' prevents a common mistake, 'resource_type is link-only' clarifies a restricted value, and 'use top-level content/tags or patch.content/patch.tags, with conflicts rejected' explains the patch structure and validation. This enhances understanding 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 clearly states the tool's purpose: 'Create or mutate an authorized project' and distinguishes it from read-only siblings by explicitly directing users to open_project_workspace or get_project_summary for reading. It outlines the specific entities and actions handled, making the tool's 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 Guidelines5/5

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

The description explicitly says when not to use the tool (for reading) and names two alternative tools. It also provides conditional usage rules for each entity/action, such as project create requiring name and omitting project_id, memory update requiring memory_ref and expected_version, and decision create requiring context. This gives clear when-to-use guidance.

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 in character windows. Use a memory ID returned by recall or search, then continue long content with next_offset. Embeddings are never returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum content characters in this page; defaults to 4000.
offsetNoZero-based character offset into this memory's content; defaults to 0.
memory_idYesExact XMemo memory reference returned by recall or search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Beyond the readOnlyHint, the description adds that the tool reads in character windows (pagination), only returns 'authorized' memories, uses exact IDs, and never returns embeddings. These are meaningful behavioral details not present in 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 exactly two sentences, front-loaded with the core purpose ('Read one exact authorized XMemo memory'), and every clause contributes useful information (authorization, pagination, embeddings). No fluff or repetition.

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 presence of annotations, a full output schema, and the tool's relatively simple read behavior, the description fully covers the essential context: pagination semantics, the need for an ID from recall/search, and the exclusion of embeddings. The agent can confidently use this tool without additional undocumented behavior.

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 already provides full descriptions for all three parameters (memory_id, offset, limit) with character-based semantics. The description adds a reference to next_offset for pagination, but this is also implied by the schema. No significant additional parameter meaning is provided.

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 'Read one exact authorized XMemo memory in character windows', which is a specific verb (read), resource (XMemo memory), and mode (character windows). This clearly distinguishes it from sibling tools like recall or search_memory that find memory IDs.

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 explicitly instructs to use a memory ID returned by recall or search, then continue long content with next_offset. This provides a clear workflow for when to use this tool (after finding the ID) and how to paginate, effectively differentiating it from alternatives.

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 the few most relevant saved memories before answering. This is a lightweight, unscoped lookup; use search_memory for a scoped lookup, or recall_context for a multi-item context pack.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
queryYesNatural-language question or search text.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior4/5

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

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint). The description adds behavioral context by describing the operation as 'lightweight' and 'unscoped', and noting it retrieves 'few most relevant' memories. No contradiction with annotations, and the added context is useful beyond the structured metadata.

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-loaded with the core purpose followed by alternates. Every word earns its place; no filler or redundancy.

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 simple read-only lookup with complete annotations, full schema coverage, and an output schema present, the description supplies purpose, usage context, and sibling differentiation. It provides sufficient information for an agent to decide when to select and invoke the 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?

The input schema already provides full descriptions for both parameters (query and limit), achieving 100% coverage. The description's phrase 'few most relevant' reinforces the limit behavior but doesn't add substantive meaning beyond the schema's own documentation, 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 identifies the tool as a recall operation for saved memories, specifying it returns 'the few most relevant saved memories.' It distinguishes itself from siblings by explicitly calling it a 'lightweight, unscoped lookup' and naming alternatives, making the purpose unmistakable.

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 ('lightweight, unscoped lookup') and direct alternatives: 'use search_memory for a scoped lookup, or recall_context for a multi-item context pack.' This gives the agent clear decision criteria and exclusions.

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 within max_items and max_tokens; use recall for a quick forgiving lookup or search_memory for strict targeted matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural-language query used to rank memories for the context pack.
max_itemsNoMaximum memories rendered in the context pack.
max_tokensNoApproximate token budget for the rendered context pack.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context by emphasizing the output is 'bounded' and composed from 'multiple relevant memories', which goes beyond the annotation flags. No contradictions.

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, front-loaded with the primary purpose and then usage guidance. Every word earns its place, no fluff or repetition.

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?

With an output schema present, the description need not explain return values. It provides clear purpose, usage, and boundaries for the tool's complexity (3 simple params). Complete for agent 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 100%, so the schema already documents all parameters. The description only lightly references max_items and max_tokens as bounds, and mentions query as the ranking mechanism. This adds marginal value beyond the schema, consistent with the baseline for full 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 builds a 'read-only, bounded context pack' from 'multiple relevant memories', using a specific verb and resource. It explicitly distinguishes itself from siblings by mentioning 'multiple relevant memories' and bounded output, and names alternatives.

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: 'Use it when an answer needs several memory items within max_items and max_tokens'. It also names specific alternatives with their use cases: 'use recall for a quick forgiving lookup or search_memory for strict targeted matching'.

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. create_project is a deprecated ordinary-client compatibility input; model-routed project creation belongs to project(entity='project', action='create'). Use Ledger, not generic memory, for financial records.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.
contentYesText body to save, such as a memory, TODO/action item, event note, or state summary.
create_projectNoCreate a missing formal project from a valid Projects / <Project Name> path. Defaults to false; enable only when the user explicitly asks.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Discloses that existing Projects paths attach automatically, which is not evident from annotations. Also flags create_project as deprecated compatibility input and clarifies proper routing. Annotations already establish read/write and destructiveness hints, so the description adds qualitative behavior beyond those.

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, first sentence states purpose, second adds a behavioral detail, third contains two routing caveats. No redundant fluff; all information is actionable.

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 output schema exists and annotations provide safety hints, the description effectively covers purpose, exclusions, parameter nuances, and routing alternatives. It is sufficient for an agent to decide when to invoke and how to use 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 covers 100%, but description adds meaning to create_project by labeling it 'deprecated ordinary-client compatibility input' and directing to project tool. Also notes automatic attachment for Projects paths, which clarifies the path parameter's behavior.

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 opening phrase 'Save durable information for future recall' clearly identifies the tool's function. It distinguishes itself from transient chat and from Ledger for financial records, and mentions project creation routing, separating it from the project tool.

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 instructs to skip transient chat, provides an alternative for financial records (Ledger), and clarifies that project creation should be routed to project(entity='project', action='create') rather than using create_project. This goes beyond merely implying usage.

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. Call this only when the user explicitly asks to restore or undo a deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional user-facing reason for the deletion.
memory_idYesExact XMemo memory reference shown by search or recall.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior3/5

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

The description adds a key behavioral constraint ('previously deleted memory') and clarifies the intent ('undo a deletion'), which goes beyond the sparse annotations. However, it does not disclose potential error conditions, whether the operation is reversible, or what happens if the memory is already restored. With no meaningful annotations, the description carries the burden but remains thin on side effects.

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

Conciseness5/5

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

The description is two sentences: the first states the action, the second provides a usage condition. It is front-loaded, contains no redundant information, and every word earns its place. This is a model of concise, well-structured documentation.

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 tool with a clear schema and output schema available, the description is largely sufficient. It explains the precondition and the exact trigger for use. It falls slightly short by not mentioning error scenarios or edge cases, but given the low complexity, this is a minor gap rather than a 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?

The input schema provides 100% coverage with descriptions for both parameters: 'reason' and 'memory_id'. The description does not add any parameter-specific information, so it neither enhances nor detracts from the schema. Baseline of 3 is appropriate given the schema already fully documents the 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 clearly states the action: 'Restore a previously deleted memory.' It specifies the resource (memory) and the action (restore), and distinguishes itself from siblings like 'forget' (deletion) and 'recall'/'search_memory' (retrieval). The title reinforces this but the description adds the 'previously deleted' qualifier, making the scope explicit.

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 second sentence provides explicit guidance: 'Call this only when the user explicitly asks to restore or undo a deletion.' This directly tells the agent when to use the tool, and the 'only when' phrase acts as an exclusion for all other scenarios. It effectively communicates the when and when-not, leaving no ambiguity about alternative use cases.

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

search_memorySearch XMemo memoriesA
Read-onlyIdempotent
Inspect

Search XMemo memories with strong-match semantics. Use it for a targeted lookup where weak matches must not be returned as answers; use recall for forgiving best-effort retrieval or recall_context for a bounded multi-memory context pack. To delete a memory, use forget.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return.
queryYesNatural-language question or search text.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior4/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description adds the key behavioral trait of strong-match semantics, meaning weak matches are excluded. It clarifies the tool's precision-oriented nature, which is not captured by annotations or 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?

The description is three sentences, with the main purpose in the first sentence and succinct alternatives in the rest. Every sentence adds value and there is no filler or redundancy.

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 (2 parameters), strong annotations, and existing output schema, the description covers all necessary context: what it does, when to use it, how it differs from alternatives, and a pointer to deletion. It is complete for an agent to invoke correctly.

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

Parameters3/5

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

The input schema already provides descriptions for both parameters (query and limit) with 100% coverage, so the baseline is 3. The description does not add additional parameter semantics beyond the schema, so no extra credit is given.

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 searches XMemo memories with strong-match semantics, defining a specific verb, resource, and behavior. It distinguishes itself from sibling tools recall and recall_context by explicitly contrasting their match semantics.

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 provides explicit guidance: use this for targeted lookups where weak matches must not be returned, use recall for best-effort retrieval, and recall_context for multi-memory context packs. It even mentions forget for deletion, covering alternatives comprehensively.

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

todoManage XMemo TODOsA
Destructive
Inspect

Create, update, complete, list, or bulk soft-delete authorized TODOs. For action='list', provide the user's real IANA owner_timezone or use a saved owner profile timezone so due dates are honest. Use delete_all only after explicit user confirmation and pass confirm_delete_all=true; it clears every matching TODO and is recoverable. Delete one with forget(target=).

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoCompletion note or bulk-delete reason.
limitNoList page size.
queryNoCompatibility alias for list search.
scopeNoAuthorized scope.
titleNoMust equal content when both are set.
actionYesOperation.
bucketNoMemory bucket.
cursorNoList cursor.
due_atNoISO 8601 due time.
searchNoList title/content search.
statusNoUpdate status.
contentNoMust equal title when both are set.
todo_idNoTarget TODO ID.
priorityNohigh, medium, or low.
due_beforeNoList due-time ceiling.
project_idNoAuthorized project ID.
item_statusNoList status filter.
metadata_jsonNoCreate metadata JSON.
owner_timezoneNoThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
expected_versionNoRequired current version for update.
client_mutation_idNoMutation replay key (1-128 chars).
confirm_delete_allNoTrue confirms delete_all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description discloses behaviors such as the need for confirmation for delete_all, that deletions are recoverable (soft-delete), and that list actions need proper timezone to avoid misleading due dates. This adds transparency beyond the annotations (readOnlyHint=false, destructiveHint=true) by clarifying the nature of deletion and listing behavior. However, it doesn't mention idempotency or other potential edge cases, but given annotations and schema, 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.

Conciseness4/5

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

The description is compact but covers essential points: the actions, the timezone requirement for list, and the confirmation for delete_all. It is front-loaded with the verb (Create, update...). However, it could be slightly more organized by separating the different action-specific guidance, but it's acceptably concise.

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 complexity (22 params, 5 actions) and the presence of output schema, the description covers the most critical usage scenarios: it highlights timezone for list, confirmation for delete_all, and that delete is soft/recoverable. It doesn't explain returns or all actions in detail, but the output schema and the schema's per-parameter descriptions cover much. The description adds essential context for the less obvious aspects, making it fairly complete.

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 schema has 100% description coverage for parameters, so the baseline is 3. The description adds value by explaining the purpose of `owner_timezone` (honest due dates) and `confirm_delete_all` (explicit confirmation for delete_all). It also hints at relationships between action and required params via conditional schema. The description goes beyond the schema by explaining the context for these parameters, so a 4 is warranted.

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 the tool performs 'Create, update, complete, list, or bulk soft-delete authorized TODOs' with specific verbs and resources. It clearly covers the main actions and differentiates from siblings like open_todo_board or ledger by focusing on CRUD operations for TODOs.

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 guidance: for action='list' it instructs to provide the user's real IANA owner_timezone or use a saved owner profile timezone to ensure honest due dates. It also specifies that delete_all should only be used after explicit user confirmation and requires confirm_delete_all=true. These are clear usage directives beyond what the schema states.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.
contentNoText body to save, such as a memory, TODO/action item, event note, or state summary.
memory_idYesExact XMemo memory reference shown by search or recall.
memory_typeNoOptional memory type/category for user-facing updates, such as semantic, episodic, or procedural.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, setting the safety baseline. The description adds useful context about the need for an exact reference and the updatable aspects, but it does not explain side effects like partial vs. full replacement, handling of non-existent IDs, or whether all optional fields default behavior. Thus it adds some value beyond annotations but not extensive.

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 concise: two sentences, no filler, and front-loaded with the action and resource. It covers the purpose and the key constraint (exact reference) without 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?

For a mutating tool with an output schema and annotations, the description is reasonably complete: it explains the trigger, the aspects updated, and the need for an exact reference. However, with many sibling tools including project_workspace_memory_update, it does not explicitly distinguish from that potentially similar tool, which could cause confusion in selection. The description is adequate but not exhaustive.

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 descriptions already cover 100% of the four parameters with detailed explanations. The description's mention of 'content, location, or type' maps to the content, path, and memory_type parameters, reinforcing the schema but not adding new semantics. The baseline for full schema coverage is 3, and no additional parameter insight is provided.

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 updates a specific saved memory, with a specific verb ('Updates') and resource ('saved memory'). It specifies the scope (content, location, or type) and the trigger (user asks to correct, revise, move, or reclassify), distinguishing it from create/delete/read siblings like 'remember', 'forget', and 'search_memory'.

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 provides clear context for when to use the tool ('when the user asks to correct, revise, move, or reclassify it') and notes that an exact reference identifies the record, implying that memory_id is required and likely obtained from prior search/recall. It does not explicitly name alternatives or exclusions, but the context is sufficient for most cases.

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

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a persistent, cross-tool memory layer for AI coding agents via MCP, enabling storage and retrieval of decisions, preferences, and context across different tools and models.
    1
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Governed shared memory platform for AI agents and agent fleets. Provides persistent memory, cross-agent knowledge sharing, permissions, audit trails, and multi-tenant isolation through a Model Context Protocol (MCP) server.
    4
    468
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent, scoped shared memory for collaborating AI agents, with tools for storing observations, semantic recall, and handoff workflows. Backed by PostgreSQL and exposed through MCP.
    1
    Apache 2.0

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.