Skip to main content
Glama
Fredo QA Skills MCP Server

Fredo QA Skills MCP Server

by illicomedia

Fredo QA Skills — Model Context Protocol (MCP) Server

npm version CI Status Socket Security OpenSSF Scorecard License: MIT Zero Dependencies

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.json declares no dependencies; 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.md or .agents/skills/<id>/SKILL.md. Download a skill from https://www.illicomedia.com/qa-skills/skills/<id> and extract it there. When a skill is missing, get_skill_rules and install_skill fail 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 the SKILL.md of 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: Requires confirm: true to traverse and inspect project files. When confirm: 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's SKILL.md and LICENSE. Requires confirm: true.

  • sync_workspace_skills: Scans project tech stacks and installs all matching skills. Requires confirm: 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. Requires confirm: 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]
  1. Default Safe Preview (confirm: false):
    If an assistant invokes quick_check, install_skill, or sync_workspace_skills without confirm: 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.

  2. Explicit Confirmation (confirm: true):
    Directory traversal or file modifications only execute when confirm: true is explicitly provided after user agreement.

  3. 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.

  4. Security Containment Boundaries:
    Even with confirm: 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

list_skills

🔍 Read-Only

{ category?: string }

Lists all skills accessible under your current plan with tiers, tags, and summary gates.

get_skill_rules

🔍 Read-Only

{ skill_id: string }

Returns complete prompt instructions and QA directives for a skill (e.g. qa-security, qa-accessibility).

quick_check

🔍 Traversal

{ project_path: string, confirm?: boolean }

Preflight audit for AI agents. Evaluates 5 domains across 9 languages. Requires confirm: true to scan directory files; otherwise returns scope preview.

install_skill

✏️ Mutating

{ skill_id: string, project_path?: string, license_key?: string, confirm?: boolean }

Installs a skill into .agents/skills/<skill_id>/. Requires confirm: true to write files; otherwise returns a safe preview.

sync_workspace_skills

✏️ Mutating

{ project_path?: string, skills?: string[], license_key?: string, confirm?: boolean }

Auto-detects project stack and installs matching skills. Requires confirm: true to write files; otherwise returns a dry-run preview.

prune_skills

📦 Archiving

{ project_path?: string, keep_skills?: string[], confirm?: boolean }

Safely archives unneeded skills from .agents/skills/ to .agents/.archive/ based on project stacks. Non-destructive (moves files). Requires confirm: true; otherwise returns safe preview.

verify_license

🔍 In-Memory

{ license_key?: string }

Validates Ed25519 signature, tier (Free, Pro, Enterprise), licensee, expiration, and version retention status.

set_license_key

⚙️ In-Memory

{ license_key: string }

Sets the signed license file (path or JSON content) in memory for the active session without restarting.

get_version

🔍 In-Memory

{}

Returns the active package version (e.g. 1.4.5), protocol specification (2024-11-05), Node runtime, and skills catalog count.


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:

  1. Governance & Guidelines: Detects AGENTS.md, .github/copilot-instructions.md, .cursorrules, and agent policy definitions.

  2. Security & Secrets Hygiene: Verifies .gitignore ignores .env files, detects exposed private keys (id_rsa, *.pem, *.key), and checks for RFC 9116 .well-known/security.txt.

  3. Quality Gates & Exceptions: Verifies quality gate scripts (qa:starter, qa:standard, qa:strict), test runners, and .qa-exceptions.yaml governance.

  4. Supply Chain Integrity: Validates lockfiles (pnpm-lock.yaml, package-lock.json, Cargo.lock, go.sum, poetry.lock), SBOM configurations, and dependency verification.

  5. 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: *.sh scripts, 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:

  1. Step 1: Scope Preview (confirm: false or 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"
    }
  2. Step 2: Traversal Execution (confirm: true): Once user agreement is confirmed, the assistant passes confirm: true to 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_check natively 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, Makefile recipes, 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.sh or scripts/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 triggers quick_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), runs sync_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 (or qa-javascript-typescript) standard gate to this module—zero suppressions—and output the qa-core evidence block."
Prompt (Pro): "Audit this frontend against qa-accessibility (WCAG 2.2 AA) and qa-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 calls get_skill_rules to load the exact profile thresholds, toolchain flags, exception rules, and mandatory qa-core evidence 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 invokes prune_skills with confirm: 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 calls verify_license to 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 link

