Skip to main content
Glama

Skilljack MCP

An MCP server that jacks Agent Skills directly into your LLM's brain.

Tool search / deferred tools. By default, skilljack delivers its skill catalog via MCP server instructions, which arrive in the initialize handshake and are visible to the model even when tool search / deferred tool loading is enabled (the default on modern Claude Code) — so automatic skill activation works out of the box. The legacy --catalog=tool-description mode (not recommended — see Catalog channel below) delivers the catalog through the load-skill tool description instead, but tool-search clients defer tool descriptions out of context, so that mode needs ENABLE_TOOL_SEARCH=false to auto-activate.

Installation

npm install -g @skilljack/mcp

Or run directly with npx:

npx @skilljack/mcp /path/to/skills

From Source

git clone https://github.com/olaservo/skilljack-mcp.git
cd skilljack-mcp
npm install
npm run build
node dist/index.js /path/to/skills

Related MCP server: Skillz

Usage

# Single directory
skilljack-mcp /path/to/skills

# Multiple directories
skilljack-mcp /path/to/skills /path/to/more/skills

# GitHub repository (allowlisted via GITHUB_ALLOWED_ORGS / _USERS)
GITHUB_ALLOWED_ORGS=acme skilljack-mcp github.com/acme/skills

# Well-known publisher (allowlisted via WELL_KNOWN_ALLOWED_ORIGINS).
# Each entry's SHA-256 digest is verified against the published index.
# Every fetched URL — the index, each artifact, and any redirect target — must
# match an allowlisted origin, so if a publisher serves artifacts from a
# separate CDN origin, add that origin to the list too (comma-separated).
WELL_KNOWN_ALLOWED_ORIGINS=https://example.com \
  skilljack-mcp https://example.com/.well-known/agent-skills/

# Using environment variable
SKILLS_DIR=/path/to/skills skilljack-mcp

# Static mode (no file watching)
skilljack-mcp --static /path/to/skills

# Serve over HTTP instead of stdio (stateless Streamable HTTP on POST /mcp)
skilljack-mcp --http=3000 /path/to/skills
# or: SKILLJACK_HTTP_PORT=3000 skilljack-mcp /path/to/skills

