Skip to main content
Glama

Universal Memory (UMem)

PyPI version Python Version License: Apache-2.0

Website | Documentation

A vendor-agnostic cognitive persistence layer for AI agents. Eliminate the "repetition tax" by transporting your context, preferences, guidelines, and history seamlessly across sessions, IDEs, and LLM models.

To see the core idea visually, check out the Excalidraw design or the proposal structure:

Universal Memory MVP Proposal

Diagram Breakdown

  • Short-Term Memory (Ephemeral): Project-specific (folder-level) memories. A simple summary of recent changes, pending tasks, and project or task-level constraints.

  • Agents Behaviours: Comports the user's expected agent behaviors. Instead of requesting the same settings in every session, the agent understands the user by their traits, thoughts, and any context key to enhancing the overall experience. This encompasses:

    • Long-Term Memory

    • Short-Term Memory

    • User Preferences

  • Skill Creator: Encapsulates understanding of specific workflows. When a user explains a task pattern multiple times, the system translates it into structured, reusable agent skills.

  • Unified Instruction File (AGENTS.md): The shared persistence endpoint consumed by compatible local agent instances (e.g., Agent A, Agent B, Agent C).


The Problem: The "Repetition Tax"

Every time you open a new session in Claude Code, start a new chat in Cursor, spin up a terminal with OpenCode, or invoke a local AI assistant, you pay a steep cognitive tax:

  • Re-explaining your stack (e.g., "We use Python 3.12, Typer, and Ruff").

  • Repeating coding style preferences (e.g., "Prefer functional design, do not write docstrings unless requested").

  • Copy-pasting database connection schemas or module layouts.

  • Explaining workflow methodologies (e.g., "We follow Spec-Driven Development (SDD)").

Universal Memory acts as a local persistence layer that automatically connects to your AI runtimes, aligning them to your exact workflow, context, and rules with zero friction.


Related MCP server: Mnemexa MCP

Key Architectural Concepts

1. Dual-Memory Model

  • Short-Term Memory (Project Scope): Ephemeral, directory-specific context. Tracks what you did 10 minutes ago, current active tasks, and immediate constraints.

  • Universal Memory (Global Scope): Long-lived preferences, style guidelines, tool configurations, and identity.

2. Auto-Adaptation Engine

Instead of copy-pasting instructions, umem monitors your session context and automatically updates active project instruction manifests (AGENTS.md, CLAUDE.md, .cursor/rules/, etc.), enforcing operational consistency across all agents.

3. Model Context Protocol (MCP) Integration

Integrate umem natively with any client supporting the standard MCP (such as Claude Desktop or Cursor). AI agents can programmatically retrieve context, learn new facts, and suggest skills on the fly.

4. Agent Skills Standard

Encapsulates complex, repetitive procedural instructions into formal Agent Skills (conforming to the agentskills.io standard), complete with structured directories containing SKILL.md instructions, helper scripts/, and documentation references/.

Universal Memory keeps one canonical source for each skill. Shared, user-facing project skills live under umem/skills/<slug>/SKILL.md; private, operational, and legacy project skills live under .umem/skills/<slug>/SKILL.md. Native runtime folders such as .agents/skills/, .opencode/skills/, and .antigravity/rules/ receive complete synchronized copies so each agent can consume the same skill in its expected layout.


Installation & Setup

Ensure you have Python 3.12+ installed. You can run or install umem using your preferred package manager.

Try instantly with uvx

You can run umem without installing it permanently:

uvx --from universal-memory umem --help
WARNING

uvx is best for quick trials. For ongoing use, install Universal Memory as a persistent tool so umem is always available and can fully manage long-lived global memories and synced agent skills:

uv tool install universal-memory

Install via PyPI

pip install universal-memory

Upgrade Universal Memory

umem update does not upgrade the Python package from PyPI. It performs local, offline maintenance for the current .umem workspace, such as schema migrations, benchmark refreshes, and skill synchronization.

To upgrade the installed umem executable, use the package manager that installed it:

# If installed with uv tool
uv tool upgrade universal-memory

# If installed with pipx
pipx upgrade universal-memory

# If installed with pip
python -m pip install --upgrade universal-memory

# If running temporarily with uvx
uvx --refresh --from universal-memory umem --version

Confirm the executable you are running:

umem --version
which umem

Upgrading the executable does not silently mutate existing projects. The next time you work in an initialized project, reconcile it locally:

umem update --check
umem update
umem update --skills
umem connect
umem doctor

You do not need to run umem init again. Local maintenance creates snapshots and audit records before UMEM-owned writes. Existing .umem/skills/use-universal-memory/ trees and customized managed files are preserved; if both legacy and canonical Universal Memory skill roots exist, UMEM stops for an explicit migration decision instead of merging or deleting either tree.


Quick Start Guide

1. Initialize your project

Open your project directory and run:

umem init

Universal Memory detects the agents already used in the workspace, presents one combined confirmation, configures the best available project integration, and verifies that the agent can read project context. You do not need to choose an integration mechanism or know which instruction files it uses.

When a compatible agent needs the portable Agent Skill, UMEM discloses any network use and external project-scoped copy before confirmation, disables anonymous installer telemetry, and treats a missing prerequisite or failed installation as recoverable instead of blocking initialization.

To connect another agent later, run:

umem connect

Explicit runtime selection remains available for automation and unusual setups, but it is not required for the normal path.

UMEM resolves the detected agent's project skill directory from a reviewed catalog pinned to skills@1.5.20, runs one project-scoped installation, and validates the complete installed skill tree plus a real umem context read. It does not install into a second project and copy the result back.

The command orchestrated by UMEM in v0.6.4 is equivalent to:

DISABLE_TELEMETRY=1 npx --yes skills@1.5.20 add https://github.com/YanAmorelli/universal-memory/tree/v0.6.4/skills/universal-memory --skill universal-memory --agent pi --copy -y

Here pi is an example; UMEM supplies the detected agent ID. Node.js and npx are optional prerequisites for this external bridge. When either is unavailable, initialization remains usable and UMEM reports a managed or manual fallback. Unknown agent IDs never execute npx.

2. Bootstrap one agent session

At the start of each conversation or agent session, prefer the MCP bootstrap() tool when it is connected. Otherwise, use the equivalent CLI command:

umem bootstrap --format json

This single call validates the integration and returns project status, active project context, and the skills catalog. Treat data.context as active context, inspect data.skills.list, and request details only for skills relevant to the current task:

umem skills detail <skill-id-or-name> --format json

Run bootstrap only once per conversation or session. It replaces the previous startup sequence of separate status, context, and skills list calls; it does not perform installation, synchronization, or configuration.

3. Save your first preferences and facts

Tell umem what to keep in mind. You can target either the project scope (this folder) or the global scope (across all projects):

# Save a global preference
umem remember --scope global "Yan is a solutions architect specializing in AI applications"

# Save a project-specific constraint
umem remember --scope project "Always use Tomllib instead of PyYAML for configuration files" --tag config

4. Retrieve Context

Verify the consolidated context summary generated by combining short-term facts, rules, and global preferences:

umem context --scope project

5. Adopt or create an Agent Skill

If a skill already exists, choose the safest adoption path first. Use adopt for an existing .umem/skills/<slug> directory; use import for native runtime directories such as .agents/skills/<slug> and sync it back out to configured runtimes:

umem skills adopt .umem/skills/review-protocol --scope project
umem skills import .agents/skills/review-protocol --scope project --sync
umem skills detail review-protocol

If you are starting from scratch, draft and publish it without native side effects:

umem skills draft create \
  --name "Review Protocol" \
  --description "Reusable review workflow" \
  --trigger "when reviewing code"
umem skills draft validate review-protocol
umem skills publish review-protocol --format summary

For a one-step workflow, create the canonical skill. It is canonical-only by default; request sync explicitly when native runtime targets should be written:

umem skills create \
  --name "Review Protocol" \
  --description "Reusable review workflow" \
  --trigger "when reviewing code" \
  --format summary
umem skills sync review-protocol --check-gitignore --format summary

After editing .umem/skills/review-protocol/SKILL.md, refresh one runtime skill with:

umem skills sync review-protocol

6. Check status and health

umem status

Host Integration & Support Matrix

UMEM deliberately separates native ownership from portable compatibility:

Tier

Contract

Guarantee

Tier 1 — Native/Managed

Maintained host adapter, native setup and repeatable validation

UMEM owns and tests the documented integration.

Tier 2 — Directed CLI

AGENTS.md or the official Agent Skill directs a shell-capable agent to the UMEM CLI

UMEM validates portable instructions, CLI access, and context reading, but not every host-specific behavior.

Tier 3 — Unmanaged MCP

The user manually connects MCP to a host without a programmed workflow

UMEM validates MCP availability only; agent behavior is not guaranteed.

The maintained and named integration surfaces are:

Runtime / Host

Support Tier

Config / Instructions Target

Claude Code

Tier 1 — Native/Managed

CLAUDE.md, .claude/skills/, .claude/settings.json

OpenCode

Tier 1 — Native/Managed

AGENTS.md, .opencode/skills/, .opencode/opencode.jsonc

Codex (OpenAI)

Tier 1 — Native/Managed

AGENTS.md, .agents/skills/, .codex/config.toml

Cursor

Tier 2 — Directed CLI

.cursor/rules/universal-memory.mdc

Antigravity

Tier 2 — Directed CLI

.antigravity/rules/universal-memory.md

Pi, Gemini CLI, GitHub Copilot, Cline, Zed, and other reviewed Agent Skills hosts

Tier 2 — Directed CLI

Project skill directory pinned to the skills@1.5.20 catalog

Windsurf

Tier 2 — Frozen legacy adapter

.windsurf/skills/universal-memory/

Unmodeled MCP host

Tier 3 — Unmanaged MCP

User-managed MCP configuration

An agent appearing in the external skills catalog does not make it Tier 1. Tier 1 is intentionally small and requires a maintained adapter, release evidence, and repeatable host-specific validation. See the Getting Started guide for legacy-project behavior and the portable installation flow.


Running as a Model Context Protocol (MCP) Server

AI agents can interact directly with your memory over the Model Context Protocol. Manual MCP configuration for a host without a programmed UMEM workflow is Tier 3: tool availability is validated, but instruction loading and agent behavior are not guaranteed.

One-off Launch Command

uvx --from universal-memory umem-mcp

Persistent Install Launch Command

umem-mcp

Bootstrap Once Per Session

When the MCP server is connected, agents should call bootstrap() once at the beginning of the conversation or session. It is semantically equivalent to umem bootstrap --format json: both return status, active project context, and the skills catalog, and both preserve the same fail-fast error behavior. Skill details remain separate and should be requested only for selected relevant skills.

Example Config: Claude Desktop (claude_desktop_config.json)

Use the uvx form when Universal Memory is not installed as a persistent tool:

{
  "mcpServers": {
    "universal-memory": {
      "command": "uvx",
      "args": [
        "--from",
        "universal-memory",
        "umem-mcp"
      ]
    }
  }
}

If you installed Universal Memory with uv tool install universal-memory or pipx install universal-memory, use the stable entrypoint:

{
  "mcpServers": {
    "universal-memory": {
      "command": "umem-mcp",
      "args": []
    }
  }
}

Troubleshoot startup with:

uvx --from universal-memory umem doctor
uvx --from universal-memory umem-mcp --help

For GUI-launched MCP hosts, use the absolute path to uvx if the host does not inherit your shell PATH.


Safety & Guardrails

  • API Secret Scanner: umem passes all incoming facts through a passive scanner to block API keys, tokens, or credentials from being stored in your persistent cognitive base.

  • Snapshots & Rollbacks: Every automated update to your config files (AGENTS.md, CLAUDE.md) is preceded by a snapshot backup. You can rollback anytime:

    # View audit logs
    umem audit list --scope project
    
    # Revert last automated modification
    umem rollback --scope project
  • Skill Drift Protection: umem skills sync detects managed native drift and keeps local changes by default. Use --drift-decision overwrite only when you intentionally want canonical UMEM content to replace the managed native copy.

  • External Bridge Boundary: Tier 2 installation through npx skills is an explicitly confirmed external mutation. UMEM disables anonymous installer telemetry, constrains the target to the current project, and validates the complete result, but labels the write as externally executed rather than claiming UMEM snapshot ownership.


Managing Agent Skills

You can draft, create, adopt, import, validate, maintain, and sync specialized behaviors:

# List all active skills
umem skills list

# Inspect one skill
umem skills detail review-protocol

# Draft, validate, and publish without native runtime writes
umem skills draft create --name "Review Protocol" --description "Reusable review workflow"
umem skills draft validate review-protocol
umem skills publish review-protocol

# Create a new canonical skill and explicitly sync native targets
umem skills create --name "Review Protocol" --description "Reusable review workflow" --sync

# Adopt existing canonical work
umem skills adopt .umem/skills/review-protocol --scope project

# Import an existing native skill and distribute complete runtime copies
umem skills import .agents/skills/review-protocol --scope project --sync

# Validate and maintain canonical skills
umem skills validate review-protocol
umem skills canonical update review-protocol --file .umem/skills/review-protocol/SKILL.md
umem skills rename review-protocol --slug review-checklist
umem skills cleanup review-checklist --targets --format summary
umem skills cleanup review-checklist --targets --apply
umem skills repair --remove-orphan-targets --format summary

# Synchronize one canonical skill into active native runtime folders
umem skills sync review-protocol --check-gitignore --format summary

# Synchronize all active canonical skills during maintenance
umem update --skills

