Skip to content

Brainz

ai.brownmatter/brainzbrownmatter.aistreamable-httpv0.1.0Scanned

Shared product-knowledge graph for AI agent fleets — vault tools + agent self-signup over MCP.

16 tools: 3 can delete or cancel things, 1 do something that can't be undone, 5 change things and 7 only read.

Tools: 3 delete, 1 irreversible, 5 write, 7 read.
  • Reads private data · 3
  • Reads text others write · 1
  • Can send data out · 1
  • No findings

Anlyon alternative

9 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

16 tools

Deletes or cancels 3Claude Code: deny
  • delete_conceptRemove a concept from the vault and all of its outgoing edges.No findings

    Why it is in this group

    • The name "delete_concept" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove a concept from the vault and all of its outgoing edges. Use to clear a note that is wrong, obsolete, or junk (e.g. a probe or test node that shouldn't be in the graph). Idempotent: deleting an id that doesn't exist is a no-op success (deleted:false), not an error. Deletion is permanent — prefer upsert_concept to correct a note you want to keep. Returns { deleted, id }.

    Annotations the server declares

    • title: Delete concept
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
  • dreamDreaming: a scheduled consolidation sweep over this vault.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Dreaming: a scheduled consolidation sweep over this vault. Light stages what changed since the last dream (near-duplicate concepts, finished task outcomes, hygiene counts); REM asks an LLM for proposals; deep applies the ones that pass threshold gates: merges duplicates (edges redirected, the other tombstoned), promotes outcome knowledge into concepts, adds missing links, and files a task for each contradiction. A sweep that would touch too much of the vault is rejected; every applied dream keeps preimages and can be reverted. {action: "status"} shows schedule + last dream; {action: "run"} dreams now; {action: "diary"} reads the Dream Diary; {action: "revert", id} undoes one dream; {action: "configure", enabled?, cadenceHours?} sets it up. Without an LLM only light runs.

    Annotations the server declares

    • title: Dream (nightly consolidation)
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
  • upsert_conceptWrite a concept note into the vault (creates or overwrites the markdown file, then reindexes it).No findings

    Why it is in this group

    • The name "upsert_concept" says "upsert": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Write a concept note into the vault (creates or overwrites the markdown file, then reindexes it). Use to capture new product knowledge discovered during a task — a decision made, a constraint hit, a pattern adopted — so future agents can find it. Omit `id` to derive a slug from the title; pass an existing id to update that note. Body is markdown; [[wiki-links]] to other concept ids create graph edges. Returns the saved concept's metadata.

    Annotations the server declares

    • title: Create or update concept
    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: false
Can't be undone 1Claude Code: ask
Changes things 5Claude Code: ask
  • complete_taskMark a task done.No findings

    Why it is in this group

    • The description's first verb is "mark": a word for a change.
    Description, as the server wrote it
    Mark a task done. Sets taskStatus=done + doneAt and appends `outcome` to the task body as an Outcome section. The result carries a one-line `reminder` that the rest of the graph is not updated automatically.

    Annotations the server declares

    • title: Complete a task
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • create_taskTurn a finding into first-class work: creates a `task`-type concept with taskStatus=open and the given relations — part_of a domain, `realizes` stories/features, `governed_by` spec…No findings

    Why it is in this group

    • The name "create_task" says "create": a word for a change.
    Description, as the server wrote it
    Turn a finding into first-class work: creates a `task`-type concept with taskStatus=open and the given relations — part_of a domain, `realizes` stories/features, `governed_by` specs — plus codeAreas pointing at where the work lands. Use when you discover work that isn't reflected in the codebase yet (a gap, a needed fix, a follow-up). The task then shows up in list_tasks / take_task and on the Kanban board.

    Annotations the server declares

    • title: Create a task
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • onboardIndex an existing product's codebase into this vault.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Index an existing product's codebase into this vault. {action: "start"} returns the onboarding playbook: a method for surveying the codebase and recording its product knowledge (domains, features, stories, specs, workflows, decisions, constraints) as concepts via upsert_concept, each anchored to the code with codeAreas. {action: "status", areaList} reports onboarded state, concept counts and, given your repo's source areas (Brainz can't read the repo), which areas are covered or uncovered. {action: "complete", summary, areaList} marks the vault onboarded and stores the summary; it is rejected while too many areas are uncovered. Until onboarding completes, search_concepts and get_context results include a one-line note saying so.

    Annotations the server declares

    • title: Onboard this vault
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • syncRe-index an onboarded vault after the code changes (drift).No findings

    Why it is in this group

    • The name "sync" says "sync": a word for a change.
    Description, as the server wrote it
    Re-index an onboarded vault after the code changes (drift). {action: "start"} returns the sync playbook: the vault's last_synced_at, a coverage map over the concepts' code_areas, and a method for re-indexing only what changed (you run git — Brainz can't read the repo — and pass back changedPaths + areaList): update stale concepts in place, add concepts or tasks for new work, and report coverage gaps. {action: "status", areaList} reports onboarded state, last sync time, staleness, concept counts and coverage. {action: "complete", summary, areaList} stamps last_synced_at and appends the summary to the product-onboarding-summary concept (a running sync log). After ~14 days without a sync, get_context and search results include a one-line note saying so.

    Annotations the server declares

    • title: Sync this vault to the current code
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • take_taskClaim a task and get its briefing in one call.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Claim a task and get its briefing in one call. Pass an `id` to claim a specific task, or omit it to claim the next open task (oldest open by createdAt then id). Atomically flips the task to "taken" and records takenBy/takenAt; errors if it's already taken or done. Returns the task and a get_context-style briefing for its part_of domain plus the concepts it realizes / is governed_by (with code_areas). complete_task marks it done.

    Annotations the server declares

    • title: Take a task off the pile
    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
Only reads 7Show 7 read-only tools
  • get_conceptFetch one concept by exact id: full markdown body, metadata, and its direct graph neighbors (each with the relation that connects it).No findings

    Why it is in this group

    • The name "get_concept" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one concept by exact id: full markdown body, metadata, and its direct graph neighbors (each with the relation that connects it). Use after search_concepts or when another note wiki-links an id you need in full. The neighbors list tells you what to fetch next. If you don't know the id, use search_concepts instead.

    Annotations the server declares

    • title: Get concept
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_contextAssemble a markdown briefing of the concepts most relevant to a query and/or explicit ids, expanded through the graph and trimmed to a token budget.No findings

    Why it is in this group

    • The name "get_context" says "get": a word for reading.
    Description, as the server wrote it
    Assemble a markdown briefing of the concepts most relevant to a query and/or explicit ids, expanded through the graph and trimmed to a token budget. The briefing is self-contained, so it can be handed to another agent or pasted into a prompt as-is. The final JSON line reports which concept ids were included, whether the bundle was truncated, and its approximate token count. Provide at least one of `query` or `ids`.

    Annotations the server declares

    • title: Assemble context bundle
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_conceptsEnumerate concept metadata (no bodies), optionally filtered by product, type, or a single tag.No findings

    Why it is in this group

    • The name "list_concepts" says "list": a word for reading.
    Description, as the server wrote it
    Enumerate concept metadata (no bodies), optionally filtered by product, type, or a single tag. Use to get the lay of the land in an unfamiliar vault, to audit what exists (e.g. all decisions for a product), or when search vocabulary isn't matching. For content, follow up with get_concept or get_context.

    Annotations the server declares

    • title: List concepts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_tasksList the vault's work pile: `task`-type concepts with their lifecycle (open/taken/done), oldest first, including who has taken each one (takenBy).Reads private dataNo findings

    Why it is in this group

    • The name "list_tasks" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "vault": it reads secrets.
    Description, as the server wrote it
    List the vault's work pile: `task`-type concepts with their lifecycle (open/taken/done), oldest first, including who has taken each one (takenBy). Filter by taskStatus or by the domain the tasks are part_of. Read-only; take_task is what claims a task.

    Annotations the server declares

    • title: List tasks
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_conceptsSearch the product knowledge vault by free-text query.Reads private dataNo findings

    Why it is in this group

    • The name "search_concepts" says "search": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "search" and "vault": it reads secrets.
    Description, as the server wrote it
    Search the product knowledge vault by free-text query. Useful when you need product knowledge but don't yet know which concept ids exist. Returns ranked hits (id, title, type, score, snippet) only; get_concept returns one full note and get_context an assembled briefing. An empty hit list means nothing matched.

    Annotations the server declares

    • title: Search concepts
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • vault_statsSummarize the vault: counts of concepts and edges, the products and tags in use, a breakdown by concept type, and whether semantic search is available.Reads private dataNo findings

    Why it is in this group

    • The description's first verb is "summarize": a word for reading.

    What it can reach

    • private-dataThe name "vault_stats" says "vault": it reads secrets.
    • private-dataThe description's first sentence says "summarize" and "vault": it reads secrets.
    Description, as the server wrote it
    Summarize the vault: counts of concepts and edges, the products and tags in use, a breakdown by concept type, and whether semantic search is available. Useful for gauging how much knowledge is here and which product/tag filters exist.

    Annotations the server declares

    • title: Vault stats
    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

3 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__brainz__link_concepts"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http brainz https://brainz.brownmatter.ai/mcp
claude mcp add --transport http brainz https://brainz.brownmatter.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__brainz__search_concepts",
      "mcp__brainz__get_concept",
      "mcp__brainz__get_related",
      "mcp__brainz__get_context",
      "mcp__brainz__list_concepts",
      "mcp__brainz__vault_stats",
      "mcp__brainz__list_tasks"
    ],
    "ask": [
      "mcp__brainz__link_concepts",
      "mcp__brainz__onboard",
      "mcp__brainz__sync",
      "mcp__brainz__take_task",
      "mcp__brainz__complete_task",
      "mcp__brainz__create_task"
    ],
    "deny": [
      "mcp__brainz__upsert_concept",
      "mcp__brainz__delete_concept",
      "mcp__brainz__dream"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as brainz. Review it before you use it.

Capability tags behind 5 rules
  • mcp__brainz__search_concepts private-data
  • mcp__brainz__link_concepts outbound
  • mcp__brainz__vault_stats private-data
  • mcp__brainz__dream untrusted-input
  • mcp__brainz__list_tasks private-data

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/ai.brownmatter/brainz/verify?hash=acc7ce40b334f880ec9355924656ae0d02b933f83ee3b2f63411af250ffe08c3" | jq -e '.changed == false'

Pinned hash acc7ce40b334, from Oct 29, 2026, 02:17 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/ai.brownmatter/brainz/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for ai.brownmatter/brainz
[![anlyon.dev](https://anlyon.dev/badge/ai.brownmatter/brainz.svg)](https://anlyon.dev/servers/ai.brownmatter/brainz)

Source: MCP Registry. Synced Oct 29, 2026, 02:17 UTC.