Transports: stdio (default) or stateless HTTP (--http[=port], default 3000, or SKILLJACK_HTTP_PORT). HTTP serves the core skill surface (load-skill, skill-resource, skill:// resources, skills/list / skills/get, and the /skill and per-skill prompts) at POST /mcp. Use the --http=<port> form: --http 3000 treats 3000 as a skill directory. The HTTP server listens on all interfaces and has no authentication. Discovery-on-change works the same as stdio — file watchers and remote-source polling keep the skill state fresh, and every request (including each new client's initialize) reads it. Because the transport is stateless it does not push listChanged/resources/updated notifications: already-connected clients see changes on their next request or reconnect. The MCP-Apps configuration UI is stdio-only.

Skills extension (SEP-2640): the server declares io.modelcontextprotocol/skills and implements skills/list and skills/get. Each entry carries the skill's verbatim frontmatter and a {uri, digest, size} manifest of SKILL.md and every supporting file, so a host can verify what it reads. Files are served one at a time via resources/read under skill://<skill-path>/<file>. skill://index.json is still served for clients written against the pre-v1 index shape.

Tools: --tools=<auto|always|never> (or SKILLJACK_TOOLS) controls the load-skill and skill-resource tools. auto (default) offers them unless the client declares io.modelcontextprotocol/skills in its capabilities, as MCP Inspector and MCPJam do; such a host loads skills itself through skills/list, skills/get and resources/read, so the tools are disabled after initialize. The catalog in server instructions lists each skill's skill:// URI for that path. Over stateless HTTP the initialize handshake and later requests hit different server instances, so auto behaves as always; use never there if the host has the extension. With --catalog=tool-description the catalog lives in the tool description, so auto is ignored.

Catalog channel: --catalog=<instructions|tool-description> (or SKILLJACK_CATALOG) picks which single channel delivers the <available_skills> catalog — never both. instructions (default): server instructions, sent in the initialize handshake so it survives tool-search deferral; on stdio it is frozen at startup — skill changes need a restart (over HTTP, newly connecting clients always get a current catalog). tool-description is not recommended and is retained only as a legacy escape hatch (and as the control condition in the evals): the load-skill tool description is invisible to clients that defer MCP tool descriptions (e.g. Claude Code tool search, the modern default), so auto-activation silently breaks unless the client sets ENABLE_TOOL_SEARCH=false; and its one advantage — live catalog refresh via tools/listChanged — is a prompt-cache trap, because tool definitions sit at the top of the cached prompt prefix, so every refresh invalidates the entire cache (tools + system prompt + conversation history) and re-writes it at cache-write prices. Measured 2026-07-06 (#78): it has no cost advantage over instructions in steady state either.

Configuration and Skills Display UI

This server comes along with a MCP Apps-based UI for clients that support it. Instead of fiddling with config files or environment variables, you can just configure your skills locations and skill visiblity directly in your chat window. Locations set in the UI are saved to ~/.skilljack/config.json and take effect only when no directories are given on the command line or in SKILLS_DIR. The UI is not available with --static or --http.

(Screenshots below are from Claude Desktop in dark mode.)

Skills Configuration UI

Skill Display UI

Documentation

For complete documentation, just ask your assistant:

"how do I use skilljack?" or "how does skilljack work behind the scenes?"

This loads the full reference including tools, prompts, resources, configuration options and environment variables, and architecture details.

Available Tools

13 tools
load-skillLoad SkillA
Read-onlyIdempotent

Load a skill's full instructions. Returns the complete SKILL.md content with step-by-step guidance, examples, and file references to follow.

IMPORTANT: When a skill is relevant to the user's task, you must invoke this tool IMMEDIATELY as your first action. NEVER just announce or mention a skill without actually calling this tool. This is a BLOCKING REQUIREMENT: invoke this tool BEFORE generating any other response about the task.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSkill name from <available_skills>

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive behavior. The description adds genuinely useful non-annotation context: there is no output schema, so describing the returned SKILL.md payload (guidance, examples, file references) tells the agent what it will get. It stops short of noting any side effects or preconditions for skill existence.

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

Conciseness4/5

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

Front-loaded with the purpose and return content, then the imperative usage block. The emphasis block is somewhat repetitive ('NEVER just announce...' plus 'BLOCKING REQUIREMENT'), but this redundancy is functional for steering agent behavior rather than filler.

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

Completeness4/5

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

With no output schema, the description appropriately covers the return payload, the parameter source, and the invocation timing an agent needs. What remains thin is failure behavior (e.g., unknown skill name), which is not addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema description coverage is 100% ('Skill name from <available_skills>'), so the schema already carries the semantics. The description adds no format or matching guidance beyond implying the skill must be relevant, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Load a skill's full instructions') and immediately clarifies the return value ('complete SKILL.md content with step-by-step guidance, examples, and file references'). This clearly distinguishes it from the skill-config-* and skill-display-* siblings, which manage configuration rather than executing/loading skills.

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

Usage Guidelines4/5

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

Gives decisive when-to-use guidance: invoke immediately when a skill is relevant to the user's task, and explicitly forbids merely announcing a skill without calling the tool. It does not name alternative tools or exclusion conditions, but the siblings are not substitutes for loading, so the missing piece is minor.

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

skill-configConfigure SkillsA
Read-onlyIdempotent

Open the skills directory configuration UI. Use when user wants to configure, add, or remove skill directories.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
staticModeYes
allowedOrgsYes
directoriesYes
activeSourceYes
allowedUsersYes
isOverriddenYes
allowedOriginsYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered by structured data. The description adds only that the tool surfaces an interactive UI rather than returning data, which is mild extra context; it says nothing about what the UI does or how the call resolves.

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

Conciseness5/5

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

Two short sentences, action first, trigger second, zero filler. Nothing could be removed without losing information.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and with no parameters and full annotation coverage the definition is nearly complete. The only shortfall is the absence of disambiguation from the sibling skill-config-* mutation tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter surface for the description to explain or compensate for, and none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Open the skills directory configuration UI.' That is concrete and distinguishes this as the UI-opening tool. However, it does not explicitly differentiate itself from the many skill-config-* siblings that perform the underlying add/remove operations, and the second sentence blurs that line.

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

Usage Guidelines3/5

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

It gives a when-to-use trigger ('Use when user wants to configure, add, or remove skill directories'), which is more than nothing. But it names no alternatives or exclusions, and the overlap with siblings like skill-config-add-directory and skill-config-remove-directory risks misrouting the agent to this UI tool when a direct mutation tool is intended.

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

skill-config-add-allowed-orgAdd Allowed GitHub OrgB
Idempotent

Add a GitHub organization to the allowed list for skill repos.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesGitHub organization name to allow

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo
allowedOrgsNo
directoriesNo
activeSourceNo
allowedUsersNo
isOverriddenNo
allowedOriginsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare this is a non-read-only, idempotent, non-destructive, closed-world mutation, so the safety profile is covered. The description adds nothing beyond that - it does not say whether the entry persists across sessions, whether duplicates error or silently succeed (idempotentHint implies the latter), or when the allowlist takes effect. No contradiction with annotations, but minimal added value.

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

Conciseness4/5

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

A single short sentence with no filler and the action/scope front-loaded. It is arguably under-specified rather than padded, which is penalized in other dimensions rather than this one.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the single parameter is fully documented. However, for a config-mutating tool the description never explains the surrounding context: what the allowed list governs, required permissions, or how it relates to the origin/directory siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, so the schema already explains 'GitHub organization name to allow.' The description contributes no additional format constraints (case sensitivity, whether 'owner' vs full URL is expected). Baseline 3 applies when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: adding a GitHub organization to an allowlist scoped to skill repos. It is distinguishable from skill-config-remove-allowed-org, though it does not clarify the distinction from the similarly named skill-config-add-allowed-origin (org vs origin), which is the sibling most likely to be confused with it.

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

Usage Guidelines2/5

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

There is no guidance on when to add an org versus an origin, no prerequisites (e.g., admin/config scope), and no indication of what effect the entry has on skill loading. The agent must infer all of this from the tool name alone.

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

skill-config-add-allowed-originAdd Allowed Well-Known OriginB
Idempotent

Add an HTTPS origin (e.g. https://example.com) to the allowed list for well-known publishers.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin or full URL (e.g. https://example.com or https://example.com/.well-known/agent-skills/). Only the scheme + host[:port] is stored.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo
allowedOrgsNo
directoriesNo
activeSourceNo
allowedUsersNo
isOverriddenNo
allowedOriginsNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the agent knows this is a safe, repeatable local mutation. The description adds only that the mutation is scoped to well-known publishers; it does not describe auth requirements, whether the origin persists across restarts, or any failure behavior.

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

Conciseness5/5

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

A single front-loaded sentence with an inline example and zero filler. Every element earns its place.

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

Completeness4/5

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

For a single-parameter configuration tool with a full schema, an output schema, and safety annotations, the description covers what is needed to invoke it correctly. It is only slightly thin on the operational context of what acquiring this allowance enables.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is fully documented, including the normalization rule (only scheme + host[:port] is stored). The description adds the 'HTTPS' constraint, which the schema itself does not enforce, giving marginal extra value over the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add) and resource (an HTTPS origin to the allowed list for well-known publishers), which is clearly distinct from the sibling skill-config-remove-allowed-origin. It does not explicitly name siblings, but the add/remove pairing makes the intent unambiguous.

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

Usage Guidelines2/5

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

The description says what it does but never states when to use it versus alternatives, prerequisites, or the effect of adding an origin. The inverse sibling implies the add/remove choice, but no explicit routing guidance or when-not-to-use condition is given.

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

skill-config-add-directoryAdd Skills DirectoryC

Add a skills directory to the configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesAbsolute path to the skills directory to add

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo
allowedOrgsNo
directoriesNo
activeSourceNo
allowedUsersNo
isOverriddenNo
allowedOriginsNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false and idempotentHint=false. The description adds nothing beyond that profile: it doesn't say whether adding a duplicate directory is rejected or duplicated, whether the change persists, or whether existing entries are affected.

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

Conciseness4/5

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

A single front-loaded sentence with no waste. It is appropriately sized, though that economy comes at the cost of the missing guidance noted elsewhere.

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

Completeness2/5

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

For a mutating configuration tool with no explanatory power in the description, key facts are missing: whether the directory must already exist, whether the config is persisted, and how the change interacts with remove-directory. An output schema exists, so return values need not be described, but the preconditions are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter ('directory', absolute path) is fully documented in the schema. The description adds no syntax, format, or constraint detail beyond it, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('Add a skills directory to the configuration'), so the agent knows exactly what operation is performed. It does not, however, differentiate itself from the obvious sibling skill-config-remove-directory or explain how it relates to skill-config-add-allowed-org/origin.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite about the config needing to exist or the path needing to be valid, and no mention of alternatives. The agent must infer everything about context from the name alone.

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

skill-config-remove-allowed-orgRemove Allowed GitHub OrgC
DestructiveIdempotent

Remove a GitHub organization from the allowed list.

ParametersJSON Schema
NameRequiredDescriptionDefault
orgYesGitHub organization name to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo
allowedOrgsNo
directoriesNo
activeSourceNo
allowedUsersNo
isOverriddenNo
allowedOriginsNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is fully covered. The description merely restates the removal action and adds nothing beyond the structured fields, e.g. what happens if the org is not in the list or whether the scope is global.

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

Conciseness4/5

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

A single efficient sentence with no filler, front-loaded with the action and target. It is not under-specified so much as terse.

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

Completeness3/5

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

For a one-parameter config mutation with rich annotations and an output schema, the description is minimally adequate. The annotations carry the mutation semantics and the output schema carries the return shape, so little is missing, but the description does nothing to help route between it and its origin sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'org' parameter is fully documented in the schema. The description adds no syntax, format, or sourcing detail beyond it, so the schema does all the work - the baseline 3 for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Remove a GitHub organization from the allowed list.' An agent knows what it does. However, it does not differentiate from the sibling skill-config-remove-allowed-origin, which removes an origin rather than an org - a distinction the description leaves implicit.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, no mention of the sibling add/remove tools or which one applies. The removal context is only implied by the name and sibling set.

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

skill-config-remove-allowed-originRemove Allowed Well-Known OriginB
DestructiveIdempotent

Remove an HTTPS origin from the well-known allowed list.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin to remove (exact match)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo
allowedOrgsNo
directoriesNo
activeSourceNo
allowedUsersNo
isOverriddenNo
allowedOriginsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds only the constraint that the target is an HTTPS origin in a specific list, without saying what happens if the origin is absent or whether removal is reversible.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted words. It is tight, though a touch more context could be added without bloat.

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

Completeness3/5

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

With rich annotations and an output schema present, the description need not explain returns, but for a destructive config-mutation tool it omits any note about effect on the skill's behavior or error conditions. Adequate but with a clear gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'origin' parameter already documents exact-match semantics. The description's mention of an 'HTTPS origin' restates the resource but adds no syntax, format, or normalization detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Remove) and resource (HTTPS origin from the well-known allowed list), which distinguishes it from the sibling skill-config-add-allowed-origin. The phrase 'well-known allowed list' is slightly jargon-heavy but the direction of the operation is unambiguous.

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