# Track and review recurring workflow candidates
umem skills track --name "Review Protocol" --description "Recurring review workflow"
umem skills recommend --scope project
umem skills propose <latent-skill-id> --decision yes
umem skills promote <recommendation-id> --yes
umem skills generate <latent-skill-id> --yes

  • Aparta: We recommend Aparta if you work across personal, work, or client accounts. It configures per-project identities for Git, GitHub CLI, cloud tools, and supported AI coding agents. While UMem carries your context and preferences across sessions and tools, Aparta helps those tools use the right account for each project folder.


License

Distributed under the Apache License 2.0. See LICENSE and NOTICE for more information.

Available Tools

38 tools
activate_skillA

Reactivate an ignored latent skill candidate whose generated SKILL.md still exists and has valid frontmatter. Use to reverse candidate deactivation; use create_skill or publish_skill for canonical creation. Requires initialized project memory and a latent candidate ID in ignored state. Updates latent status with audit/snapshot references; it does not reinstall removed native files. Returns the candidate, skill_file, and mutation references. Use sync_skills separately for native copies where applicable; repeating activation fails once the candidate is active.

NameRequiredDescriptionDefault
latent_skill_idYesExact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing preconditions (initialized project memory, candidate must be in ignored state), that it writes latent status with audit/snapshot references, that it does not reinstall removed native files, and that repeat activation fails once active — consistent with idempotentHint=false. The only weak spot is that the return-value sentence overlaps the output schema rather than adding new behavioral detail.

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 action and its preconditions, and nearly every clause carries distinct information (alternatives, preconditions, non-effects, failure mode). The sentence enumerating return values ('Returns the candidate, skill_file, and mutation references') is largely redundant given the output schema.

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

Completeness5/5

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

For a single-parameter mutation with an output schema, the description supplies everything an agent needs: entry preconditions, alternatives, side effects on latent status, what it explicitly does not do, and repeat-call behavior. No meaningful gap remains.

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 schema already explains that latent_skill_id is the exact candidate ID, not a canonical slug or file path. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

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?

States a specific verb ('reactivate') and a precisely scoped resource ('an ignored latent skill candidate whose generated SKILL.md still exists and has valid frontmatter'). It explicitly distinguishes itself from create_skill, publish_skill, and sync_skills, so an agent can select it without opening any 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?

Explicitly names when to use it ('to reverse candidate deactivation'), which siblings to use instead for canonical creation (create_skill, publish_skill) and native copies (sync_skills), and the failure condition for repeated calls. Nothing about routing is left to inference.

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

adopt_skillA
Destructive

Register an existing canonical skill directory in UMEM while avoiding duplicate slugs. Use for unregistered canonical content; use import_skill for an external/native source or create_skill for new content. Project scope requires initialization. May reconcile canonical location and registration; optional native replacement and synchronization can change native copies. Defaults avoid native replacement/sync. Returns adopted skill metadata, paths, warnings, and write references; inspect conflicts before repeating.

NameRequiredDescriptionDefault
pathYesExisting local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content.
slugNoCanonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path.
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
categoryNouser-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy.user-facing
visibilityNoProject content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared.
replace_nativeNoAllow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source.
sync_after_adoptNoSynchronize native targets after adoption when true. Defaults to false.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description builds on that by naming what can be destroyed ('optional native replacement and synchronization can change native copies') and reassuring that 'Defaults avoid native replacement/sync'. It also warns 'inspect conflicts before repeating', which explains the non-idempotent hint. It stops short of saying whether adoption is reversible or how failures/rollback behave, so it is strong but not exhaustive.

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?

Purpose and sibling routing are front-loaded in the first two sentences, with behavioral caveats following. It is dense but the semicolon-chained clauses about defaults and return values make it slightly harder to scan than it needs to be; every sentence does still carry information.

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 7-parameter destructive mutation with full annotations and an output schema, the description covers routing, prerequisites, default safety posture, and a caution about conflicts. Return details are delegated to the output schema, which is acceptable, though a note on whether a prior adoption can be undone would close the remaining gap.

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 coverage is 100%, so path, slug, scope, category, visibility, replace_native and sync_after_adopt are already fully documented. The description only reinforces defaults ('Defaults avoid native replacement/sync') and the initialization requirement tied to project scope, adding small marginal value rather than new syntax or format guidance. Baseline 3 is appropriate when the schema carries the semantics.

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?

States a specific verb ('Register') plus resource ('existing canonical skill directory') and adds the constraint 'in UMEM while avoiding duplicate slugs'. It immediately distinguishes itself from the two closest siblings by name (import_skill, create_skill), so an agent can route without opening any 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?

Gives an explicit when-to-use rule ('unregistered canonical content') and names the alternatives with their selecting conditions: import_skill for an external/native source, create_skill for new content. It also adds a prerequisite ('Project scope requires initialization'), which is exactly the kind of gating an agent needs before calling.

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

bootstrapA

Load status, project context, and the skill catalog once at session startup. Use instead of separate status, context, and list_skills calls; use get_skill_detail only for relevant catalog entries. Requires initialized project memory for context loading. Persists the compiled context summary and audit event; repeated calls create fresh records. Does not install skills or synchronize hosts. Returns status, context, and skills on success or an error envelope if a step fails.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare non-read-only, non-idempotent, non-destructive, and the description explains exactly why: it persists a compiled context summary and audit event, and repeated calls create fresh records. It also discloses success/failure shape (status, context, skills or an error envelope) and negative scope, adding real value beyond the annotation flags.

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?

Six short sentences, front-loaded with the action and its substitutes, followed by prerequisite, side effects, exclusions, and return shape. Every sentence carries distinct information; none restates the name or annotations verbatim.

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

Completeness5/5

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

With an output schema present, the description need only cover call placement, prerequisites, and side effects, all of which are stated. For a zero-parameter aggregate tool with real persistence side effects, nothing material is missing.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline applies. The description instead spends its words on behavior and call placement, which is the right trade-off.

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?

States a specific verb and three concrete resources (status, project context, skill catalog) plus the timing constraint (once at session startup). This clearly distinguishes it from the aggregatable siblings status, context, and list_skills, and from get_skill_detail.

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?

Explicitly names the three calls it replaces, names the sibling to use instead for deeper catalog lookups, and states the prerequisite (initialized project memory). It also gives exclusions: it does not install skills or synchronize hosts, which routes the agent to the host/skill management tools.

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

cleanup_skillA
Destructive

Preview or remove managed native copies for one active canonical skill. Use when cleaning that skill's installed runtime copies; use repair_skills for orphan targets across the project and deactivate_skill for latent candidate state. Requires initialized project memory and a canonical ID, slug, or unambiguous name. dry_run=true lists removable/blocked paths; false deletes removable native directories. Keeps canonical content and blocks targets without suitable managed manifests. targets is a compatibility flag and currently does not disable cleanup. Returns plan, removed_paths, and warnings. No cleanup snapshot is created; restore native copies with sync_skills if needed.

NameRequiredDescriptionDefault
dry_runNotrue (default) reports removable and blocked native targets; false deletes removable managed native copies without deleting canonical content.
targetsNoCompatibility flag, default true. Currently ignored by cleanup execution: false does not disable native target removal; use dry_run=true to preview.
skill_id_or_nameYesActive canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description goes well beyond them: it discloses that canonical content is preserved, that targets lacking suitable managed manifests are blocked, that no cleanup snapshot is created and sync_skills is the recovery path, and that the targets flag is inert. That is exactly the operational context an agent needs before invoking a destructive tool.

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 description is front-loaded with purpose and alternatives, then caveats, then return/restore information — a sensible ordering and dense with signals. It is somewhat long and partially duplicates the schema's parameter text, but no sentence is empty.

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

Completeness5/5

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

