Skip to main content
Glama

Inspect the brain

crbro_inspect
Read-onlyIdempotent

Inspect brain neurons, sessions, or status by id or name without changing anything. Read-only views let you browse and page through stored memory.

Instructions

Read-only views of the brain by id or name; to search by content use crbro_recall. Nothing is written by any view: every read leaves the brain untouched. view=status answers any question about CRBRO itself: version, brain path, totals, last boot/consolidation, whether semantic recall is installed and on, hot_topics_recalculated. view=neuron: an index of one neuron — header, counts, connections (min_strength filters) and every entry as id, kind, date and preview, paged with limit/offset; entries=[ids or exact text] reads those in full, detail=full returns the whole neuron, shortened and declared when large. view=neurons: rows hottest first (id, name, domain, type, heat, last_accessed, facts_count), filtered by domain, type, min_heat, paged with limit/offset. view=sessions: day logs newest first, the only place session summaries are read. view=global_map: one cluster per domain plus cross-domain bridges, computed live. Params of other views are ignored.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeNoview=neurons: only this neuron type.
viewYesWhich read to perform. Only the params listed for that view are honoured; the rest are ignored, never an error.
limitNoPage size. view=neuron: index entries per page (default 25, max 200); view=neurons: rows (default 50, max 500); view=sessions: day logs (default 10, max 100). Other views ignore it.
detailNoview=neuron: "index" (default) returns the header, counts and every entry as id, kind, date and a short preview — cheap, then read what matters with `entries`. "full" returns the whole neuron with facts paged by limit/offset; large neurons are shortened and say so.
domainNoview=neurons: exact domain match, e.g. "proyectos-web".
neuronNoview=neuron only, required there: neuron id (e.g. "project_octochat") or name (e.g. "OctoChat").
offsetNoItems to skip. view=neuron: index entries; view=neurons: rows after the heat sort. Default 0.
entriesNoview=neuron: read these entries in full — their ids from the index or from crbro_recall, or their exact text. Any kind: fact, decision, pattern, preference, error, debt, or "map" for the system map. Ignores detail.
sessionNoview=sessions: read one day log whole by its id, e.g. "session_2026-09-07" (from crbro_recall sessions_matched or the list). Ignores limit and offset.
min_heatNoview=neurons: minimum heat, 0.0-1.0. Heat blends access frequency, recency and connectivity.
min_strengthNoview=neuron: drop connections weaker than this (0.0-1.0). Omit or 0 = all.
include_supersededNoview=neuron: also list superseded and retracted entries of every kind (default false; the index reports how many are hidden in entries_pagination.hidden_retired). detail=full always returns entry_status.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
viewYes
neuronNo
statusNo
neuronsNo
sessionsNo
global_mapNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.4.0
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  2. Changed2 schema fields changedv2.2.0
    • addedInput schema / properties / session
      Added value: +{
      +  "description": "view=sessions: read one day log whole by its id, e.g. \"session_2026-09-07\" (from crbro_recall sessions_matched or the list). Ignores limit and offset.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / sessions / properties / session
      Added value: +{
      +  "type": "string"
      +}
  3. Changed9 schema fields changedv2.1.0
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "view=neuron: \"index\" (default) returns the header, counts and every entry as id, kind, date and a short preview — cheap, then read what matters with `entries`. \"full\" returns the whole neuron with facts paged by limit/offset; large neurons are shortened and say so.",
      +  "enum": [
      +    "index",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / entries
      Added value: +{
      +  "description": "view=neuron: read these entries in full — their ids from the index or from crbro_recall, or their exact text. Any kind: fact, decision, pattern, preference, error, debt, or \"map\" for the system map. Ignores detail.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / include_superseded / description
      Previous value: -"view=neuron: also return superseded and retracted facts (default false). Retired decisions, patterns, errors and debts are always returned, with entry_status saying which are retired."New value: +"view=neuron: also list superseded and retracted entries of every kind (default false; the index reports how many are hidden in entries_pagination.hidden_retired). detail=full always returns entry_status."
    • changedInput schema / properties / limit / description
      Previous value: -"Page size. view=neuron: facts per page (default 40, max 200); view=neurons: rows (default 50, max 500); view=sessions: day logs (default 10, max 100). Other views ignore it."New value: +"Page size. view=neuron: index entries per page (default 25, max 200); view=neurons: rows (default 50, max 500); view=sessions: day logs (default 10, max 100). Other views ignore it."
    • changedInput schema / properties / offset / description
      Previous value: -"Items to skip. view=neuron: facts (newest first); view=neurons: rows after the heat sort. Default 0."New value: +"Items to skip. view=neuron: index entries; view=neurons: rows after the heat sort. Default 0."
    • changedOutput schema / properties / global_map / additionalProperties
      Previous value: -falseNew value: +{}
    • changedOutput schema / properties / neurons / additionalProperties
      Previous value: -falseNew value: +{}
    • changedOutput schema / properties / sessions / additionalProperties
      Previous value: -falseNew value: +{}
    • changedOutput schema / properties / status / additionalProperties
      Previous value: -falseNew value: +{}
  4. Changed1 schema field changedv2.0.1
    • changedInput schema / properties / neuron / description
      Previous value: -"view=neuron only, required there: neuron id (e.g. \"project_octochat\") or name (e.g. \"OctoChat\"). Reading bumps access_count and last_accessed."New value: +"view=neuron only, required there: neuron id (e.g. \"project_octochat\") or name (e.g. \"OctoChat\")."
  5. Addedv2.0.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent, but the description adds real behavior beyond them: 'nothing is written by any view', global_map is computed live, large neurons are 'shortened and declared when large', and retired entries are hidden with a count surfaced in entries_pagination. This is exactly the extra context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the read-only guarantee and the sibling routing before the per-view detail, and each sentence carries operational information. It is dense and long, but the length is proportionate to five sub-views and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all five views, the paging defaults, the index-versus-full tradeoff, and the superseded-entry behavior, despite an output schema already existing. An agent has everything needed to call any view correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description goes beyond by tying parameters to their view (min_strength drops weak connections, entries ignores detail, session ignores limit/offset, context flows between crbro_recall ids and this tool). It mostly restates what the schema descriptions already state per-parameter, hence a 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Read-only views of the brain by id or name') and immediately disambiguates from the sibling search tool ('to search by content use crbro_recall'). An agent can select this over crbro_recall without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Every view is scoped to a distinct question (status = CRBRO itself, neurons = hot list, sessions = day logs, global_map = domains), and the content-search alternative is named explicitly. The rule that non-applicable params are ignored rather than erroring removes a common failure mode.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.