Skip to content

Tool reference

The 46 tools below are what your MCP client sees on tools/list. Descriptions mirror packages/mcp/src/tools.ts verbatim — that file is the source of truth.

Capture a single turn (user message, assistant reply, tool call, agent event). Idempotent by client_turn_id when supplied. Primary write path.

inputtypenotes
role"user" | "assistant" | "tool" | "system" | "agent" | "event"Default event.
contentstringUp to 64 KB.
session_idstring?Group turns into a session for summarization + scoped search.
metadataRecord<string, unknown>?Arbitrary tags; included in the dedup hash.
client_turn_idstring?Caller-supplied idempotency token; replays return the same turn_id.
toolstring?Surface that produced the write: claude-code, cursor, cli/observe, etc. Stamps every turn for cross-tool attribution.
requires_claimstring?Coordination gate. Engine looks up claim:${key} and verifies an active claim exists. See Team coordination.
holderstring?If set with requires_claim, must match the active claim holder.
claim_policy"soft" | "hard"Default soft: record + stamp claim_violation. hard rejects the write.

Explicit long-term memory write. Survives consolidation; bypasses turn-extraction heuristics.

inputtypenotes
contentstringUp to 8 KB.
tagsstring[]?Up to 20 tags, 64 chars each.
ttl_msnumber?Soft-deletes the memory after this many ms.
metadataRecord<string, unknown>?
toolstring?Surface that produced the pin (cross-tool attribution).
derived_from_turn_idsstring[]?Up to 50 source turn ids. Engine validates each against this project; unresolved ids are dropped (reported on derived_from_dropped) rather than rejecting the pin.

Soft-delete a memory by id. Removes from search index; audit trail preserved.

Produce or refresh the rolling summary for a session. Auto-runs every ~20 turns or 10 minutes; pass force=true to summarize now. Writes a memory of kind=consolidated and broadcasts consolidation_completed.

Promote a durable fact (preference, convention, API contract) out of a session into a semantic-tier memory. Writes a memory of kind=semantic anchored to the supplied source turns.

inputtypenotes
contentstringUp to 4 KB.
tagsstring[]?Up to 20 tags, 64 chars each.
metadataRecord<string, unknown>?
toolstring?Surface attribution.
derived_from_turn_idsstring[]?Up to 50 source turn ids.

Hybrid (dense + lexical + DO-hot) retrieval over recorded turns and pinned memories for this project.

inputtypenotes
querystringUp to 4 000 chars.
knumber?1–100, default 10.
session_idstring?Restrict to a session.
mode"auto" | "chunks" | "summaries" | "entities" | "code" | "skills"Default auto. See Quickstart §2.
filtersRecord<string, unknown>?Free-form metadata filter.
actorstring?Provenance scope: only hits from this actor email.
toolstring?Provenance scope: only hits from this tool surface.
since / untilnumber?Time-window bounds (ms epoch).

actor / tool / since / until are silently ignored by mode=skills and mode=entities. Both have semantics that don’t compose with provenance scoping.

Look up structured entities extracted from turns: symbols (camelCase/snake_case identifiers), files (paths with extensions), error codes (TS2345, ERR_*, EACCES), and CLI commands. Deterministic exact/prefix match. Pair with search_memory for full-text recall.

inputtypenotes
querystring
kinds("symbol" | "file" | "error_code" | "command")[]?Restrict to a subset.
knumber?1–100, default 10.

Chronological recall of the most recent turns for this project (optionally scoped to a session). DO hot-cache; cheap.

inputtypenotes
limitnumber?1–200, default 50.
session_idstring?Restrict to a session.
actorstring?Provenance scope.
toolstring?Provenance scope (e.g. cursor, claude-code).
since / untilnumber?Time-window bounds (ms epoch).

Snapshot of pinned memories + active broadcasts + last 50 turns. One round-trip rehydrate for an agent.

Upsert a project-scoped key/value pointer (e.g. active_sprint, current_pr). Fans out to every subscriber sub-second.

Read a broadcast by key. Returns null if not set. Omit the key to list every broadcast for this project.

Mark the caller as active in this project. Fans out a presence_updated broadcast. Idempotent: safe to call on a short interval (e.g. every 30 s from a long-running agent).

inputtypenotes
session_idstring?
display_namestring?
toolstring?Surface (cursor, claude-code, …).
current_filestring?What the agent is currently editing.
current_functionstring?Function/symbol focus.
current_actionstring?Free-form verb: editing, reading, claiming, idle.

Intent fields fan out on presence_updated so the dashboard can paint the live “what is each agent doing right now” view.

List users who have heartbeat-ed or recorded activity within the last since_ms (default 30 minutes, max 24 h).