For a destructive, three-parameter tool with an output schema, it covers purpose, alternatives, prerequisites, destruction scope, the no-snapshot caveat, recovery path, and named return fields (plan, removed_paths, warnings). Nothing an agent needs in order to call this safely is missing.

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%, so dry_run, targets, and skill_id_or_name are already documented in the schema with the same semantics the description restates. The description adds only the accepted identifier forms (ID, slug, unambiguous name) and the latent-candidate exclusion, which is marginal value over 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 names a specific verb (preview or remove) and resource (managed native copies for one active canonical skill), and explicitly scopes it as 'one active canonical skill' rather than project-wide. An agent can distinguish it from repair_skills and deactivate_skill without opening any 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 states when to use this tool ('cleaning that skill's installed runtime copies') and names both alternatives with the condition that selects them: repair_skills for orphan targets across the project, deactivate_skill for latent candidate state. Prerequisites (initialized project memory, resolvable skill identifier) are also given.

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

contextA

Compile active facts, preferences, and rules into prompt-ready Markdown within a character budget. Use for agent context; use list_facts to inspect individual records. Project scope requires initialized project memory; global scope excludes project content. Persists a generated summary and audit event, so repeated calls create new records even with identical arguments. Returns context_markdown, included fact IDs, size information, and the summary metadata.

NameRequiredDescriptionDefault
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
max_size_charsNoMaximum compiled Markdown length in characters, including headings. Defaults to 4000; values below the 110-character template minimum fail.
agent_session_keyNoOptional caller session correlation key included in the audit event. Omitted leaves it unset; do not include secrets.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The annotations already declare readOnlyHint=false and idempotentHint=false; the description explains what those hints mean in practice by disclosing that it persists a generated summary and audit event, so repeated calls create new records even with identical arguments. It also adds a precondition (initialized project memory for project scope) and the failure condition for the size budget. That is real behavioral context beyond the structured fields, and none of it contradicts the annotation set.

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?

Four tight sentences, front-loaded with the core action and immediately followed by the routing guidance. The final sentence enumerating return fields is largely redundant with the output schema, which is a minor waste, but everything else earns its place.

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

Completeness5/5

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

Given a write-side tool with persistence and audit side effects, the description covers the essentials an agent needs: prerequisites, scope exclusions, non-idempotency, and the size floor failure mode. With 100% schema coverage, an output schema, and annotations already present, nothing further is required.

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 the baseline is 3, and the description earns credit above that by explaining the operational consequence of scope (project requires initialized project memory; global excludes project content), which the schema does not state. The character budget is described as a compilation constraint rather than a mere parameter, reinforcing the max_size_chars semantics. It does not add anything about agent_session_key beyond the schema's own warning.

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 definition opens with a concrete verb and resource: 'Compile active facts, preferences, and rules into prompt-ready Markdown within a character budget.' It also distinguishes itself from the sibling it could be confused with, list_facts, by stating that list_facts is for inspecting individual records. An agent can select between them without opening either 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 states the intended use case ('Use for agent context'), names the alternative tool and its purpose ('use list_facts to inspect individual records'), and specifies scope preconditions ('Project scope requires initialized project memory; global scope excludes project content'). Both the when and the when-not are explicit.

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

create_skillA

Create a new canonical Agent Skill from a name, purpose, triggers, and optional Markdown. Use for an explicit new skill request; use import_skill for an external/native directory, adopt_skill for existing canonical content, or create_skill_draft for an editable draft. Project scope requires initialization. Writes canonical content and registration; sync=false avoids native copies, true also synchronizes selected targets. Returns skill metadata, paths, warnings, and write references. Repeated calls may conflict with an existing slug; use update_canonical_skill to edit it.

NameRequiredDescriptionDefault
nameYesNonempty human-readable skill name. Used for display and candidate matching; not a file path.
slugNoCanonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path.
syncNoSynchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content.
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
targetsNoNative runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets.
categoryNouser-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy.user-facing
triggersNoPhrases or situations that should select the skill. Without raw_markdown, omitted/empty triggers render the skill name as the file trigger; supplied Markdown provides its frontmatter triggers.
visibilityNoProject content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared.
descriptionYesNonempty description of the reusable workflow purpose; distinguish it from neighboring skills.
raw_markdownNoComplete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses what is actually written (canonical content plus registration), the observable consequence of the sync flag (false avoids native copies, true synchronizes selected targets), the failure mode behind idempotentHint=false (repeated calls may conflict with an existing slug), and a hard precondition about project initialization. It also names the response contents, so an agent knows warnings and write references come back rather than a bare success.

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?

Purpose comes first, then sibling routing, then preconditions, then write behavior, then return values — a sensible front-loaded order for an agent scanning for a routing decision. Each sentence carries distinct information; none is filler, and the density is justified by a ten-parameter mutation tool.

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

Completeness5/5

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

For a non-idempotent write tool with ten parameters, this is complete: the agent learns when to pick it, when not to, what prerequisite must hold, what the sync flag changes on disk, what happens on repeat invocation, and roughly what comes back. Output-schema and annotation coverage are already supplied, and the description does not waste space duplicating them.

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%, so the schema already documents all ten parameters in detail, including the sync default and the targets fallback. The description restates the sync behavior but adds little syntax or semantics beyond what the schema provides. Baseline 3 is appropriate when the schema carries the parameter burden.

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 gives a specific verb and resource ("Create a new canonical Agent Skill") and names the inputs it is built from (name, purpose, triggers, optional Markdown). This is immediately distinguishable from siblings such as create_skill_draft, import_skill, and adopt_skill, which the description names explicitly.

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 states the selecting condition ("explicit new skill request") and then routes to three alternatives by name — import_skill for external/native directories, adopt_skill for existing canonical content, create_skill_draft for an editable draft. It also adds a second exclusion for the edit case ("use update_canonical_skill to edit it") and a precondition ("Project scope requires initialization"), leaving nothing to infer.

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

create_skill_draftA
Destructive

Create an editable skill draft without canonical publication or native runtime writes. Use when content needs review; use create_skill for direct canonical creation. Project scope requires initialization. Both draft paths are relative to the server workspace: project uses .umem/drafts/skills//SKILL.md; global uses drafts/skills//SKILL.md and registers the draft in user memory. Global scope does not move the physical draft into user memory; draft-file audit/snapshot writes also use the project writer. Writes the draft file and registration with snapshot/audit references. An existing unregistered file at the same draft path can be overwritten without confirmation; only registered slug collisions are rejected. Inspect the draft destination first. When generating Markdown, omitted/empty triggers default to the skill name. Returns draft metadata, paths, validation information, and warnings. Validate with validate_skill before publish_skill.

NameRequiredDescriptionDefault
nameYesNonempty human-readable skill name. Used for display and candidate matching; not a file path.
slugNoDraft directory slug. Omitted derives from the name. Registered slug collisions are rejected; an existing unregistered draft file can be overwritten.
scopeNoRegistration scope, project by default. Draft files stay relative to the server workspace: project writes .umem/drafts/skills/<slug>/SKILL.md; global writes drafts/skills/<slug>/SKILL.md while registering in user memory. Global does not place the draft file in the user memory directory.project
triggersNoTrigger phrases for generated draft content. Without raw_markdown, omitted/empty triggers render the skill name as the default trigger; supplied raw Markdown takes precedence.
descriptionYesNonempty description of the reusable workflow purpose; distinguish it from neighboring skills.
raw_markdownNoComplete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and non-idempotent, and the description adds concrete behavior beyond them: an existing unregistered file at the draft path 'can be overwritten without confirmation' while only registered slug collisions are rejected, plus the advice to inspect the draft destination first. It also clarifies the non-obvious global-scope behavior that the physical file is not moved into user memory and that audit/snapshot writes use the project writer.

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 intent and alternative are front-loaded well, but the body is dense and partly redundant with the schema, restating the two draft paths and the global-scope registration nuance that the parameter descriptions already cover. Every sentence is informative, yet the same facts are repeated rather than compressed.

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 destructive write tool with an output schema present, the description covers the safety profile, scope semantics, overwrite risk, and the validate-before-publish workflow, so an agent has what it needs. It stops short of noting permissions/auth requirements, which is the only notable omission.

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 defines all six parameters, but the description adds real meaning: the exact draft paths per scope (.umem/drafts/skills/<slug>/SKILL.md vs drafts/skills/<slug>/SKILL.md) and the defaulting rule that omitted/empty triggers fall back to the skill name and that supplied raw_markdown takes precedence. It goes somewhat beyond a baseline 3 by clarifying cross-parameter interaction.

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 uses a specific verb+resource ('Create an editable skill draft') and explicitly bounds the scope ('without canonical publication or native runtime writes'), then names the sibling it is contrasted with: create_skill for direct canonical creation. An agent can distinguish this from create_skill/publish_skill without opening either 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 states when to use it ('when content needs review'), names the alternative for the other case ('use create_skill for direct canonical creation'), gives a prerequisite ('Project scope requires initialization'), and adds a follow-up path ('Validate with validate_skill before publish_skill'). Exclusions and routing are explicit.

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

deactivate_skillA
Destructive

Mark an active latent skill candidate ignored and disable its recorded native installations according to runtime policy. Use to deactivate a latent workflow; use cleanup_skill for explicit native cleanup of a canonical skill. Requires initialized project memory and a latent ID in active state. Preserves canonical SKILL.md, but can remove native directories, replace them with disabled stubs, or preserve them according to host policy. Returns candidate and audit/snapshot references; removed directories do not necessarily have recovery snapshots. Repeating the call fails once ignored. activate_skill restores candidate state but does not reinstall native files.

NameRequiredDescriptionDefault
latent_skill_idYesExact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The annotations declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false; the description goes well beyond by disclosing what is and isn't destroyed (canonical SKILL.md preserved; native directories may be removed, stubbed, or preserved per host policy). It also warns that removed directories may lack recovery snapshots and confirms the non-idempotent behavior ('repeating the call fails once ignored'), and names the recovery path via activate_skill.

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 action and its scope are front-loaded in the first sentence, and each subsequent sentence carries distinct information (alternative routing, preconditions, destruction semantics, recovery). It is dense with multi-clause sentences, but no statement is filler.

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

Completeness5/5

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

For a destructive one-parameter tool with an output schema and full annotation coverage, the description covers preconditions, policy-dependent side effects, irreversibility caveats, and the recovery tool. Nothing an agent needs before invoking it is missing.

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 defines latent_skill_id and its disambiguation from slugs and paths, setting a baseline of 3. The description adds a state constraint not in the schema ('a latent ID in active state'), which meaningfully changes parameter validity.

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?

States a specific verb and resource ('mark an active latent skill candidate ignored and disable its recorded native installations') and immediately contrasts with the sibling cleanup_skill, which handles native cleanup of a canonical skill. The distinction between latent candidates and canonical skills is explicit, so an agent can choose between them without opening either 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?

Gives explicit when-to-use ('deactivate a latent workflow'), an explicit alternative with its condition ('use cleanup_skill for explicit native cleanup of a canonical skill'), and preconditions ('requires initialized project memory and a latent ID in active state'). It also notes the failure mode of repeating the call once ignored, which bounds usage.

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

doctorA
Read-onlyIdempotent

Inspect Python, storage, project layout, and supported host integration health. Use for diagnostic checks; use host_setup to change configuration. Does not repair or install anything and can inspect an uninitialized environment. Returns named checks with success/failure details and recovery guidance.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description nonetheless adds real behavioral context beyond them: it does not repair or install anything, it tolerates an uninitialized environment, and it returns named checks with success/failure and recovery guidance. That is solid added value for a zero-parameter tool.

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?

Three short sentences, front-loaded with the scope, then the alternative tool, then the behavioral caveats and return shape. Every sentence carries distinct information and none restates the tool name.

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?

With an output schema present, the description need not document return fields, and it appropriately summarizes them in one clause. Coverage of behavior and alternatives is adequate for a read-only diagnostic; the only missing piece is disambiguation from the several other health/layout-inspection siblings.

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?

The tool takes no parameters (0 properties, additionalProperties false), so there is no parameter semantics to explain; the baseline for a parameterless tool is 4. The description correctly implies no inputs are needed by framing it as a pure inspection call.

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 opens with a specific verb and enumerates the concrete domains inspected (Python, storage, project layout, host integration health), so the agent knows exactly what it checks. It differentiates itself from host_setup explicitly, but says nothing about how it differs from closely-named siblings such as status, host_check, or inspect_project_layout, which limits it to a 4.

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 usage context ('Use for diagnostic checks') and names an alternative with the condition that selects it ('use host_setup to change configuration'). It also states a useful negative condition — it works on an uninitialized environment. It stops short of routing among the other health-adjacent siblings, so not a 5.

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

generate_skillA
Destructive

Generate physical Agent Skill content for an approved latent candidate. Use after proposal approval; use create_skill for new canonical content without a latent candidate and publish_skill for a draft. Requires initialized project memory and an eligible latent ID. Writes skill content, native copies for enabled runtimes, and related state; update_existing=true permits updating existing generated content while retaining native drift protections. Returns generation details, paths, warnings, and write references. Review existing content before enabling updates or retrying.

NameRequiredDescriptionDefault
latent_skill_idYesExact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path.
update_existingNoPermit updating an existing generated skill when true. Defaults to false; native drift protections still apply.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only give the safety profile (destructiveHint=true, idempotentHint=false); the description goes well beyond them by disclosing exactly what gets written — skill content, native copies for enabled runtimes, and related state — plus drift protections under update_existing and the fact that warnings are returned for review.

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 most decision-relevant information (purpose, sibling routing, prerequisites) is front-loaded, and the sentences are dense with signal. It is borderline packed — six clauses in one paragraph — but almost nothing is filler.

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

Completeness5/5

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

An output schema exists, yet the description still names the return shape (generation details, paths, warnings, write references), and it covers prerequisites, side effects, and the update path for a destructive writer. Nothing material for a correct call is missing.

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 both parameters are already documented; the description nevertheless adds real meaning by tying latent_skill_id to 'eligible latent ID' prerequisites and clarifying that update_existing updates existing generated content while retaining native drift protections. It stops short of adding anything not already implied by the schema fields.

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 — 'Generate physical Agent Skill content for an approved latent candidate' — and immediately distinguishes itself from create_skill (new canonical content) and publish_skill (draft). An agent can select it without opening any sibling 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?

Explicit when-to-use ('Use after proposal approval'), explicit alternatives with the conditions that select them (create_skill, publish_skill), and explicit prerequisites ('Requires initialized project memory and an eligible latent ID'). It also adds a pre-call caution: 'Review existing content before enabling updates or retrying.'

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

get_skill_detailA
Read-onlyIdempotent

Read metadata, triggers, content references, and installation state for one registered skill. Use after list_skills to inspect a relevant entry; use validate_skill to validate local content and recommend_skills to discover candidates. Requires initialized project memory. Does not activate, generate, or synchronize skills. Returns the matching skill details or an error when the selector is unresolved or ambiguous.

NameRequiredDescriptionDefault
name_or_idYesRegistered skill ID or unambiguous name/slug to inspect; resolve candidates with list_skills.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description correctly spends its words elsewhere: a prerequisite ('Requires initialized project memory'), an explicit no-side-effect list, and failure semantics ('error when the selector is unresolved or ambiguous'). The only gap is that it doesn't discuss cost/latency or whether installation state is read live from the host, but for a read tool this is close to complete.

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?

Four short sentences, front-loaded with what it returns, then when to use it, then prerequisites and exclusions, then error behavior. No sentence restates the name or the annotations.

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

Completeness5/5

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

For a single-parameter read tool with an output schema, everything an agent needs to call it correctly is present: prerequisite project state, the sibling that supplies valid selectors, what it does not do, and how failure surfaces.

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% and the single parameter is already documented, so the baseline is 3. The description goes slightly further by framing the argument as a 'selector' that may be unresolved or ambiguous, which tells the agent that non-exact names are accepted but can fail and should be resolved via list_skills first.

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?

Specific verb plus a concrete resource set: 'Read metadata, triggers, content references, and installation state for one registered skill.' The scope ('one registered skill') distinguishes it from list_skills and from mutating siblings like activate_skill or sync_skills.

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?

Explicit sequencing guidance ('Use after list_skills to inspect a relevant entry') plus named alternatives with their distinct roles: validate_skill for validation, recommend_skills for discovery. It also states negative scope ('Does not activate, generate, or synchronize skills'), closing off the most likely misselection.

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

host_checkA

Validate an existing agent host instruction manifest and record the validation result. Use after host_setup or to diagnose host readability; use doctor for broader diagnostics. Requires initialized project memory. Does not rewrite the host manifest, but writes an audit event, so repeated checks create new audit records. Returns validation status, checks/manual guidance, warnings, and audit reference.

NameRequiredDescriptionDefault
host_idYesSupported host registry ID, for example codex or claude_code; use the ID rather than a display name.
max_charsNoMaximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply.
max_linesNoMaximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

The description adds real behavioral context beyond the annotations: it does not rewrite the host manifest, but it does write an audit event, so repeated calls produce new records. That explains the readOnlyHint=false and idempotentHint=false flags, though it does not describe failure modes or what a failed validation returns. The return shape is listed, which is slightly redundant with the output schema.

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?

Four tight sentences that front-load purpose, then usage, prerequisite, side effects, and return summary. Efficient overall, though the return-value sentence partially duplicates the output schema and could be trimmed.

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

Completeness5/5

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

For a validate-plus-audit tool with a simple 3-parameter schema and an existing output schema, the description covers purpose, prerequisites, side effects, and sibling routing. Nothing an agent needs to call it correctly is missing.

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 coverage is 100%, so host_id, max_chars, and max_lines are already documented with defaults and usage notes. The description adds nothing about parameters, which is acceptable given the schema does the heavy lifting, but it means no value beyond structured data.

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?

States a specific verb+resource pair: 'Validate an existing agent host instruction manifest and record the validation result.' It is clearly distinguishable from the nearby siblings host_setup (which creates) and doctor (broader diagnostics), both of which are named.

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?

Gives explicit when-to-use ('after host_setup or to diagnose host readability'), an explicit alternative ('use doctor for broader diagnostics'), and a prerequisite ('Requires initialized project memory'). Little is left to inference.

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

host_setupA
Destructive

Plan or apply managed instruction configuration for a supported agent host. Use after project initialization; use host_check to validate an existing configuration and sync_instructions to refresh active rules. force=false returns a plan; force=true applies managed changes through the snapshot/audit pipeline. It does not mean unrestricted overwrite of unmanaged files. Returns planned changes, validation, manual steps, warnings, and write references.

NameRequiredDescriptionDefault
forceNoApply managed host configuration when true. Defaults to false for planning; does not bypass unmanaged-content protections.
host_idYesSupported host registry ID, for example codex or claude_code; use the ID rather than a display name.
max_charsNoMaximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply.
max_linesNoMaximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and the description does real work to qualify that: application goes 'through the snapshot/audit pipeline' and 'does not mean unrestricted overwrite of unmanaged files.' That is valuable context an agent would otherwise have to guess from a destructive hint. The only soft spot is that it doesn't spell out recoverability (e.g., rollback via snapshots) or that repeated application is not idempotent, both of which matter given idempotentHint=false.

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?

It is dense and front-loaded: purpose first, then routing, then mode semantics. The closing sentence enumerating return values ('planned changes, validation, manual steps, warnings, and write references') is largely redundant with the existing output schema and could be dropped.

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

Completeness5/5

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

For a four-parameter tool with full schema coverage and an output schema, the description covers the remaining unknowns: when to reach for it, what the mode flag changes, and how its write path is governed. Nothing an agent needs to invoke it correctly is missing.

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 coverage is 100%, so host_id, force, max_chars, and max_lines are all already documented in the schema itself. The description restates the force semantics but adds no new meaning on format, host registry values, or how the two limit parameters interact beyond what the property descriptions say. Baseline 3 applies when the schema carries the load.

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 names a specific verb pair and resource: 'Plan or apply managed instruction configuration for a supported agent host.' It immediately scopes the tool by naming two siblings it is not ('use host_check to validate... and sync_instructions to refresh'), so an agent can pick correctly without opening any 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 gives an explicit precondition ('use after project initialization'), two named alternatives with their distinct purposes, and a decision rule for the main parameter ('force=false returns a plan; force=true applies'). That is when-to-use, when-to-use-something-else, and how to choose mode in one place.

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

import_skillA
Destructive

Import an existing native or local skill directory into canonical UMEM storage. Use for external skill content; use adopt_skill to register an existing canonical directory or create_skill for new content. Project scope requires initialization. Copies content and registers the skill; optional replacement/synchronization can alter native files. Defaults preserve native source content and avoid post-import sync. Returns imported skill metadata, paths, warnings, and write references. Repeated imports can conflict with an existing canonical destination.

NameRequiredDescriptionDefault
pathYesExisting local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content.
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
categoryNouser-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy.user-facing
visibilityNoProject content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared.
replace_nativeNoAllow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source.
sync_after_importNoSynchronize native targets after import when true. Defaults to false.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Annotations flag destructiveHint=true and idempotentHint=false, and the description goes beyond them by localizing the danger: destruction only happens when replace_native/sync_after_import are enabled, defaults preserve the native source and skip sync, and repeated imports can collide with an existing canonical destination. That explains both the destructive and non-idempotent hints rather than merely restating them.

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?

Purpose and sibling routing are front-loaded in the first two sentences, then behavior and defaults. Dense but mostly earning its place; the return-value sentence ("Returns imported skill metadata, paths, warnings, and write references") is partly redundant given an output schema exists.

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 tool with rich annotations and an output schema, the description covers routing, prerequisites, destructive opt-ins, defaults, and conflict risk. The only soft spot is the vague "requires initialization" reference, which does not name initialize_project explicitly.

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 coverage is 100% and the schema already documents path, scope, category, visibility, replace_native, and sync_after_import with defaults. The description reinforces the safe defaults and adds the conflict caveat for repeat imports, but contributes no new per-parameter semantics beyond what the schema says; baseline 3 applies.

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?

"Import an existing native or local skill directory into canonical UMEM storage" gives a specific verb (import), a specific resource (skill directory), and the destination (canonical storage). The following sentence explicitly separates it from adopt_skill (register existing canonical dir) and create_skill (new content), so an agent can discriminate it among 38 siblings.

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?

Names both alternatives and the condition that selects each: external skill content → import_skill, existing canonical directory → adopt_skill, new content → create_skill. It also states a prerequisite ("Project scope requires initialization") that gates the default scope, which is exactly the kind of when-to-use context an agent needs before calling.

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

initialize_projectA
Destructive

Initialize local project memory and configure detected agent connections. Use for a new workspace; use inspect_project_layout to inspect storage or migrate_project_layout to share existing legacy content. Creates project storage and managed host configuration and may install the official skill through npx, requiring Node.js and network access when that bridge is selected. Existing managed content is reconciled rather than blindly replaced. Returns initialization details, connection execution results, warnings, and manual fallback steps; inspect them before retrying. Repeated calls may run connection validation again.

NameRequiredDescriptionDefault
layoutNoProject storage layout: legacy keeps content under .umem; shared uses visible umem content plus private operational storage. Defaults to legacy.legacy

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true. The description goes further where it matters: it discloses the possible npx skill install requiring Node.js and network access, states that managed content is reconciled rather than blindly replaced, and describes the return payload (connection results, warnings, manual fallback steps). That is additive, but describing return contents adds little when an output schema exists and the npx/network caveat is the only genuine behavioral disclosure beyond annotations, so a 3 reflects real but modest added value.

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 purpose, then alternatives, then caveats; every sentence carries information. It is dense and slightly long, and 'inspect them before retrying' is prescriptive filler relative to the rest, but nothing is redundant.

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

Completeness5/5

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

Covers the environment prerequisites (Node.js, network), what gets created or reconfigured, the reconciliation behavior, and the shape of the result including warnings and manual fallback. With an output schema present, nothing an agent needs before calling is missing.

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 coverage is 100% and the single 'layout' parameter is fully documented in the schema, including the legacy-vs-shared semantics. The description never mentions 'layout' or its default, so it adds no meaning beyond the structured field — the baseline 3 applies.

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?

States a specific verb and resource ('Initialize local project memory and configure detected agent connections') and immediately names the siblings it is not: inspect_project_layout and migrate_project_layout. An agent can pick this over its neighbors without opening either 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?

Gives an explicit selection rule — 'Use for a new workspace' — plus named alternatives with their triggering conditions ('inspect storage', 'share existing legacy content'). It also notes that repeat calls re-run connection validation, which is exactly the kind of when-not signal an agent needs before calling twice.

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

inspect_project_layoutA
Read-onlyIdempotent

Inspect which local project storage layout and roots are active, including migration warnings. Use before initialize_project or migrate_project_layout when layout is uncertain. Does not initialize, copy, or remove project content and requires no initialized project. Returns the layout report, storage paths, and warnings.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the description is not carrying the safety burden. It still adds real value by clarifying that no project initialization is a prerequisite and that migration warnings are surfaced—context the annotations cannot convey.

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?

Three short sentences, front-loaded with purpose, then usage, then negative scope. The closing sentence about the return payload is largely redundant with the existing output schema, which is the only wasted wording.

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

Completeness5/5

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

For a parameterless, closed-world read tool with a full output schema and rich annotations, the description covers purpose, timing, exclusions, and prerequisites. Nothing an agent needs in order to call it correctly is missing.

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?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. No parameter-level claims are made or needed.

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 first sentence gives a specific verb ("Inspect") and resource ("local project storage layout and roots"), including the migration-warning scope. It is easily distinguished from siblings like initialize_project and migrate_project_layout, which are named directly.

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?

"Use before initialize_project or migrate_project_layout when layout is uncertain" names the alternatives and the exact condition that selects them. It also states the inverse exclusions (does not initialize, copy, or remove content) and the precondition (no initialized project required), leaving nothing to inference.

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

list_audit_eventsA
Read-onlyIdempotent

Read audit events for one memory scope to investigate prior operations and recovery references. Use list_snapshots to inspect recoverable snapshots instead. Project scope requires initialization. Does not create audit events or change recorded history. Returns an events array with the recorded operation details.

NameRequiredDescriptionDefault
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the bar is lower. The description still adds useful behavior beyond them: the project-scope initialization prerequisite and the fact that history is append-only and unaffected by this call. The statement about the returned events array overlaps the output schema, so no extra credit there.

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 sibling routing are front-loaded in the first two sentences, and every sentence contributes something. The closing sentence about the events array is the weakest, since it restates what the output schema already provides.

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?

With an output schema, full parameter coverage, and complete annotations, the description only needs to carry scope, prerequisite, and routing information, all of which are present. The one thing an agent might still wonder about is ordering, pagination, or volume limits on the returned events, which is not addressed.

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?

There is a single parameter with full schema description coverage and an enum, so the schema already carries its meaning. "For one memory scope" reinforces that the call targets a single scope rather than aggregating, but adds no syntax or edge-case detail beyond what the schema states. Baseline 3 applies.

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 ("Read audit events") plus a scope qualifier ("one memory scope") and a purpose ("investigate prior operations and recovery references"). It explicitly differentiates from the nearest sibling by naming list_snapshots as the tool for recoverable snapshots.

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 clear when-to-use context (investigating prior operations and recovery references) and names an alternative tool with the condition that selects it (recoverable snapshots). It also surfaces a prerequisite ("Project scope requires initialization"). It stops short of a full when-not list, but for a narrow read tool that is a minor gap.

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

list_factsA
Read-onlyIdempotent

Inspect individual memory facts filtered by scope, lifecycle status, and visibility. Use for record IDs and metadata; use context for compiled prompt context. Project or combined scope requires initialized project memory. Does not change fact records. Returns a facts array; omitted scope searches both project and global records, while omitted status selects active records.

NameRequiredDescriptionDefault
scopeNoSelect project or global facts; omitted searches both. Project and combined reads require project initialization.
statusNoFact lifecycle filter; defaults to active. stale, archived, and purged inspect those record states instead.active
visibilityNoFilter shared, private, or all content; defaults to all visible to this local process.all

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so 'Does not change fact records' mostly restates them. The genuinely additive disclosure is the initialization prerequisite for project/combined scope, which annotations cannot express. Default/omitted-filter behavior is also spelled out, though it duplicates the schema.

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 core purpose and the routing to 'context' are front-loaded, and most sentences carry information. Some space is spent repeating structured data ('Does not change fact records', 'Returns a facts array', default filters) that a reader already gets from annotations and schema.

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?

With an output schema present, the description needn't explain return shape, and it covers the prerequisite, the sibling alternative, and default filter behavior. The only thing not addressed is retrieval sizing or result-bound behavior for what is effectively a list operation, a minor gap for a zero-required-parameter read tool.

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 two parameters are enums, so the schema already defines scope, status, and visibility values and defaults. The description's notes on omitted scope (searches both) and omitted status (active only) restate schema defaults rather than adding new syntax or edge-case meaning. Baseline 3 applies.

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 ('Inspect individual memory facts') plus the dimensions being filtered (scope, lifecycle status, visibility), and it explicitly contrasts itself with the 'context' sibling for compiled prompt context. An agent can tell it apart from context, remember_fact, and purge_fact without opening any 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 states the selecting condition for this tool ('record IDs and metadata') and names the alternative with its own condition ('use context for compiled prompt context'), which is exactly the when-vs-alternative routing an agent needs. It also names a prerequisite: project or combined scope requires initialized project memory.

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

list_skillsA
Read-onlyIdempotent

Read the catalog of canonical skills, native installation state, and latent candidates. Use at startup through bootstrap or to find skill IDs; use get_skill_detail for one entry and recommend_skills for evidence-based candidates. Requires initialized project memory. Does not register, synchronize, or activate skills. Returns the catalog, recommendations, and metadata; unregistered directories remain unregistered.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, yet the description contributes beyond them: a prerequisite ('Requires initialized project memory'), an explicit negative scope (no registration/sync/activation), and a state caveat ('unregistered directories remain unregistered'). These are exactly the side-effect boundaries an agent needs before calling in a skills-management suite.

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?

Content is front-loaded (verb+resource first, then routing, then constraints) and every sentence carries weight except the return-value sentence, which partly restates what the output schema already provides. Slightly dense but no filler.

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

Completeness5/5

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

With an output schema present and rich annotations, the description only needs to supply routing, prerequisites, and boundaries — and it supplies all three. An agent has everything required to call this correctly at session start.

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?

The tool takes zero parameters, so the baseline is 4 and there is no parameter meaning to add or omit. The description correctly avoids inventing inputs and instead spends its words on scope and prerequisites.

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 ('Read the catalog of canonical skills, native installation state, and latent candidates'), and explicitly differentiates itself from get_skill_detail (one entry) and recommend_skills (evidence-based candidates). An agent can identify exactly what this tool returns without inspecting any 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 gives explicit when-to-use ('at startup through bootstrap or to find skill IDs'), names the two sibling alternatives and the condition that selects them, and adds a when-not clause ('Does not register, synchronize, or activate skills'). Nothing about tool selection is left to inference.

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

list_snapshotsA
Read-onlyIdempotent

Read created recovery snapshots in one scope. Use before rollback_scope to inspect available recovery points; list_audit_events provides operation history. Project scope requires initialization. Does not create or restore snapshots. Returns the created snapshots array; already consumed snapshots are excluded.

NameRequiredDescriptionDefault
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the bar is lower; the description still adds real context by ruling out mutation and disclosing that already-consumed snapshots are filtered out of results. It stops short of describing failure behavior on an uninitialized project or ordering/pagination of the array.

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 core action and negative scope up front, and every clause carries information. The middle sentences are semicolon-packed, mixing alternatives with prerequisites in one line, which slightly hurts scanability.

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

Completeness5/5

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

Single optional parameter, safe annotations, and an output schema that carries the return shape; the description covers purpose, exclusions filtering, prerequisite, and sibling routing, leaving nothing an agent needs before calling it.

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% with the enum documented, so the baseline is 3; the description earns an extra point by tying the project scope value to a precondition (initialization required) rather than merely restating the enum.

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?

States a specific verb and resource ('Read created recovery snapshots in one scope') and explicitly negates the misleading sibling interpretations ('Does not create or restore snapshots'), which distinguishes it from rollback_scope and from creation flows.

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?

Gives explicit when-to-use ('Use before rollback_scope to inspect available recovery points'), names an alternative for a related need (list_audit_events for operation history), and states a prerequisite ('Project scope requires initialization').

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

migrate_project_layoutA
Destructive

Preview or migrate selected legacy project facts, rules, and skills into shared repository storage. Use to expose curated existing content; initialize_project creates new storage and share_skill shares one skill. Requires legacy content and filesystem access. dry_run=true previews without modifying content. false writes shared content and migration state, then rewrites the legacy facts file to remove migrated or already- shared facts; private, global, and conflicting facts remain local. Writes use the safe snapshot/audit pipeline. Returns the migration plan/results and warnings. Review private exclusions and source changes before applying: shared content can become visible to repository collaborators.

NameRequiredDescriptionDefault
dry_runNotrue (default) previews without modifying content. false applies shared writes and rewrites the legacy facts file to remove migrated/already-shared facts.
includeNoContent kinds to migrate. Omitted or empty selects facts, rules, and skills.
target_layoutNoDestination layout. Only shared is supported. Applying migration removes migrated/already-shared facts from the legacy facts file; private/global/conflicting facts remain.shared
private_fact_idsNoFact IDs to retain privately instead of copying into shared content; omitted or empty excludes none explicitly.
private_skill_slugsNoSkill slugs to retain privately; omitted or empty excludes none explicitly.
shared_operational_skill_slugsNoExplicit operational skill slugs allowed into shared content; omitted or empty grants no such exceptions.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, and the description goes well beyond them: it specifies exactly what is destroyed (migrated/already-shared facts are removed from the legacy facts file), what survives (private, global, conflicting facts stay local), that writes go through a snapshot/audit pipeline, and that shared content becomes visible to collaborators. That is precisely the behavioral context an agent needs before invoking a destructive migration.

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 purpose and alternatives, then moves to prerequisites, dry-run semantics, and side effects in a logical order. It is dense but slightly redundant, re-explaining dry_run=false behavior that the schema description already covers in near-identical wording.

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

Completeness5/5

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

For a destructive, zero-required-parameter migration tool with an output schema, the description covers prerequisites, preview vs. apply, what is rewritten, what is preserved, safety pipeline, and the collaborator-visibility consequence. Nothing material is left for the agent to infer.

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; the description earns extra by explaining the consequence of the exclusion parameters ('private, global, and conflicting facts remain local') and the dry-run write path in outcome terms rather than restating types. It does not individually explain shared_operational_skill_slugs in the prose, leaving that 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?

States a specific verb pair and resource set: 'Preview or migrate selected legacy project facts, rules, and skills into shared repository storage.' It immediately distinguishes itself from initialize_project (creates new storage) and share_skill (shares one skill), so an agent can pick it out of a 38-tool sibling list without opening a 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?

Names two concrete alternatives and the condition that selects them, plus a prerequisite ('Requires legacy content and filesystem access') and a pre-flight instruction ('Review private exclusions and source changes before applying'). The only minor gap is the absence of an explicit 'do not use when' clause, but the sibling contrasts effectively cover it.

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

promote_skill_recommendationA

Promote a proposed, not previously promoted latent recommendation into a canonical Agent Skill. Use after reviewing recommend_skills; this call itself performs promotion. Use propose_skill followed by generate_skill for the separate approval/generation flow, or publish_skill for drafts. Project-scoped promotion requires initialized memory. Writes canonical content, changes the recommendation to active, and records promotion metadata. targets alone does not enable native synchronization; use sync_skills afterward. Returns promoted recommendation, skill metadata, paths, warnings, and write references. Repeated promotion of the same candidate is rejected.

NameRequiredDescriptionDefault
editsNoOptional promotion overrides: name and description strings and triggers as a string/list. Omitted or empty keeps recommended metadata.
targetsNoRuntime selectors passed to canonical creation; this promotion does not enable native sync. Use sync_skills afterward for native installation.
recommendation_idYesLatent recommendation ID returned by recommend_skills; use an eligible candidate rather than a canonical slug.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations, which only declare non-read-only, non-destructive, non-idempotent. It discloses what gets written (canonical content), the status change to active, the recorded promotion metadata, the rejection of repeated promotion, and the fact that targets alone do not trigger native sync.

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-loads the core action and then sequences alternatives, prerequisites, and side effects efficiently. It is slightly dense and repeats the targets/native-sync point already in the schema, but no sentence is wasted.

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

Completeness5/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 little elaboration, and the description still enumerates them briefly. Prerequisites, mutation side effects, rejection behavior, and the follow-up sync step are all covered for a state-changing promotion tool.

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%, so all three parameters are already documented, including the recommendation_id eligibility rule and the targets sync caveat. The description mostly restates that same guidance, adding no extra syntax or format detail beyond 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?

States a specific verb and resource: promote a proposed, not previously promoted latent recommendation into a canonical Agent Skill. It also scopes the input by saying it must be a latent recommendation, distinguishing it from create_skill, publish_skill, and generate_skill.

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?

Gives explicit sequencing (use after recommend_skills), names the alternatives with the conditions that select them (propose_skill + generate_skill for approval/generation, publish_skill for drafts), and adds a prerequisite (initialized memory for project-scoped promotion) plus a required follow-up (sync_skills for native install).

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

propose_skillA

Review a tracked latent workflow candidate or record a decision about it. Use after track_latent_skill or recommend_skills; use create_skill for an explicitly requested new canonical skill. Requires initialized project memory and a latent candidate ID. Omitted decision returns a proposal and follow-up choices; yes/y accepts, no/n ignores, and always also records future approval policy. Decisions mutate candidate state through the safe pipeline. Returns candidate, proposal, decision requirements, and write references; inspect state before repeating a decision.

NameRequiredDescriptionDefault
decisionNoOmit to review only; yes/y accepts, no/n ignores, and always accepts while recording future approval policy.
latent_skill_idYesExact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare a non-read-only, non-idempotent, non-destructive mutation, and the description supplies the context they cannot: candidate state is mutated through a 'safe pipeline', a genuine project-memory prerequisite exists, and 'inspect state before repeating a decision' warns against blind retries given idempotentHint=false. The only soft spot is the undefined phrase 'safe pipeline', which is a minor gap against otherwise rich disclosure.

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 purpose, then usage, then prerequisites, then decision semantics – a sensible ordering for an agent scanning for go/no-go signals. It is dense with semicolon-chained clauses and repeats the decision vocabulary already in the schema, which costs some tightness.

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

Completeness5/5

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

For a two-parameter mutation gated on project initialization, the description covers workflow position, prerequisites, all decision values, the no-decision review path, and a retry caution, while the output schema and annotations already carry return shape and safety profile. An agent has everything needed to call this correctly on the first attempt.

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 coverage is 100% and both parameters are already documented, so the description's restatement of yes/y accepts, no/n ignores, and always records future approval policy largely duplicates the schema text. The one genuinely additive note is that an omitted decision returns a proposal plus follow-up choices, which extends beyond 'omit to review only'.

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?

States a specific verb and resource: review a tracked latent workflow candidate or record a decision about it. It immediately distinguishes itself from create_skill and ties itself to the track_latent_skill/recommend_skills pipeline, so the agent knows exactly which stage of the workflow this tool occupies.

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?

Explicit upstream dependencies ('use after track_latent_skill or recommend_skills'), an explicit exclusion routing to a named sibling ('use create_skill for an explicitly requested new canonical skill'), and a hard prerequisite ('requires initialized project memory and a latent candidate ID'). Nothing about when to reach for this tool is left to inference.

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

publish_skillA

Validate and publish an existing draft into canonical skill storage. Use after create_skill_draft and validate_skill; use update_canonical_skill to edit an already published skill. Requires initialized project memory. Writes canonical content and registration; sync=false leaves native targets untouched, true also synchronizes selected targets. Returns skill metadata, published paths, warnings, and write references. Publication can conflict with an existing slug; inspect before retrying.

NameRequiredDescriptionDefault
slugNoCanonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path.
syncNoSynchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content.
targetsNoNative runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets.
categoryNouser-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy.user-facing
visibilityNoProject content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared.
draft_or_pathYesExisting draft slug or local draft file/directory path to publish; canonical destinations are validated for conflicts.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds real context on top: it writes canonical content plus registration, explains that sync=false leaves native targets untouched while true also synchronizes selected targets, and warns that publication can conflict with an existing slug, advising inspection before retry. It does not address reversibility of a published skill or permission requirements, which keeps it short of a 5 for a mutating tool.

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-loads purpose in the first sentence, then usage, then behavior, with no filler. It is somewhat dense and clause-heavy (semicolon-chained behavior notes), but every sentence carries actionable information.

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

Completeness5/5

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

For a six-parameter mutating tool it covers purpose, sequencing, prerequisites, write scope, sync branching, and conflict handling, and an output schema already documents the return payload. Nothing an agent needs to call it safely is missing.

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 coverage is 100%, so every parameter is already documented, including sync and targets. The description echoes the sync behavior visible in the schema and adds only the conflict-validation note for draft_or_path, saying nothing extra about slug, category, visibility, or targets; baseline 3 is appropriate.

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?

States a specific verb pair and resource: 'Validate and publish an existing draft into canonical skill storage.' It also distinguishes itself from the editing sibling by naming update_canonical_skill, so an agent can separate the publish path from the modify path 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 Guidelines5/5

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

Explicitly places the tool in a workflow ('Use after create_skill_draft and validate_skill'), names the alternative for a different situation ('use update_canonical_skill to edit an already published skill'), and states a prerequisite ('Requires initialized project memory'). When-to-use, when-not-to-use, and sequencing are all covered.

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

purge_factA
Destructive

Destructively remove one fact by ID or all facts in an explicitly selected scope. Use list_facts first to identify intended records; use context only for reading. confirm=true is mandatory; false rejects without purging. Supply id or scope, not both; omitting both is rejected. Project or unscoped ID lookup requires initialization. The configured repository uses safe writes for recovery; inspect list_snapshots and list_audit_events rather than assuming the response contains a snapshot ID. Returns purged_count, affected_ids, and an audit marker. Repeating a purge may fail if the fact no longer exists.

NameRequiredDescriptionDefault
idNoExact fact ID from list_facts. Selects one fact; omit when purging an entire explicit scope. Cannot be combined with scope.
scopeNoExplicit project/global scope to purge in full when id is omitted. Cannot be combined with id; omitting both is rejected.
confirmNoExplicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds substantive context beyond them: confirm=false rejects without applying, project/unscoped ID lookup requires initialization, and recovery must go through list_snapshots/list_audit_events rather than an assumed snapshot ID in the response. It also warns that repeating a purge may fail once the fact is gone, which directly explains the non-idempotent hint.

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 destructive scope constraint is front-loaded and every sentence carries information an agent needs. Some sentences are dense and run together (initialization requirement, snapshot/audit guidance, return fields), but there is no filler or repetition.

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

Completeness5/5

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

For a destructive three-parameter tool with an output schema, the description covers preconditions, sibling routing, failure modes, and recovery paths in addition to (briefly) the return fields. An agent could invoke this correctly and safely without consulting another tool's docs.

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, and the description genuinely adds semantics: it restates the id/scope mutual exclusion and the fail-if-both-omitted rule plus the mandatory confirm gate as operational constraints. It does not add format or sourcing detail beyond the schema, keeping it at a strong 4 rather than 5.

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 ("Destructively remove one fact") and immediately names the two supported selection modes (by ID or by explicit scope). This distinguishes it cleanly from siblings like list_facts, context, and remember_fact without requiring the schema to be opened.

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 routes the agent: use list_facts first to identify records, use context only for reading, and confirm=true is required or the call is rejected. It also states the exclusivity rule (id or scope, not both) and that omitting both fails, so the invocation preconditions are fully spelled out.

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

recommend_skillsA
Read-onlyIdempotent

Review latent workflow recommendations from explicit track_latent_skill evidence. Use to choose candidates for proposal or promotion; use list_skills for the full catalog. Project/all scope requires initialized project memory. Read-only: does not promote, import, synchronize, create, or mutate skill records, even when dry_run=false. Uses recurrence plus nonempty curated evidence-entry thresholds (duplicate summaries count separately) rather than scanning facts, logs, or transcripts. Returns recommendations, thresholds, evidence sources, and limitations; inspect these before propose_skill or promote_skill_recommendation.

NameRequiredDescriptionDefault
scopeNoCandidate scope: project (default), global, or all. Project/all requires project initialization.project
dry_runNoCompatibility flag, default true. Both true and false remain read-only; false does not enable promotion or writes.
min_recurrenceNoMinimum tracked observation count, at least 1. Omitted uses 2; also requires min(min_recurrence, 2) nonempty evidence entries. Duplicate summary text counts separately; no distinctness check.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive, yet the description adds the critical clarification that the tool stays read-only 'even when dry_run=false' — the exact misreading an agent would otherwise make. It further discloses the evidence basis (recurrence plus nonempty curated evidence entries, duplicate summaries counted separately, not facts/logs/transcripts) and tells the agent to inspect returned thresholds and limitations first.

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 action and routing advice, and every sentence carries information. The read-only denial list ('promote, import, synchronize, create, or mutate') and the threshold sentence are dense and slightly repetitive with the schema, but the redundancy is defensible for a guardrail statement.

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

Completeness5/5

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

Covers prerequisites, read-only guarantees, evidence sourcing, and hand-off to downstream tools; the return contents are summarized even though an output schema exists. For a three-parameter read tool in a large sibling set, nothing an agent needs before calling is absent.

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 adds real meaning: it clarifies that dry_run=false does not enable writes and that evidence is counted from curated entries rather than fact/log scans. It does not restate the scope enum values beyond the prerequisite note, but nothing material is missing.

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?

States a specific verb and resource ('Review latent workflow recommendations') plus the exact evidence source ('explicit track_latent_skill evidence'). It also names the sibling it is not ('use list_skills for the full catalog'), so an agent can route correctly without opening a 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?

Explicitly says when to use it ('choose candidates for proposal or promotion'), names the alternative for a different need (list_skills), and points to the downstream tools (propose_skill, promote_skill_recommendation) that consume the output. The prerequisite ('Project/all scope requires initialized project memory') is also stated.

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

remember_factA

Save a curated durable memory fact, with optional tags and visibility. Use for a learned preference or project decision; use track_latent_skill for repeated workflow evidence and list_facts for inspection. Project scope requires initialization. Writes a fact through the safe mutation pipeline with audit/snapshot references; repeated calls may add records rather than update an existing fact. Returns the stored fact and write references. Do not store secrets or raw conversation logs.

NameRequiredDescriptionDefault
tagsNoOptional classification tags. Omitted or empty adds no tags.
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
contentYesCurated durable fact text to persist. Secret detection can reject sensitive content; do not submit credentials or raw logs.
visibilityNoProject content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, but the description adds real context: writes flow through a 'safe mutation pipeline with audit/snapshot references' and repeated calls may append records rather than update in place – a non-obvious duplicate hazard the agent could not infer from the hints. It stops short of explaining failure modes such as what happens when secret detection rejects content, though the schema partly covers that.

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?

Four front-loaded sentences: purpose, routing to alternatives, mutation behavior, and a safety exclusion. Every clause carries information and none repeats the schema verbatim.

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

Completeness5/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-value detail ('stored fact and write references') is only summarized, and annotations cover the safety profile. Combined with 100% parameter coverage and explicit sibling routing, nothing an agent needs to call this correctly is missing.

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 the schema already carries tag, scope and visibility semantics and the baseline would be 3. The description adds a workflow-level constraint tying the 'project' scope value to required project initialization, which meaningfully informs parameter choice.

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?

Opens with a specific verb and resource ('Save a curated durable memory fact') and immediately scopes it with the optional tags/visibility modifiers. It explicitly names the two siblings it is not (track_latent_skill for repeated workflow evidence, list_facts for inspection), so the agent can discriminate without opening a 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?

Gives concrete when-to-use criteria ('learned preference or project decision'), routes the alternative case to track_latent_skill and inspection to list_facts, and states a prerequisite ('Project scope requires initialization') plus an explicit exclusion ('Do not store secrets or raw conversation logs'). Little is left to inference.

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

rename_skillA
Destructive

Rename an existing canonical skill slug and reconcile managed locations. Use for identity/path changes; use update_canonical_skill to edit content. Requires initialized project memory and an active canonical selector. Moves managed skill content and updates registration while rejecting unmanaged destination conflicts. Returns renamed skill metadata, paths, warnings, and write references. The old slug may no longer resolve after success; inspect before retrying.

NameRequiredDescriptionDefault
slugYesRequired new canonical directory slug; unmanaged destination conflicts are rejected.
skill_id_or_nameYesActive canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

The annotations already declare destructive=true and idempotent=false, but the description adds substantial behavioral context: it moves managed skill content, updates registration, rejects unmanaged destination conflicts, and explains that the old slug may stop resolving. These details go beyond the annotations and help an agent understand the side effects and retry risk.

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 description is front-loaded and organized: purpose first, then routing, prerequisites, mutation behavior, and retry caution. The sentence listing returned metadata, paths, warnings, and write references is somewhat redundant because an output schema exists, but overall the wording is efficient.

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

Completeness5/5

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

For a destructive rename operation, the description covers prerequisites, the alternative tool, managed-content movement, conflict rejection, and the risk that the old slug will no longer resolve. Return values are covered by the output schema, so the definition is complete enough for correct invocation.

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 coverage is 100%, and the schema already documents both parameters, including that slug is the required new canonical directory slug and that skill_id_or_name must identify an active canonical skill. The description adds little parameter-specific meaning beyond what the schema provides, so the baseline 3 is appropriate.

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 states a specific verb and resource: renaming an existing canonical skill slug and reconciling managed locations. It explicitly distinguishes this from update_canonical_skill, which handles content edits, so an agent can identify the tool's role 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 gives explicit when-to-use guidance for identity/path changes and names the alternative for content edits. It also states prerequisites (initialized project memory and an active canonical selector) and warns the old slug may not resolve after success, including an inspect-before-retry instruction.

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

repair_skillsA
Destructive

Preview or remove orphan managed native skill targets across the project. Use for stale installations; use cleanup_skill to inspect one registered skill. Requires initialized project memory. remove_orphan_targets=false selects no action; true discovers orphan targets. dry_run=true previews, false deletes discovered targets. Returns plans, removed_paths, and warnings. Does not delete canonical skills or create a recovery snapshot; inspect the plan before applying.

NameRequiredDescriptionDefault
dry_runNotrue (default) previews selected orphan target removal; false deletes selected orphan targets. remove_orphan_targets must also be true.
remove_orphan_targetsNoSelect orphan native target cleanup when true. Defaults to false, selecting no repair action even if dry_run=false.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, readOnlyHint=false) by disclosing what is NOT destroyed ('Does not delete canonical skills') and that no recovery snapshot exists, plus a safety instruction to inspect the plan first. It also explains the two-flag gating behavior and what the response contains, which the annotations cannot convey.

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 purpose, then routing, then flag behavior, then safety caveat — a sensible order with no filler. It is dense and slightly run-on across clauses, and the flag explanations partially echo the schema, but every sentence carries operational meaning.

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