Usage Guidelines2/5

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

No indication of when to use this versus skill-config-add-allowed-origin or the broader skill-config tools, and no prerequisites (e.g. auth, that the origin must already exist) are stated. Usage is only implied by the verb.

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

skill-config-remove-directoryRemove Skills DirectoryC
DestructiveIdempotent

Remove a skills directory from the configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryYesAbsolute path to the skills directory to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo
allowedOrgsNo
directoriesNo
activeSourceNo
allowedUsersNo
isOverriddenNo
allowedOriginsNo

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it never says whether the skills inside the directory are unloaded, what happens if the path is not registered, or whether a confirmation/failure response is returned.

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

Conciseness4/5

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

One short sentence, front-loaded with the action, with no filler or redundancy. It is efficient, though its brevity reflects missing guidance rather than disciplined editing.

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

Completeness3/5

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

An output schema exists so return values need not be described, and annotations cover safety semantics. However, for a destructive config mutation with sibling tools, the definition omits any operational caveats (state of existing skills, error cases), leaving it merely minimal rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single required parameter with a clear schema description ('Absolute path to the skills directory to remove'). The description adds no format or validation detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Remove') and resource ('skills directory from the configuration'), which is enough to distinguish it from the inverse 'add-directory' sibling. It does not explicitly name or contrast with any sibling, but the lexical clarity is high.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus 'skill-config-add-directory', no prerequisites (e.g., whether the directory must currently be registered), and no warnings about the effect on already-loaded skills. Usage is only implied by the verb.

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