Distributed leases for cross-agent rendezvous. See Team coordination for end-to-end recipes.

Acquire a TTL-bounded lease on an arbitrary project-scoped key (story id, file path, branch name, etc.). Atomic: exactly one holder at a time. Same holder calling again refreshes the lease and returns deduped=true. Different holder gets ok=false with held_by + expires_at. Let the caller back off or wait. Fans out claim_acquired to every subscriber sub-second.

inputtypenotes
keystringFree-form 1–256 chars (file:apps/api/src/auth.ts, story:JIRA-123, branch:feat/auth).
holderstringIdentity asserting the claim, typically tool@user#session.
ttl_msnumber5 s to 24 h.
metadataRecord<string, unknown>?

Release a lease the caller currently holds. Only the active holder can release; mismatched holders get ok=false with reason=wrong_holder. Fans out claim_released. Idempotent: releasing a lease that has already expired or been released returns ok=false with reason=not_held without error.

Extend the TTL on a lease the caller currently holds. New expires_at = now + ttl_ms (replaces the previous deadline; not additive). Only the active holder can extend.

Typed multi-agent handoff. See Team coordination.

Open a review request. Use to gate one agent’s work behind another agent’s (or human’s) approval. Optionally tie to a claim_key so dashboards show the lease alongside the pending review. Fans out a review_requested broadcast.

inputtypenotes
subjectstringUp to 512 chars.
claim_keystring?Optional tie-back to a claim.
reviewersstring[]?Suggested reviewer identities (free-form, up to 20).
metadataRecord<string, unknown>?
deadline_msnumber?1 min to 7 days; computed server-side to a deadline_at instant.

Decide an open review with approved / rejected / needs_changes. Idempotent on first decision; subsequent calls return ok=false with reason=already_decided + the current decision so a racing reviewer can detect that someone got there first. Fans out a review_completed broadcast.

inputtypenotes
review_idstring (uuid)
decision"approved" | "rejected" | "needs_changes"
commentstring?Up to 8 KB.

List reviews that haven’t been decided yet, optionally filtered by reviewer (matches against the suggested-reviewers list at request time) or requester. Use to populate a reviewer’s queue without subscribing to the broadcast stream.

Declarative rules that fire on broadcasts. See Memory rules for the predicate grammar and recipes.

Install or replace a declarative rule. When a broadcast of on_kind fires, the rule’s actions run with template substitution (string args may reference payload.X / event.X via the ${...} syntax). Actions are limited to set_broadcast / pin_memory / record_turn: derivative writes only, no nested rule installs.

inputtypenotes
namestringLowercase alphanumerics + dashes; unique within project.
descriptionstring?Up to 2 000 chars.
on_kindRuleEventKindOne of: turn_recorded, memory_pinned, memory_forgotten, broadcast_set, consolidation_completed, claim_acquired, claim_released, claim_expired.
whereRecord<string, unknown>?Optional event-shape predicate (Mongo-flavored: { "payload.metadata.kind": "error" }).
actionsRuleAction[]1–10 actions per rule.
enabledbooleanDefault true. Re-install with enabled: false to disable.

List installed rules for this project. Soft-deleted rules are excluded.

Soft-delete a rule by name. Stops future firings; the row is retained for audit.

Return the bundled default-rule catalog (error-pin / claim-watchdog / review-router). Each entry is a ready-to-install rule body; pass it back to install_rule to enable. Pure data, no project state read.

Agent Skills (agentskills.io v1): discovery, activation, execution. See the Skills page for the spec.

List available skills for this project. Returns each skill’s name + description (the discovery layer per the agentskills.io progressive-disclosure model). Call before performing a multi-step task to see if a packaged playbook already exists.

Fetch a skill’s full SKILL.md body and parsed manifest by name. The activation layer; call after list_skills picks a relevant entry.

Read a supporting file from inside a skill bundle (anything under scripts/, references/, assets/, or arbitrary subdirectories). Path is relative to the skill root; absolute paths and .. segments are rejected.

Install or update a skill. Accepts the SKILL.md text plus an optional file map for bundled scripts/references/assets. Frontmatter is validated against the agentskills.io v1 spec.

inputtypenotes
skill_mdstring8 B to 64 KB. Full SKILL.md text including YAML frontmatter.
filesRecord<string, string>?Path → contents. Each file capped at 1 MB.

Soft-delete a skill by name. Removes from list_skills + search results; the manifest history is retained.

Return the bundled default-skill catalog (memoturn-mcp-toolkit + stack-tailored bundles). Each entry includes the tags it’s recommended for and a full SKILL.md body suitable for install_skill. Pure data — no project state read; used by the onboarding flow.

