Fredo QA Skills MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fredo QA Skills MCP ServerRun a preflight QA audit on this project."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fredo QA Skills — Model Context Protocol (MCP) Server
Official Model Context Protocol (MCP) server for Fredo QA Skills.
Connects AI coding assistants (Claude Desktop, Cursor, Google Antigravity, Windsurf, Copilot, VS Code) to the Fredo QA engineering standards, regulatory checklists, and preflight audit engine.
Key Highlights
Standard MCP Protocol: implements MCP revision 2024-11-05 over JSON-RPC 2.0 and standard I/O (
stdio).No Runtime Dependencies:
package.jsondeclares nodependencies; the server only imports Node.js built-in modules (node:crypto,node:fs,node:os,node:path,node:readline,node:url). It works without a network connection. The remaining supply-chain surface is this package itself and Node.js.Three-Tier Safety & Human-in-the-Loop Approval:
Directory traversal inspection (
quick_check) and mutating tools (install_skill,sync_workspace_skills) require explicit user confirmation (confirm: true), defaulting to non-destructive previews.Native MCP client authorization dialogs protect against unintended workspace access or modifications.
Strict path traversal (
..), system root (/etc,/), and credential vault (~/.ssh,~/.aws) write containment guards.
Modular Static Preflight Sensor (
quick_check): Sub-second intake inspection assessing repository governance, security, quality gates, supply chain, and DevOps across 9 language stacks—with user-confirmed directory traversal and zero arbitrary code execution.Cryptographic Ed25519 License Verification: Offline signature checks unlock Pro and Enterprise skills with version retention as set out in the terms of sale. Open-source MIT skills remain free and unlocked forever.
Provenance & Canary Watermarking: Embeds cryptographic watermark headers into skill rules for licensing integrity and leak tracing.
Related MCP server: Skill-MCP
Tool Safety Model: Read-Only Queries, Directory Traversal, and Write Actions
MCP tools in this server are divided into three distinct security tiers:
Skill files are not bundled. This package contains the catalog metadata, the license checks and the audit engine, but no
SKILL.md. Skills are read from the project:skills/<id>/SKILL.md,skills/{free,pro,enterprise}/<id>/SKILL.mdor.agents/skills/<id>/SKILL.md. Download a skill fromhttps://www.illicomedia.com/qa-skills/skills/<id>and extract it there. When a skill is missing,get_skill_rulesandinstall_skillfail with these instructions instead of generating content.
1. Read-Only Queries (No Writes)
These tools never modify state. get_skill_rules reads the installed SKILL.md from the working directory; the others are in-memory lookups:
list_skills: Browse available skills, policy tiers, and descriptions.get_skill_rules: Return theSKILL.mdof an installed skill (fails explicitly if the skill is not installed).verify_license: Inspect active license signature, licensee, tier, and validity.get_version: Read runtime server version, protocol metadata, and engine capabilities.set_license_key: In-memory configuration of signed license for the active session.
2. Directory Traversal & Inspection (Filesystem Read — Requires User Confirmation)
Because this tool accesses the filesystem and traverses project directory trees up to 2 subfolder levels (scanning configs, .env, .gitignore, and certificates):
quick_check: Requiresconfirm: trueto traverse and inspect project files. Whenconfirm: false(default), returns a safe preview describing the audit scope and target path without scanning the filesystem.
3. Mutating & Write Tools (Filesystem Modifications & Archiving — Requires User Confirmation)
These tools modify files or directory structures in the target project's .agents/ directory:
install_skill: Installs a specific skill'sSKILL.mdandLICENSE. Requiresconfirm: true.sync_workspace_skills: Scans project tech stacks and installs all matching skills. Requiresconfirm: true.prune_skills: Safely prunes unneeded skills by moving them to.agents/.archive/. Non-destructive: files are archived, not deleted, keeping them fully recoverable while removing noise from the AI agent context. Requiresconfirm: true.
How the Human-in-the-Loop Guard Works:
[AI Assistant] ──> Calls quick_check / install_skill / sync_workspace_skills (confirm: false)
│
▼
[MCP Server returns PREVIEW]
(Lists proposed action, target folder, audit scope, or files to create)
│
▼
[AI Assistant] ──> "I propose to inspect/modify your project. Proceed? [Y/n]"
│
User Approves
│
▼
[AI Assistant] ──> Calls tool with (confirm: true)
│
▼
[MCP Client Authorization Prompt]
("Allow fredo-qa to access/write in /path/to/project?")
│
User Confirms
│
▼
[Operation executed safely within boundaries]Default Safe Preview (
confirm: false):
If an assistant invokesquick_check,install_skill, orsync_workspace_skillswithoutconfirm: true, no filesystem traversal or file writing occurs. The server returns a structured dry-run response outlining the target directory and scope, prompting the agent to ask the human developer for approval.Explicit Confirmation (
confirm: true):
Directory traversal or file modifications only execute whenconfirm: trueis explicitly provided after user agreement.Host Client Confirmation Prompts:
Most MCP clients (Claude Desktop, Cursor, Antigravity) will also display a visual confirmation prompt in the chat UI before allowing tool execution.Security Containment Boundaries:
Even withconfirm: true, the server's security guard strictly rejects:Accessing or writing outside the workspace boundary (prevents directory traversal
../).Operating on system roots (
/,/etc,/usr,/bin,C:\Windows).Operating on sensitive credential stores (
~/.ssh,~/.aws,~/.gnupg,~/.kube).Following symlinks that escape the project directory.
Available MCP Tools Reference
Tool Name | Type | Parameters | Description |
| 🔍 Read-Only |
| Lists all skills accessible under your current plan with tiers, tags, and summary gates. |
| 🔍 Read-Only |
| Returns complete prompt instructions and QA directives for a skill (e.g. |
| 🔍 Traversal |
| Preflight audit for AI agents. Evaluates 5 domains across 9 languages. Requires |
| ✏️ Mutating |
| Installs a skill into |
| ✏️ Mutating |
| Auto-detects project stack and installs matching skills. Requires |
| 📦 Archiving |
| Safely archives unneeded skills from |
| 🔍 In-Memory |
| Validates Ed25519 signature, tier (Free, Pro, Enterprise), licensee, expiration, and version retention status. |
| ⚙️ In-Memory |
| Sets the signed license file (path or JSON content) in memory for the active session without restarting. |
| 🔍 In-Memory |
| Returns the active package version (e.g. |
Deep Dive: Modular Preflight Sensor (quick_check)
The quick_check tool provides a sub-second, non-destructive audit engine for AI coding assistants. It assesses codebases before executing tasks or quality gates.
Audit Domains Evaluated:
Governance & Guidelines: Detects
AGENTS.md,.github/copilot-instructions.md,.cursorrules, and agent policy definitions.Security & Secrets Hygiene: Verifies
.gitignoreignores.envfiles, detects exposed private keys (id_rsa,*.pem,*.key), and checks for RFC 9116.well-known/security.txt.Quality Gates & Exceptions: Verifies quality gate scripts (
qa:starter,qa:standard,qa:strict), test runners, and.qa-exceptions.yamlgovernance.Supply Chain Integrity: Validates lockfiles (
pnpm-lock.yaml,package-lock.json,Cargo.lock,go.sum,poetry.lock), SBOM configurations, and dependency verification.DevOps & Continuous Integration: Scans
.github/workflows/, GitLab CI, and Docker security configurations.
Supported Language Analyzers:
Node.js / TypeScript:
package.json, TypeScript configs, ESLint/Biome, Vitest/Jest, Knip, lockfiles.Rust:
Cargo.toml,Cargo.lock, Clippy, cargo-audit, rustfmt.Go:
go.mod,go.sum, golangci-lint, govulncheck.Python:
pyproject.toml, Ruff, Mypy, Poetry/uv/Pipenv lockfiles, pytest.Java:
pom.xml,build.gradle, Spotless, Checkstyle, JaCoCo.C / C++:
CMakeLists.txt,Makefile, clang-format, clang-tidy.PHP:
composer.json,composer.lock, PHPStan, PHPUnit.Shell / Bash:
*.shscripts, ShellCheck, Bats, shfmt.Polyglot & Fallback: Intelligent credit allocation for mixed and multi-language repositories.
Traversal & Confirmation Protocol:
Because quick_check traverses repository directories and inspects configuration files, secret patterns, and certificate folders up to 2 levels deep, it implements the same strict Human-in-the-Loop agreement as mutating tools:
Step 1: Scope Preview (
confirm: falseor omitted):{ "previewOnly": true, "requiresConfirmation": true, "projectPath": "/path/to/project", "message": "Preview: preflight audit is ready to inspect \"/path/to/project\". Directory traversal requires explicit user confirmation. Set confirm: true to proceed.", "scope": "Fast preflight sanity check: verifies presence of scaffolding, agent directives...", "status": "needs_attention", "score": 0, "prerequisites": "Confirmation required" }Step 2: Traversal Execution (
confirm: true): Once user agreement is confirmed, the assistant passesconfirm: trueto perform the multi-domain static audit and return the complete score and findings.
Safety design:
quick_check performs static inspection of file paths, headers, and directory structures. It does not spawn subprocesses, compile code, or access the network. Review its output like any tool result, especially on untrusted repositories.
Native Toolchain Recognition & Zero Unsolicited Files
Starting with version 1.4.4+:
Native Toolchains Are First-Class:
quick_checknatively detects and honors standard language commands (cargo test,npm test,pytest,go test,make test,mvn test) without requiring custom wrapper scripts.Local & Multi-Forge CI Support: If your repository uses a local runner (
scripts/qa.sh,Makefilerecipes, git hooks) or diverse CI providers (GitLab CI, Forgejo, Bitbucket Pipelines, Azure DevOps, Woodpecker, Drone, Cirrus, Jenkins), the audit recognizes them automatically.Zero File Pollution: The MCP server will never generate unsolicited wrapper scripts (
scripts/qa.shorscripts/qa) on your project. If no CI is configured, it reports an informational advisory recommendation tailored to your remote forge without blocking your audit score (status: ready).
Vibe Coding with Fredo QA: Natural Language Prompt Examples
When using AI coding assistants (Cursor Agent / Composer, Claude Code, Google Antigravity, Windsurf Cascade, Cline), you do not need to call JSON-RPC methods directly or memorize tool names. The AI agent automatically discovers all Fredo QA tools from its environment.
During rapid vibe coding, simply prompt the assistant naturally in chat:
1. Preflight Codebase Audit
Prompt: "Audit this repository before I commit my work."
Prompt: "Run a quick preflight sanity check on this codebase."
🤖 What happens: The agent triggersquick_check. It inspects repository governance, test suites, secret hygiene, lockfiles, and CI configuration across your tech stack in milliseconds, reporting readiness and any blocker or warning findings.
2. Auto-Detecting Stack & Installing Skills
Prompt: "Detect the tech stack of this project and install the matching QA engineering skills."
Prompt: "Set up standard QA quality gates for this TypeScript and Python repository."
🤖 What happens: The agent asks for your approval (confirm: true), runssync_workspace_skills, and automatically installs relevant engineering profiles (e.g.,qa-javascript-typescript,qa-python,qa-security) directly into.agents/skills/.
3. Enforcing Deterministic Engineering Contracts
Prompt (Free): "Apply the
qa-rust(orqa-javascript-typescript)standardgate to this module—zero suppressions—and output theqa-coreevidence block."
Prompt (Pro): "Audit this frontend againstqa-accessibility(WCAG 2.2 AA) andqa-gdpr-rgpd(CNIL equal accept/refuse & Art. 13 forms) and fix every blocker."
🤖 What happens: Rather than relying on generic LLM advice or taking shortcuts, the agent callsget_skill_rulesto load the exact profile thresholds, toolchain flags, exception rules, and mandatoryqa-coreevidence format before writing or validating code.
4. Cleaning Up Unused Skills (Archiving)
Prompt: "Clean up any installed QA skills that don't match our active stack."
Prompt: "Prune unneeded skills from our .agents directory."
🤖 What happens: The agent invokesprune_skillswithconfirm: true. Skills not matching the current stack are safely moved to.agents/.archive/(non-destructive archiving) to keep the AI context window lean.
5. Checking License & Commercial Skills
Prompt: "Verify our Fredo QA license status and expiration."
Prompt: "Check if our Pro skills are activated."
🤖 What happens: The agent callsverify_licenseto validate the Ed25519 signature, tier, licensee details, and version retention status.
Installation & Setup
Requirements: Node.js 22, 24 or 26+. The server refuses to start on Node.js versions that no longer receive security fixes, since it reads your codebase. If your default node is older (common with nvm on legacy projects), set the MCP client's "command" to the full path of a supported node and pass the package's dist/index.js as the argument, or switch with nvm use 24 before starting the client.
Option 1: Local / Offline Global Installation (for machines without network access)
@illicomedia/skills-mcp-server has 0 runtime dependencies, allowing completely offline operation:
# 1. Build the package
cd packages/mcp-server
npm run build
# 2. Install globally offline
npm install -g ./packages/mcp-server/ --offline
# Or link for active development:
cd packages/mcp-server && npm linkOption 2: Remote / NPX (Zero-install)
Use npx -y @illicomedia/skills-mcp-server directly in your client configuration.
How MCP stdio Transport Works (and why running in a shell pauses)
When you run npx @illicomedia/skills-mcp-server directly in an interactive bash or zsh terminal:
[fredo-qa-mcp-server] Starting Model Context Protocol server on stdio (PID: 12345)......the process pauses and appears to wait. This is normal and by design.
MCP is a JSON-RPC 2.0 daemon, not an interactive CLI: The server communicates with your AI editor by reading JSON-RPC requests from standard input (
stdin) and writing JSON responses to standard output (stdout).Zero Open Network Ports: Unlike HTTP servers, an MCP server on
stdioopens no network ports (localhost,0.0.0.0). It is completely invisible to local network sniffers, port scanners, and malicious browser scripts.Process Isolation: Only the parent IDE process that spawned the server holds the pipes to talk to it. When the IDE closes, the operating system closes the pipe (
EOF), and the MCP server terminates instantly with zero zombie processes.How to test or exit: If you launched it in a human terminal to test it, simply press
Ctrl+Cto exit. To use the server, configure it in your editor's MCP settings (see Client Configuration below).
Versions and upgrades
An unpinned npx configuration can pick up a new release on its own. For teams and CI, pin an exact version so that it only changes when you choose:
npx -y @illicomedia/skills-mcp-server@1.4.3latestis the default and the recommended stable version.nextis a release being tried before it reacheslatest. Do not use it in production.Version numbers follow Semantic Versioning: a major version can break an existing setup, while minor and patch versions do not. See the changelog.
A deprecation warning means that version has a known problem, and the message names its replacement.
Only the latest major version is supported, in its newest patch. When a new major version ships, older ones reach end of life and are deprecated on npm, with the version to use instead. 1.x and 2.x are end of life: use 3.x.
Client Configuration
1. Claude Desktop (claude_desktop_config.json)
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"fredo-qa": {
"command": "fredo-qa-mcp-server",
"args": []
}
}
}(Or replace command with "npx" and args with ["-y", "@illicomedia/skills-mcp-server"])
2. Cursor IDE (.cursor/mcp.json)
Add to your project's .cursor/mcp.json or global Cursor settings:
{
"mcpServers": {
"fredo-qa": {
"command": "fredo-qa-mcp-server",
"args": []
}
}
}3. Google Antigravity (~/.gemini/config/mcp_config.json)
Add to ~/.gemini/config/mcp_config.json:
{
"mcpServers": {
"fredo-qa": {
"command": "fredo-qa-mcp-server",
"args": []
}
}
}Or run directly from the compiled JavaScript bundle without global binaries:
{
"mcpServers": {
"fredo-qa": {
"command": "node",
"args": ["/absolute/path/to/skills/packages/mcp-server/dist/index.js"]
}
}
}Complete Uninstallation & Clean Removal
We believe software should never pollute your system or workspace. The Fredo QA MCP server:
Has zero background daemons or services.
Runs zero remote telemetry or background network jobs.
Writes files only to
.agents/in your project when explicitly approved (confirm: true).
If you decide not to use the MCP server, you can remove it completely and restore a pristine state in seconds:
Step 1: Remove from your AI Editor / MCP Client Configuration
Simply delete the "fredo-qa" block from your client's configuration file:
Claude Desktop: Open
claude_desktop_config.jsonand delete the"fredo-qa"entry frommcpServers.MacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Cursor IDE: Delete
"fredo-qa"from.cursor/mcp.jsonor remove it in Cursor Settings > Features > MCP.Google Antigravity: Delete
"fredo-qa"from~/.gemini/config/mcp_config.jsonor disable it in the Antigravity MCP settings.VS Code / Windsurf: Delete
"fredo-qa"from.vscode/mcp.jsonor user settings.
Step 2: Uninstall the Package
Depending on how you ran the server:
If run via
npx(Option 2): Nothing was permanently installed. The server was executed from the temporary npx cache.# Optional: clear npm cache if desired npm cache clean --forceIf installed globally (Option 1):
npm uninstall -g @illicomedia/skills-mcp-serverIf linked locally (
npm link):npm unlink -g @illicomedia/skills-mcp-server
Step 3: Remove Project & User Artifacts (Optional)
If you previously approved install_skill or sync_workspace_skills, delete the installed skills directory from your workspace:
# In your project root:
rm -rf .agents/
# If you generated local license or exception files:
rm -f .qa-license.json .qa-exceptions.yaml
# If you stored a global license file:
rm -rf ~/.config/fredo-qaStep 4: Check for QA Files Your AI Agent May Have Created
The server itself only writes under.agents/. Your AI agent, however, may have added QA
files to your project while following the skills, most commonly a QA command wrapper:
scripts/qa.sh and its gate folders scripts/qa/<profile>.d/.
Server versions before 1.4.5 reported a missing
scripts/qa.shinquick_check, which could lead an agent to create one. Since 1.4.5 the server never asks for it: native commands (npm test,cargo test,pytest,make, ...) count as first-class QA.The
qa-coreskill describes this wrapper as an optional template, so an agent applying it may still create one, whatever the server version.
These files are now part of your project, and other tools (CI, a Makefile, git hooks) may call
them. Check before removing anything:
# Who added them, and when:
git log --diff-filter=A --format='%h %ad %an %s' --date=short -- scripts/qa.sh scripts/qa
# What still uses them:
grep -rn "scripts/qa" .github .gitlab-ci.yml Makefile justfile package.json .githooks 2>/dev/null
# Only if nothing uses them and you do not want them:
git rm -r scripts/qa.sh scripts/qaVerification
Restart your editor or MCP client.
Confirm the
fredo-qatools are no longer listed in the client's tools menu.Nothing from the server remains: no dependency, configuration or background process. Files your agent created (Step 4) stay until you decide to remove them.
License Verification & Tiered Access
Pro and Enterprise skills require an Ed25519-signed license file (license.json).
License Resolution Order:
User config path:
~/.config/fredo-qa/license.json(recommended: applies to every project)Project root:
.qa-license.json(ensure this is added to.gitignore)Dynamic session key: Set dynamically via the
set_license_keytool.
The server reads no environment variable. Upgrading from 2.x: if your MCP configuration sets
FREDO_QA_LICENSE_FILE, move that file to ~/.config/fredo-qa/license.json (or the project's
.qa-license.json) and remove the env entry; the variable is ignored since 3.0.
Lifetime Version Retention:
A license unlocks all releases published on or before its updates_until date permanently. Later server releases gracefully run in free community mode (all MIT skills accessible) without breaking, and without any remote clock or telemetry checks.
Security & Sandboxing Architecture
Declared Node.js Capabilities (Least Privilege)
To satisfy supply-chain and static analysis audits (such as Socket.dev and OpenSSF):
Filesystem Access (
node:fs): one module,security/path-guard, is the only code that touches the disk (a test fails if any other shipped file importsnode:fs). Reads serve workspace preflight audits (quick_check), localSKILL.mddocuments and license files. Every write goes through a helper that refuses, before acting, any target outside the project root or reached through a symlink leading outside it; writes only happen under.agents/skills/and.agents/.archive/, and only when a mutating tool is called with explicit user confirmation (confirm: true).Environment Variables (
process.env): none. Licenses are found at fixed locations (~/.config/fredo-qa/license.json, the project's.qa-license.json) or loaded withset_license_key; the home directory comes from Node.jsos.homedir(). A test fails if the built package reads any environment variable.Links (URL strings): four
illicomedia.comlinks shown to people (pricing, skill pages, the license schema, the product page). They are text in messages and the license; the server never fetches them. A test rejects any other URL in the built package.Network & Shell Spawning: The runtime contains zero outbound network calls (
fetch,http,net) and zero shell or child process executions (child_process,exec,spawn). Execution occurs entirely in-memory over stdio.
Sandboxing Controls
Buffer Overflow & DoS Protection: Incoming
stdiostream enforces a strict1 MBmaximum JSON-RPC frame limit to prevent memory exhaustion attacks.Path Escape Prevention: All project paths are validated against real filesystem paths (
fs.realpathSync) to block symlink redirections and directory traversal attempts (../../../).Forbidden Path Blacklist: Rejects destructive operations targeting system directories (
/,/etc,/usr,/bin,C:\Windows) or credential vaults (~/.ssh,~/.aws,~/.gnupg,~/.kube).Works When Our Services Are Down: Tools run locally and never call our website, API or database, so an outage there does not affect them. Licenses are verified offline. If your agent starts the server with
npx, that step still needs the npm registry unless the package is already cached or installed.No Remote Telemetry: Zero background network requests, zero metric phoning home. All audits, verifications, and tool executions occur strictly on your local machine.
Repository & Governance
Canonical Repository: github.com/illicomedia/skills-mcp-server
Historical Note: Prior to v1.4.7, versions 1.4.0 through 1.4.6 were incubated within the
fcviallet/skillsmonorepo before transitioning to this dedicated organization repositoryillicomedia/skills-mcp-server.
Development & Testing
pnpm install
pnpm run check # lint, build, tests with the 100% coverage gate, packed-tarball smoke testSee CONTRIBUTING.md for the development flow and docs/operations/mcp-publish-process.md for releases.
License & Copyright
Engine & Free Skills: Released under the MIT License.
Pro & Enterprise Skills: Proprietary, subject to the Fredo QA Commercial Skills License (
LICENSEof each skill) and the terms of sale.Copyright (c) 2026 Frédéric Charles Viallet.
Available Tools
9 toolsget_skill_rulesA
Return the SKILL.md of a Fredo QA skill installed in the working directory (skills// or .agents/skills//). This server ships no skill files: if the skill is not installed, the call fails with installation instructions; do not invent rules for it.
| Name | Required | Description | Default |
|---|---|---|---|
| skill_id | Yes | The unique skill ID (e.g. qa-core, dev-flow, qa-security, qa-java) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden, and it discloses genuinely useful behavior: the server ships no skill files, only working-directory installs are readable, and a missing skill produces an error containing installation guidance rather than an empty result. It does not mention read-only safety, permissions, or return size, but for a simple retrieval tool the disclosure is solid.
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?
Two sentences, front-loaded with the action and resource, followed by the failure contract. Every clause carries information and nothing is padded.
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 one-parameter read tool with no output schema, the description covers what is returned (the SKILL.md text), where it comes from, and what happens on failure. The only minor gap is that it does not state the response form (raw markdown vs. structured wrapper), though 'Return the SKILL.md' largely implies 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%, so the baseline would be 3, but the description adds meaning beyond the schema by explaining that skill_id maps to a directory name resolved under two possible install roots, and the 'do not invent' clause clarifies that the ID must correspond to a real installed skill.
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 ('Return the SKILL.md of a Fredo QA skill') and even names the resolution locations (skills/<id>/ or .agents/skills/<id>/), which distinguishes it from list_skills, install_skill and the other siblings 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 clear when-to-use context by scoping the call to already-installed skills and adds a when-not/fallback condition: if the skill is not installed the call fails with installation instructions, so the caller should not fabricate rules. It stops short of explicitly routing the agent to install_skill or list_skills to discover valid IDs, which would have made this a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Retrieve the active package version, protocol specification, and runtime metadata of the Fredo QA MCP Server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. "Retrieve" implies a non-mutating read and the sentence lists the categories of data returned, which is useful, but it says nothing about whether the call is local or remote, whether it requires a license key or auth, or whether results are cached — all plausible concerns given the licensing siblings.
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?
A single front-loaded sentence with no filler, hedging, or repetition. Every clause (version, protocol specification, runtime metadata) carries distinct information about the return content.
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 no output schema and no annotations, the description compensates by enumerating what the response contains, which is the main thing an agent needs. Minor gaps remain around auth/licensing requirements and whether the call has side effects, but for a zero-param metadata read this is close to sufficient.
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 schema leaves nothing to explain and the baseline is 4. The description correctly adds no parameter discussion, avoiding noise.
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 ("Retrieve") and enumerates the concrete resources returned: active package version, protocol specification, and runtime metadata of the Fredo QA MCP Server. This is clearly distinguishable from the sibling tools, which all deal with skills or licensing, though the description never names those siblings to make the contrast explicit.
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?
Usage is only implied: an agent can infer this is the discovery/metadata call to make before other operations, but there is no explicit when-to-use statement, no prerequisites, and no mention of alternatives. For a zero-parameter read tool the inference is easy, but the description does no active work here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_skillA
Install a Fredo QA skill into .agents/skills/<skill_id>/ with SKILL.md and LICENSE, copying SKILL.md from a skill source already present in the project (skills// or .agents/skills//); fails if none exists. Requires user agreement: set confirm: true to write files to disk; when false (default), returns a safe preview without modifying the filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Explicit user confirmation to write files to disk. When false (default), returns a preview of files to be created without modifying the filesystem. | |
| skill_id | Yes | The unique skill ID to install | |
| license_key | No | Optional signed license file (path or JSON content) to use for this session before installing | |
| project_path | No | Target project root directory (defaults to current working directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that files are written to disk, that confirm: true is required, that the default returns a preview with no filesystem changes, and the precise failure mode when no source skill exists. It does not cover overwrite/idempotency behavior for an already-installed skill, nor the role of license_key, which leaves some mutation semantics unexplained.
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?
A single dense sentence pair that front-loads the install action, then the artifact layout, then the confirmation requirement. It is efficient with no filler, though the nested parentheticals make it harder to scan than shorter, separated sentences would.
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 4-parameter mutation tool with no output schema and no annotations, the description covers the key facts an agent needs: destination, source lookup, fail condition, and the preview-vs-write gate. Gaps remain around overwrite behavior on re-install and the license_key parameter, both of which matter for a disk-writing 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 coverage is 100%, so all four parameters already have descriptions, establishing the baseline of 3. The description reinforces confirm's write-gate semantics but adds nothing about license_key (optional signed license path/JSON) or project_path, and the skill_id source-resolution path is only partly explained 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?
The description names a specific verb and resource ("Install a Fredo QA skill") and pins down the exact destination (.agents/skills/<skill_id>/ with SKILL.md and LICENSE), the source of the copied file, and the failure condition. This clearly separates it from siblings like list_skills, get_skill_rules, and sync_workspace_skills, which do not write a new skill directory.
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 concrete when-to-use context: a skill source must already exist in skills/<id>/ or .agents/skills/<id>/, otherwise the call fails, and confirm must be true to write. It stops short of explicitly routing the agent to alternatives such as sync_workspace_skills for bulk syncing or list_skills for discovery, but the preconditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsA
List all Fredo QA Skills available under the current license tier (Free, Pro, Enterprise), with rule summaries and categories.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category filter: core, language, quality, compliance, enterprise |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a meaningful trait: results are scoped by the current license tier (Free, Pro, Enterprise), which an agent would not otherwise know. It does not state that the operation is read-only, note any pagination/result-size behavior, or mention auth/license prerequisites beyond the tier mention.
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?
A single sentence, front-loaded with the action and resource. Every clause (license tier scope, rule summaries, categories) contributes information; nothing is redundant or padded.
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 low-complexity list tool with one optional, fully documented parameter and no output schema, the description covers purpose, scope, and a rough sense of return content. Minor gaps remain around return structure (e.g., ordering, whether full rule text is included) and read-only status, but 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?
Schema description coverage is 100% and the single optional 'category' parameter is fully enumerated in the schema (core, language, quality, compliance, enterprise). The description mentions 'categories' but adds no filtering semantics or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List all Fredo QA Skills') and adds scope (current license tier) plus the shape of the result (rule summaries and categories). This distinguishes it from siblings like get_skill_rules or install_skill, though it never names an alternative 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?
There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. The use case is only implied: browse available skills, presumably before calling install_skill or get_skill_rules. Adequate but leaves the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prune_skillsA
Safely prunes unneeded QA skills from .agents/skills/ by archiving them to .agents/.archive/ based on detected project tech stacks. Non-destructive: files are moved rather than permanently deleted, keeping them fully recoverable while removing noise from the AI agent context. Requires user agreement: set confirm: true to archive skills; when false (default), returns a safe preview listing candidate skills without moving files.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Explicit user confirmation to archive unneeded skill directories to .agents/.archive/. When false (default), returns a preview without moving files. | |
| keep_skills | No | Optional list of skill IDs to keep active even if not auto-detected from project files | |
| project_path | No | Target project root directory (defaults to current working directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden and does well: it states files are moved not deleted, that they remain fully recoverable in .agents/.archive/, and that the default run is a read-only preview. Gaps remain around whether the archive can be restored through any tool, what happens on name collisions, and how 'detected project tech stacks' determines candidates.
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 action and destination, then safety, then the confirmation requirement — a logical order an agent can scan quickly. There is mild redundancy between 'Safely prunes' and 'Non-destructive', 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?
For a mutation tool with zero annotations and no output schema, the description covers the essentials: what is moved where, recoverability, and the dry-run-by-default contract. It does not describe the shape of the preview response or the interaction with keep_skills, which an agent would need to interpret results fully.
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 explains confirm, keep_skills, and project_path, making 3 the baseline. The description reinforces the confirm default-to-preview behavior but never mentions keep_skills, the one parameter whose override semantics (pinning skills not auto-detected) would benefit from narrative explanation.
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 and resource ('prunes ... QA skills from .agents/skills/') plus the exact mechanism ('archiving them to .agents/.archive/'). That distinguishes it immediately from siblings like list_skills, install_skill, and sync_workspace_skills, which read, add, or sync rather than remove.
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 operational context: a preview is returned unless the caller sets confirm: true, so the safe default path is spelled out. It stops short of naming alternatives (e.g. use list_skills to inspect candidates before pruning) or stating when pruning should not be attempted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_checkA
Sub-second preflight check for AI agents to discover repository stack, governance policies, and baseline scaffolding before modifying code. Verifies presence and configuration of agent instructions (AGENTS.md), licensing, secret hygiene (.gitignore), dependency lockfile, and test runner declaration. Requires user agreement: set confirm: true to perform directory traversal and inspect project files; when false (default), returns a preview describing the audit scope and target directory without scanning the filesystem.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Explicit user confirmation to inspect repository and traverse directory tree. When false (default), returns a preview describing the audit scope without scanning the filesystem. | |
| project_path | Yes | Path to the root directory of the project to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the burden and does well: it discloses that traversal only happens on confirm, that the default is a non-scanning preview, that it is 'sub-second', and that a user agreement gate exists. It stops short of stating that nothing is written to disk or how results are reported, which for a filesystem-touching tool is a meaningful omission.
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 what the tool does and what it verifies, then the gating rule. The confirm/default behavior is restated in both prose and schema, a small redundancy, but overall the text is dense and earns its length.
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 read-out tool with no output schema, the description should indicate what a confirmed run returns (a report object? findings list? pass/fail per check?). It only describes the preview mode's output, leaving the actual audit result shape unspecified.
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 documented there, so the description's explanation of confirm:true vs false largely duplicates the schema text. The added phrasing 'requires user agreement' frames confirm as a consent gate rather than a plain flag, which is mild extra value; project_path gets no elaboration 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?
The description names a specific verb and resource ('preflight check ... repository stack, governance policies, and baseline scaffolding') and enumerates exactly what is verified: AGENTS.md, licensing, .gitignore secret hygiene, dependency lockfile, and test runner declaration. Nothing among the siblings (skills, license, version tools) overlaps, so an agent can place it immediately.
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 a clear triggering condition — run it 'before modifying code' — which is real situational guidance rather than a restatement of the name. It lacks an explicit when-not or a named alternative, but the sibling tools are unrelated utility calls, so the practical gap is small.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_license_keyB
Set the signed Fredo QA Skills license file for the active session to unlock Pro or Enterprise skills.
| Name | Required | Description | Default |
|---|---|---|---|
| license_key | Yes | Path to a signed license file (license.json) or its JSON content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It usefully discloses that the key is session-scoped and that the file must be signed, but it does not say what happens on an invalid/expired license (error vs. silent no-op), whether an existing key is replaced, or whether the setting persists beyond the session.
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?
A single front-loaded sentence with no filler; the scope ("active session") and outcome ("unlock Pro or Enterprise skills") are stated efficiently. Slightly dense phrasing but nothing 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?
For a one-parameter tool with no output schema, the description covers purpose and effect adequately. However, it omits failure behavior and confirmation of what a successful call yields, which an agent would need to handle bad licenses correctly.
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 well documented in the schema as a path to license.json or its raw JSON content. The description adds no further meaning about accepted formats or precedence, so the schema baseline of 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 pairs a specific verb ("Set") with a specific resource ("signed ... license file") and states the effect ("unlock Pro or Enterprise skills"). That distinguishes it well from the sibling verify_license, though the distinction is implied by the verb rather than stated 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?
"for the active session" hints at when this applies (session-scoped activation before using Pro/Enterprise skills), but there is no explicit when-to-use versus verify_license guidance and no stated prerequisites such as needing a valid signed file first. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_workspace_skillsA
Auto-detects project stack and provisions matching QA skills and licenses into .agents/skills/. Requires user agreement: set confirm: true to write files; when false (default), returns a dry-run preview.
| Name | Required | Description | Default |
|---|---|---|---|
| skills | No | Optional list of skill IDs to install. If omitted, auto-detects from project stack. | |
| confirm | No | Explicit user confirmation to write files to disk. When false (default), returns a dry-run preview without modifying the filesystem. | |
| license_key | No | Optional signed license file (path or JSON content) to use for this session before syncing | |
| project_path | No | Target project root directory (defaults to current working directory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses the write target (.agents/skills/), the safe dry-run default, and the explicit confirmation requirement before any filesystem mutation, plus that license provisioning is part of the operation. It still omits what happens to already-installed skills (overwrite/skip/merge) and whether license validation must succeed 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?
Two sentences with no waste: the first establishes what the tool does and where it writes, the second front-loads the safety-critical confirmation behavior. Nothing is repeated or padded.
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 mutation tool with no annotations and no output schema, the description covers the most important unknown: that writes are gated by confirm and default to a preview. Remaining gaps (idempotency, existing-skill handling, what the dry-run preview contains) are real but secondary.
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 four parameters are already documented in the input schema. The description restates the confirm/confirm:false semantics rather than adding new meaning about skills, license_key, or project_path, so 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: auto-detects the project stack and provisions matching QA skills and licenses into .agents/skills/. It is clear what the tool produces and where it writes, but it never distinguishes itself from siblings like install_skill or prune_skills, so an agent must infer the difference.
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?
Usage is implied through the auto-detect behavior (omitting skills) and the confirm gate, but there is no explicit statement of when to choose this over install_skill, list_skills, or set_license_key, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_licenseA
Inspect the current Fredo QA license: signature validity, tier, licensee, last covered release date (updates_until), and fallback status.
| Name | Required | Description | Default |
|---|---|---|---|
| license_key | No | Optional signed license file (path or JSON content) to inspect without modifying session state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It usefully discloses the reported facets (including a non-obvious 'fallback status'), which effectively describes the return payload absent an output schema, but it never states explicitly that the call is side-effect free, what happens when no license is installed or the license is invalid/expired, or how errors surface.
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?
A single front-loaded sentence with no filler; the field enumeration is dense but every item conveys real information. Slightly list-like, but nothing 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?
For a simple, zero-required-parameter inspection tool with no output schema, enumerating the reported values covers most of what an agent needs. The remaining gaps are edge-case behavior (no license present, invalid signature) and the omitted-parameter default, which are modest given the tool's simplicity.
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 optional license_key parameter is fully documented there, including the 'without modifying session state' nuance. The description adds no meaning about the parameter and does not clarify the default behavior when it is omitted (i.e. inspecting the active session license).
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 (the current Fredo QA license), and enumerates exactly what facets are reported: signature validity, tier, licensee, updates_until, and fallback status. This clearly separates it from the mutating sibling set_license_key.
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?
Usage is only implied: the word 'Inspect' suggests a read-only check, which the agent can infer as an alternative to set_license_key. There is no explicit statement of when to call this versus quick_check, get_version, or set_license_key, and no prerequisites or exclusions are given.
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.
9 tool updates
v3.0.1- First observed
get_skill_rules - First observed
get_version - First observed
install_skill - First observed
list_skills - First observed
prune_skills - First observed
quick_check - First observed
set_license_key - First observed
sync_workspace_skills - First observed
verify_license
TDQS
Scored across 9 tools
Most tools target a distinct action: list_skills (enumerate), get_skill_rules (read one skill's SKILL.md), install_skill (single install), sync_workspace_skills (bulk auto-provision), prune_skills (archive). The main friction is install_skill vs sync_workspace_skills, and quick_check vs sync_workspace_skills, both of which detect project stack; descriptions differentiate them, but an agent could still hesitate over which provisioning path to pick.
Eight of nine tools follow a clean verb_noun snake_case pattern (list_skills, get_skill_rules, install_skill, set_license_key, verify_license, get_version). The one deviation is quick_check, which is adjective_noun rather than verb-led, a minor inconsistency in an otherwise predictable scheme.
Nine tools is well within the ideal 3-15 range and each earns its place across the three sub-domains (skill inventory/provisioning, licensing, preflight audit, version metadata). No filler or redundant tools inflate the surface.
The skill lifecycle is largely covered: list, read rules, install, bulk sync, and prune (non-destructive removal), plus license set/verify and version info. Minor gaps remain — no explicit uninstall/disable, no skill update or authoring path, and no way to filter skills by tier/category in list_skills — but agents can work around these via prune and list_skills.
Maintenance
Related MCP Connectors
Governance copilot for AI-assisted coding. 72 packs, 532 rules, proof bundles.
Register, deploy, review, and govern internal applications built with coding agents.
One place to build, share, and govern the skills and tools your AI agents use at work.
Connect, monitor, and control AI agents — tasks, approvals, schedules, and governance.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceProvides a quality framework and enforceable conventions for AI coding assistants, ensuring code quality, environment hygiene, and project standards across multiple AI tools.83 npm3-
- AlicenseAqualityBmaintenanceEnables AI agents to manage, search, plan, and execute reusable skills while automatically enforcing always-on coding and reasoning guidelines. It provides workflow orchestration, permission-controlled execution, dynamic skill registration, and feedback-based ranking.914 npm1MIT
- FlicenseBqualityBmaintenanceEnables AI coding assistants to run a machine-verified DESIGN→PLAN→EXECUTE→VERIFY→COMPLETE workflow with human approval gates, state integrity checks, and DAG task scheduling.7-
- AlicenseAqualityBmaintenanceConnects AI assistants to GitHub repositories, pull requests, issues, commits, and code search while enabling repository visibility controls, CI/CD monitoring, sandboxed local filesystem access, and code quality/security analysis.131MIT