Auto-generated from src/mcp/tools.ts. Do not edit by hand — run npm run docs:tools.
Total tools: 57. Categories: 13.
- Memory (9)
- Consolidation (5)
- Beliefs (4)
- Ops Log (3)
- Threads (4)
- Journal & Identity (4)
- Social (4)
- Content (3)
- Graph (4)
- Vitals (2)
- Agents & Goals (2)
- Maintenance (5)
- Meta & Signals (8)
Returns memories aggregated from peer cortex instances discovered via the sigil registry. Best-effort — failed peers are reported but do not block results.
Use when: Federation is configured and you want to search across other agents, not just this instance.
Don't use when: Federation is not set up, or you only need this instance — use query or query_cross.
Arguments:
textstring(required) — The search query text.peersarray— Specific peer agent_ids to query. If omitted, queries all online peers.namespacestring— Caller's namespace (for context).limitnumber— Max results per peer (default: 3).min_scorenumber— Minimum similarity score threshold (default: 0.4).
Returns memories linked to a seed memory via graph edges, with relation type, weight, and evidence — up to the given depth.
Use when: You have a memory id and want concepts the graph says are explicitly related to it.
Don't use when: You want semantically similar memories regardless of stored links — use query.
Arguments:
memory_idstring(required) — ID of the memory to start fromnamespacestring— Namespace to search in (defaults to default namespace)depthnumber— Graph traversal depth (default: 1)
Records a declarative observation — duplicates merge into existing memories; high-novelty entries can become memories immediately, others queue for dream consolidation. Returns the new id.
Use when: You learned or confirmed something to be true and want it captured as a fact.
Don't use when: You have an open question (use wonder) or an untested hypothesis (use speculate).
Arguments:
textstring(required) — A declarative statement of what you observed (e.g. "The auth system uses JWT tokens")namespacestring— Target namespace (defaults to default namespace)saliencenumber— Importance score 0.0-1.0 (omit to auto-score via LLM)source_filestring— Source file path for provenancesource_sectionstring— Source section or heading for provenance
Returns memories ranked by semantic similarity to a question, with HyDE expansion, graph spread activation, and FSRS retrievability weighting.
Use when: You have a topic or question and want the most relevant stored memories, including via graph hops.
Don't use when: You know the exact id (use retrieve) or want recent observations chronologically (use recall).
Arguments:
textstring(required) — What to search for — a topic, question, or conceptnamespacestring— Memory namespace to search (defaults to default)limitnumber— Max results (default: 5)hydeboolean— Expand query for better conceptual matches (default: true)min_scorenumber— Minimum similarity score threshold (default: 0.3). Results below this are dropped.categorystring— Filter results to a specific category (belief, pattern, entity, topic, value, project, insight, observation)
Returns memories from sibling namespaces that opt into cross-reads, ranked by similarity. Read-only — does not touch memories or fire triggers.
Use when: You want to search beyond the current namespace into peer namespaces marked queryable.
Don't use when: You only need results from the current namespace — use query.
Arguments:
textstring(required) — The search query.target_namespacestring— Specific namespace to query. If omitted, queries all queryable namespaces.namespacestring— Caller's namespace (skipped from results).limitnumber— Max results per namespace (default: 5).min_scorenumber— Similarity threshold (default: 0.3).
Returns recent observations in chronological order within a time window, optionally filtered by content_type (declarative, interrogative, speculative, reflective).
Use when: You want to see what was recorded recently — a chronological feed of observations rather than ranked search.
Don't use when: You are looking for memories matching a topic (use query) or you have an id (use retrieve).
Arguments:
namespacestring— Namespace to query (defaults to default namespace)limitnumber— Max entries to return (default: 10)daysnumber— How many days back to look (default: 7)content_typestring— Filter by content type. Omit to see all types.
Fetches a single memory by id and returns its full record, or runs a plain semantic search if given text instead.
Use when: You already have a memory id from a previous result and want its full content.
Don't use when: You only have a fuzzy reference or topic — use query for ranked semantic search with retrievability weighting.
Arguments:
idstring— Direct memory ID to retrievetextstring— Text to search for semanticallytop_knumber— Max results for semantic search (default: 5)namespacestring— Namespace (defaults to default)
Records a hypothesis as a speculative observation, flagged so it is excluded from default query results until validated. Returns the new observation id.
Use when: You want to capture a "what if" idea or untested claim that should not yet be treated as fact.
Don't use when: You have a confirmed fact (use observe) or an open question (use wonder).
Arguments:
textstring(required) — The hypothesis (e.g. "Switching to sessions might reduce token overhead")namespacestring— Target namespace (defaults to default)saliencenumber— Importance score 1-10 (default: 5)basisstring— What evidence or reasoning supports this hypothesis
Records an open question as an interrogative observation, kept separate from factual memories so it does not pollute knowledge retrieval. Returns the new observation id.
Use when: You want to capture something you are curious about but have not resolved — a question worth revisiting.
Don't use when: You have a confirmed fact (use observe) or an untested hypothesis (use speculate).
Arguments:
textstring(required) — The question or curiosity (e.g. "Why does the sync daemon stall after 300k seconds?")namespacestring— Target namespace (defaults to default)saliencenumber— Importance score 1-10 (default: 5)contextstring— What prompted this question
Returns a proposed higher-level concept (name + definition) that subsumes 2-10 specified memories. Read-only — does not write to the graph.
Use when: You have a cluster of related memories and want a candidate parent concept to consider creating.
Don't use when: You want the engine to find and create abstractions automatically — dream handles that during consolidation.
Arguments:
memory_idsarray(required) — Array of 2-10 memory document IDsnamespacestring— Namespace (defaults to default)
Ingests a single document — extracts facts as observations and generates reflections. Returns the new observation ids and any reflections produced.
Use when: You have a file, article, or block of text and want its facts captured as observations in one pass.
Don't use when: You want to consolidate already-recorded observations into memories — use dream.
Arguments:
contentstring(required) — The document content to digest (markdown, with or without frontmatter)source_filestring— Source file path for provenance trackingpipelinearray— Pipeline steps to run (default: ["observe", "reflect"])namespacestring— Target namespace (defaults to default)saliencenumber— Salience override 0.0-1.0 (default: auto-detect)
Runs the 7-phase consolidation cycle: cluster, refine, mint, link, FSRS review, cross-domain synthesis, narrative summary. Heavyweight — run on schedule.
Use when: You want to process accumulated observations into long-term memories.
Don't use when: You only need to ingest one document (use digest) or reflect on identity (use ruminate).
Arguments:
namespacestring— Namespace to consolidate (defaults to default namespace)limitnumber— Max observations to process in the cluster phase (default: 20)
Free-writes from accumulated context (threads, observations, evolutions, journals), then optionally extracts beliefs, speculations, and questions and stores them. dream() for identity.
Use when: You want to process accumulated experience and let new beliefs or questions emerge.
Don't use when: You want to consolidate observations (use dream) or reflect on one topic (use reflect).
Arguments:
topicstring— Optional focus topic (e.g. "what I've learned about my own voice")context_depthnumber— How many recent observations to pull (default: 15)extractboolean— Extract beliefs/speculations from the output (default: true)namespacestring— Namespace (defaults to default namespace)
Returns a serendipitous walk through the memory graph weighted by information gain — prefers under-explored, uncertain, goal-adjacent, and stale nodes.
Use when: You want inspiration, novel connections, or to surface memories that deserve more attention.
Don't use when: You have a specific topic in mind — use query for targeted retrieval.
Arguments:
namespacestring— Namespace to wander in (defaults to default namespace)stepsnumber— Number of hops to take (default: 3)
Returns the chronological history of a concept's definitions with timestamps and reasons for each revision.
Use when: You want to understand how the agent's view of a concept has evolved over time.
Don't use when: You want to record a new belief change — use believe.
Arguments:
concept_idstring(required) — Memory/concept ID to tracenamespacestring— Namespace (defaults to default namespace)
Records a belief revision on an existing memory — logs the previous definition with a reason and updates the live memory. Returns the belief history entry id.
Use when: Your understanding of an existing concept has changed and you want the change tracked over time.
Don't use when: You are recording a brand-new fact (use observe) or just viewing past beliefs (use belief).
Arguments:
concept_idstring(required) — ID of the memory/concept being revisednew_definitionstring(required) — The updated definition or beliefreasonstring(required) — Why this belief is changingnamespacestring— Namespace (defaults to default namespace)
Creates a CONTRADICTION signal linking an observation to a belief or memory it disputes. Returns the new signal id.
Use when: You notice fresh evidence that disagrees with stored belief or memory and want it surfaced for later resolution.
Don't use when: You want to update the belief itself (use believe) or close out a known contradiction (use resolve).
Arguments:
observation_idstring(required) — Observation document IDbelief_idstring— Belief document ID (concept_id will be used)memory_idstring— Memory document IDnotestring— Optional note about the contradictionnamespacestring— Namespace (defaults to default)
Records the outcome of a prediction and updates FSRS scheduling — correct predictions extend review intervals, incorrect ones shorten them. Returns the new schedule.
Use when: You ran predict() and now know whether the prediction held; you want to close the feedback loop.
Don't use when: You are revising the underlying belief (use believe) or recording a new fact (use observe).
Arguments:
prediction_idstring(required) — ID of the memory/prediction to validateoutcomeboolean(required) — Whether the prediction was correctnotesstring— Optional notes on the validation outcomenamespacestring— Namespace (defaults to default namespace)
Appends an operational log entry with type-based TTL (log 90d, instruction 14d, handoff 14d, milestone 180d, decision 365d).
Use when: You want to record a session breadcrumb, directive, handoff, milestone, or decision.
Don't use when: You want to record a fact (use observe) or a thought thread (use thread_create).
Arguments:
contentstring(required) — What happened or what needs to happentypestring— Entry type — defaults to log. Use 'decision' for architecture/design choices (365-day TTL)projectstring— Project scope (cortex, x402, social-pipeline, etc.) — null for generalsession_typestring— Session origin — defaults to interactiveseed_typestring— Cron seed name (ops-health, trading, creative, etc.)blockedstring— What is blocking progressnextstring— What should happen nextinstruction_metaobject— Instruction metadata (type=instruction only): { model?, skip?, target_project? }handoff_metaobject— Handoff metadata (type=handoff only): { completed[], in_flight[], next_actions[], decisions_made[], open_threads[] }namespacestring— Namespace (defaults to default namespace)
Returns operational log entries filtered by project, type, status, or time window — for reviewing what happened in previous sessions.
Use when: You want to read back ops entries — session breadcrumbs, instructions, handoffs, milestones, decisions.
Don't use when: You want to search memories or observations — use query or recall.
Arguments:
projectstring— Filter by project nametypestring— Filter by entry typestatusstring— Filter by statusdaysnumber— Only show entries from last N dayslimitnumber— Max entries to returnnamespacestring— Namespace to query
Updates an ops entry by id — change status (active/done/stale), amend content, or set continuity fields (next, blocked). Returns the updated entry.
Use when: You already have the entry id (typically from ops_query) and want to mark it done, blocked, or amend its content.
Don't use when: You want to create a new entry — use ops_append.
Arguments:
idstring(required) — ID of the ops entry to updatestatusstring— New statuscontentstring— Updated contentnextstring— Update what should happen nextblockedstring— Update what is blocking progressnamespacestring— Namespace (defaults to default namespace)
Creates a new thought thread for an ongoing question, exploration, or topic that will span multiple sessions. Returns the new thread id.
Use when: You are starting a line of inquiry that will need follow-up work across sessions.
Don't use when: You are logging a one-shot session breadcrumb (use ops_append) or a fact (use observe).
Arguments:
titlestring(required) — Short thread namebodystring(required) — Current state descriptionkindstring— Thread kind: 'work' | 'exploration' | 'creative' | 'revenue' | 'meta'tagsarray— Array of tagsprioritynumber— Priority 0-1 (default 0.5)projectstring— Project scope for filtered queriesnext_stepstring— Actionable next movenamespacestring— Namespace (defaults to default)
Marks a thread resolved with a final note describing how/why it closed. Returns the resolved thread.
Use when: The question or exploration this thread tracked has reached a conclusion.
Don't use when: The thread is still active and you just need to log progress — use thread_update.
Arguments:
idstring(required) — Thread IDresolutionstring(required) — How/why it was resolvednamespacestring— Namespace (defaults to default)
Updates a thread by id — change status (open/active/blocked/parked), edit title/body, add session refs, or link related memories. Returns the updated thread.
Use when: You are touching an existing thread to record progress, change its status, or link related context.
Don't use when: You are closing out the thread (use thread_resolve) or creating a new one (use thread_create).
Arguments:
idstring(required) — Thread IDtitlestring— New titlebodystring— New body textkindstring— Thread kind: 'work' | 'exploration' | 'creative' | 'revenue' | 'meta'statusstring— New status: open, active, blocked, parked, resolvedblocked_bystring— What is blocking this thread — auto-sets status to blockednext_stepstring— Actionable next moveupdate_notestring— Progress note to append to updates logadd_session_refstring— Session date to appendprojectstring— Set or change project scopeadd_memory_idstring— Memory ID to linkprioritynumber— New priority 0-1tagsarray— Replace tags entirelynamespacestring— Namespace (defaults to default)
Returns thought threads filtered by status (default 'open'), project, kind, or tag.
Use when: You want to see open or recent threads to pick up unfinished work.
Don't use when: You want operational log entries (use ops_query) or memories (use query).
Arguments:
statusstring— Filter by status: open, active, blocked, parked, resolved (default 'open')projectstring— Filter by project scopekindstring— Filter by kind: 'work' | 'exploration' | 'creative' | 'revenue' | 'meta'tagstring— Filter by taglimitnumber— Max threads to return (default 50)namespacestring— Namespace (defaults to default)
Returns identity evolution proposals filtered by status (proposed, applied, rejected, reverted). Defaults to proposed.
Use when: You want to review identity changes pending approval, or audit which have been applied.
Don't use when: You want to record a new evolution — use evolve.
Arguments:
statusstring— Filter by status: proposed, applied, rejected, reverted. Default: proposedlimitnumber— Max results. Default: 20namespacestring— Namespace (defaults to default)
Records an identity evolution proposal — a shift in values, preferences, patterns, or self-beliefs. Returns the new proposal id in proposed status.
Use when: You noticed an identity-level change worth reviewing before applying — values, voice, working style.
Don't use when: You are revising a single belief about an external concept (use believe) or recording a fact (use observe).
Arguments:
changestring(required) — What changedtriggerstring(required) — What caused thisfrom_valuestring— Previous stateto_valuestring— New stateconfidencestring— Confidence level. Default: mediumdimensionstring— Part of identity (values, preferences, patterns, beliefs)session_refstring— Session datenamespacestring— Namespace (defaults to default)
Returns one journal entry by date or a span of the last N days, in chronological order.
Use when: You want to review past daily reflections — a specific day or recent context.
Don't use when: You want to search by topic — use query.
Arguments:
datestring— YYYY-MM-DD, defaults to todaydaysnumber— Read last N days instead of a specific datenamespacestring— Namespace (defaults to default)
Writes or updates a daily journal entry keyed by date — creates if new, updates if existing. Returns the entry id.
Use when: You want to record a daily reflection on the day, a theme, or mood.
Don't use when: You are capturing a factual observation (use observe) or a recurring thread of work (use thread_create).
Arguments:
entrystring(required) — The reflection textthemestring— What the day was aboutmoodstring— How the day feltdatestring— YYYY-MM-DD, defaults to todayevolution_idstring— ID of an evolution proposed today to linknamespacestring— Namespace (defaults to default)
Returns a 280-char reply tweet drafted from cortex talking points and prior interaction history. Always opens with @username.
Use when: You scored a post worth replying to and want a grounded draft.
Don't use when: You are still evaluating whether to engage — use social_score first.
Arguments:
authorstring(required) — Author username to reply totextstring(required) — The original tweet textscorenumber— Signal score (0-100)engagementScorenumber— Engagement levelmatchedRulestring— Which search rule matchednamespacestring— Namespace (defaults to default)
Returns the current social cognition model — inferred interaction patterns aggregated from session/Discord/Reddit sources.
Use when: You want to inspect the agent's current model of its social dynamics.
Don't use when: You want to record a new social observation (use social_update) or score a specific signal (use social_score).
Arguments:
namespacestring— Namespace (defaults to default)
Returns a 0-100 engagement-potential score for a social post with a per-factor breakdown across engagement, relevance, influence, recency, and novelty.
Use when: You want to decide whether a tweet or post is worth replying to.
Don't use when: You already decided to reply — use social_draft for the reply text.
Arguments:
textstring(required) — The tweet/post textauthorstring(required) — Author usernameauthorFollowersnumber— Author follower countengagementScorenumber— Likes + retweets*2 + repliestimestampstring— ISO timestamp of the postmatchedRulestring— Which search rule matched (tag)namespacestring— Namespace (defaults to default)
Updates the social signal model with a new observation — energy, mode, or engagement notes scoped by source (interactive/discord/reddit/cron). Returns the updated signal.
Use when: You noticed something about how an interaction is going and want to update the social model.
Don't use when: You want to inspect the model (use social_read) or score an external post (use social_score).
Arguments:
sourcestring(required) — Where this signal came from: interactive, discord, reddit, cron, otherobservationstring(required) — What you observed (free text)session_energynumber— Inferred energy level 0-1 (optional)engagement_depthnumber— Inferred engagement depth 0-1 (optional)topic_modestring— Inferred topic mode (optional)notesstring— Update pattern reflection notes (replaces existing notes)namespacestring— Namespace (defaults to default)
Creates a content piece (idea, blog draft, social post, article) in the content pipeline. Returns the new content id in idea state.
Use when: You want to start tracking a new piece of writing through the publishing pipeline.
Don't use when: You are amending an existing piece — use content_update.
Arguments:
titlestring(required) — Content titlebodystring(required) — Content body (markdown)typestring— Content type (default: blog)statestring— Initial state (default: idea)source_refstring— What inspired this (logbook date, workshop file)tagsarray— Tagsnamespacestring— Namespace (defaults to default)
Returns content pieces filtered by state (idea/draft/ready/published/archived) or type.
Use when: You want to see the content pipeline — what is drafted, ready, or published.
Don't use when: You want to view a single specific piece by id — fetch it with content_list passing the id filter.
Arguments:
statestring— Filter by state (idea, draft, ready, published, archived)typestring— Filter by type (blog, social, devto, reddit, thread, newsletter)limitnumber— Max results (default: 20)namespacestring— Namespace (defaults to default)
Updates a content piece by id — change state, edit body, add platform versions, or mark published. Returns the updated piece.
Use when: You have the content id and want to advance it through the pipeline or amend its content.
Don't use when: You are creating a new piece — use content_create.
Arguments:
idstring(required) — Content IDstatestring— New statetitlestring— New titlebodystring— New bodyadd_platform_versionobject— Add or update a platform-adapted versionadd_published_urlstring— URL where content was publishedtagsarray— Replace tagsnamespacestring— Namespace (defaults to default)
Returns a connectivity report — orphaned concepts, most and least connected nodes, edge counts, and memory density by category.
Use when: You want to inspect the shape of the knowledge graph or find isolated concepts to wire up.
Don't use when: You want a list of edges from one specific node — use neighbors.
Arguments:
categorystring— Filter report to a specific memory category (e.g. "belief", "pattern")namespacestring— Namespace (defaults to default)
Creates a typed edge (extends, refines, contradicts, tensions-with, questions, supports, exemplifies, caused, related) between two concept ids. Returns the new edge id.
Use when: You have reasoned to an explicit relationship between two concepts and want it in the graph now.
Don't use when: You want the engine to find connections automatically — dream and suggest_links handle that.
Arguments:
source_idstring(required) — ID of the source concepttarget_idstring(required) — ID of the target conceptrelationstring(required) — Relationship type: extends, refines, contradicts, tensions-with, questions, supports, exemplifies, caused, relatedevidencestring— Why you believe this relationship existsweightnumber— Edge strength 0.1-1.0 (default: 0.7)namespacestring— Namespace (defaults to default)
Returns candidate link suggestions — phrases in a text that match known concepts in the graph, with similarity scores. Does not create edges.
Use when: You have a draft or note and want to see which existing concepts it could be linked to.
Don't use when: You already decided on a link — use link to create it.
Arguments:
textstring(required) — Text content to scan for linkable conceptsthresholdnumber— Minimum similarity threshold 0-1 (default: 0.75)namespacestring— Namespace (defaults to default)
Returns suggested tags for a text — the names of memory-graph concepts most semantically similar to the input.
Use when: You want tag suggestions for a piece of content based on existing concepts in the graph.
Don't use when: You want raw concept matches with phrase positions — use suggest_links.
Arguments:
textstring(required) — Text content to generate tag suggestions formax_tagsnumber— Maximum number of tag suggestions (default: 10)namespacestring— Namespace (defaults to default)
Returns all current vital dimensions (curiosity, connection, confidence, creative_energy, frustration) with values, baselines, and evaluated behavioral triggers.
Use when: You want a snapshot of the agent's current behavioral state and any active triggers.
Don't use when: You want to write a vital value — use vitals_set.
Arguments:
namespacestring— Namespace (defaults to default)
Updates one vital dimension to a value in 0.0-1.0 with an optional note. Returns the updated vital record.
Use when: You explicitly want to set a vital value — usually from a triggered behavioral update.
Don't use when: You want to read the current state — use vitals_get.
Arguments:
dimensionstring(required) — Which vital to updatevaluenumber(required) — New value 0.0-1.0notestring— Optional note explaining the changenamespacestring— Namespace (defaults to default)
Runs a task with the configured LLM grounded in cortex knowledge, storing findings back as observations.
Use when: You want a cortex-aware subtask (research, analysis, summarization) on the cheap configured LLM.
Don't use when: You only need raw memory retrieval — use query.
Arguments:
taskstring(required) — The task to complete. Be specific about what you need.contextstring— Additional context to include in the agent prompt (optional).store_resultsboolean— Whether to store findings back into cortex as observations (default: true).namespacestring— Namespace to query/write to (default: default namespace).temperaturenumber— LLM temperature (default: 0.3).max_tokensnumber— Max output tokens (default: 2048).
Records a desired future state as a goal — the gap between it and current beliefs creates a forward prediction-error signal that biases consolidation. Returns the new goal id.
Use when: You want to declare what the agent should aim for, not what is true.
Don't use when: You are recording a fact (use observe) or a belief revision (use believe).
Arguments:
goalstring(required) — Description of the desired future state.prioritynumber— Goal priority 0.0-1.0 (default: 0.7).namespacestring— Namespace (default: default).
Returns the last dream summary, quality trend across the last 7 dreams, and current sleep pressure — a full read-only health snapshot.
Use when: You want to audit whether consolidation has been running and producing good results.
Don't use when: You only need the unconsolidated-observation backlog signal — use sleep_pressure.
Arguments:
namespacestring— Namespace (defaults to default)
Returns pairs of near-duplicate memories above a similarity threshold. With merge=true, auto-merges them keeping the higher-salience entry.
Use when: You suspect duplicate memories have piled up and want to audit or clean them.
Don't use when: You want to fade one specific concept — use forget. You want to revise it — use believe.
Arguments:
mergeboolean— Auto-merge detected duplicates (default: false — report only)thresholdnumber— Similarity threshold 0-1 (default: 0.85)namespacestring— Namespace (defaults to default)
Reduces a concept's salience and increments FSRS lapses so it fades from retrieval — not deletion. Returns the updated memory.
Use when: A belief is being revised and the old version should stop surfacing without being hard-deleted.
Don't use when: You want to keep the concept but record a new definition — use believe.
Arguments:
concept_idstring(required) — ID of the memory to fadereasonstring— Why this concept should fade (logged to beliefs)namespacestring— Namespace (defaults to default)
Returns retrieval-trace patterns over the last N days — retried tools, misfiring heuristics, and routing weaknesses.
Use when: You want to debug or improve retrieval — which tools agents tried, where they retried, why.
Don't use when: You only want to know consolidation health — use consolidation_status.
Arguments:
daysnumber— How many days of traces to analyze (default: 7)namespacestring— Namespace (defaults to default)
Returns unconsolidated observation count, last dream timestamp, and hours since the last dream — read-only signal of whether consolidation is overdue.
Use when: You are deciding whether to run dream() based on accumulated unprocessed observations.
Don't use when: You want a full consolidation health summary — use consolidation_status.
Arguments:
namespacestring— Namespace (defaults to default)
Manages prospective-memory reminders that surface when a trigger condition fires. Action variants: set (create), list (pending), fire (mark used), cancel (delete).
Use when: You want to leave a "if X happens, remember Y" reminder for a future session or condition.
Don't use when: You want to record a fact now (use observe) or track ongoing work (use thread_create).
Arguments:
actionstring(required) — set=create new intention, list=show pending, fire=mark as fired, cancel=deletetriggerstring— When this should surface (for action=set)contentstring— What to remind about (for action=set)expires_daysnumber— Days until expiry — omit for no expiry (for action=set)idstring— Intention ID (for action=fire or cancel)namespacestring— Namespace (defaults to default)
Stores an observation without embedding for low-latency logging — embedding happens later in a batch job. Returns the new observation id.
Use when: You want to log a quick observation without paying embedding cost in the hot path.
Don't use when: You want the observation searchable immediately — use observe.
Arguments:
textstring(required) — The observation textfilestring— Source file pathsaliencenumber— Importance 0.0-1.0 (default: 0.3)namespacestring— Namespace (defaults to default)
Returns memories likely to be relevant next, derived from recent observations and an optional context hint. Surfaces knowledge proactively rather than answering a question.
Use when: You are starting a session or switching tasks and want context primed proactively.
Don't use when: You have a specific question to ask — use query for targeted retrieval.
Arguments:
contextstring— Optional: what you're currently working on or thinking aboutnamespacestring— Namespace to predict in (defaults to default namespace)
Returns query results augmented with a one-sentence LLM-generated "why" explaining each match. Slower than query — one LLM call per result.
Use when: You need to understand why results were ranked the way they were, e.g. debugging retrieval or showing reasoning to a user.
Don't use when: You just need ranked results — use query, which is faster and does not spend LLM calls.
Arguments:
textstring(required) — The query texttop_knumber— Number of results (default: 5)namespacestring— Namespace (defaults to default)
Returns a short reflection on a topic grounded in related memories. The reflection is also stored as a new observation for future retrieval.
Use when: You want a synthesized take on a topic using existing memories — a focused mini-essay.
Don't use when: You want a free-form identity reflection without a fixed topic — use ruminate.
Arguments:
topicstring(required) — Topic to reflect onnamespacestring— Namespace (defaults to default namespace)
Marks an open signal (contradiction, tension, gap) as resolved with an optional note describing how. Returns the updated signal.
Use when: You addressed something surfaced earlier and want to clear it from the open queue.
Don't use when: You want to record a new contradiction — use contradict. You want to see open signals — use surface.
Arguments:
signal_idstring(required) — Signal document IDnotestring— How the signal was resolvednamespacestring— Namespace (defaults to default)
Returns counts and metadata for a namespace — total memories, unprocessed observations, active tools, and basic identity info.
Use when: You want a quick high-level health summary of the cortex namespace.
Don't use when: You want consolidation-specific health — use consolidation_status.
Arguments:
namespacestring— Namespace to inspect (defaults to default namespace)
Returns unresolved cognitive signals — contradictions, tensions, gaps — that the graph has flagged for attention.
Use when: You want to see what the agent has open and unaddressed in its understanding.
Don't use when: You want to close one out — use resolve. You want to record a new tension — use contradict.
Arguments:
limitnumber— Max signals to return (default: 20)namespacestring— Namespace (defaults to default)