Completeness5/5

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

For a destructive two-flag tool this covers everything an agent needs: prerequisite, alternative tool, flag gating, non-destructive side guarantees, absent recovery path, and response contents. With an output schema present, it is not obligated to explain return values further.

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 adds the interaction semantics — that remove_orphan_targets=false selects no action even if dry_run=false — which clarifies the consequence of the default state rather than restating flag names. It stops short of adding new format or edge-case detail beyond that.

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?

States a specific verb pair and resource: 'Preview or remove orphan managed native skill targets across the project.' It also names the scope (project, orphan, native targets) and explicitly contrasts with the sibling cleanup_skill, so an agent can distinguish it 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?

Gives an explicit when-to-use ('Use for stale installations'), names the alternative tool and its narrower scope ('use cleanup_skill to inspect one registered skill'), and states a prerequisite ('Requires initialized project memory'). Both routing and preconditions are covered.

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

rollback_scopeA
Destructive

Restore the latest created snapshot in a scope, replacing current state covered by that snapshot. Use list_snapshots and list_audit_events before choosing recovery. confirm=true is required; false rejects without restoring. Project scope requires initialization. Returns restored state references and rollback details. Destructive and not idempotent: a second call can select a different snapshot, so inspect results before retrying.

NameRequiredDescriptionDefault
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
confirmNoExplicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds real value by explaining what is destroyed ('current state covered by that snapshot') and why non-idempotency matters ('a second call can select a different snapshot, so inspect results before retrying'). The only redundancy is the return-value sentence, which an output schema already covers.

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?