Hybrid (dense + lexical + activity-boost) retrieval over indexed repo content. Returns code chunks (path, line range, snippet) ordered by RRF-fused rank. Filter by repo_id, path_glob, lang, kind, or insertion time. Pair with search_memory to fuse code with the conversational/operational layer.

Single-call gather: returns code chunks for a target (path / symbol / file_id) plus the recent turns mentioning it, active claims keyed on it, and undecided reviews touching it. The code+activity fusion that single-vendor code engines can’t deliver — pair this with search_code when you need everything an agent needs to safely work on a file.

BFS over the code import/call graph from a starting symbol (or path → that file’s module sentinel). Returns visited symbols + a representative chunk for each, scoped by hops, edge kinds (imports / calls / references), and direction (out / in / both). Use after search_code to expand context around a hit without another semantic query.

Paginated listing of indexed repo files for this project. Filter by repo_id, lang, path_prefix, or modified_since (ms epoch). Cursor pagination via the file id; pass the previous response’s next_cursor to advance.

List turns where the deterministic redactor flagged a span and the async LLM review escalated it (or any other review status). Mirrors the dashboard’s redactions tab. Use to surface secret leaks an agent should not have written, without subscribing to broadcasts.

Top files by team activity in the configured window (default last 1 h). Each entry returns the file path, the count of turns referencing it, and the (tool, actor) pairs that touched it. That is, who from which surface is currently focused on what. Powers the dashboard’s Focus map; agents discovering it via MCP can use it to detect cross-tool collisions before reaching for the claim primitives.

inputtypenotes
since_msnumber?1 min to 24 h, default 1 h.
limitnumber?1–100, default 20.

Structured subject-predicate-object triples with temporal validity windows. Recording a fact for an existing subject+predicate auto-supersedes the previous one.

Record a structured fact. If an active fact with the same subject+predicate already exists, its valid_to is set to now before the new fact is inserted.

inputtypenotes
subjectstringUp to 512 chars.
predicatestringUp to 256 chars.
objectstringUp to 4 KB.
confidencenumber?0–1, default 1.0.
valid_fromnumber?Ms epoch; defaults to now.
source_turn_idstring?Link to the turn that produced this fact.
metadataRecord<string, unknown>?

Query the temporal knowledge graph. Supports point-in-time queries (“what was true on date X?“).

inputtypenotes
subjectstring?Filter by subject.
predicatestring?Filter by predicate.
point_in_timenumber?Ms epoch — returns facts valid at that instant.
active_onlyboolean?Default true — only facts where valid_to IS NULL.
limitnumber?1–200, default 50.

Close a fact’s validity window (valid_to = now). The fact remains queryable for historical point-in-time queries but won’t appear in active_only searches.

inputtypenotes
fact_idstring (uuid)

Search memory and synthesize results into cited prose with gap analysis. Returns a narrative answer referencing specific memories by id, plus an explicit list of what the project’s memory doesn’t cover.

inputtypenotes
querystringUp to 4 KB.
knumber?1–50, default 10. Number of search results to feed to the LLM.
mode"auto" | "chunks" | "summaries" | "code"Default auto.

Returns { answer, cited_memory_ids, gaps }.

Scan the temporal knowledge graph for conflicting active facts. Groups facts by subject, identifies pairs with the same predicate but different objects, and sends candidates to an LLM judge. Returns detected conflicts with severity and an explanation.

inputtypenotes
subjectstring?Scope to a single subject.
limitnumber?1–50, default 10.

Returns { contradictions: [{ fact_a, fact_b, severity, explanation }] }.

LLM-extracted memory proposals that need review before promotion to durable memory. The ingest pipeline extracts candidates from every turn; agents or humans accept/reject them.

Browse staged memory candidates by status.

inputtypenotes
status"pending" | "accepted" | "rejected"Default pending.
limitnumber?1–200, default 50.

Accept or reject a staged candidate. Accepting promotes it to a durable pinned memory with full embedding and search indexing. Rejecting discards it.

inputtypenotes
candidate_idstring (uuid)
decision"accept" | "reject"

Typed edges between memories or facts with cascading side effects.

Create a relationship edge with transaction semantics. Side effects depend on the edge kind.

inputtypenotes
src_idstring (uuid)Source memory or fact.
dst_idstring (uuid)Destination memory or fact.
kind"supersedes" | "contradicts" | "derives_from" | "same_as"
confidencenumber?0–1, default 1.0.
metadataRecord<string, unknown>?

Side effects by kind:

  • supersedes — closes dst validity (valid_to = now), transfers 50% of dst’s salience to src
  • contradicts — records a contradiction between src and dst
  • derives_from — provenance tracking: src was inferred from dst
  • same_as — equivalence link without deletion

Returns { ok, edge_id, side_effects }.