Skip to main content
Glama

memory_skill_set

Insert a new version of a skill. Each call creates a new version.

Skills are atomic instruction building blocks. Playbooks compose them via tool_recipe.skills on memory_procedure_set. Routed through the guarded ingestion pipeline; only active skills are visible to recall and memory_skill_get. Read version first and pass expected_version when editing a shared skill. After memory_forget_skill, omit expected_version to recreate it: a conflict with current_version null means nothing active remains.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name (stable id)
tagsNoTags for discovery
agentNoOverride agent identity
body_mdYesMarkdown body the agent will read
owner_idNoOrg member UUID. Omit inherits last owner or the writer.
tool_hintsNoOptional structured hints (preferred MCP tools, params)
descriptionNoOne-line summary
expected_versionNoLatest active version from memory_skill_get. Omit to append unconditionally, including to recreate a deleted skill. A mismatch writes nothing and returns status=conflict with current_version, current_body (body_md), updated_by, and updated_at. current_version null means no active version remains: omit expected_version and write again instead of retrying.
verification_daysNoVerification window: 30, 90, or 180 days; 0 for none. Omit inherits the last window.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / expected_version
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Latest active version from memory_skill_get. Omit to append unconditionally, including to recreate a deleted skill. A mismatch writes nothing and returns status=conflict with current_version, current_body (body_md), updated_by, and updated_at. current_version null means no active version remains: omit expected_version and write again instead of retrying."
      +}
  2. Changed2 schema fields changed
    • addedInput schema / properties / owner_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Org member UUID. Omit inherits last owner or the writer."
      +}
    • addedInput schema / properties / verification_days
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Verification window: 30, 90, or 180 days; 0 for none. Omit inherits the last window."
      +}
  3. First observed

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: writes are routed through a guarded ingestion pipeline, only `active` skills are visible to recall and memory_skill_get, every call appends a new version, and a version mismatch writes nothing. It stops short on permissions/ownership requirements and, critically, never says whether a newly written skill becomes active and recallable immediately.

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?

The purpose and the versioning constraint are front-loaded, and the sentence about the conflict-with-null case is actionable rather than filler. It is slightly redundant, restating expected_version conflict behavior that the schema property already documents in detail, and the parenthetical tool names make it denser than necessary.

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 description still covers versioning, visibility gating, and the delete/recreate flow. The remaining gap is the activation lifecycle: an agent cannot tell from the description whether a freshly written version is immediately recallable or requires a separate step.

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 100% and the field-level docs (notably expected_version and its conflict payload) are already extremely detailed, so the schema does the heavy lifting. The description reinforces the expected_version workflow but adds little semantics beyond it and says nothing about tags, agent override, tool_hints, or verification_days beyond what the schema states.

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 opening sentence states a specific verb and resource with scope: 'Insert a new version of a skill. Each call creates a new version.' It then positions the tool within its family by naming memory_skill_get, memory_forget_skill, and the playbook composition path (tool_recipe.skills on memory_procedure_set), so an agent can distinguish it from memory_skill_resolve or memory_playbook_set without opening schemas.

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?

It gives explicit conditional guidance: read `version` first and pass `expected_version` when editing a shared skill, and omit it after memory_forget_skill to recreate a deleted skill. That covers the main when-to-use paths, but it never states when to prefer this over adjacent tools such as memory_remember or memory_playbook_set, so the alternative-selection guidance is incomplete.

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.