memory_recall
Hybrid recall across memory pillars within the caller's org.
Cheap two-step recall: call with detail="summary" first (id,
pillar, title/subject, one-line summary, score, provenance per hit),
then memory_get(ids=[...]) for the full text of the few hits you
will use. detail="full" (default) returns full records at once.
Default scope searches durable pillars only (semantic, episodic,
procedural, skill, strategic, work). Pass scope=["working"] to
include this chat's open session turns. Shared brain on durable
pillars: pass agent="cursor" only to narrow semantic/episodic.
For entity/competitor questions use a short keyword anchor in
query (e.g. "mex") plus repo / github. Use
explain=true; prefer hits with matched_keyword: true.
Default recall is current truth (superseded/merged rows are omitted);
pass include_superseded=true for the replacement chain, or
as_of=<ISO-8601> for transaction-time point-in-time current truth.
When namespace= is set, semantic/episodic hits outside that container
are excluded. Hits include a small provenance citation block
(id, kind, timestamps, optional retired_at, optional title, optional
source) — metadata only, never page HTML. Result includes org +
bound.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | Max records to return | |
| repo | No | Workspace slug of your current repo. When set, durable memories tagged for this repo are boosted (ranked higher); nothing is hidden — cross-repo and un-scoped memories still appear. Pass your workspace slug when recalling for code/repo-specific work. | |
| agent | No | Optional filter — restrict semantic/episodic results to this agent's writes. Default (None) is the shared brain: every agent's durable memories in the org are visible. Working memory is always scoped to the caller regardless. | |
| as_of | No | ISO-8601 timestamp: answer from what was current at that instant (transaction time). created_at <= as_of and not retired before it; soft-deleted rows are never returned. Semantic and episodic memory only (no working buffer, graph expansion, playbooks, skills, strategy or work), read with the same scope and share rules as live recall; relative dates in the query are relative to as_of. Omit for live current truth. A future or unparseable value is a 422 invalid_body on as_of. When set, wins over include_superseded. | |
| query | Yes | Natural-language query | |
| scope | No | Pillars to search. Default (null): durable pillars only (semantic, episodic, procedural, skill, strategic, work) — working is omitted. Add scope=['working'] when you need this chat's open session turns. | |
| detail | No | 'full' (default) returns every hit's full record. 'summary' is the cheap scan mode and the preferred first step: per hit only id, pillar, kind, title/subject, a one-line summary (~160 chars), score, matched_keyword (with explain=true) and provenance. Then call memory_get(ids=[...]) for the few records you will use. Summary mode ignores verbose. | full |
| github | No | GitHub repository as owner/repo. Boosts memories tagged github:<owner>/<repo> (portable across checkout paths). | |
| explain | No | When true, include per-record retrieval attribution in metadata.ranking (base RRF, every factor including bounded feedback trust from memory_feedback votes, relevance floor verdict, diversity penalty; its score equals the hit's score), plus read-only feedback_score when votes exist | |
| filters | No | Optional AND filter. Keys (all optional): kind (fact|preference|event|note|outreach|skill|procedure), pillar (semantic|episodic|procedural|skill|strategic|work), subject (exact, case-insensitive), tags (list; record must include every tag), since / until (ISO datetimes). Example: {"kind": "fact", "subject": "HolderBrief", "tags": ["decision"]}. Nested AND/OR/NOT is not supported — omit a key instead. Empty result retries once without the filter (filter_relaxed=true on the result). Not for named playbook/skill/entity — use get-by-name tools. | |
| verbose | No | When false, truncate record content and omit metadata | |
| namespace | No | Org-allowlisted container. When set, semantic/episodic hits outside this slug are excluded (not merely demoted). Omit to keep shared-org recall. repo=/github= still boost. Unknown slugs fail. Example: github:acme/app or project:alpha. | |
| time_range | No | Optional time bounds for episodic/working hits | |
| deadline_seconds | No | Optional wall-clock budget for this call. Finished pillars are returned with errors_by_pillar timeout codes and degraded=true instead of letting the MCP client kill the whole call. Omit to use the server TEAMSHARED_RECALL_DEADLINE_SECONDS default (unset = no cutoff). | |
| include_superseded | No | When true, also return superseded/merged history. Default is current truth only. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||