skill-config-set-static-modeSet Static ModeB
Idempotent

Enable or disable static mode (freezes skills list at startup).

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYesWhether to enable static mode

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
successYes
staticModeNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations declare a non-read-only, idempotent, non-destructive toggle, and the description usefully adds what static mode means (skills list frozen at startup). It does not say when the freeze takes effect (immediate vs restart) or whether the setting persists, which matters for a config toggle.

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

Conciseness5/5

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

One sentence, front-loaded with the action and followed by the clarifying definition of static mode. No filler.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and the toggle's effect is described. However, for a config mutation an agent still lacks timing/persistence details and any reason to choose this over related skill-config tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single 'enabled' boolean is fully documented in the schema (100% coverage), and the description's verb pair 'enable or disable' maps cleanly onto it. No additional semantics beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (enable/disable) and resource (static mode), plus parenthetical explanation of what static mode does ('freezes skills list at startup'). Distinguishable from sibling config tools by its static-mode subject, though it does not explicitly contrast with any sibling.

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

Usage Guidelines2/5

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

No guidance on when to enable vs disable static mode, no prerequisites, and no mention of alternatives among the many skill-config-* siblings. The agent must infer intent from the name alone.

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

skill-displayView SkillsC
Read-onlyIdempotent

Open the skill display UI to view available skills and configure their invocation settings. Use when user wants to see skills or toggle assistant/user invocation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
skillsYes
totalCountYes