Dense and front-loaded: the restore effect comes first, then prerequisites, then the destructive-retry warning. The one expendable sentence is the return-value summary, which the output schema already supplies.

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

Completeness5/5

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

For a destructive, non-idempotent mutation this covers everything an agent needs: effect scope, pre-inspection siblings, the confirm gate, the initialization prerequisite for project scope, and the retry hazard. Return values are handled by the output schema.

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 both parameters are already documented, but the description contributes a precondition not present in the schema: project scope requires initialization before rollback can succeed. The confirm semantics restate the schema's default-false rejection behavior rather than adding to it.

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?

States a specific verb and resource ('Restore the latest created snapshot in a scope') plus the exact effect ('replacing current state covered by that snapshot'), which cleanly separates it from the read-only siblings list_snapshots and list_audit_events it names.

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?

Explicitly directs the agent to run list_snapshots and list_audit_events before choosing recovery, states that project scope requires initialization, and explains that confirm=true is required while false rejects without restoring — covering both the when-to-use and the gate condition.

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

share_skillA
Destructive

Copy an existing project skill into shared repository content for collaboration. Use for deliberate sharing; use sync_skills to distribute native copies without changing visibility. Requires initialized project memory and a resolvable project skill. Writes shared content and updates registration. Existing shared files at matching destination paths can be overwritten without a destination-conflict check or an overwrite confirmation; there is no preview mode. Sharing operational content additionally requires confirm_operational=true. Writes use the safe snapshot/audit pipeline. Returns the shared skill, paths, warnings, and write references. Inspect existing destination files and remove private information before calling. Re-sharing an already-shared skill can update registration and policy again.

