OracleBLOCK
Oracle v2 - MCP Memory Layer with semantic search, philosophy, and knowledge management
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://github.com/Soul-Brews-Studio/arra-oracle-v3/actions/workflows/ci.yml) [](./LICENSE) [](https://bun.sh) [](https://deploy.workers.cloudflare.com/?url=https://github.com/Soul-Brews-Studio/arra-oracle-v3) [](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FSoul-Brews-Studio%2Farra-oracle-v3&env=ORACLE_URL&envDescription=Oracle%20HTTP%20API%20base%20URL%20for%20the%20Studio%20API%20proxy&envLink=https%3A%2F%2Fgithub.com%2FSoul-Brews-Studio%2Farra-oracle-v3%2Fblob%2Falpha%2Fdocs%2Fdeploy-vercel.md%23environment-variables&project-name=arra-oracle-studio&repository-name=arra-oracle-studio) — Vercel quickstart
Docker run → arra mine ~/notes → open the UI → search your memory.Arra Oracle is the Oracle family's local memory and search layer. It stores your notes in SQLite, searches them with FTS/vector-capable APIs, and exposes the same memory through HTTP, MCP, the arra CLI, plugins, and the Studio UI.
Quick start: Docker is the primary path
You only need Docker, curl, and a notes folder. This path starts the HTTP server, mines ~/notes, opens the built-in UI, and performs the first search. No local Bun install, API key, schema choice, or vector service is required.
1. Run Arra Oracle
export ARRA_PORT="${ARRA_PORT:-47778}"
export ARRA_URL="http://127.0.0.1:${ARRA_PORT}"
export ARRA_CONTAINER="${ARRA_CONTAINER:-arra-oracle}"
export ARRA_VOLUME="${ARRA_VOLUME:-arra-oracle-data}"
export ARRA_NOTES_DIR="${ARRA_NOTES_DIR:-$HOME/notes}"
mkdir -p "$ARRA_NOTES_DIR"
docker volume create "$ARRA_VOLUME" >/dev/null
239588dc1199OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add arra-oracle-studio-worker --env ARRA_API_KEY=${ARRA_API_KEY} --env ARRA_API_TOKEN=${ARRA_API_TOKEN} --env CF_API_TOKEN=${CF_API_TOKEN} --env CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN} -- npx -y @soul-brews/arra-oracle-studio-worker{
"mcpServers": {
"arra-oracle-studio-worker": {
"command": "npx",
"args": [
"-y",
"@soul-brews/arra-oracle-studio-worker"
],
"env": {
"ARRA_API_KEY": "${ARRA_API_KEY}",
"ARRA_API_TOKEN": "${ARRA_API_TOKEN}",
"CF_API_TOKEN": "${CF_API_TOKEN}",
"CLOUDFLARE_API_TOKEN": "${CLOUDFLARE_API_TOKEN}"
}
}
}
}Exposed tools (82)
68 read · 13 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Bad | read | x |
Cyberpunk | read | Electric yellow and magenta on black high-contrast glass |
Monochrome | read | Pure black, white, and gray for minimal editorial focus |
Sakura | read | Soft cherry-blossom pink with grounded plum surfaces |
Tropical | read | Bright island greens with coral paradise accents |
a | read | |
arra | read | ARRA Oracle HTTP helper — 1:1 maw CLI surface for ARRA MCP tools. |
b | read | |
c | read | |
demo | read | legacy |
echo | read | Echo input |
echo.say | read | Echo input |
echo.tool | read | Echo helper |
echo_tool | read | Echo |
export | read | Export ARRA app collections through the local Oracle API. |
hermes_ping | read | Ping Hermes |
live_watch_tool | read | Live watch tool |
memory.write | write | Store a memory |
muninn_search | read | Search memory. |
ok_tool | read | x |
oracle_alpha_runtime | read | Alpha runtime tool |
oracle_ask | read | Ask Oracle for a grounded answer over memory/search. Returns answer, citations, citationIndexes, warnings, noEvidence, search metadata, and sources. |
oracle_bad_schema | read | bad schema |
oracle_beta_disabled | read | Disabled beta tool |
oracle_beta_runtime | read | Beta runtime tool |
oracle_canvas_inspect | read | Inspect the canvas plugin. |
oracle_concepts | read | List all concept tags in the Oracle knowledge base with document counts. Useful for discovering what topics are covered and filtering searches. |
oracle_config_context | read | tool |
oracle_demo | read | Demo |
oracle_handoff | write | Write session context to the Oracle inbox for future sessions to pick up. Creates a timestamped markdown file in ψ/inbox/handoff/. Use at end of sessions to preserve context. |
oracle_inbox | read | List and preview pending handoff files from the Oracle inbox. Returns files sorted newest-first with previews. |
oracle_learn | write | Add a new pattern or learning to the Oracle knowledge base. Creates a markdown file in ψ/memory/learnings/ and indexes it. |
oracle_list | read | List all documents in Oracle knowledge base. Browse without searching - useful for exploring what knowledge exists. Supports pagination and type filtering. |
oracle_mcp_call | read | MCP-IN: call one tool exposed by an external stdio MCP server. |
oracle_mcp_list_tools | write | MCP-IN: start an external stdio MCP server and list its advertised tools. |
oracle_mcp_pack | read | tool |
oracle_missing_plugin | read | missing plugin |
oracle_profile | read | List or read code-backed Oracle profiles such as Thor Oracle / Stormforge. |
oracle_read | read | Read full content of an Oracle document by file path or document ID. Use after oracle_search to retrieve complete file contents. Resolves vault paths, ghq paths, and symlinks server-side. |
oracle_recap | write | Emit a compact session-start Oracle wake-up context: identity plus top memories by heat/confidence grouped by project. |
oracle_reflect | read | Get a random principle or learning for reflection. Use this for periodic wisdom or to align with Oracle philosophy. |
oracle_research_note | read | Store a Thor Stormforge research/dev artifact as searchable learning memory. |
oracle_runtime_after_reload | read | after |
oracle_runtime_tool | read | runtime tool |
oracle_schedule_add | write | Add an appointment or event to the shared schedule. The schedule is per-human (not per-project) and shared across all Oracles. |
oracle_schedule_list | write | List appointments from the shared schedule. Filter by date, range, or keyword. Defaults to today + 14 days. |
oracle_search | read | Search Oracle knowledge base using hybrid search (FTS5 keywords + LanceDB vectors). Finds relevant principles, patterns, learnings, or retrospectives. Falls back to FTS5-only if the vector index is unavailable. |
oracle_search_chain | write | Run iterative vector search over linked results, expanding from the best hit on each hop. |
oracle_session_get | write | Read the conversation of one session in order, by session id. Returns human/assistant/ |
oracle_session_list | read | List recorded sessions from the jsonl-lens corpus, newest first, with turn counts. Use to |
oracle_session_search | read | Search what was actually said across all recorded sessions. Answers |
oracle_session_summarize | write | Write a summary of a session back to the Oracle, so a human can read it in the web UI and |
oracle_stats | read | Get Oracle knowledge base statistics and health status. Returns document counts by type, indexing status, and vector (LanceDB) connection status. |
oracle_supersede | read | Mark an old learning/document as superseded by a newer one. Aligns with |
oracle_surface | read | tool |
oracle_surface_disabled | read | off |
oracle_surface_http | read | tool |
oracle_surface_pack | read | tool |
oracle_switch_off | read | off |
oracle_switch_on | read | on |
oracle_thread | write | Send a message to an Oracle discussion thread. Creates a new thread or continues an existing one. Oracle auto-responds from knowledge base. Use for multi-turn consultations. |
oracle_thread_read | read | Read full message history from a thread. Use to review context before continuing a conversation. |
oracle_thread_update | write | Update thread status. Use to close, reopen, or mark threads as answered/pending. |
oracle_threads | read | List Oracle discussion threads. Filter by status to find pending questions or active discussions. |
oracle_toggle_runtime | read | Toggle runtime tool |
oracle_trace | read | Log a trace session with dig points (files, commits, issues found). Use to capture /trace command results for future exploration. |
oracle_trace_chain | read | Get the full linked chain for a trace. Returns all traces in the chain and the position of the requested trace. |
oracle_trace_distill | read | Distill a trace into a Thor/Stormforge awakening and optionally promote it to learning memory. |
oracle_trace_get | read | Get full details of a specific trace including all dig points (files, commits, issues). |
oracle_trace_link | read | Link two traces as a chain (prev \u2192 next). Creates bidirectional navigation without deleting anything. Use when agents create related traces that should be connected. |
oracle_trace_list | read | List recent traces with optional filters. Returns trace summaries for browsing. |
oracle_trace_unlink | destructive | Remove a link between traces. Breaks the chain connection in the specified direction. |
oracle_valid_plugin | read | Valid plugin tool. |
oracle_verify | read | Verify knowledge base integrity: compare ψ/ files on disk vs DB index. Detects missing (on disk, not indexed), orphaned (in DB, file gone), and drifted (file changed since last index) documents. |
plugin_sync | write | Sync plugin surfaces. |
registry_tool | read | tool |
smoke-orbit | read | Smoke fixture plugin |
smoke_loader_tool | read | smoke tool |
surface_tool | read | Surface tool |
switch_off | read | off |
switch_on | read | on |
tenant_probe | read | probe |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (9 observation(s))
- Network
- declared (11 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
# 1. Copy this file to ~/.docker/mcp/catalogs/arra-oracle.yaml
# 2. Add `arra-oracle: { ref: "" }` under `registry:` in ~/.docker/mcp/registry.yamlicon.icns
<div className="pna-beacon pointer-events-none fixed left-[165px] top-[52px] z-50 grid -translate-x-1/2 justify-items-center gap-2" aria-hidden="true">
<div className="pna-beacon fixed left-[147px] top-[10px] z-50 w-[330px] max-w-[calc(100vw-2rem)]">
CMD bun -e "const r=await fetch('http://127.0.0.1:47778/api/health');process.exit(r.ok?0:1)"const token = '0123456789abcdef0123456789abcdef';
oracle_trace_unlink
.env.production.example
.maw-engine
http-proxy-rethrows-payload-errors.test.ts
exec(h.dbPath, "UPDATE indexing_jobs SET status = 'done'");
import { CLI_VERSION, builtinHelpFor, hasHelpFlag, renderCommandHelp, renderRootHelp } from "../../src/cli/help.ts";const { mineCommand } = await import("../../src/cli/mine.ts");const { changelogCommand } = await import("../../src/cli/commands/changelog.ts");const { releaseCommand } = await import("../../src/cli/commands/release.ts");const { exportCommand } = await import("../../src/cli/commands/export.ts");export ARRA_URL="http://127.0.0.1:${ARRA_PORT}"baseUrl: opts.get('base-url') ?? 'http://127.0.0.1:47778',const baseUrl = `http://127.0.0.1:${server.port}`;process.env.VECTOR_URL = `http://127.0.0.1:${vectorStub.port}`;new_path: '\nψ/memory/new.md\t',
for (const attack of ['../../etc/passwd', '..\\..\\windows', 'a/b', 'a\0b', 'ab']) {@tailwindcss/vite, @vitejs/plugin-react, react, react-dom, react-router-dom, tailwindcss, typescript, vite
@elysiajs/cors, @elysiajs/swagger, @lancedb/lancedb, @modelcontextprotocol/sdk, @qdrant/js-client-rest, agents, commander, drizzle-orm
Gates applied: no_behavioural_pass.
239588dc1199full audit observations/trust-audit/mcp-server/soul-brews-studio__oracle-4.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 239588dc1199 | BLOCK | D | 69 | first audit |
Questions
What is the Oracle MCP server?
Oracle v2 - MCP Memory Layer with semantic search, philosophy, and knowledge management
What tools does Oracle expose?
82 in total: 68 read-only, 13 that write, and 1 that can delete or overwrite (oracle_trace_unlink). Every one is listed on this page with its risk.
Is Oracle safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Oracle need?
It reads ARRA_API_KEY, ARRA_API_TOKEN, CF_API_TOKEN, CLOUDFLARE_API_TOKEN, GEMINI_API_KEY, GOOGLE_API_KEY, OPENAI_API_KEY, ORACLE_MCP_HTTP_TOKEN, ORACLE_SESSION_SECRET, ORACLE_TENANT_API_KEYS, ORACLE_TENANT_TOKENS and QDRANT_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Oracle run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @soul-brews/arra-oracle-studio-worker.
How current is this page?
The grade is for one exact copy of the source (239588dc1199), read on 2026-10-08. The repository is watched and re-audited when it changes.