TDQS

C2.9/5.0
Behavior1/5

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

Annotations declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, yet the description asserts the tool "configure[s] their invocation settings" and lets users "toggle assistant/user invocation" — an explicit mutation claim. That inconsistency directly misleads an agent about side effects, and the description adds no compensating disclosure (no persistence semantics, no delimitation from skill-display-update-invocation).

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

Conciseness4/5

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

Two short sentences with the action front-loaded and no filler — efficiently sized for the call. The second sentence, however, spends its words on behavior that belongs to a sibling tool, so not every sentence fully earns its place.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the empty parameter set is trivially covered. What is missing is a correct account of the tool's effect and its boundary against skill-display-update-invocation, both of which the current text muddies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No param-level meaning is needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

It gives a concrete verb+resource ("Open the skill display UI to view available skills"), which is clear enough on its own. However, it then claims the tool also exists to "configure their invocation settings," territory that sibling tools skill-display-update-invocation and skill-display-reset-override own, so the boundary with siblings is blurred rather than sharpened.

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

Usage Guidelines3/5

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

A trigger is supplied ("Use when user wants to see skills or toggle assistant/user invocation"), which is more than most definitions offer. But no when-not condition or alternative is named, and half the stated trigger ("toggle invocation") points at a different tool, so the guidance can misroute the agent.

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

skill-display-reset-overrideReset Skill OverrideA
Idempotent

Reset a skill's invocation settings to frontmatter defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingNoWhich setting to reset (omit for both)
skillNameYesName of the skill to reset

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
skillsNo
successYes
totalCountNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds the key behavioral fact the annotations cannot convey: that custom overrides are discarded and reverted to frontmatter defaults, which tells the agent what is lost and what the post-state will be.

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

Conciseness5/5

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

A single, front-loaded sentence with zero filler; the action and its resulting state are stated immediately.

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

Completeness4/5

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

With an output schema covering return values and annotations covering safety and idempotency, the description supplies the one thing they lack: the reversion target. It is complete for invocation, though routing guidance against the update sibling is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the 'setting' enum's '(omit for both)' semantics are documented in the schema itself. The description adds no parameter-level detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (reset) plus resource (a skill's invocation settings) and a clear target state (frontmatter defaults). It implicitly distinguishes itself from skill-display-update-invocation by describing reversion rather than mutation of custom values, but it never names that sibling, so differentiation is left to inference.

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

Usage Guidelines2/5

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

The description states what reset means but gives no when-to-use guidance, no prerequisites, and no explicit contrast with skill-display-update-invocation, which an agent must choose between. Usage context is only implied by the word 'reset'.

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

skill-display-update-invocationUpdate Skill InvocationC

Update invocation settings for a skill.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesNew value for the setting
settingYesWhich setting to update
skillNameYesName of the skill to update

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
skillsNo
successYes
totalCountNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false, so the mutation/idempotency profile is covered structurally. The description adds nothing beyond that — it does not say what is changed, whether the update is reversible, or what permissions are required. No contradiction with annotations, but no added context either.

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

Conciseness4/5

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

A single short sentence with no wasted words, reasonably front-loaded. However, brevity here reflects under-specification rather than disciplined concision.

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

Completeness2/5

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

An output schema exists so return values need not be explained. But for a non-idempotent mutation tool whose core concept ('invocation settings' with assistant/user enum values) is undefined, this description is not complete enough for an agent to call it confidently or know the effect of the change.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (skillName, setting, value) are documented in the schema itself; the rule sets the baseline at 3. The description adds no meaning beyond the schema — in particular it never clarifies what the 'assistant' vs 'user' setting enum values mean semantically.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description ('Update invocation settings for a skill') is essentially a restatement of the title 'Update Skill Invocation' with the word 'settings' added. It gives no explanation of what an 'invocation setting' actually controls (the enum values 'assistant'/'user' hint at who may invoke the skill, but this is never stated). It also draws no distinction from the sibling tools skill-display, skill-display-reset-override, or skill-config-set-static-mode.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, when not to, or which sibling to prefer. Given siblings like skill-display-reset-override and skill-config-set-static-mode, an agent has no criteria for choosing between them. No guidance is present at all.

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

