universal-memory
Universal Memory is an MCP server for persistent AI-agent memory, context bootstrapping, and reusable skill management across project and global scopes.
Initialize, inspect, and migrate project storage layouts.
Check status, run diagnostics, and bootstrap a session with context plus skill catalog.
Compile prompt-ready context from saved facts, preferences, and rules.
Create, tag, list, and purge durable memory facts with audit and snapshot recovery.
Configure, validate, and sync agent host instruction manifests.
Manage Agent Skills end-to-end: draft, validate, publish, create, import, adopt, update, rename, share, sync, promote, clean up, and repair.
Track repeated workflows, recommend latent skills, and generate, activate, or deactivate candidates.
Review audit events and snapshots, and roll back project or global state.
Integrates with OpenAI Codex to enable context persistence, including short-term and long-term memory, user preferences, and agent skills.
Universal Memory (UMem)
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:

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 --helpuvx 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-memoryInstall via PyPI
pip install universal-memoryUpgrade 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 --versionConfirm the executable you are running:
umem --version
which umemUpgrading 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 doctorYou 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 initUniversal 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 connectExplicit 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 -yHere 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 jsonThis 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 jsonRun 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 config4. Retrieve Context
Verify the consolidated context summary generated by combining short-term facts, rules, and global preferences:
umem context --scope project5. 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-protocolIf 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 summaryFor 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 summaryAfter editing .umem/skills/review-protocol/SKILL.md, refresh one runtime skill with:
umem skills sync review-protocol6. Check status and health
umem statusHost 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 |
| 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 |
|
OpenCode | Tier 1 — Native/Managed |
|
Codex (OpenAI) | Tier 1 — Native/Managed |
|
Cursor | Tier 2 — Directed CLI |
|
Antigravity | Tier 2 — Directed CLI |
|
Pi, Gemini CLI, GitHub Copilot, Cline, Zed, and other reviewed Agent Skills hosts | Tier 2 — Directed CLI | Project skill directory pinned to the |
Windsurf | Tier 2 — Frozen legacy adapter |
|
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-mcpPersistent Install Launch Command
umem-mcpBootstrap 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 --helpFor GUI-launched MCP hosts, use the absolute path to uvx if the host does not inherit
your shell PATH.
Safety & Guardrails
API Secret Scanner:
umempasses 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 projectSkill Drift Protection:
umem skills syncdetects managed native drift and keeps local changes by default. Use--drift-decision overwriteonly when you intentionally want canonical UMEM content to replace the managed native copy.External Bridge Boundary: Tier 2 installation through
npx skillsis 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> --yesRecommended Companion Tools
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 toolsactivate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| latent_skill_id | Yes | Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Existing local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content. | |
| slug | No | Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path. | |
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| category | No | user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy. | user-facing |
| visibility | No | Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared. | |
| replace_native | No | Allow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source. | |
| sync_after_adopt | No | Synchronize native targets after adoption when true. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true (default) reports removable and blocked native targets; false deletes removable managed native copies without deleting canonical content. | |
| targets | No | Compatibility flag, default true. Currently ignored by cleanup execution: false does not disable native target removal; use dry_run=true to preview. | |
| skill_id_or_name | Yes | Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| max_size_chars | No | Maximum compiled Markdown length in characters, including headings. Defaults to 4000; values below the 110-character template minimum fail. | |
| agent_session_key | No | Optional caller session correlation key included in the audit event. Omitted leaves it unset; do not include secrets. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nonempty human-readable skill name. Used for display and candidate matching; not a file path. | |
| slug | No | Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path. | |
| sync | No | Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content. | |
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| targets | No | Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets. | |
| category | No | user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy. | user-facing |
| triggers | No | 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. | |
| visibility | No | Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared. | |
| description | Yes | Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills. | |
| raw_markdown | No | Complete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_draftADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nonempty human-readable skill name. Used for display and candidate matching; not a file path. | |
| slug | No | Draft directory slug. Omitted derives from the name. Registered slug collisions are rejected; an existing unregistered draft file can be overwritten. | |
| scope | No | 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. | project |
| triggers | No | 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. | |
| description | Yes | Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills. | |
| raw_markdown | No | Complete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| latent_skill_id | Yes | Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
doctorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| latent_skill_id | Yes | Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path. | |
| update_existing | No | Permit updating an existing generated skill when true. Defaults to false; native drift protections still apply. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_detailARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_id | Yes | Registered skill ID or unambiguous name/slug to inspect; resolve candidates with list_skills. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| host_id | Yes | Supported host registry ID, for example codex or claude_code; use the ID rather than a display name. | |
| max_chars | No | Maximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply. | |
| max_lines | No | Maximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_setupADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Apply managed host configuration when true. Defaults to false for planning; does not bypass unmanaged-content protections. | |
| host_id | Yes | Supported host registry ID, for example codex or claude_code; use the ID rather than a display name. | |
| max_chars | No | Maximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply. | |
| max_lines | No | Maximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Existing local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content. | |
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| category | No | user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy. | user-facing |
| visibility | No | Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared. | |
| replace_native | No | Allow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source. | |
| sync_after_import | No | Synchronize native targets after import when true. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_projectADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layout | No | Project storage layout: legacy keeps content under .umem; shared uses visible umem content plus private operational storage. Defaults to legacy. | legacy |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_layoutARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_eventsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_factsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Select project or global facts; omitted searches both. Project and combined reads require project initialization. | |
| status | No | Fact lifecycle filter; defaults to active. stale, archived, and purged inspect those record states instead. | active |
| visibility | No | Filter shared, private, or all content; defaults to all visible to this local process. | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_snapshotsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_layoutADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true (default) previews without modifying content. false applies shared writes and rewrites the legacy facts file to remove migrated/already-shared facts. | |
| include | No | Content kinds to migrate. Omitted or empty selects facts, rules, and skills. | |
| target_layout | No | Destination 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_ids | No | Fact IDs to retain privately instead of copying into shared content; omitted or empty excludes none explicitly. | |
| private_skill_slugs | No | Skill slugs to retain privately; omitted or empty excludes none explicitly. | |
| shared_operational_skill_slugs | No | Explicit operational skill slugs allowed into shared content; omitted or empty grants no such exceptions. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | No | Optional promotion overrides: name and description strings and triggers as a string/list. Omitted or empty keeps recommended metadata. | |
| targets | No | Runtime selectors passed to canonical creation; this promotion does not enable native sync. Use sync_skills afterward for native installation. | |
| recommendation_id | Yes | Latent recommendation ID returned by recommend_skills; use an eligible candidate rather than a canonical slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| decision | No | Omit to review only; yes/y accepts, no/n ignores, and always accepts while recording future approval policy. | |
| latent_skill_id | Yes | Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path. | |
| sync | No | Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content. | |
| targets | No | Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets. | |
| category | No | user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy. | user-facing |
| visibility | No | Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared. | |
| draft_or_path | Yes | Existing draft slug or local draft file/directory path to publish; canonical destinations are validated for conflicts. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_factADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Exact fact ID from list_facts. Selects one fact; omit when purging an entire explicit scope. Cannot be combined with scope. | |
| scope | No | Explicit project/global scope to purge in full when id is omitted. Cannot be combined with id; omitting both is rejected. | |
| confirm | No | Explicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Candidate scope: project (default), global, or all. Project/all requires project initialization. | project |
| dry_run | No | Compatibility flag, default true. Both true and false remain read-only; false does not enable promotion or writes. | |
| min_recurrence | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Optional classification tags. Omitted or empty adds no tags. | |
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| content | Yes | Curated durable fact text to persist. Secret detection can reject sensitive content; do not submit credentials or raw logs. | |
| visibility | No | Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Required new canonical directory slug; unmanaged destination conflicts are rejected. | |
| skill_id_or_name | Yes | Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | true (default) previews selected orphan target removal; false deletes selected orphan targets. remove_orphan_targets must also be true. | |
| remove_orphan_targets | No | Select orphan native target cleanup when true. Defaults to false, selecting no repair action even if dry_run=false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_scopeADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| confirm | No | Explicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
statusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_instructionsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | Write managed instruction changes when true; defaults to false for a preview. | |
| host_ids | No | Host registry IDs to synchronize. Omitted or empty selects codex and claude_code. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| targets | No | Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets. | |
| drift_decision | No | keep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep. | keep |
| check_gitignore | No | Include warnings about native target gitignore coverage when true. Defaults to false; does not edit .gitignore. | |
| skill_id_or_name | No | Canonical skill ID, slug, or unambiguous name. Omitted or blank synchronizes all active canonical skills. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nonempty human-readable skill name. Used for display and candidate matching; not a file path. | |
| tags | No | Optional workflow classification tags used in candidate matching and merged on recurrence. Omitted or empty adds no tags. | |
| scope | No | Storage scope: project uses this workspace; global uses user memory. Defaults to project. | project |
| description | Yes | Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills. | |
| evidence_summary | No | Sanitized 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sync | No | Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content. | |
| raw_markdown | Yes | Complete replacement canonical SKILL.md Markdown including valid frontmatter; required and validated before writing. | |
| drift_decision | No | keep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep. | keep |
| skill_id_or_name | Yes | Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Replacement latent skill display name. Omitted keeps the existing name; a supplied name must be nonempty. | |
| triggers | No | Replacement trigger phrases. Omitted keeps existing triggers; an empty list clears them. | |
| description | No | Replacement latent workflow purpose. Omitted keeps the existing description; supplied text must be nonempty. | |
| raw_markdown | No | 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. | |
| latent_skill_id | Yes | Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_skillARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Optional scope for selector lookup. Omitted lets the validator resolve the draft/path or registered skill. | |
| skill_or_path | Yes | Registered skill selector, draft slug, or local SKILL.md file/directory path to validate. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
33 tool updates
v0.6.4- Changed
activate_skill1 field changed- added
Input schema / properties / latent_skill_id / descriptionAdded value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
- Changed
adopt_skill7 fields changed- added
Input schema / properties / category / descriptionAdded value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy." - added
Input schema / properties / path / descriptionAdded value: +"Existing local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content." - added
Input schema / properties / replace_native / descriptionAdded value: +"Allow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project." - added
Input schema / properties / slug / descriptionAdded value: +"Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path." - added
Input schema / properties / sync_after_adopt / descriptionAdded value: +"Synchronize native targets after adoption when true. Defaults to false." - added
Input schema / properties / visibility / descriptionAdded value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
- Changed
cleanup_skill3 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"true (default) reports removable and blocked native targets; false deletes removable managed native copies without deleting canonical content." - added
Input schema / properties / skill_id_or_name / descriptionAdded value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID." - added
Input schema / properties / targets / descriptionAdded value: +"Compatibility flag, default true. Currently ignored by cleanup execution: false does not disable native target removal; use dry_run=true to preview."
- Changed
context3 fields changed- added
Input schema / properties / agent_session_key / descriptionAdded value: +"Optional caller session correlation key included in the audit event. Omitted leaves it unset; do not include secrets." - added
Input schema / properties / max_size_chars / descriptionAdded value: +"Maximum compiled Markdown length in characters, including headings. Defaults to 4000; values below the 110-character template minimum fail." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
- Changed
create_skill10 fields changed- added
Input schema / properties / category / descriptionAdded value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy." - added
Input schema / properties / description / descriptionAdded value: +"Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills." - added
Input schema / properties / name / descriptionAdded value: +"Nonempty human-readable skill name. Used for display and candidate matching; not a file path." - added
Input schema / properties / raw_markdown / descriptionAdded value: +"Complete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project." - added
Input schema / properties / slug / descriptionAdded value: +"Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path." - added
Input schema / properties / sync / descriptionAdded value: +"Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content." - added
Input schema / properties / targets / descriptionAdded value: +"Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets." - added
Input schema / properties / triggers / descriptionAdded 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." - added
Input schema / properties / visibility / descriptionAdded value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
- Changed
create_skill_draft6 fields changed- added
Input schema / properties / description / descriptionAdded value: +"Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills." - added
Input schema / properties / name / descriptionAdded value: +"Nonempty human-readable skill name. Used for display and candidate matching; not a file path." - added
Input schema / properties / raw_markdown / descriptionAdded value: +"Complete SKILL.md Markdown including valid frontmatter when supplied; validated before content is written. Omitted lets creation build content from metadata." - added
Input schema / properties / scope / descriptionAdded 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." - added
Input schema / properties / slug / descriptionAdded value: +"Draft directory slug. Omitted derives from the name. Registered slug collisions are rejected; an existing unregistered draft file can be overwritten." - added
Input schema / properties / triggers / descriptionAdded 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."
- Changed
deactivate_skill1 field changed- added
Input schema / properties / latent_skill_id / descriptionAdded value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
- Changed
generate_skill2 fields changed- added
Input schema / properties / latent_skill_id / descriptionAdded value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path." - added
Input schema / properties / update_existing / descriptionAdded value: +"Permit updating an existing generated skill when true. Defaults to false; native drift protections still apply."
- Changed
get_skill_detail1 field changed- added
Input schema / properties / name_or_id / descriptionAdded value: +"Registered skill ID or unambiguous name/slug to inspect; resolve candidates with list_skills."
- Changed
host_check3 fields changed- added
Input schema / properties / host_id / descriptionAdded value: +"Supported host registry ID, for example codex or claude_code; use the ID rather than a display name." - added
Input schema / properties / max_chars / descriptionAdded value: +"Maximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply." - added
Input schema / properties / max_lines / descriptionAdded value: +"Maximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits."
- Changed
host_setup4 fields changed- added
Input schema / properties / force / descriptionAdded value: +"Apply managed host configuration when true. Defaults to false for planning; does not bypass unmanaged-content protections." - added
Input schema / properties / host_id / descriptionAdded value: +"Supported host registry ID, for example codex or claude_code; use the ID rather than a display name." - added
Input schema / properties / max_chars / descriptionAdded value: +"Maximum managed instruction block length in characters. Defaults to 4000; both line and character limits apply." - added
Input schema / properties / max_lines / descriptionAdded value: +"Maximum managed instruction block length in lines. Defaults to 100; used together with max_chars and host policy limits."
- Changed
import_skill6 fields changed- added
Input schema / properties / category / descriptionAdded value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy." - added
Input schema / properties / path / descriptionAdded value: +"Existing local skill directory or SKILL.md path. Relative paths resolve from the project; the source must contain valid skill content." - added
Input schema / properties / replace_native / descriptionAdded value: +"Allow replacement of a native source with a managed canonical copy when true. Defaults to false to preserve the source." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project." - added
Input schema / properties / sync_after_import / descriptionAdded value: +"Synchronize native targets after import when true. Defaults to false." - added
Input schema / properties / visibility / descriptionAdded value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
- Changed
initialize_project1 field changed- added
Input schema / properties / layout / descriptionAdded value: +"Project storage layout: legacy keeps content under .umem; shared uses visible umem content plus private operational storage. Defaults to legacy."
- Changed
list_audit_events1 field changed- added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
- Changed
list_facts3 fields changed- added
Input schema / properties / scope / descriptionAdded value: +"Select project or global facts; omitted searches both. Project and combined reads require project initialization." - added
Input schema / properties / status / descriptionAdded value: +"Fact lifecycle filter; defaults to active. stale, archived, and purged inspect those record states instead." - added
Input schema / properties / visibility / descriptionAdded value: +"Filter shared, private, or all content; defaults to all visible to this local process."
- Changed
list_snapshots1 field changed- added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
- Changed
migrate_project_layout6 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"true (default) previews without modifying content. false applies shared writes and rewrites the legacy facts file to remove migrated/already-shared facts." - added
Input schema / properties / include / descriptionAdded value: +"Content kinds to migrate. Omitted or empty selects facts, rules, and skills." - added
Input schema / properties / private_fact_ids / descriptionAdded value: +"Fact IDs to retain privately instead of copying into shared content; omitted or empty excludes none explicitly." - added
Input schema / properties / private_skill_slugs / descriptionAdded value: +"Skill slugs to retain privately; omitted or empty excludes none explicitly." - added
Input schema / properties / shared_operational_skill_slugs / descriptionAdded value: +"Explicit operational skill slugs allowed into shared content; omitted or empty grants no such exceptions." - added
Input schema / properties / target_layout / descriptionAdded value: +"Destination layout. Only shared is supported. Applying migration removes migrated/already-shared facts from the legacy facts file; private/global/conflicting facts remain."
- Changed
promote_skill_recommendation3 fields changed- added
Input schema / properties / edits / descriptionAdded value: +"Optional promotion overrides: name and description strings and triggers as a string/list. Omitted or empty keeps recommended metadata." - added
Input schema / properties / recommendation_id / descriptionAdded value: +"Latent recommendation ID returned by recommend_skills; use an eligible candidate rather than a canonical slug." - added
Input schema / properties / targets / descriptionAdded value: +"Runtime selectors passed to canonical creation; this promotion does not enable native sync. Use sync_skills afterward for native installation."
- Changed
propose_skill2 fields changed- added
Input schema / properties / decision / descriptionAdded value: +"Omit to review only; yes/y accepts, no/n ignores, and always accepts while recording future approval policy." - added
Input schema / properties / latent_skill_id / descriptionAdded value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path."
- Changed
publish_skill6 fields changed- added
Input schema / properties / category / descriptionAdded value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy." - added
Input schema / properties / draft_or_path / descriptionAdded value: +"Existing draft slug or local draft file/directory path to publish; canonical destinations are validated for conflicts." - added
Input schema / properties / slug / descriptionAdded value: +"Canonical directory slug. Omitted derives from the name where supported; use a portable skill slug rather than a path." - added
Input schema / properties / sync / descriptionAdded value: +"Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content." - added
Input schema / properties / targets / descriptionAdded value: +"Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets." - added
Input schema / properties / visibility / descriptionAdded value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
- Changed
purge_fact3 fields changed- added
Input schema / properties / confirm / descriptionAdded value: +"Explicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it." - added
Input schema / properties / id / descriptionAdded value: +"Exact fact ID from list_facts. Selects one fact; omit when purging an entire explicit scope. Cannot be combined with scope." - added
Input schema / properties / scope / descriptionAdded value: +"Explicit project/global scope to purge in full when id is omitted. Cannot be combined with id; omitting both is rejected."
- Changed
recommend_skills3 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"Compatibility flag, default true. Both true and false remain read-only; false does not enable promotion or writes." - added
Input schema / properties / min_recurrence / descriptionAdded 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." - added
Input schema / properties / scope / descriptionAdded value: +"Candidate scope: project (default), global, or all. Project/all requires project initialization."
- Changed
remember_fact4 fields changed- added
Input schema / properties / content / descriptionAdded value: +"Curated durable fact text to persist. Secret detection can reject sensitive content; do not submit credentials or raw logs." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project." - added
Input schema / properties / tags / descriptionAdded value: +"Optional classification tags. Omitted or empty adds no tags." - added
Input schema / properties / visibility / descriptionAdded value: +"Project content visibility: shared for repository content, private for operational storage. Omitted follows layout/category policy; global content cannot be shared."
- Changed
rename_skill2 fields changed- added
Input schema / properties / skill_id_or_name / descriptionAdded value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID." - added
Input schema / properties / slug / descriptionAdded value: +"Required new canonical directory slug; unmanaged destination conflicts are rejected."
- Changed
repair_skills2 fields changed- added
Input schema / properties / dry_run / descriptionAdded value: +"true (default) previews selected orphan target removal; false deletes selected orphan targets. remove_orphan_targets must also be true." - added
Input schema / properties / remove_orphan_targets / descriptionAdded value: +"Select orphan native target cleanup when true. Defaults to false, selecting no repair action even if dry_run=false."
- Changed
rollback_scope2 fields changed- added
Input schema / properties / confirm / descriptionAdded value: +"Explicit destructive-operation authorization. Defaults to false, which rejects the operation without applying it." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project."
- Changed
share_skill3 fields changed- added
Input schema / properties / category / descriptionAdded value: +"user-facing for reusable team content; operational for internal workflows. Defaults to user-facing and participates in visibility policy." - added
Input schema / properties / confirm_operational / descriptionAdded value: +"Explicit permission to share operational content. Defaults to false; required for operational sharing." - added
Input schema / properties / skill_id_or_name / descriptionAdded value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID."
- Changed
sync_instructions2 fields changed- added
Input schema / properties / apply / descriptionAdded value: +"Write managed instruction changes when true; defaults to false for a preview." - added
Input schema / properties / host_ids / descriptionAdded value: +"Host registry IDs to synchronize. Omitted or empty selects codex and claude_code."
- Changed
sync_skills4 fields changed- added
Input schema / properties / check_gitignore / descriptionAdded value: +"Include warnings about native target gitignore coverage when true. Defaults to false; does not edit .gitignore." - added
Input schema / properties / drift_decision / descriptionAdded value: +"keep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep." - added
Input schema / properties / skill_id_or_name / descriptionAdded value: +"Canonical skill ID, slug, or unambiguous name. Omitted or blank synchronizes all active canonical skills." - added
Input schema / properties / targets / descriptionAdded value: +"Native runtime registry IDs for synchronization. Omitted uses the workflow default targets; an empty list requests no explicit targets."
- Changed
track_latent_skill5 fields changed- added
Input schema / properties / description / descriptionAdded value: +"Nonempty description of the reusable workflow purpose; distinguish it from neighboring skills." - added
Input schema / properties / evidence_summary / descriptionAdded value: +"Sanitized summary of this recurring workflow observation. Defaults to Manual user invocation via MCP.; provide specific curated evidence without secrets or transcripts." - added
Input schema / properties / name / descriptionAdded value: +"Nonempty human-readable skill name. Used for display and candidate matching; not a file path." - added
Input schema / properties / scope / descriptionAdded value: +"Storage scope: project uses this workspace; global uses user memory. Defaults to project." - added
Input schema / properties / tags / descriptionAdded value: +"Optional workflow classification tags used in candidate matching and merged on recurrence. Omitted or empty adds no tags."
- Changed
update_canonical_skill4 fields changed- added
Input schema / properties / drift_decision / descriptionAdded value: +"keep preserves changed native copies; overwrite permits replacing managed divergent copies. Defaults to keep." - added
Input schema / properties / raw_markdown / descriptionAdded value: +"Complete replacement canonical SKILL.md Markdown including valid frontmatter; required and validated before writing." - added
Input schema / properties / skill_id_or_name / descriptionAdded value: +"Active canonical skill ID, slug, or unambiguous display name. Use list_skills to resolve it; not a latent candidate ID." - added
Input schema / properties / sync / descriptionAdded value: +"Synchronize native runtime copies after the canonical write when true. Defaults to false, which only writes canonical content."
- Changed
update_skill5 fields changed- added
Input schema / properties / description / descriptionAdded value: +"Replacement latent workflow purpose. Omitted keeps the existing description; supplied text must be nonempty." - added
Input schema / properties / latent_skill_id / descriptionAdded value: +"Exact latent candidate ID returned by track_latent_skill, list_skills, or recommend_skills; not a canonical skill slug or file path." - added
Input schema / properties / name / descriptionAdded value: +"Replacement latent skill display name. Omitted keeps the existing name; a supplied name must be nonempty." - added
Input schema / properties / raw_markdown / descriptionAdded 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." - added
Input schema / properties / triggers / descriptionAdded value: +"Replacement trigger phrases. Omitted keeps existing triggers; an empty list clears them."
- Changed
validate_skill2 fields changed- added
Input schema / properties / scope / descriptionAdded value: +"Optional scope for selector lookup. Omitted lets the validator resolve the draft/path or registered skill." - added
Input schema / properties / skill_or_path / descriptionAdded value: +"Registered skill selector, draft slug, or local SKILL.md file/directory path to validate."
1 tool update
v0.6.1- Added
bootstrap
37 tool updates
v0.4.0- First observed
activate_skill - First observed
adopt_skill - First observed
cleanup_skill - First observed
context - First observed
create_skill - First observed
create_skill_draft - First observed
deactivate_skill - First observed
doctor - First observed
generate_skill - First observed
get_skill_detail - First observed
host_check - First observed
host_setup - First observed
import_skill - First observed
initialize_project - First observed
inspect_project_layout - First observed
list_audit_events - First observed
list_facts - First observed
list_skills - First observed
list_snapshots - First observed
migrate_project_layout - First observed
promote_skill_recommendation - First observed
propose_skill - First observed
publish_skill - First observed
purge_fact - First observed
recommend_skills - First observed
remember_fact - First observed
rename_skill - First observed
repair_skills - First observed
rollback_scope - First observed
share_skill - First observed
status - First observed
sync_instructions - First observed
sync_skills - First observed
track_latent_skill - First observed
update_canonical_skill - First observed
update_skill - First observed
validate_skill
TDQS
Scored across 38 tools
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.
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.
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.
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
Related MCP Connectors
Universal persistent memory and knowledge retrieval layer for AI agents and LLMs.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Persistent memory for AI agents. EU-hosted, privacy-first, hybrid recall, contradiction detection.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides 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 npmApache 2.0

Mnemexa MCPofficial
AlicenseAqualityDmaintenanceProvides persistent, self-optimizing memory for AI agents, enabling them to remember preferences and context across sessions and share knowledge across multiple agents.410 npmISCmem-contextDeprecated
AlicenseAqualityAmaintenanceMulti-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.10MIT- FlicenseCqualityBmaintenanceGives AI agents persistent memory, handoffs, and shared context across sessions, enabling seamless continuity and multi-agent collaboration.29135 npm68-