Skip to main content
Glama

memory_classify

Classify content into structured memory kinds (fact, procedure, decision, task, epic, etc.) and scope, with optional persistence as a capsule's sidecar label.

Instructions

Classify content into {kind: fact|procedure|decision|task|epic|brainstorm|doc|constraint|capability|failure_pattern, scope: project|global|session, authority_class, instruction_taint}. origin (extracted-candidate|owner-stated|tool-observation|external-import|session-note; default extracted-candidate) drives authority and default scope; external-import is BORN tainted. Pass kind to carry a memory_extract candidate's kind forward (never re-derived); omit it to derive from the content via the extract cue tables — closed ENGLISH + PORTUGUESE keyword lists (typed error when underivable — nothing is guessed; other languages: pass kind explicitly; the same extract ENTITY GATE applies, so a declarative/copular sentence derives a fact ONLY with an entity anchor — an acronym/number/path/dotted/backtick token — and "o sistema é resiliente" is underivable while "a API é lenta" derives fact). The schema-minimal call {content} is therefore wire-valid only when the content carries a derivable cue — the minimal ALWAYS-valid call is {content, kind}. taint_hint=true is monotone (never cleared by a clean local scan). With capsule_id (alias id — memory_get/memory_forget spell it id; capsule_id is canonical, both at once is a duplicate-field error) the label is PERSISTED as that capsule's sidecar record (upsert; audited) and readable back on memory_get's classification field; without it the call is advisory only. A persist onto a live capsule also answers content_matches_capsule — false means the label was derived from OTHER bytes than the capsule holds (the persist still executes, but the drift is named on the response and in the audit detail, never bound silently). Optional epistemic sidecar (u-r2, REQUIRES capsule_id — advisory-only calls carrying these are rejected with the teaching error, never silently dropped): evidence_state (closed set observed | inferred | unverified — how the claim relates to observation), proof_hint (the command that re-proves the claim), stale_if (the condition under which the claim expires). Persisted PER FIELD — an omitted field never clears a stored one — and read back on memory_get's epistemics and on retrieve envelopes. proof_hint/stale_if are ADVISORY STRINGS stored and surfaced verbatim, NEVER executed or evaluated by any code path.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoWhen set, the classification is PERSISTED as this capsule's sidecar label (`kind` + `scope`; upsert). Unknown id → typed error, nothing written. Omitted → advisory only. q101: `id` is accepted as an alias (memory_get/memory_forget spell it `id`); `capsule_id` is canonical, and sending BOTH is a duplicate-field error (the q60 content/text precedent).
kindNoCarry-forward kind (e.g. from a `memory_extract` candidate — donor law: a supplied kind is never re-derived). Omitted → derived from the content; typed error when underivable.
scopeNoExplicit scope override. Omitted → the origin's default scope.
originNoWhere the content came from — drives authority, default scope, and the born-tainted law. Omitted → `extracted-candidate` (the humble default: agent-inferred authority).
contentYesThe content to classify.
stale_ifNou-r2: OPTIONAL expiry condition persisted onto `capsule_id`'s epistemic sidecar. ADVISORY STRING ONLY — stored and surfaced verbatim, NEVER evaluated by any code path. Requires `capsule_id`.
capsule_idNoWhen set, the classification is PERSISTED as this capsule's sidecar label (`kind` + `scope`; upsert). Unknown id → typed error, nothing written. Omitted → advisory only. q101: `id` is accepted as an alias (memory_get/memory_forget spell it `id`); `capsule_id` is canonical, and sending BOTH is a duplicate-field error (the q60 content/text precedent).
proof_hintNou-r2: OPTIONAL re-prove command persisted onto `capsule_id`'s epistemic sidecar. ADVISORY STRING ONLY — stored and surfaced verbatim, NEVER executed by any code path. Requires `capsule_id`.
taint_hintNoUpstream taint verdict (monotone: `true` can never be cleared).
evidence_stateNou-r2: OPTIONAL epistemic state persisted onto `capsule_id`'s epistemic sidecar (closed set observed | inferred | unverified — how the claim relates to observation). Requires `capsule_id`: the epistemic fields are capsule annotations, an advisory-only call carrying one is a teaching rejection, never a silent drop.
Behavior5/5

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

With no annotations provided, the description fully shoulders the transparency burden. It exhaustively discloses behavioral traits: persistence behavior, advisory-only mode, monotone taint, epistemic sidecar conditions, derivation rules, error cases (underivable, teaching error), and drift detection. No contradictions.

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?

The description is dense and includes numerous details and edge cases, which is valuable but reduces conciseness. It is front-loaded with the core action but quickly expands into complex rules. More structure (e.g., bullet points or clearer separation of concerns) could improve quick comprehension.

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?

Given the tool's complexity (10 parameters, no output schema), the description covers most key aspects: input semantics, defaults, side effects, error conditions, cross-tool references (memory_extract, memory_get), and partial return value description. It lacks explicit output structure but provides sufficient context for effective use.

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 description coverage is 100%, so baseline is 3. The description adds significant value beyond the schema by explaining parameter interactions (e.g., origin default scope, epistemic field requirements, kind carry-forward rule, taint monotonicity). This enriches semantic understanding for effective tool usage.

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 clearly states the tool classifies content into specific kinds, scopes, and other attributes. It provides an enumeration of possible outputs and mentions relationship with memory_extract. However, it does not explicitly distinguish this tool from all sibling tools, which slightly reduces clarity.

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

Usage Guidelines3/5

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

The description offers some guidance, such as when to pass kind (carrying forward from memory_extract) vs. omitting it for derivation, and conditions for using capsule_id. However, it lacks explicit when-to-use vs. alternatives guidance, leaving the agent to infer context from the detailed rules.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/menot-you/n-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server