NameRequiredDescriptionDefault
categoryNouser-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy.user-facing
skill_id_or_nameYesActive canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID.
confirm_operationalNoExplicit permission to share operational content. Defaults to false; required for operational sharing.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and non-idempotent, but the description adds materially: existing files at matching destination paths can be overwritten with no conflict check and no overwrite confirmation, there is no preview mode, operational content additionally needs confirm_operational=true, and writes go through a snapshot/audit pipeline. It also discloses the re-share behavior that updates registration and policy again, which is exactly the non-idempotent semantics an agent needs.

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 purpose and the sibling contrast, then danger disclosure, then prerequisites, then return shape. Slightly redundant: registration updating is stated both in 'updates registration' and again in the closing sentence about re-sharing, though the latter adds the policy-reset nuance.

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

Completeness5/5

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

Covers mutation risk, prerequisites, overwrite behavior, the missing preview mode, the operational confirmation gate, and the return payload ('shared skill, paths, warnings, and write references'), which is reinforced by an existing output schema. Nothing an agent needs before invoking this destructive tool is missing.

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%, so all three parameters, including the category enum and skill_id_or_name resolution guidance, are already documented in the schema. The description echoes the operational/confirm_operational requirement and the resolvability constraint but adds no syntax or resolution detail beyond the schema. Baseline 3 applies when the schema carries parameter semantics.

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?

States a specific verb and resource ('Copy an existing project skill into shared repository content for collaboration') and immediately contrasts it with the sibling sync_skills ('distribute native copies without changing visibility'). An agent can distinguish this from import_skill, adopt_skill, or publish_skill using the description alone.

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?

Gives explicit when-to-use ('deliberate sharing'), an explicit alternative with its distinguishing condition (sync_skills), prerequisites ('Requires initialized project memory and a resolvable project skill'), and a pre-call action ('Inspect existing destination files and remove private information before calling'). This is close to the full when/when-not/alternatives rubric.

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

statusA
Read-onlyIdempotent

Inspect project initialization, fact counts, storage size, registered skills, and host validation status. Use before initialization or to diagnose whether context can be loaded; use doctor for environment diagnostics and bootstrap for session startup. Does not change memory records or configure hosts. Returns status and recommended actions, including initialized=false for an uninitialized project.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower; the description still adds real value by asserting the absence of side effects on memory records and host configuration, and by noting the returned payload includes recommended actions and initialized=false. It does not discuss cost, latency, or permission requirements, which keeps it short of a 5.

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?

Three sentences, front-loaded with the purpose, then usage routing, then the negative guarantee and return shape. Every sentence carries distinct information with no restatement of the tool name or annotations.

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

Completeness5/5

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

For a zero-parameter read tool with a declared output schema, the description covers the only gaps that matter: what is inspected, when to prefer doctor or bootstrap, and that no state is mutated. Nothing needed to invoke it correctly is missing.

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?

The tool takes zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly implies the call is argument-free by framing it as an inspection of ambient project state.

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?

States a specific verb ("Inspect") and resource with an explicit enumeration of what is surfaced: project initialization, fact counts, storage size, registered skills, and host validation status. An agent can distinguish this read-only status probe from mutations like initialize_project or host_setup without opening either 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?

Gives both positive triggers ("before initialization", "to diagnose whether context can be loaded") and explicit alternatives ("use doctor for environment diagnostics and bootstrap for session startup"). It also states exclusions ("Does not change memory records or configure hosts"), which routes the agent away from write-oriented siblings.

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

sync_instructionsA
Destructive

Plan or apply active-rule synchronization into selected agent instruction targets. Use after changing approved rules; use sync_skills for native skill directories and host_setup for initial host configuration. Requires initialized project memory. apply=false previews; true writes managed instruction blocks with recovery/audit references. Returns planned changes, validation, warnings, and manual steps; does not grant permission to overwrite unrelated host content.

NameRequiredDescriptionDefault
applyNoWrite managed instruction changes when true; defaults to false for a preview.
host_idsNoHost registry IDs to synchronize. Omitted or empty selects codex and claude_code.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructiveHint=true and non-idempotent; the description adds what is actually written ('managed instruction blocks'), that writes carry recovery/audit references, that apply=false is a no-write preview, and that the tool does not authorize overwriting unrelated host content. It also previews the return shape (planned changes, validation, warnings, manual steps), which is meaningful scoping beyond the annotation flags.

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 purpose, then usage, then behavior, and every clause carries information. The semicolon-chained middle section is dense and slightly run-on, which costs a point against a maximally clean structure.

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

Completeness5/5

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

Covers the prerequisite, the sibling routing, the preview-vs-write distinction, and the write safety boundary; an output schema exists so return values needn't be fully enumerated. Nothing an agent needs to call this safely is missing.

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; the description still adds consequence-level meaning for apply by contrasting 'previews' against 'writes managed instruction blocks with recovery/audit references.' It does not restate host_ids defaults, but those are already documented in 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?

States a specific verb and resource: 'Plan or apply active-rule synchronization into selected agent instruction targets.' It immediately differentiates itself from the two nearest siblings by naming sync_skills (native skill directories) and host_setup (initial host configuration).

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?

Explicit trigger ('Use after changing approved rules'), explicit alternatives with the condition that selects each ('use sync_skills for...', 'host_setup for...'), and an explicit prerequisite ('Requires initialized project memory'). Nothing about when to choose this tool is left to inference.

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

sync_skillsA
Destructive

Synchronize one or all active canonical skills into native runtime directories. Use after canonical content changes; use sync_instructions for host instruction blocks and import_skill to bring external content into UMEM. Requires initialized project memory. Writes native copies; drift_decision=keep preserves divergent native content, overwrite permits replacement of managed divergent copies. Returns per-skill synchronization results and warnings, optionally including gitignore checks. Repeated sync can still create audit records; review drift before overwriting.

