onadit Docs
Agents / MCP tools
Download

MCP tools

Onadit gives a connected agent 9 tools. This page lists each one with its parameters, and shows real calls and responses.

Which tool for which job#

JobTool
Get context before a taskrift_context_pack
Look for something specificrift_search
Filter past conversations by source, topic or daterift_conversations_search
Read the full passage behind a resultrift_open_evidence
File a session or a noterift_save
Record which passages a task usedrift_log_outcome
See what Onadit holdsrift_status
Inspect or reset what was recorded about a passagerift_why_evidence, rift_forget_evidence_feedback

Start with rift_context_pack. Go to rift_search when the pack comes back thin. Open a result before you rely on it.

rift_context_pack#

Returns a small bundle for a task: earlier decisions, constraints, example conversations and rule documents. It is summarised, never a raw transcript, and it never exceeds max_bytes.

ParameterTypeDefaultMeaning
taskstring, requiredA short description of the task. At most 1024 characters
cwdstringThe working directory. Narrows documents and rules to the matching project
max_bytesinteger6144A hard cap on the whole response. At most 16384
max_per_bucketinteger3Items per bucket. At most 10
sinceISO-8601 dateOnly items indexed after this time
Call
{
  "task": "Check the Mac installer on a clean machine before a release",
  "cwd": "/Users/you/projects/rift",
  "max_per_bucket": 2,
  "max_bytes": 4096
}
Response, from a real archive, trimmed
{
  "task": "Check the Mac installer on a clean machine before a release",
  "intent": "blended",
  "decisions": [
    {
      "text": "2026-10-09 — Statement-recall delivery SHIP: #211/#212 merged, installed files match, capture runs are clean …",
      "source": "tracker",
      "source_path": "PROJECT_STATE.md:23",
      "timestamp": "2026-10-09"
    }
  ],
  "constraints": [
    { "text": "Do not ship all … changes as a side effect", "source_path": "TODO.md:35" }
  ],
  "examples": [
    {
      "id": "73403f50-d94b-4184-a2df-ffb2033450d8",
      "title": "Rift release management, macOS installer …",
      "source": "codex_cli",
      "timestamp": "2026-09-30T15:57:49.995Z",
      "content_bytes": 831796,
      "passage": {
        "text": "… Verified signatures, notarization, Gatekeeper, npm contents and matching installer hashes across public downloads. Inspected retained test logs and packaged fresh-install/upgrade evidence …",
        "offset": 8363,
        "matched": "4/7"
      },
      "expand": { "route": "/search", "params": { "id": "73403f50-…", "tier": "hot", "source_table": "conversations_hot", "detail": "full" } }
    }
  ],
  "rules": [
    {
      "id": "report_card:fresh-mac-gate-findings",
      "title": "Fresh-Mac Install Gate — Findings Report (2026-05-04)",
      "source_path": "reports/2026-05-04-fresh-mac-gate-findings.md"
    }
  ],
  "current_truth_caveat": "tracker-backed, not live-verified",
  "total_bytes": 3866,
  "truncated": true,
  "degraded": false,
  "project_scope": { "root": "/Users/you/projects/rift", "conversations": 221 }
}

How to read it:

FieldMeaning
decisions, constraintsShort statements, each with the file and line, or the conversation, it came from
examplesPast conversations. passage is the stretch that best matches the task, and matched says how many of the task's terms it contains. A low count is weak evidence
rulesDocuments that look like rules or reports for this project
expandWhat to pass to rift_open_evidence or rift_search to read the item in full
truncatedtrue when items were dropped to stay under max_bytes
degradedtrue when search by meaning was tried and did not finish, so the pack was built from keyword results
intentHow Onadit read the task: current_truth, reasoning_archive or blended

A pack can also carry these fields, when they apply:

FieldMeaning
current_truthItems from live files and trackers, each with its level of trust
past_reasoning, older_memoryOlder conversations and documents, kept apart from current state
discountedItems that may be stale, such as untracked or deleted files
recommended_live_filesFiles to read before trusting the pack
conflictsItems that disagree with each other
other_projectsMatching documents from other projects, for reference only
degraded_reason, modeWhy the pack is degraded, and "lexical" when it was built by keyword alone

Ranked search across everything Onadit holds: conversations, documents and digests.

