Atlas / MCP servers / soul-brews-studio / Oracle

OracleBLOCK

mcp/soul-brews-studio/oracle-4

Oracle v2 - MCP Memory Layer with semantic search, philosophy, and knowledge management

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
82 68r · 13w · 1d
Transport
stdio · streamable-http
License
NOASSERTION
Stars
89
01

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
Read from source at commit 239588dc1199OBSERVED · 2026-10-08
Advertisement
02

Connect

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-code
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
claude-desktop
{
  "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}"
      }
    }
  }
}
03

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.

ToolRiskDescription
Badreadx
CyberpunkreadElectric yellow and magenta on black high-contrast glass
MonochromereadPure black, white, and gray for minimal editorial focus
SakurareadSoft cherry-blossom pink with grounded plum surfaces
TropicalreadBright island greens with coral paradise accents
aread
arrareadARRA Oracle HTTP helper — 1:1 maw CLI surface for ARRA MCP tools.
bread
cread
demoreadlegacy
echoreadEcho input
echo.sayreadEcho input
echo.toolreadEcho helper
echo_toolreadEcho
exportreadExport ARRA app collections through the local Oracle API.
hermes_pingreadPing Hermes
live_watch_toolreadLive watch tool
memory.writewriteStore a memory
muninn_searchreadSearch memory.
ok_toolreadx
oracle_alpha_runtimereadAlpha runtime tool
oracle_askreadAsk Oracle for a grounded answer over memory/search. Returns answer, citations, citationIndexes, warnings, noEvidence, search metadata, and sources.
oracle_bad_schemareadbad schema
oracle_beta_disabledreadDisabled beta tool
oracle_beta_runtimereadBeta runtime tool
oracle_canvas_inspectreadInspect the canvas plugin.
oracle_conceptsreadList all concept tags in the Oracle knowledge base with document counts. Useful for discovering what topics are covered and filtering searches.
oracle_config_contextreadtool
oracle_demoreadDemo
oracle_handoffwriteWrite 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_inboxreadList and preview pending handoff files from the Oracle inbox. Returns files sorted newest-first with previews.
oracle_learnwriteAdd a new pattern or learning to the Oracle knowledge base. Creates a markdown file in ψ/memory/learnings/ and indexes it.
oracle_listreadList all documents in Oracle knowledge base. Browse without searching - useful for exploring what knowledge exists. Supports pagination and type filtering.
oracle_mcp_callreadMCP-IN: call one tool exposed by an external stdio MCP server.
oracle_mcp_list_toolswriteMCP-IN: start an external stdio MCP server and list its advertised tools.
oracle_mcp_packreadtool
oracle_missing_pluginreadmissing plugin
oracle_profilereadList or read code-backed Oracle profiles such as Thor Oracle / Stormforge.
oracle_readreadRead 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_recapwriteEmit a compact session-start Oracle wake-up context: identity plus top memories by heat/confidence grouped by project.
oracle_reflectreadGet a random principle or learning for reflection. Use this for periodic wisdom or to align with Oracle philosophy.
oracle_research_notereadStore a Thor Stormforge research/dev artifact as searchable learning memory.
oracle_runtime_after_reloadreadafter
oracle_runtime_toolreadruntime tool
oracle_schedule_addwriteAdd an appointment or event to the shared schedule. The schedule is per-human (not per-project) and shared across all Oracles.
oracle_schedule_listwriteList appointments from the shared schedule. Filter by date, range, or keyword. Defaults to today + 14 days.
oracle_searchreadSearch 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_chainwriteRun iterative vector search over linked results, expanding from the best hit on each hop.
oracle_session_getwriteRead the conversation of one session in order, by session id. Returns human/assistant/
oracle_session_listreadList recorded sessions from the jsonl-lens corpus, newest first, with turn counts. Use to
oracle_session_searchreadSearch what was actually said across all recorded sessions. Answers
oracle_session_summarizewriteWrite a summary of a session back to the Oracle, so a human can read it in the web UI and
oracle_statsreadGet Oracle knowledge base statistics and health status. Returns document counts by type, indexing status, and vector (LanceDB) connection status.
oracle_supersedereadMark an old learning/document as superseded by a newer one. Aligns with
oracle_surfacereadtool
oracle_surface_disabledreadoff
oracle_surface_httpreadtool
oracle_surface_packreadtool
oracle_switch_offreadoff
oracle_switch_onreadon
oracle_threadwriteSend 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_readreadRead full message history from a thread. Use to review context before continuing a conversation.
oracle_thread_updatewriteUpdate thread status. Use to close, reopen, or mark threads as answered/pending.
oracle_threadsreadList Oracle discussion threads. Filter by status to find pending questions or active discussions.
oracle_toggle_runtimereadToggle runtime tool
oracle_tracereadLog a trace session with dig points (files, commits, issues found). Use to capture /trace command results for future exploration.
oracle_trace_chainreadGet the full linked chain for a trace. Returns all traces in the chain and the position of the requested trace.
oracle_trace_distillreadDistill a trace into a Thor/Stormforge awakening and optionally promote it to learning memory.
oracle_trace_getreadGet full details of a specific trace including all dig points (files, commits, issues).
oracle_trace_linkreadLink 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_listreadList recent traces with optional filters. Returns trace summaries for browsing.
oracle_trace_unlinkdestructiveRemove a link between traces. Breaks the chain connection in the specified direction.
oracle_valid_pluginreadValid plugin tool.
oracle_verifyreadVerify 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_syncwriteSync plugin surfaces.
registry_toolreadtool
smoke-orbitreadSmoke fixture plugin
smoke_loader_toolreadsmoke tool
surface_toolreadSurface tool
switch_offreadoff
switch_onreadon
tenant_probereadprobe
04

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.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (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)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
catalog/arra-oracle.yaml:4
#   1. Copy this file to ~/.docker/mcp/catalogs/arra-oracle.yaml
Why it matters. touches a credential store
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
catalog/arra-oracle.yaml:5
#   2. Add `arra-oracle: { ref: "" }` under `registry:` in ~/.docker/mcp/registry.yaml
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.binary · CWE-1104
frontend/src-tauri/icons/icon.icns
icon.icns
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
frontend/src/components/PnaGuide.tsx:4
<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">
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
frontend/src/components/PnaGuide.tsx:15
<div className="pna-beacon fixed left-[147px] top-[10px] z-50 w-[330px] max-w-[calc(100vw-2rem)]">
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
Dockerfile:74
CMD bun -e "const r=await fetch('http://127.0.0.1:47778/api/health');process.exit(r.ok?0:1)"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/workers/federation-proxy.test.ts:5
const token = '0123456789abcdef0123456789abcdef';
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
oracle_trace_unlink
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.env.production.example
.env.production.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.maw-engine
.maw-engine
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
tests/mcp/http-proxy-rethrows-payload-errors.test.ts
http-proxy-rethrows-payload-errors.test.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/indexer/reindex-hardening.test.ts:29
exec(h.dbPath, "UPDATE indexing_jobs SET status = 'done'");
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/cli.ts:25
import { CLI_VERSION, builtinHelpFor, hasHelpFlag, renderCommandHelp, renderRootHelp } from "../../src/cli/help.ts";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/cli.ts:111
const { mineCommand } = await import("../../src/cli/mine.ts");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/cli.ts:127
const { changelogCommand } = await import("../../src/cli/commands/changelog.ts");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/cli.ts:166
const { releaseCommand } = await import("../../src/cli/commands/release.ts");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
cli/src/cli.ts:171
const { exportCommand } = await import("../../src/cli/commands/export.ts");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:23
export ARRA_URL="http://127.0.0.1:${ARRA_PORT}"
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
benchmarks/honest-recall-cli.ts:36
baseUrl: opts.get('base-url') ?? 'http://127.0.0.1:47778',
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
benchmarks/hybrid-temp-backend.ts:71
const baseUrl = `http://127.0.0.1:${server.port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
benchmarks/vector-search.bench.ts:32
process.env.VECTOR_URL = `http://127.0.0.1:${vectorStub.port}`;
LOWObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
tests/http/supersede/tenant-isolation.test.ts:126
new_path: '\nψ/memory/new.md\t',
LOWObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
tests/util/slug-preserves-non-latin.test.ts:66
for (const attack of ['../../etc/passwd', '..\\..\\windows', 'a/b', 'a\0b', 'ab']) {
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
frontend/package.json
@tailwindcss/vite, @vitejs/plugin-react, react, react-dom, react-router-dom, tailwindcss, typescript, vite
Why it matters. 13 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@elysiajs/cors, @elysiajs/swagger, @lancedb/lancedb, @modelcontextprotocol/sdk, @qdrant/js-client-rest, agents, commander, drizzle-orm
Why it matters. 22 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 239588dc1199full audit observations/trust-audit/mcp-server/soul-brews-studio__oracle-4.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08239588dc1199BLOCKD69first audit
06

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.

Advertisement