NameRequiredDescriptionDefault
targetsNoNative runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets.
drift_decisionNokeep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep.keep
check_gitignoreNoInclude warnings about native target gitignore coverage when true. Defaults to false; does not edit .gitignore.
skill_id_or_nameNoCanonical skill ID, slug, or unambiguous name. Omitted or blank synchronizes all active canonical skills.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already flag a destructive, non-idempotent write, but the description adds real context beyond them: native copies are written, drift_decision=keep preserves divergent content while overwrite replaces managed copies, and repeated sync still produces audit records. The warning to 'review drift before overwriting' is valuable, though it doesn't detail what is irreversibly lost on overwrite.

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 is front-loaded in the first sentence and each subsequent sentence covers usage, prerequisites, or behavior. Some restatement of the drift_decision semantics already in the schema is slightly redundant, but nothing is padding.

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

Completeness5/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 needn't be spelled out, yet the description still notes per-skill results, warnings, and optional gitignore checks. Combined with the prerequisite and drift-decision guidance, an agent has everything needed to invoke this write tool safely.

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 coverage is 100%, so all four parameters are already documented, and the description's drift_decision phrasing largely restates the schema text. It adds only a light operational cue ('review drift before overwriting') rather than new semantics for targets or skill_id_or_name, so the baseline 3 applies.

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?

States a specific verb and resource ('Synchronize one or all active canonical skills into native runtime directories'), including scope (one vs all). It explicitly separates itself from siblings sync_instructions and import_skill, so the agent can route correctly 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 Guidelines5/5

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

Gives an explicit trigger ('Use after canonical content changes'), names two alternatives with their distinct roles, and states a prerequisite ('Requires initialized project memory'). This is close to ideal when/when-not guidance.

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

track_latent_skillA

Record curated evidence of a repeated workflow and create or increment a matching latent skill candidate. Use only for recurring workflow observations; use remember_fact for preferences and create_skill for an explicit new skill request. Project scope requires initialization. Matching proposed/active candidates gain recurrence and evidence; otherwise a proposed candidate is created. Not idempotent: every call counts another observation. Does not publish or generate skill files. Returns latent_skill, matched_existing, and audit/snapshot references. Use recommend_skills or propose_skill next; never submit secrets, raw logs, or transcripts as evidence.

NameRequiredDescriptionDefault
nameYesNonempty human-readable skill name. Used for display and candidate matching; not a file path.
tagsNoOptional workflow classification tags used in candidate matching and merged on recurrence. Omitted or empty adds no tags.
scopeNoStorage scope: project uses this workspace; global uses user memory. Defaults to project.project
descriptionYesNonempty description of the reusable workflow purpose; distinguish it from neighboring skills.
evidence_summaryNoSanitized summary of this recurring workflow observation. Defaults to Manual user invocation via MCP.; provide specific curated evidence without secrets or transcripts.Manual user invocation via MCP.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=false, destructive=false, openWorld=false; the description goes beyond them by explaining matching semantics (proposed/active candidates gain recurrence, otherwise a new proposed candidate is created), the project-scope initialization prerequisite, and the negative behavior 'Does not publish or generate skill files'. But 'not idempotent' largely repeats idempotentHint=false, and the returned fields are already covered by the output schema.

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 core action, then constraints, prerequisites, side effects, and next steps in a logical order. It is dense but nearly every clause carries distinct information, though the closing list of prohibitions and returns is slightly compressed into a run-on.

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

Completeness5/5

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

Return values are summarized and an output schema exists, safety-relevant behavior is covered by annotations plus narrative, the initialization prerequisite is noted, and the follow-up path is spelled out. Nothing an agent needs to invoke this correctly is missing.

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 carries the per-field burden and the baseline is 3. The description adds prerequisite context for the scope parameter ('Project scope requires initialization') and reinforces that evidence must be sanitized, which ties to evidence_summary 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 description states a precise verb pair and object: 'Record curated evidence of a repeated workflow and create or increment a matching latent skill candidate.' It explicitly draws boundaries against sibling tools ('use remember_fact for preferences and create_skill for an explicit new skill request'), so an agent can identify the tool without opening any 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?

Explicit when-to-use ('Use only for recurring workflow observations'), explicit when-not-to-use with named alternatives (remember_fact, create_skill), a next-step recommendation (recommend_skills or propose_skill), and a prohibition on submitting secrets, raw logs, or transcripts as evidence.

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

update_canonical_skillA
Destructive

Validate and replace Markdown content for an existing canonical skill. Use for canonical edits; use update_skill for latent metadata or rename_skill for a slug change. Requires initialized project memory and an active canonical selector. Writes canonical content through the safe pipeline; sync=true also updates native targets subject to drift_decision. Returns skill metadata, changed paths, warnings, and write references. Repeated calls can create audit/snapshot records even when content matches.

NameRequiredDescriptionDefault
syncNoSynchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content.
raw_markdownYesComplete replacement canonical SKILL.md Markdown including valid frontmatter; required and validated before writing.
drift_decisionNokeep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep.keep
skill_id_or_nameYesActive canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this as destructive, non-readonly, and non-idempotent. The description adds that writes go through a safe pipeline, that sync=true propagates to native targets subject to drift_decision, and that repeated calls can create audit/snapshot records even when content matches. Those side effects and drift behavior go beyond the annotations without contradicting them.

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 description is front-loaded and compact, moving from purpose to alternatives to prerequisites to behavior. The sentence about return values is somewhat redundant with the output schema, and the density of semicolon-separated behaviors is high, but there is little wasted wording.

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

Completeness5/5

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

For a destructive canonical write with four parameters, many sibling alternatives, and an output schema, the description covers prerequisites, side effects, drift handling, and returns. It is complete enough for an agent to call correctly without needing the schema for safety context.

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 input schema already defines each parameter. The description adds relationship-level meaning: sync=true also updates native targets, those updates are subject to drift_decision, and an active canonical selector is required. That is useful beyond the individual field descriptions, though it does not restate raw_markdown semantics.

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 begins with a specific verb and resource: 'Validate and replace Markdown content for an existing canonical skill.' It explicitly distinguishes this tool from update_skill and rename_skill, so an agent can identify its scope 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 states 'Use for canonical edits' and names the alternatives for latent metadata and slug changes. It also gives clear prerequisites: initialized project memory and an active canonical selector. This is explicit when-to-use guidance with sibling alternatives and a required context.

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

update_skillA
Destructive

Update metadata and rewrite generated Markdown for an existing latent skill. Use for latent candidate edits; use update_canonical_skill for direct canonical content replacement. Requires initialized project memory and a latent candidate ID. Omitted metadata values retain their stored fields, but omitting raw_markdown regenerates the entire SKILL.md from metadata and can discard a customized body even when no other edit is supplied. To retain custom content, read the existing file and supply complete edited raw_markdown with compatible frontmatter. Writes use the safe pipeline and may synchronize recorded native copies while preserving divergent native content. Returns candidate, warnings, and audit/snapshot references. Repeated calls can create additional audit records.

NameRequiredDescriptionDefault
nameNoReplacement latent skill display name. Omitted keeps the existing name; a supplied name must be nonempty.
triggersNoReplacement trigger phrases. Omitted keeps existing triggers; an empty list clears them.
descriptionNoReplacement latent workflow purpose. Omitted keeps the existing description; supplied text must be nonempty.
raw_markdownNoComplete replacement generated SKILL.md content, validated before writing. Omitted regenerates the whole file from metadata and can discard custom body content; supply edited full Markdown to retain it.
latent_skill_idYesExact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds the concrete consequence (omitting raw_markdown can discard a customized body even with no other edit supplied), the write path (safe pipeline), side effects on native copies including divergence preservation, and that repeated calls create additional audit records. That is materially more than the annotation flags convey.

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 routing decision, prerequisite, and destructive caveat are front-loaded in the first two sentences, which is the right ordering. A few clauses are redundant with the input schema (the omit-retains/regenerates rules appear in both places), costing a point, but no sentence is filler.

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

Completeness5/5

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

For a destructive five-parameter mutation with a sibling that handles near-identical work, the description covers the prerequisite, the alternative tool, the main failure mode, side effects, and even the return shape, despite an output schema existing. Nothing an agent needs to call this correctly is missing.

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 the baseline is 3; the description restates the omit-retains-stored-fields rule that the schema already documents for metadata. It earns one step above baseline by adding the operational workflow for raw_markdown (read existing, supply full edited content with compatible frontmatter) and by underscoring that the ID must not be a canonical slug or file path.

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 first sentence names a specific verb pair (update metadata, rewrite generated Markdown) and a precise resource (an existing latent skill). It immediately contrasts with the sibling update_canonical_skill, so an agent can route between latent and canonical edits without inspecting either 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?

Explicit routing guidance is given ('Use for latent candidate edits; use update_canonical_skill for direct canonical content replacement') plus a prerequisite ('Requires initialized project memory and a latent candidate ID'). The dangerous case is also flagged with a remedy: omitting raw_markdown regenerates the file, so read the existing file and supply complete edited Markdown to retain custom content.

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

validate_skillA
Read-onlyIdempotent

Validate a draft, registered canonical skill, or local skill file/directory without publishing or changing skill content. Use before publish_skill or after editing a skill; get_skill_detail reads registered metadata. Accepts an ID/name or path and does not require project initialization at this interface. Returns a validation report with errors and warnings; inspect the report rather than treating a successful tool envelope as proof that the skill is valid.

NameRequiredDescriptionDefault
scopeNoOptional scope for selector lookup. Omitted lets the validator resolve the draft/path or registered skill.
skill_or_pathYesRegistered skill selector, draft slug, or local SKILL.md file/directory path to validate.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive safety, but the description adds non-obvious behavior: no project init needed, and the crucial caveat that a successful tool envelope does not mean the skill is valid — the report's errors and warnings must be inspected. That is exactly the kind of semantic warning annotations cannot carry.

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?

Four sentences, all load-bearing, with the operation stated first and prerequisites, alternatives, and the report caveat following in priority order. Slightly dense but no filler sentences.

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

Completeness5/5

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

For a read-only validation tool with an output schema, the description covers everything an agent needs: supported inputs, prerequisites, sibling boundaries, and how to interpret the returned report versus the envelope status.

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%, so the baseline is 3. The description restates that an ID/name or path is accepted, which mildly reinforces but does not extend what the schema already documents, and the optional scope parameter is left entirely 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?

"Validate a draft, registered canonical skill, or local skill file/directory" names a specific verb and enumerates the three input forms it accepts, immediately separating it from sibling tools like publish_skill and get_skill_detail. The added constraint "without publishing or changing skill content" pins down the scope of the operation.

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?