skill-resourceRead Skill FileA
Read-onlyIdempotent

Read files referenced by skill instructions (scripts, snippets, templates). Use when skill instructions mention specific files to read or copy. Pass a directory path (e.g., 'templates') to read all files in that directory at once. Text files are returned as text; a binary file is returned as an embedded base64 resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRelative path to file or directory. Examples: 'snippets/tool.ts' (single file), 'templates' (all files in directory), '' (list available files).
skillYesSkill name

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior. The description adds important context beyond annotations: directory paths read all files at once, text is returned as text, and binary is returned as embedded base64. It still leaves error or partial-read behavior unstated.

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

Conciseness5/5

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

Four sentences, each front-loaded and purposeful: purpose, usage trigger, directory behavior, and return format. No redundant or filler content.

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

Completeness4/5

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

With no output schema, the description usefully explains return formats for text and binary files. It omits some edge cases, such as the empty-path listing behavior, but that is already covered in the schema, so the definition is largely complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both required parameters, including path examples and the empty-path listing behavior. The description's statement about directory paths adds little beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Read) and resource (files referenced by skill instructions) with examples of file types. It is clear enough to distinguish from skill-config and skill-display siblings, but it never explicitly names or contrasts with the closest sibling, load-skill.

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

Usage Guidelines4/5

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

Gives a concrete trigger: 'Use when skill instructions mention specific files to read or copy.' It also explains the directory-path case, but offers no when-not guidance or sibling alternatives.

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

Tool Schema Changelog

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

  1. 14 tool updatesv0.14.0
    • Addedload-skill
    • Removedskill
    • Addedskill-config
    • Addedskill-config-add-allowed-org
    • Addedskill-config-add-allowed-origin
    • Addedskill-config-add-directory
    • Addedskill-config-remove-allowed-org
    • Addedskill-config-remove-allowed-origin
    • Addedskill-config-remove-directory
    • Addedskill-config-set-static-mode
    • Addedskill-display
    • Addedskill-display-reset-override
    • Addedskill-display-update-invocation
    • Changedskill-resource2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 1 tool updatev1.0.0
    • Changedskill-resource1 field changed
      • changedInput schema / properties / path / description
        Previous value: -"Relative path (e.g., 'snippets/tool.ts'). Empty string lists all files."New value: +"Relative path to file or directory. Examples: 'snippets/tool.ts' (single file), 'templates' (all files in directory), '' (list available files)."
  3. 2 tool updates
    • First observedskill
    • First observedskill-resource

TDQS

B3.2/5.0

Scored across 13 tools

Disambiguation4/5

The core tools (load-skill, skill-resource) are clearly distinct, and the add/remove config pairs (directory, org, origin) target unambiguous resources. The only mild confusion is between the UI-opener tools (skill-config, skill-display) and the granular operations they overlap with, but descriptions help distinguish them.

Naming Consistency4/5

Nearly all tools follow a predictable kebab-case skill-{subsystem}-{action}-{target} pattern (skill-config-add-directory, skill-display-reset-override). The outliers load-skill and skill-resource use a different verb/noun-only structure, but the set remains readable and mostly consistent.

Tool Count4/5

13 tools sits comfortably in the well-scoped 3-15 range for a skill-management server. The surface leans heavily toward configuration (8 of 13), which is slightly unbalanced but each tool still earns its place.

Completeness4/5

Config resources (directories, orgs, origins, static mode) all have add/remove or set coverage, and display settings have update/reset. The main gap is the absence of a programmatic list-skills tool, since enumeration is only exposed through the skill-display UI, but core load/resource workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to dynamically discover and execute tools through a structured skills system. Serves as a documentation hub where skills are defined in directories, allowing progressive loading and interpretation of capabilities.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Turns Claude-style skills (SKILL.md files with resources) into callable MCP tools for any agent. Discovers skills from a directory, exposes their instructions and resources, and can execute bundled helper scripts.
    236 PyPI
    402
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides dynamic, context-aware code assistant skills through hybrid RAG (vector + knowledge graph), enabling runtime skill discovery, automatic toolchain-based recommendations, and on-demand loading from multiple git repositories.
    48 PyPI
    20
    MIT