Skip to main content
Glama

Record knowledge

knowledge_write
Destructive

Lessons, dead ends, workflows and skills an organization's agents record and share. A draft is private to you; publishing shares it at a scope you can write. Drafts are purged when their identity ends. Actions — draft: write a private draft (kind, title, body; a dead_end also takes tried and failed_because). publish: publish a draft (from_draft) or content directly (kind, title, body, scope); supersedes publishes a new version of an item. distill: publish several drafts at once (from_drafts, scope). rate: rate an item 1–5 for what you used it for (id, rating, purpose, note). validate: mark an item validated or refuted (id, validation).

Input Schema

NameRequiredDescriptionDefault
idNorate, validate: an item id, or the citation search returns for it (knowledge:<id>@v<version>)
bodyNodraft, publish: the item's text
kindNodraft, publish
noteNorate: a usage note
seatNothe seat token identity_write action=take_seat gave you; pass it on every call while you drive that agent
scopeNodraft, publish, distill: the folder or document it applies to (path or node id). A console link (`/d/<Name-Slug>-<32 hex>`, whole or just its id) is accepted too.
titleNodraft, publish: a short title
triedNodraft, publish: dead_end: what was tried
actionYeswhat to do; each action takes the arguments its line names
ratingNorate: 1 to 5
reasonNowhy you are doing this, in one line (at most 200 characters); recorded with the event and exported with the log
purposeNorate: what you used it for
acting_asNoan agent identity below you (its id, from identity_write action=spawn) to make this one call as, with that agent's narrower access; for a helper whose session signs in as its person
from_draftNopublish: a draft id
supersedesNopublish: the item this is a new version of
validationNovalidate: validated or refuted
from_draftsNodistill: draft ids; repeatable
failed_becauseNodraft, publish: dead_end: why it failed
idempotency_keyNoAny unique string you choose for this write, e.g. a UUID. If you retry the call with the same key and the same arguments, the first answer is returned and nothing is done twice. Reusing a key for a different request is refused. Keys are kept 24 hours.
decay_half_life_daysNodraft, publish

Output Schema

NameRequiredDescriptionDefault
itemNo
itemsNo
notesNo
actionYesthe action that answered
failedNo
standingNo
retiringUntilNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed25 schema fields changed
    • addedInput schema / properties / seat
      Added value: +{
      +  "description": "the seat token identity_write action=take_seat gave you; pass it on every call while you drive that agent",
      +  "maxLength": 64,
      +  "type": "string"
      +}
    • removedOutput schema / properties / item / properties / publishedFrom / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / item / properties / publishedFrom / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / item / properties / scopeNodeId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / item / properties / scopeNodeId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / item / properties / supersededBy / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / item / properties / supersededBy / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / item / properties / supersedes / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / item / properties / supersedes / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / items / items / properties / publishedFrom / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / items / items / properties / publishedFrom / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / items / items / properties / scopeNodeId / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / items / items / properties / scopeNodeId / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / items / items / properties / standing / properties / meanByChain / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / items / items / properties / standing / properties / meanByChain / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / items / items / properties / supersededBy / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / items / items / properties / supersededBy / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / items / items / properties / supersedes / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / items / items / properties / supersedes / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / notes / items / properties / note / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / notes / items / properties / note / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / retiringUntil / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / retiringUntil / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / standing / properties / meanByChain / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / standing / properties / meanByChain / type
      Added value: +[
      +  "number",
      +  "null"
      +]
  3. Changed1 schema field changed
    • addedInput schema / properties / acting_as
      Added value: +{
      +  "description": "an agent identity below you (its id, from identity_write action=spawn) to make this one call as, with that agent's narrower access; for a helper whose session signs in as its person",
      +  "type": "string"
      +}
  4. Added

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and idempotentHint=false, and the description goes meaningfully beyond that: drafts are private, drafts are purged when their identity ends, publishing shares at a writable scope, and supersedes creates a new version rather than overwriting. What it omits is a warning about irreversibility of publish/supersede or the fact that rate/validate mutate existing items, and it never mentions the idempotency_key retry contract that the schema carries.

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

Conciseness5/5

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

Two parts: a front-loaded statement of what is recorded plus the privacy model, then a compact per-action spec in a single paragraph. Given 5 actions and 20 parameters, the density is earned and there is no filler sentence.

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?

An output schema exists, so return values need not be explained, and the action/parameter surface is fully covered. Gaps remain around permissions implied by 'a scope you can write', what purging on identity end means operationally, and how this tool relates to doc_create/registry_write for similar content.

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, but the description consolidates the conditional mapping of 20 parameters onto 5 actions into one readable place and adds genuine value for parameters like supersedes ('publishes a new version of an item') and the dead_end-specific tried/failed_because pair. It repeats some of the schema's per-parameter action prefixes, but the consolidated view reduces mis-invocation risk on a wide, action-switched schema.

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 opening sentence names the concrete resource (lessons, dead ends, workflows, skills) and the fact that agents record and share them, so the verb+resource are unambiguous. The five action verbs are enumerated, which lets an agent see the full surface without opening the schema. It stops short of differentiating from siblings like doc_create or registry_write, which overlap in 'write a thing' territory.

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 'Actions —' list effectively says what each action is for (draft is private, publish shares, distill publishes several at once), which implies the progression draft→publish→distill. However there is no explicit guidance on when to choose knowledge_write over doc_create/registry_write, nor any stated prerequisite for publishing (beyond 'a scope you can write'). Usage must be inferred.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources