Skip to main content
Glama

Recall XMemo memory

recall
Read-onlyIdempotent

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.

Input Schema

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

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema 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. Changed1 schema 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"
      +}
  3. Changed2 schema 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)."
  4. Changed10 schema 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"
      +}
  5. Changed3 schema 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."
  6. Changed5 schema 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"
      +}
  7. Changed7 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / agent_id
      Removed value: -{
      -  "default": "",
      -  "description": "Optional client-supplied agent label for memory attribution.",
      -  "title": "Agent Id",
      -  "type": "string"
      -}
    • removedInput schema / properties / agent_instance_id
      Removed value: -{
      -  "default": "",
      -  "description": "Optional stable, non-secret agent instance ID for per-client attribution.",
      -  "title": "Agent Instance Id",
      -  "type": "string"
      -}
    • removedInput schema / properties / explain
      Removed value: -{
      -  "default": false,
      -  "description": "Whether to include retrieval explanation details with search or recall results.",
      -  "title": "Explain",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / memory_type
      Removed value: -{
      -  "default": "%",
      -  "description": "Memory type/category filter or value, such as episodic, identity, procedural, semantic, working, auto, or %.",
      -  "title": "Memory Type",
      -  "type": "string"
      -}
    • removedInput schema / properties / path_filter
      Removed value: -{
      -  "default": "%",
      -  "description": "Memory path filter; % matches all paths.",
      -  "title": "Path Filter",
      -  "type": "string"
      -}
    • removedInput schema / properties / prefer_working
      Removed value: -{
      -  "default": false,
      -  "description": "Whether to prioritize working/session-state memories in retrieval.",
      -  "title": "Prefer Working",
      -  "type": "boolean"
      -}
  8. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.