Skip to main content
Glama

Learn something

crbro_learn

Write a fact, decision, pattern, preference, error or debt. Recall first: it may exist. A replacement uses supersedes; retire without replacement with crbro_revise; delete with crbro_forget.

Instructions

Write a fact, decision, pattern, preference, error or debt. Recall first: it may exist. A replacement uses supersedes; retire without replacement with crbro_revise; delete with crbro_forget. Repeating a fact merges metadata but NEVER verifies it; confirmations counts mentions, not truth. A value that can change names its source (file, key, URL, person). Explicit source/user checks use crbro_revise status=verified with evidence. reference names a file, URL or person; temporal distinguishes current claims from history. Retired duplicates are refused. Decisions append; preferences stay local. Credentials become markers: crbro_secret them, store only the name. Returns neuron_id, action, shelf_life, near_duplicates and supersedes_unmatched (still live).

Input Schema

NameRequiredDescriptionDefault
typeYeserror = a mistake plus its correction, in one entry. debt = a deliberate deferral: what was NOT done on purpose, its ceiling, and the revisit condition, e.g. "DEFERRED: protecting the PDFs. CEILING: anyone can download them without signing up. REVISIT WHEN: the signup flow works."
topicNoTopic name, e.g. "OctoChat", "Firebase", "SEO Strategy". Required UNLESS you pass neuron_id, in which case the topic is taken from that neuron.
domainNoDomain, e.g. "proyectos-web". Applied when the neuron is created; on an existing neuron it only replaces the default "general" (crbro_revise domain replaces it unconditionally).
contentYesThe knowledge itself. Dense and self-contained: it is recalled without this conversation as context. For a value that can change (a version, price, port, host, setting, who holds a role), say where it came from — the file, config key, URL or person — so a later check knows where to look.
keywordsNoFacts only, and expected on every fact: 2-5 words a future question may use that the text does not contain — synonyms, the other language, the generic name of the product named. Indexed with the fact, never shown; the largest measured lever on recall. Without them the fact is stored and the answer carries keywords_missing. The same text again with new keywords merges them.
temporalNoFacts only: a claim about current state or a historical record. Historical does not establish what is true now.
neuron_idNoExact neuron id from crbro_recall, e.g. "project_octochat". Skips name matching entirely, and then topic is not needed.
rationaleNoWhy the decision was taken. Stored and indexed with it; ignored for other types.
referenceNoFacts only: where to check this claim; a relative file, URL or person, optional field/project. Stored as data, never fetched or executed. No credentials.
confidenceNo0.0-1.0, default 1.0. Facts only. On an exact-duplicate active fact the stored confidence is updated to this value (updated_in_place:true).
shelf_lifeNoFacts only: how fast this value goes stale. volatile = versions, prices, ports, hosts, paths, config, who holds a role; durable = rarely moves; permanent = history that cannot change; normal otherwise. Omitted: inferred from the text, and returned.
supersedesNoFacts this one replaces: their ids or exact text. They leave recall but stay in the file. Unmatched targets are reported and stay live.
keywords_replaceNoWhen the exact fact text already exists, replace its stored keywords with `keywords` instead of merging (default false). Teammates in a shared space only ever receive the union.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv2.10.0
    • addedInput schema / properties / reference
      Added value: +{
      +  "description": "Facts only: where to check this claim; a relative file, URL or person, optional field/project. Stored as data, never fetched or executed. No credentials.",
      +  "properties": {
      +    "field": {
      +      "maxLength": 256,
      +      "type": "string"
      +    },
      +    "kind": {
      +      "enum": [
      +        "file",
      +        "url",
      +        "person"
      +      ],
      +      "type": "string"
      +    },
      +    "project": {
      +      "maxLength": 256,
      +      "type": "string"
      +    },
      +    "value": {
      +      "maxLength": 2048,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "value"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / temporal
      Added value: +{
      +  "description": "Facts only: a claim about current state or a historical record. Historical does not establish what is true now.",
      +  "enum": [
      +    "current",
      +    "historical"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changedv2.9.1
    • changedInput schema / properties / content / description
      Previous value: -"The knowledge itself. Dense and self-contained: it is recalled without this conversation as context."New value: +"The knowledge itself. Dense and self-contained: it is recalled without this conversation as context. For a value that can change (a version, price, port, host, setting, who holds a role), say where it came from — the file, config key, URL or person — so a later check knows where to look."
    • changedInput schema / properties / keywords / description
      Previous value: -"Facts only. 2-5 words a future question may use that the text does not contain: synonyms, the other language, the generic name of the product named. Indexed with the fact, never shown. The same text again with new keywords merges them."New value: +"Facts only, and expected on every fact: 2-5 words a future question may use that the text does not contain — synonyms, the other language, the generic name of the product named. Indexed with the fact, never shown; the largest measured lever on recall. Without them the fact is stored and the answer carries keywords_missing. The same text again with new keywords merges them."
    • addedInput schema / properties / shelf_life
      Added value: +{
      +  "description": "Facts only: how fast this value goes stale. volatile = versions, prices, ports, hosts, paths, config, who holds a role; durable = rarely moves; permanent = history that cannot change; normal otherwise. Omitted: inferred from the text, and returned.",
      +  "enum": [
      +    "volatile",
      +    "normal",
      +    "durable",
      +    "permanent"
      +  ],
      +  "type": "string"
      +}
  3. Changed1 schema field changedv2.4.0
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  4. Changed3 schema fields changedv2.1.0
    • changedInput schema / properties / neuron_id / description
      Previous value: -"Exact neuron id from crbro_recall, e.g. \"project_octochat\". Skips name matching entirely."New value: +"Exact neuron id from crbro_recall, e.g. \"project_octochat\". Skips name matching entirely, and then topic is not needed."
    • changedInput schema / properties / topic / description
      Previous value: -"Topic name, e.g. \"OctoChat\", \"Firebase\", \"SEO Strategy\"."New value: +"Topic name, e.g. \"OctoChat\", \"Firebase\", \"SEO Strategy\". Required UNLESS you pass neuron_id, in which case the topic is taken from that neuron."
    • changedInput schema / required
      Previous value: -[
      -  "topic",
      -  "type",
      -  "content"
      -]New value: +[
      +  "type",
      +  "content"
      +]
  5. Changed3 schema fields changedv2.0.0
    • changedInput schema / properties / confidence / description
      Previous value: -"0.0-1.0, default 1.0. Facts only."New value: +"0.0-1.0, default 1.0. Facts only. On an exact-duplicate active fact the stored confidence is updated to this value (updated_in_place:true)."
    • changedInput schema / properties / domain / description
      Previous value: -"Domain, e.g. \"proyectos-web\". Applied when the neuron is created; on an existing neuron it only replaces the default \"general\"."New value: +"Domain, e.g. \"proyectos-web\". Applied when the neuron is created; on an existing neuron it only replaces the default \"general\" (crbro_revise domain replaces it unconditionally)."
    • addedInput schema / properties / keywords_replace
      Added value: +{
      +  "description": "When the exact fact text already exists, replace its stored keywords with `keywords` instead of merging (default false). Teammates in a shared space only ever receive the union.",
      +  "type": "boolean"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / keywords
      Added value: +{
      +  "description": "Facts only. 2-5 words a future question may use that the text does not contain: synonyms, the other language, the generic name of the product named. Indexed with the fact, never shown. The same text again with new keywords merges them.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  7. Changed9 schema fields changedv1.14.0
    • changedInput schema / properties / confidence / description
      Previous value: -"Confidence level 0.0-1.0 (default 1.0)"New value: +"0.0-1.0, default 1.0. Facts only."
    • changedInput schema / properties / content / description
      Previous value: -"The knowledge content to remember"New value: +"The knowledge itself. Dense and self-contained: it is recalled without this conversation as context."
    • changedInput schema / properties / domain / description
      Previous value: -"Domain category (e.g., \"proyectos-web\", \"infraestructura\")"New value: +"Domain, e.g. \"proyectos-web\". Applied when the neuron is created; on an existing neuron it only replaces the default \"general\"."
    • addedInput schema / properties / neuron_id
      Added value: +{
      +  "description": "Exact neuron id from crbro_recall, e.g. \"project_octochat\". Skips name matching entirely.",
      +  "type": "string"
      +}
    • changedInput schema / properties / rationale / description
      Previous value: -"Rationale for decisions"New value: +"Why the decision was taken. Stored and indexed with it; ignored for other types."
    • addedInput schema / properties / supersedes
      Added value: +{
      +  "description": "Facts this one replaces: their ids or exact text. They leave recall but stay in the file. Unmatched targets are reported and stay live.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / topic / description
      Previous value: -"The topic name (e.g., \"OctoChat\", \"Firebase\", \"SEO Strategy\")"New value: +"Topic name, e.g. \"OctoChat\", \"Firebase\", \"SEO Strategy\"."
    • changedInput schema / properties / type / description
      Previous value: -"Type of knowledge to store"New value: +"error = a mistake plus its correction, in one entry. debt = a deliberate deferral: what was NOT done on purpose, its ceiling, and the revisit condition, e.g. \"DEFERRED: protecting the PDFs. CEILING: anyone can download them without signing up. REVISIT WHEN: the signup flow works.\""
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "fact",
      -  "decision",
      -  "pattern",
      -  "preference"
      -]New value: +[
      +  "fact",
      +  "decision",
      +  "pattern",
      +  "preference",
      +  "error",
      +  "debt"
      +]
  8. First observedv1.4.0

TDQS

A4.4/5.0
Behavior4/5

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

The annotations already establish that this is a non-read-only, non-idempotent, non-destructive write. The description adds important behavior beyond that: repeated facts merge metadata but do not verify truth, confirmations count mentions rather than truth, retired duplicates are refused, decisions append, preferences stay local, and credentials should become markers. The only shortfall is that some phrases such as 'retired duplicates are refused' and 'action' are left terse rather than fully explained.

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

Conciseness3/5

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

It is front-loaded and avoids filler, but it is a single dense paragraph with many semicolon-separated fragments. The information is useful, yet the run-on structure makes it harder to scan than necessary for a 13-parameter tool.

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

Completeness4/5

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

For a complex write tool with no output schema, it covers the essential context: routing to alternatives, merge and verification semantics, credential handling, and return fields including near_duplicates and supersedes_unmatched. It is not fully complete because return fields are listed by name rather than explained and some edge-case behavior remains terse, but the schema supplies the remaining parameter detail.

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 schema already carries the main parameter burden and the baseline would be 3. The description still adds meaning beyond the schema by explaining type-specific behavior ('Decisions append; preferences stay local'), routing for supersedes versus crbro_revise/crbro_forget, and credential storage behavior, though many individual parameter details are left to the schema.

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?

The description opens with a specific verb and resource: it writes a fact, decision, pattern, preference, error or debt. It also immediately distinguishes the tool from crbro_recall, crbro_revise and crbro_forget, so an agent can tell what this tool is for without opening the 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?

It explicitly says to recall first and names alternatives for replacement, retirement, deletion, and verified updates. The routing rule for credentials to crbro_secret is also an explicit alternative, leaving little ambiguity about when to use this tool versus siblings.

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