Option 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 stdio opens 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+C to 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.3
  • latest is the default and the recommended stable version.

  • next is a release being tried before it reaches latest. 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.json and delete the "fredo-qa" entry from mcpServers.

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • Linux: ~/.config/Claude/claude_desktop_config.json

  • Cursor IDE: Delete "fredo-qa" from .cursor/mcp.json or remove it in Cursor Settings > Features > MCP.

  • Google Antigravity: Delete "fredo-qa" from ~/.gemini/config/mcp_config.json or disable it in the Antigravity MCP settings.

  • VS Code / Windsurf: Delete "fredo-qa" from .vscode/mcp.json or 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 --force
  • If installed globally (Option 1):

    npm uninstall -g @illicomedia/skills-mcp-server
  • If 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-qa

Step 4: Check for QA Files Your AI Agent May Have Created

WARNING

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.sh in quick_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-core skill 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/qa

Verification

  1. Restart your editor or MCP client.

  2. Confirm the fredo-qa tools are no longer listed in the client's tools menu.

  3. 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:

  1. User config path: ~/.config/fredo-qa/license.json (recommended: applies to every project)

  2. Project root: .qa-license.json (ensure this is added to .gitignore)

  3. Dynamic session key: Set dynamically via the set_license_key tool.

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 imports node:fs). Reads serve workspace preflight audits (quick_check), local SKILL.md documents 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 with set_license_key; the home directory comes from Node.js os.homedir(). A test fails if the built package reads any environment variable.

  • Links (URL strings): four illicomedia.com links 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 stdio stream enforces a strict 1 MB maximum 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/skills monorepo before transitioning to this dedicated organization repository illicomedia/skills-mcp-server.


Development & Testing

pnpm install
pnpm run check   # lint, build, tests with the 100% coverage gate, packed-tarball smoke test

See CONTRIBUTING.md for the development flow and docs/operations/mcp-publish-process.md for releases.


  • Engine & Free Skills: Released under the MIT License.

  • Pro & Enterprise Skills: Proprietary, subject to the Fredo QA Commercial Skills License (LICENSE of each skill) and the terms of sale.

  • Copyright (c) 2026 Frédéric Charles Viallet.

Available Tools

9 tools
get_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.

NameRequiredDescriptionDefault
skill_idYesThe unique skill ID (e.g. qa-core, dev-flow, qa-security, qa-java)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description states a specific verb and resource ('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.

Usage Guidelines4/5

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

It gives clear when-to-use context 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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
confirmNoExplicit user confirmation to write files to disk. When false (default), returns a preview of files to be created without modifying the filesystem.
skill_idYesThe unique skill ID to install
license_keyNoOptional signed license file (path or JSON content) to use for this session before installing
project_pathNoTarget project root directory (defaults to current working directory)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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

Schema coverage is 100%, so all four parameters 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
categoryNoOptional category filter: core, language, quality, compliance, enterprise

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
confirmNoExplicit user confirmation to archive unneeded skill directories to .agents/.archive/. When false (default), returns a preview without moving files.
keep_skillsNoOptional list of skill IDs to keep active even if not auto-detected from project files
project_pathNoTarget project root directory (defaults to current working directory)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
confirmNoExplicit user confirmation to inspect repository and traverse directory tree. When false (default), returns a preview describing the audit scope without scanning the filesystem.
project_pathYesPath to the root directory of the project to check

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema coverage is 100% and both parameters are 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
license_keyYesPath to a signed license file (license.json) or its JSON content

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
skillsNoOptional list of skill IDs to install. If omitted, auto-detects from project stack.
confirmNoExplicit user confirmation to write files to disk. When false (default), returns a dry-run preview without modifying the filesystem.
license_keyNoOptional signed license file (path or JSON content) to use for this session before syncing
project_pathNoTarget project root directory (defaults to current working directory)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
license_keyNoOptional signed license file (path or JSON content) to inspect without modifying session state

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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

States a specific verb (Inspect) and resource (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.

Usage Guidelines3/5

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.

  1. 9 tool updatesv3.0.1
    • First observedget_skill_rules
    • First observedget_version
    • First observedinstall_skill
    • First observedlist_skills
    • First observedprune_skills
    • First observedquick_check
    • First observedset_license_key
    • First observedsync_workspace_skills
    • First observedverify_license

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides a quality framework and enforceable conventions for AI coding assistants, ensuring code quality, environment hygiene, and project standards across multiple AI tools.
    83 npm
    3
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    9
    14 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connects 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.
    13
    1
    MIT