Gives explicit timing ("before publish_skill or after editing a skill") and names an alternative ("get_skill_detail reads registered metadata") so the agent knows which sibling handles the adjacent task. It also notes that project initialization is not required at this interface, removing a common false prerequisite.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 33 tool updatesv0.6.4
    • Changedactivate_skill1 field changed
      • addedInput schema / properties / latent_skill_id / description
        Added value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
    • Changedadopt_skill7 fields changed
      • addedInput schema / properties / category / description
        Added value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy."
      • addedInput schema / properties / path / description
        Added value: +"Existing local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content."
      • addedInput schema / properties / replace_native / description
        Added value: +"Allow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
      • addedInput schema / properties / slug / description
        Added value: +"Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path."
      • addedInput schema / properties / sync_after_adopt / description
        Added value: +"Synchronize native targets after adoption when true. Defaults to false."
      • addedInput schema / properties / visibility / description
        Added value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
    • Changedcleanup_skill3 fields changed
      • addedInput schema / properties / dry_run / description
        Added value: +"true (default) reports removable and blocked native targets; false deletes removable managed native copies without deleting canonical content."
      • addedInput schema / properties / skill_id_or_name / description
        Added value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID."
      • addedInput schema / properties / targets / description
        Added value: +"Compatibility flag, default true. Currently ignored by cleanup execution: false does not disable native target removal; use dry_run=true to preview."
    • Changedcontext3 fields changed
      • addedInput schema / properties / agent_session_key / description
        Added value: +"Optional caller session correlation key included in the audit event. Omitted leaves it unset; do not include secrets."
      • addedInput schema / properties / max_size_chars / description
        Added value: +"Maximum compiled Markdown length in characters, including headings. Defaults to 4000; values below the 110-character template minimum fail."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
    • Changedcreate_skill10 fields changed
      • addedInput schema / properties / category / description
        Added value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy."
      • addedInput schema / properties / description / description
        Added value: +"Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills."
      • addedInput schema / properties / name / description
        Added value: +"Nonempty human-readable skill name. Used for display and candidate matching; not a file path."
      • addedInput schema / properties / raw_markdown / description
        Added value: +"Complete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
      • addedInput schema / properties / slug / description
        Added value: +"Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path."
      • addedInput schema / properties / sync / description
        Added value: +"Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content."
      • addedInput schema / properties / targets / description
        Added value: +"Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets."
      • addedInput schema / properties / triggers / description
        Added value: +"Phrases or situations that should select the skill. Without raw_markdown, omitted/empty triggers render the skill name as the file trigger; supplied Markdown provides its frontmatter triggers."
      • addedInput schema / properties / visibility / description
        Added value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
    • Changedcreate_skill_draft6 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills."
      • addedInput schema / properties / name / description
        Added value: +"Nonempty human-readable skill name. Used for display and candidate matching; not a file path."
      • addedInput schema / properties / raw_markdown / description
        Added value: +"Complete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata."
      • addedInput schema / properties / scope / description
        Added value: +"Registration scope, project by default. Draft files stay relative to the server workspace: project writes .umem/drafts/skills/<slug>/SKILL.md; global writes drafts/skills/<slug>/SKILL.md while registering in user memory. Global does not place the draft file in the user memory directory."
      • addedInput schema / properties / slug / description
        Added value: +"Draft directory slug. Omitted derives from the name. Registered slug collisions are rejected; an existing unregistered draft file can be overwritten."
      • addedInput schema / properties / triggers / description
        Added value: +"Trigger phrases for generated draft content. Without raw_markdown, omitted/empty triggers render the skill name as the default trigger; supplied raw Markdown takes precedence."
    • Changeddeactivate_skill1 field changed
      • addedInput schema / properties / latent_skill_id / description
        Added value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
    • Changedgenerate_skill2 fields changed
      • addedInput schema / properties / latent_skill_id / description
        Added value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
      • addedInput schema / properties / update_existing / description
        Added value: +"Permit updating an existing generated skill when true. Defaults to false; native drift protections still apply."
    • Changedget_skill_detail1 field changed
      • addedInput schema / properties / name_or_id / description
        Added value: +"Registered skill ID or unambiguous name/slug to inspect; resolve candidates with list_skills."
    • Changedhost_check3 fields changed
      • addedInput schema / properties / host_id / description
        Added value: +"Supported host registry ID, for example codex or claude_code; use the ID rather than a display name."
      • addedInput schema / properties / max_chars / description
        Added value: +"Maximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply."
      • addedInput schema / properties / max_lines / description
        Added value: +"Maximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits."
    • Changedhost_setup4 fields changed
      • addedInput schema / properties / force / description
        Added value: +"Apply managed host configuration when true. Defaults to false for planning; does not bypass unmanaged-content protections."
      • addedInput schema / properties / host_id / description
        Added value: +"Supported host registry ID, for example codex or claude_code; use the ID rather than a display name."
      • addedInput schema / properties / max_chars / description
        Added value: +"Maximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply."
      • addedInput schema / properties / max_lines / description
        Added value: +"Maximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits."
    • Changedimport_skill6 fields changed
      • addedInput schema / properties / category / description
        Added value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy."
      • addedInput schema / properties / path / description
        Added value: +"Existing local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content."
      • addedInput schema / properties / replace_native / description
        Added value: +"Allow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
      • addedInput schema / properties / sync_after_import / description
        Added value: +"Synchronize native targets after import when true. Defaults to false."
      • addedInput schema / properties / visibility / description
        Added value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
    • Changedinitialize_project1 field changed
      • addedInput schema / properties / layout / description
        Added value: +"Project storage layout: legacy keeps content under .umem; shared uses visible umem content plus private operational storage. Defaults to legacy."
    • Changedlist_audit_events1 field changed
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
    • Changedlist_facts3 fields changed
      • addedInput schema / properties / scope / description
        Added value: +"Select project or global facts; omitted searches both. Project and combined reads require project initialization."
      • addedInput schema / properties / status / description
        Added value: +"Fact lifecycle filter; defaults to active. stale, archived, and purged inspect those record states instead."
      • addedInput schema / properties / visibility / description
        Added value: +"Filter shared, private, or all content; defaults to all visible to this local process."
    • Changedlist_snapshots1 field changed
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
    • Changedmigrate_project_layout6 fields changed
      • addedInput schema / properties / dry_run / description
        Added value: +"true (default) previews without modifying content. false applies shared writes and rewrites the legacy facts file to remove migrated/already-shared facts."
      • addedInput schema / properties / include / description
        Added value: +"Content kinds to migrate. Omitted or empty selects facts, rules, and skills."
      • addedInput schema / properties / private_fact_ids / description
        Added value: +"Fact IDs to retain privately instead of copying into shared content; omitted or empty excludes none explicitly."
      • addedInput schema / properties / private_skill_slugs / description
        Added value: +"Skill slugs to retain privately; omitted or empty excludes none explicitly."
      • addedInput schema / properties / shared_operational_skill_slugs / description
        Added value: +"Explicit operational skill slugs allowed into shared content; omitted or empty grants no such exceptions."
      • addedInput schema / properties / target_layout / description
        Added value: +"Destination layout. Only shared is supported. Applying migration removes migrated/already-shared facts from the legacy facts file; private/global/conflicting facts remain."
    • Changedpromote_skill_recommendation3 fields changed
      • addedInput schema / properties / edits / description
        Added value: +"Optional promotion overrides: name and description strings and triggers as a string/list. Omitted or empty keeps recommended metadata."
      • addedInput schema / properties / recommendation_id / description
        Added value: +"Latent recommendation ID returned by recommend_skills; use an eligible candidate rather than a canonical slug."
      • addedInput schema / properties / targets / description
        Added value: +"Runtime selectors passed to canonical creation; this promotion does not enable native sync. Use sync_skills afterward for native installation."
    • Changedpropose_skill2 fields changed
      • addedInput schema / properties / decision / description
        Added value: +"Omit to review only; yes/y accepts, no/n ignores, and always accepts while recording future approval policy."
      • addedInput schema / properties / latent_skill_id / description
        Added value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
    • Changedpublish_skill6 fields changed
      • addedInput schema / properties / category / description
        Added value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy."
      • addedInput schema / properties / draft_or_path / description
        Added value: +"Existing draft slug or local draft file/directory path to publish; canonical destinations are validated for conflicts."
      • addedInput schema / properties / slug / description
        Added value: +"Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path."
      • addedInput schema / properties / sync / description
        Added value: +"Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content."
      • addedInput schema / properties / targets / description
        Added value: +"Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets."
      • addedInput schema / properties / visibility / description
        Added value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
    • Changedpurge_fact3 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Explicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it."
      • addedInput schema / properties / id / description
        Added value: +"Exact fact ID from list_facts. Selects one fact; omit when purging an entire explicit scope. Cannot be combined with scope."
      • addedInput schema / properties / scope / description
        Added value: +"Explicit project/global scope to purge in full when id is omitted. Cannot be combined with id; omitting both is rejected."
    • Changedrecommend_skills3 fields changed
      • addedInput schema / properties / dry_run / description
        Added value: +"Compatibility flag, default true. Both true and false remain read-only; false does not enable promotion or writes."
      • addedInput schema / properties / min_recurrence / description
        Added value: +"Minimum tracked observation count, at least 1. Omitted uses 2; also requires min(min_recurrence, 2) nonempty evidence entries. Duplicate summary text counts separately; no distinctness check."
      • addedInput schema / properties / scope / description
        Added value: +"Candidate scope: project (default), global, or all. Project/all requires project initialization."
    • Changedremember_fact4 fields changed
      • addedInput schema / properties / content / description
        Added value: +"Curated durable fact text to persist. Secret detection can reject sensitive content; do not submit credentials or raw logs."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
      • addedInput schema / properties / tags / description
        Added value: +"Optional classification tags. Omitted or empty adds no tags."
      • addedInput schema / properties / visibility / description
        Added value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
    • Changedrename_skill2 fields changed
      • addedInput schema / properties / skill_id_or_name / description
        Added value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID."
      • addedInput schema / properties / slug / description
        Added value: +"Required new canonical directory slug; unmanaged destination conflicts are rejected."
    • Changedrepair_skills2 fields changed
      • addedInput schema / properties / dry_run / description
        Added value: +"true (default) previews selected orphan target removal; false deletes selected orphan targets. remove_orphan_targets must also be true."
      • addedInput schema / properties / remove_orphan_targets / description
        Added value: +"Select orphan native target cleanup when true. Defaults to false, selecting no repair action even if dry_run=false."
    • Changedrollback_scope2 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Explicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
    • Changedshare_skill3 fields changed
      • addedInput schema / properties / category / description
        Added value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy."
      • addedInput schema / properties / confirm_operational / description
        Added value: +"Explicit permission to share operational content. Defaults to false; required for operational sharing."
      • addedInput schema / properties / skill_id_or_name / description
        Added value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID."
    • Changedsync_instructions2 fields changed
      • addedInput schema / properties / apply / description
        Added value: +"Write managed instruction changes when true; defaults to false for a preview."
      • addedInput schema / properties / host_ids / description
        Added value: +"Host registry IDs to synchronize. Omitted or empty selects codex and claude_code."
    • Changedsync_skills4 fields changed
      • addedInput schema / properties / check_gitignore / description
        Added value: +"Include warnings about native target gitignore coverage when true. Defaults to false; does not edit .gitignore."
      • addedInput schema / properties / drift_decision / description
        Added value: +"keep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep."
      • addedInput schema / properties / skill_id_or_name / description
        Added value: +"Canonical skill ID, slug, or unambiguous name. Omitted or blank synchronizes all active canonical skills."
      • addedInput schema / properties / targets / description
        Added value: +"Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets."
    • Changedtrack_latent_skill5 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills."
      • addedInput schema / properties / evidence_summary / description
        Added value: +"Sanitized summary of this recurring workflow observation. Defaults to Manual user invocation via MCP.; provide specific curated evidence without secrets or transcripts."
      • addedInput schema / properties / name / description
        Added value: +"Nonempty human-readable skill name. Used for display and candidate matching; not a file path."
      • addedInput schema / properties / scope / description
        Added value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
      • addedInput schema / properties / tags / description
        Added value: +"Optional workflow classification tags used in candidate matching and merged on recurrence. Omitted or empty adds no tags."
    • Changedupdate_canonical_skill4 fields changed
      • addedInput schema / properties / drift_decision / description
        Added value: +"keep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep."
      • addedInput schema / properties / raw_markdown / description
        Added value: +"Complete replacement canonical SKILL.md Markdown including valid frontmatter; required and validated before writing."
      • addedInput schema / properties / skill_id_or_name / description
        Added value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID."
      • addedInput schema / properties / sync / description
        Added value: +"Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content."
    • Changedupdate_skill5 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Replacement latent workflow purpose. Omitted keeps the existing description; supplied text must be nonempty."
      • addedInput schema / properties / latent_skill_id / description
        Added value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
      • addedInput schema / properties / name / description
        Added value: +"Replacement latent skill display name. Omitted keeps the existing name; a supplied name must be nonempty."
      • addedInput schema / properties / raw_markdown / description
        Added value: +"Complete replacement generated SKILL.md content, validated before writing. Omitted regenerates the whole file from metadata and can discard custom body content; supply edited full Markdown to retain it."
      • addedInput schema / properties / triggers / description
        Added value: +"Replacement trigger phrases. Omitted keeps existing triggers; an empty list clears them."
    • Changedvalidate_skill2 fields changed
      • addedInput schema / properties / scope / description
        Added value: +"Optional scope for selector lookup. Omitted lets the validator resolve the draft/path or registered skill."
      • addedInput schema / properties / skill_or_path / description
        Added value: +"Registered skill selector, draft slug, or local SKILL.md file/directory path to validate."
  2. 1 tool updatev0.6.1
    • Addedbootstrap
  3. 37 tool updatesv0.4.0
    • First observedactivate_skill
    • First observedadopt_skill
    • First observedcleanup_skill
    • First observedcontext
    • First observedcreate_skill
    • First observedcreate_skill_draft
    • First observeddeactivate_skill
    • First observeddoctor
    • First observedgenerate_skill
    • First observedget_skill_detail
    • First observedhost_check
    • First observedhost_setup
    • First observedimport_skill
    • First observedinitialize_project
    • First observedinspect_project_layout
    • First observedlist_audit_events
    • First observedlist_facts
    • First observedlist_skills
    • First observedlist_snapshots
    • First observedmigrate_project_layout
    • First observedpromote_skill_recommendation
    • First observedpropose_skill
    • First observedpublish_skill
    • First observedpurge_fact
    • First observedrecommend_skills
    • First observedremember_fact
    • First observedrename_skill
    • First observedrepair_skills
    • First observedrollback_scope
    • First observedshare_skill
    • First observedstatus
    • First observedsync_instructions
    • First observedsync_skills
    • First observedtrack_latent_skill
    • First observedupdate_canonical_skill
    • First observedupdate_skill
    • First observedvalidate_skill

TDQS

A4.1/5.0

Scored across 38 tools

Disambiguation3/5

Many skill tools overlap in purpose (create_skill, create_skill_draft, publish_skill, import_skill, adopt_skill, generate_skill, promote_skill_recommendation), and latent-skill tools require careful reading. The descriptions explicitly cross-reference alternatives, so an agent can usually pick correctly, but the boundaries remain subtle.

Naming Consistency4/5

Overwhelmingly snake_case with predictable verb_noun forms for most operations. A few noun-only or status-style tools (status, context, bootstrap, doctor, host_setup, host_check) break the strict verb_noun pattern but remain readable and consistent in casing.

Tool Count2/5

38 tools is well above the 25-tool threshold, and the server spans several subdomains: memory facts, skill lifecycle, project setup, host configuration, audit, and snapshots. Many skill tools are highly specialized, but the total surface is heavy for an agent to navigate.

Completeness4/5

Skill lifecycle coverage is exceptionally complete: draft, validate, publish, update, rename, sync, import, adopt, latent proposal, promotion, cleanup, activate/deactivate. Memory facts have create/list/purge and compiled context, but there is no direct update_fact, forcing purge-and-recreate for edits.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides a persistent, vendor-neutral memory layer that allows AI tools and agents to share context and knowledge across different platforms while maintaining local data ownership. It enables users to store, recall, and manage structured memories through hybrid semantic search and automated context assembly.
    19 npm
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent, self-optimizing memory for AI agents, enabling them to remember preferences and context across sessions and share knowledge across multiple agents.
    4
    10 npm
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Multi-modal RAG engine for AI assistants. Stores conversation history, conclusions, diffs, error traces, and other development artifacts in LanceDB with vector search, multi-factor scoring, and an LLM-driven consolidation pipeline.
    10
    MIT
  • F
    license
    C
    quality
    B
    maintenance
    Gives AI agents persistent memory, handoffs, and shared context across sessions, enabling seamless continuity and multi-agent collaboration.
    29
    135 npm
    68
    -