ParameterTypeDefaultMeaning
querystringWhat to look for. Required unless you fetch by id
scopestringallall, conversations, documents, projects or clients
cwdstringThe working directory. Narrows file results to the matching project. Conversations are not filtered by it
top_kinteger10How many results
sinceISO-8601 dateOnly results indexed after this time
clientstringOnly results for 1 client name
detailstringsummarysummary, middle (the start and end of the text, about 2,000 to 4,000 tokens) or full
idstringWith middle or full, fetch only this row. It never falls back to ranked search
tierstringWith id: hot, cold, digest, document or structured_doc. Copy it from a result's expand.params
source_tablestringWith id: conversations_hot, conversations_cold, digests, structured_docs or structured_docs_local. Copy it from expand.params
content_bytes, content_tokens_estimateintegerAccepted and ignored, so you can paste expand.params as it is
Call
{ "query": "why was Docker rejected for checking the Mac installer", "top_k": 3 }
Response, from a real archive, first result only
{
  "results": [
    {
      "id": "73403f50-d94b-4184-a2df-ffb2033450d8",
      "source": "codex_cli",
      "title": "Contains detailed Rift release and review context: … macOS installer/app rollout …",
      "score": 0.7449906571152327,
      "retrieval_method": "hybrid",
      "timestamp": "2026-09-30T15:57:49.995Z",
      "tier": "hot",
      "snippet": "… Creating an optimized production build … Compiled successfully in 728ms …",
      "summary": "Contains detailed Rift release and review context: … notarization/download/npm verification, custom daemon env preservation fix, pilot guide updates …",
      "content_bytes": 831796,
      "content_tokens_estimate": 207949,
      "expand": {
        "route": "/search",
        "params": {
          "id": "73403f50-d94b-4184-a2df-ffb2033450d8",
          "tier": "hot",
          "source_table": "conversations_hot",
          "detail": "full",
          "stable_evidence_key": "conversation:codex_cli:73403f50-d94b-4184-a2df-ffb2033450d8"
        }
      }
    }
  ],
  "mode": "hybrid",
  "degraded": false,
  "cwd_matched": false
}

This example is shown as it came back, and it is not a perfect answer: the top result is the right project and the right subject, but the snippet is build output, not the decision. That is why content_bytes is there. This conversation is 830 KB. Open it with detail: "middle" before you spend the tokens on full.

FieldMeaning
scoreKeyword match and meaning on 1 scale, with a boost for recent work. See How retrieval works
retrieval_methodHow the row was found: by meaning (vector), by keyword, or both (hybrid)
tierhot for current conversations, cold for archived ones, digest or document
content_bytes, content_tokens_estimateThe size of the full text, so you can decide whether to open it
mode, degradedmode is hybrid, or lexical when Search by meaning is off. degraded is true when search by meaning was tried and did not finish
degraded_reasonPresent when degraded is true
cwd_matched, cwd_scope_applied_toWhether cwd matched a folder Onadit indexes, and which kinds of result it narrowed

A result can also carry content and content_truncated (with middle or full), matched_sections, duplicate_count when copies were folded into it, and chunk_count when it stands for several passages of 1 conversation.

Searches conversations only, with filters.

ParameterTypeDefaultMeaning
querystring, requiredWhat to look for
sourcestringallclaude_code, codex_cli, grok_cli, cursor_composer, gemini_cli, chatgpt_web, claude_web, grok_web, gemini_web or all
domainstringallbusiness, tech, personal, travel, health, finance, creative or all
intentstringallresearch, decision, brainstorm, build, learn, troubleshoot or all
qualitystringallhigh, medium, low or all
topicstringA topic to match in full. Not case-sensitive
decisionstringA decision to match in full. Not case-sensitive
sinceISO-8601 dateOnly results indexed after this time
top_kinteger10How many results
detailstringsummarysummary covers current conversations and digests. full covers archived conversations and returns their text
Call
{ "query": "pricing", "source": "chatgpt_web", "intent": "decision", "top_k": 5 }

rift_open_evidence#

Opens 1 result in full and records that it was opened.

ParameterTypeMeaning
idstring, requiredThe id from a result's expand.params
source_tablestring, requiredFrom expand.params: conversations_hot, conversations_cold, digests, structured_docs or structured_docs_local
session_idstring, requiredA stable ID for your session, so repeat opens are counted once
intentstring, requiredcurrent_truth, reasoning_archive or blended. Use the intent of the pack the result came from
detailstringmiddle or full. Prefer middle
rank_at_retrieval, result_countintegerFor a search result: its position, and how many results came back
context_pack_bucket, position_in_bucketstring, integerFor a pack item: its bucket and its position in it
querystringThe search query the result came from
taskstringThe context-pack task the result came from
projectstringThe project or folder this evidence helped
tool_call_idstringYour host's ID for this tool call
Call
{
  "id": "73403f50-d94b-4184-a2df-ffb2033450d8",
  "source_table": "conversations_hot",
  "detail": "middle",
  "session_id": "session-2026-10-09-a",
  "intent": "blended",
  "context_pack_bucket": "examples",
  "position_in_bucket": 1
}

