Skip to main content
Glama

Note schemas

bm_schema
Read-onlyIdempotent

Validate notes against their schemas, infer a schema from a note type's notes, or diff a note type to detect schema drift in Basic Memory.

Instructions

Basic Memory note schemas (Picoschema). command: validate notes against their schema (one note_type, one note by identifier, or every type that has a schema); infer a schema from the notes of a note_type; diff a note_type's notes against its schema to find drift. A schema is a note with type: schema whose entity field names the note type it describes.

Input Schema

NameRequiredDescriptionDefault
commandYesWhat to do.
projectNoProject name, 'workspace/project', or project external id. Omit to use the default project.
note_typeNoThe frontmatter `type:` to check. Required for infer and diff.
thresholdNoFor infer: the share of notes a field must appear in to be suggested.
identifierNoFor validate: one note, instead of a whole note type.
output_formatNotext

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.24.1

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine domain context the annotations can't: that a schema is itself a note with type: schema whose `entity` field names the type it describes. Return values needn't be explained given an output schema exists.

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 resource and a tight, per-command enumeration, then a definitional sentence. It is a dense run-on with some nested parentheticals, but every sentence carries useful information and nothing is padding.

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 6-parameter, mutation-free, multi-mode tool with an output schema and full annotation coverage, the description supplies the one thing structured fields can't: the Picoschema concept and the command-to-target mapping. Omission of `project` and `threshold` is acceptable since the schema documents them well.

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

Parameters3/5

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

Schema description coverage is high (83%), so the schema already documents every parameter, including the enum values and threshold semantics. The description's mention of `note_type` and `identifier` largely restates what is in the schema, and it never touches `project` or `threshold`. Baseline 3 is appropriate.

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

Purpose4/5

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

The description names the resource (Basic Memory note schemas / Picoschema) and states the three concrete operations (validate, infer, diff) with the object each acts on. An agent can tell what this tool does without opening the schema. It does not, however, distinguish itself from the sibling schema_validate / schema_infer / schema_diff tools, which cover the same operations individually.

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

Usage Guidelines4/5

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

Each of the three `command` values is given an explicit usage condition: validate covers one note_type, one note by identifier, or every type with a schema; infer derives a schema from a note_type's notes; diff finds drift against a note_type's schema. What's missing is any statement of when to prefer this multi-command tool over the per-command siblings.

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