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.
- 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
link_conceptsAdd a typed, directed edge between two existing concepts by editing the `from` note's frontmatter (e.g.Can send data outNo findings
Why it is in this group
- The name "link_concepts" says "link": a word for a change.
- The input addresses people (input.to): what it sends cannot be taken back.
What it can reach
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Description, as the server wrote it Add a typed, directed edge between two existing concepts by editing the `from` note's frontmatter (e.g. lead-scoring depends_on contact-model). Use when you notice a relationship the vault is missing. Both concepts should already exist; use upsert_concept first if not.
Annotations the server declares
- title: Link concepts
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
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.
{
"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/mcpclaude mcp add --transport http brainz https://brainz.brownmatter.ai/mcpRun 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.
{
"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.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/ai.brownmatter/brainz)Source: MCP Registry. Synced Oct 29, 2026, 02:17 UTC.