The response has 2 parts: result, the opened item, and feedback, with stable_evidence_key (keep it for rift_log_outcome), event_written and duplicate. If the ID is not found, or matches rows in 2 tables, the call returns an error.

rift_save#

Files a session or a note. The save is queued and the call returns a job_id.

ParameterTypeMeaning
sourcestring, requiredclaude_code, codex_cli or gemini_cli
summarystring, requiredA summary of the session
contentstringThe full transcript. Send it for any session of substance. A summary alone is not enough to find the session later
decisions, key_outputs, topicsstring arraysWhat was decided, what was produced, what it was about
domainstringtech by default
idempotency_keystringA key that makes a repeated save a no-op. If you leave it out and send content, Onadit derives one from the content
replace_idempotency_keystringThe key of an earlier save that this one replaces
Call
{
  "source": "claude_code",
  "summary": "Chose a clean macOS VM over Docker for the install check.",
  "decisions": ["Docker is rejected for install checks: it cannot exercise the Mac-specific parts"],
  "topics": ["installer", "release"],
  "content": "User: … Assistant: …",
  "idempotency_key": "claude_code:session-2026-10-09-a:v1"
}

More in Save from an agent.

rift_log_outcome#

Records the outcome of a task and which passages you used for it. Passages that were returned but not used are not counted.

ParameterTypeMeaning
session_idstring, requiredThe same ID you passed to rift_open_evidence
summarystring, requiredWhat the task came to
intentstring, requiredcurrent_truth, reasoning_archive or blended
cited_evidencearrayThe passages you used. Each item takes the fields below
taskstringThe original request
projectstringThe project the outcome belongs to

Each cited_evidence item needs stable_evidence_key, or id with source_table. Every field is optional on its own.

FieldTypeMeaning
stable_evidence_keystringThe key rift_open_evidence returned. Preferred
id, source_tablestringThe row, if you have no key
source_path, source_id, parent_id, source, digest_idstringOther ways to name the item, copied from the result
rank_at_retrieval, result_countintegerIts position in a search result list
context_pack_bucket, position_in_bucketstring, integerIts place in a context pack
reasonstringWhy it mattered
Call
{
  "session_id": "session-2026-10-09-a",
  "intent": "blended",
  "task": "Check the Mac installer on a clean machine before a release",
  "summary": "Used the clean-VM checklist from an earlier release session.",
  "cited_evidence": [
    { "stable_evidence_key": "conversation:codex_cli:73403f50-d94b-4184-a2df-ffb2033450d8", "reason": "Listed the checks that were run last time" }
  ]
}

The response has outcome_id, the summary, and for each cited item stable_evidence_key, event_written and duplicate.

These records are kept in a local log. They do not change ranking today.

rift_status#

Takes no parameters. Returns what Onadit holds and whether Capture is healthy.

Response, from a real archive
{
  "capture_diagnostics": {
    "status": "ok",
    "worker": "codex",
    "preflight_ok": true,
    "last_preflight_at": "2026-10-09T13:30:03.052Z",
    "recent_capture_errors": 0
  },
  "memory_diagnostics": {
    "counts": { "conversations": 6904, "digests": 0, "structured_docs": 0 },
    "digests": {
      "status": "unavailable_basic",
      "summary": "No digests because AI enrichment is off, so no digest worker is registered."
    },
    "documents": {
      "status": "source_empty",
      "summary": "No structured documents because the active sources contain no supported files."
    }
  }
}

rift_why_evidence#

Shows what has been recorded about 1 passage: how often it was opened or cited, and by which events.

Name the passage with stable_evidence_key, or source_path, or id together with source_table. The call fails without 1 of the 3.

ParameterTypeMeaning
stable_evidence_keystringThe key rift_open_evidence returned
id, source_tablestringThe row and its table
source_pathstringThe file, for a document
source_id, parent_id, source, digest_idstringOther ways to name the item, copied from a result
projectstringOnly records for this project
intentstringOnly records for this intent: current_truth, reasoning_archive or blended
Call
{ "stable_evidence_key": "conversation:codex_cli:73403f50-d94b-4184-a2df-ffb2033450d8" }

rift_forget_evidence_feedback#

Clears what was recorded about 1 passage. It adds a reset event to the local log and deletes nothing, so the history stays readable.

It takes the same parameters as rift_why_evidence, plus 2:

ParameterTypeMeaning
session_idstringYour session ID
reasonstringWhy the record is being cleared

The response has stable_evidence_key and event_written.

The resource#

Besides the 9 tools, the server offers 1 MCP resource: rift://rift-context.md, a short Markdown description of what Onadit holds on this Mac.

Last updated 12 October 2026. This page is also available as Markdown, and every page is listed in llms.txt.