Skip to main content
Glama

Lab Registry Server

MCP server exposing the Gen-e2 Lab Registry — skills, agents, commands, and hooks — to any MCP-compatible client (Claude Code, GitHub Copilot agent mode). Designed for the Innovation Lab at Palo IT Singapore.

Canonical repository: https://github.com/Palo-IT-GitHub-Demos/lab-registry-mcp

This repository contains only the MCP server. It does not embed the gen-e2-marketplace project, which remains the registry source of truth. In normal usage, the server reads that source directly from GitHub.


What it does

This MCP server connects to the gen-e2 plugins repository and gives agents direct access to the library from VS Code.

Who it's for

It is mainly intended for Labs developers, especially those who are new to gen-e2.

Why it exists

It makes the gen-e2 library easier to discover, reuse, and integrate across projects.

Main use cases

  • Explore the gen-e2 artefact library in more depth

  • Find a specific plugin or artefact by name and integrate it easily into the current project

  • Get suggestions for which gen-e2 artefacts are most relevant to the current project

  • Stay informed about new gen-e2 plugins and updates to existing ones


Related MCP server: Taproom

How it works

gen-e2-marketplace/          ← source of truth (read-only, never written)
  .claude-plugin/
    marketplace.json         ← list of all 13 plugins with semver versions
  plugins/
    android/
      .claude-plugin/plugin.json
      CHANGELOG.md
      skills/android-architecture/SKILL.md   ← YAML frontmatter + markdown body
      agents/android-architect.agent.md
      commands/add-screen.md
      hooks.json
    research-suite/ ...
    delivery/ ...
    ...

lab-registry-mcp/            ← this repo
  src/lab_registry/
    registry.py              ← reads marketplace on first call, caches result
    models.py                ← RegistryEntry, Plugin (Pydantic)
    server.py                ← FastMCP, 15 tools registered via @mcp.tool()
    tools/
      search.py              ← list_entries, search_entries, suggest_entries, suggest_plugins
      fetch.py               ← get_entry, get_plugin, get_entry_by_id, list_plugins, get_changelog
      compliance.py          ← check_compliance, check_compliance_plugin
      stats.py               ← get_marketplace_stats
      validate.py            ← validate_entry

Startup sequence:

  1. MCP client (Claude Code or Copilot) spawns the server process via stdio

  2. Server responds to initialize — no files read yet

  3. On first tool call, load_registry() reads from either REGISTRY_GITHUB_REPO or REGISTRY_PATH, parses marketplace metadata, indexes plugin entries, and extracts updated_at from CHANGELOG.md when available

  4. Result is cached in memory (lru_cache) for the life of the process

  5. All subsequent tool calls use the in-memory index — no disk access except get_entry (reads file content on demand)

Versioning model: version lives at the plugin level (from plugin.json), not per individual artifact. All 33 android artefacts share plugin_version: "0.1.0". If the android plugin bumps to 0.2.0, all its artefacts are considered outdated.


Install

# Install directly from GitHub
pip install "git+https://github.com/Palo-IT-GitHub-Demos/lab-registry-mcp"

# Or pin an explicit tag
pip install "git+https://github.com/Palo-IT-GitHub-Demos/lab-registry-mcp@v0.2.0"

For local development:

git clone https://github.com/Palo-IT-GitHub-Demos/lab-registry-mcp
cd lab-registry-mcp

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Configuration

There are 3 practical ways to configure the source registry.

1) GitHub source from GLOBAL-PALO-IT/gen-e2-marketplace (recommended when you have access)

Use this when you can obtain a GitHub token with access to the official marketplace repository.

export REGISTRY_GITHUB_REPO=GLOBAL-PALO-IT/gen-e2-marketplace
# optional but usually needed for private repo access
export REGISTRY_GITHUB_TOKEN=ghp_...

2) GitHub source from your own fork (temporary workaround)

Use this when access to the official repo token is difficult, but you can fork the marketplace into a personal or easier-to-access repository.

export REGISTRY_GITHUB_REPO=<your-user-or-org>/gen-e2-marketplace
export REGISTRY_GITHUB_TOKEN=ghp_...

3) Local source from a clone of gen-e2-marketplace

Use this for offline development, local debugging, or local integration/E2E tests.

export REGISTRY_PATH=/abs/path/to/gen-e2-marketplace
# or copy .env.example → .env and set it there

Client setup

Both Claude Code and Copilot use the same stdio server; only the client registration format changes.

Claude Code CLI — user-level

claude mcp add lab-registry --scope user \
  -e REGISTRY_GITHUB_REPO=GLOBAL-PALO-IT/gen-e2-marketplace \
  -e REGISTRY_GITHUB_TOKEN=ghp_... \
  -- /abs/path/to/.venv/bin/mcp run /abs/path/to/src/lab_registry/server.py

If you use a fork or a local clone, replace the env vars accordingly.

GitHub Copilot agent mode — ~/Library/Application Support/Code/User/mcp.json

{
  "servers": {
    "lab-registry": {
      "type": "stdio",
      "command": "/abs/path/to/.venv/bin/mcp",
      "args": ["run", "/abs/path/to/src/lab_registry/server.py"],
      "env": {
        "REGISTRY_GITHUB_REPO": "GLOBAL-PALO-IT/gen-e2-marketplace",
        "REGISTRY_GITHUB_TOKEN": "ghp_..."
      }
    }
  }
}

For local mode, replace the env block with:

{
  "REGISTRY_PATH": "/abs/path/to/gen-e2-marketplace"
}

Run

# Visual debug UI (MCP Inspector at http://localhost:6274)
mcp dev src/lab_registry/server.py

# Stdio (for client config)
REGISTRY_GITHUB_REPO=owner/repo REGISTRY_GITHUB_TOKEN=ghp_... mcp run src/lab_registry/server.py

# Unit + integration + E2E tests
REGISTRY_PATH=../gen-e2-marketplace pytest tests/ -v

The 15 tools

Response shapes: list_entries, search_entries, and suggest_entries use a lean serialization — only populated fields are returned (no null or empty-list noise). get_entry always returns the full entry shape.

Tool selection guide

Goal

Use

Discover which plugins fit a project type

suggest_plugins

Exact keyword or partial name (e.g. "tdd", "android")

search_entries

Natural language task description (e.g. "I need to review architecture")

suggest_entries

Browse by type or plugin

list_entries with filters

Install a full plugin (all artefacts + paths)

get_plugin_install_package

Read one specific artefact

get_entry or get_entry_by_id

Check installed plugins are up to date (one plugin)

check_compliance_plugin

Check installed plugins are up to date (multiple)

discover plugin.jsoncheck_compliance

See what changed in a plugin

get_changelog

list_entries

List all registry entries. Returns a flat list of RegistryEntry objects.

Parameter

Type

Description

type

string?

Filter: "skill", "agent", "command", or "hook"

plugin

string?

Filter by plugin name (e.g. "android")

tags

string[]?

Filter by keywords — OR match (any tag must match)

// Example: all skills in the android plugin
{ "type": "skill", "plugin": "android" }

search_entries

Keyword search over name, description, and plugin name. Name matches are ranked above description matches.

Parameter

Type

Description

query

string

Search term

type

string?

Optional type filter

{ "query": "architecture", "type": "skill" }

suggest_entries

Task-oriented suggestion tool. Splits the task into individual terms and scores entries by how many terms appear in their name, description, plugin name, and tags.

Use for natural language queries at the artefact level. For plugin-level discovery ("which plugins fit my project?"), use suggest_plugins instead. For exact keyword matching, use search_entries.

Parameter

Type

Description

task

string

Natural language description of what you need

type

string?

Optional type filter

limit

integer?

Maximum number of results (default 5)

{ "task": "I need to write tests for a Go service", "type": "skill", "limit": 5 }

suggest_plugins

Plugin-level discovery. Scores plugins by how many task words appear in their name (3× weight), description, and tags.

Use this before suggest_entries when the user describes their project type and wants to know which plugins are most relevant — rather than listing all 15 plugins flat.

Parameter

Type

Description

task

string

Natural language description of the project or need

limit

integer?

Maximum number of results (default 5)

{ "task": "I'm building an Android app", "limit": 3 }

Example response: android, delivery, architecture-reviewer — each with score and matched_terms.


get_entry

Fetch the full content of a specific entry. Returns structured metadata and the raw markdown body.

Parameter

Type

Description

plugin

string

Plugin name

type

string

Artifact type

name

string

Artifact name

{ "plugin": "android", "type": "skill", "name": "android-architecture" }

Response shape:

{
  "entry":          { "id": "android/skill/android-architecture", "plugin_version": "0.1.0", ... },
  "metadata":       { "name": "android-architecture", "description": "..." },
  "content_raw":    "# Android architecture (project delta)\n\n...",
  "content_full":   "---\nname: android-architecture\n---\n# Android architecture...\n",
  "install_targets": {
    "claude_local":    ".claude/skills/android-architecture/SKILL.md",
    "copilot":         ".github/skills/android-architecture/SKILL.md",
    "plugin_tracking": ".claude/plugins/android/plugin.json"
  }
}

content_full is the verbatim source file (frontmatter + body) — write it directly to install_targets.claude_local or install_targets.copilot without any reconstruction.


get_entry_by_id

Fetch one entry directly from its canonical ID. Returns the same shape as get_entry: entry, metadata, content_raw, content_full, and install_targets.

Parameter

Type

Description

id

string

Entry ID in plugin/type/name format

{ "id": "android/skill/android-architecture" }

get_plugin

All entries for one plugin, plus its manifest.

Parameter

Type

Description

plugin

string

Plugin name

{ "plugin": "research-suite" }

Response: { "manifest": { "version": "1.0.1", ... }, "entries": [...] }


list_plugins

List all indexed plugins with version and per-type entry counts.

Response includes plugin-level summary fields such as version, updated_at, and counts for skills, agents, commands, and hooks.


get_changelog

Return the raw CHANGELOG.md content for a plugin.

Parameter

Type

Description

plugin

string

Plugin name

{ "plugin": "delivery" }

get_marketplace_stats

Return marketplace-level statistics: totals, counts by type, counts by plugin, and latest update information.

Includes last_updated (most recent date across all entries) and last_updated_plugin (name of the plugin that was updated most recently).

Useful for dashboards, summaries, and quick health checks.


check_compliance

Check whether locally installed gen-e2 plugin artefacts are up to date with the registry.

For a single plugin, use check_compliance_plugin instead — it requires only the plugin name and local version, without listing artefacts manually.

Recommended workflow for multiple plugins: discover local plugin.json files, read the version field from each, build the entries list, then call this tool.

Each item in entries must have name, type, plugin, and local_version.

{
  "entries": [
    { "name": "research",   "type": "skill", "plugin": "research-suite", "local_version": "0.8.0" },
    { "name": "coi-verify", "type": "skill", "plugin": "research-suite", "local_version": "0.8.0" }
  ]
}

Response:

{
  "outdated": [{ "name": "research", "plugin": "research-suite", "local_version": "0.8.0", "registry_version": "1.0.1" }],
  "unknown":  [],
  "up_to_date_count": 0
}

outdated = version mismatch. unknown = not found in registry.


check_compliance_plugin

Shortcut: check all artefacts of a plugin against a single local version in one call.

Equivalent to calling get_plugin to list artefacts, then check_compliance with each one. Use this when you have a plugin.json with one version field — it removes the need to enumerate artefacts manually.

Parameter

Type

Description

plugin

string

Plugin name

local_version

string

Version from the local plugin.json

{ "plugin": "research-suite", "local_version": "0.8.0" }

Returns the same shape as check_compliance: outdated, unknown, up_to_date_count.

Validate a skill, agent, or command markdown file structure against the expected schema.

Typical output includes:

  • valid

  • errors

  • warnings

  • parsed frontmatter when available

Useful before contributing a new artefact to the marketplace.


get_plugin_install_package

Return a complete install package for a plugin — one call, everything needed to install.

Parameter

Type

Description

plugin

string

Plugin name

{ "plugin": "implementation-plan" }

Response shape:

{
  "plugin": { "name": "implementation-plan", "version": "0.1.0", ... },
  "files": [
    {
      "id": "implementation-plan/skill/create-implementation-plan",
      "type": "skill",
      "name": "create-implementation-plan",
      "content_full": "---\nname: create-implementation-plan\n---\n...",
      "install_targets": {
        "claude_local":    ".claude/skills/create-implementation-plan/SKILL.md",
        "copilot":         ".github/skills/create-implementation-plan/SKILL.md",
        "plugin_tracking": ".claude/plugins/implementation-plan/plugin.json"
      }
    }
  ],
  "plugin_tracking": {
    "path":    ".claude/plugins/implementation-plan/plugin.json",
    "content": "{\"name\": \"implementation-plan\", \"version\": \"0.1.0\", ...}"
  }
}

Prefer this over multiple get_entry calls when installing a full plugin. Each file in files has content_full (write-ready) and install_targets (exact paths per client).


reload_registry

Force reload the in-memory cache from its source (GitHub or local). Use after a marketplace update to get fresh data without restarting the server.

Response: { "added": [...], "removed": [...], "modified": [...], "total": N }


Usage examples

These are natural-language prompts validated against the live registry.

1) Discover what exists

What gen-e2 plugins are available and which was updated most recently?

Typical tools used: get_marketplace_stats (returns last_updated_plugin) + list_plugins


2) Find by type

What gen-e2 agents are available in the registry?

Typical tools used: list_entries with type="agent"


Search the gen-e2 registry for skills related to architecture review.

Typical tools used: suggest_entries with a task description


4) Get documentation and install files

Get the full documentation and install files for the gen-e2 delivery plugin.

Typical tools used: get_plugin_install_package — returns all artefacts with content_full + install_targets in one call


5) Install a plugin into the current project

Install the gen-e2 implementation-plan plugin into my project for both Claude Code and GitHub Copilot.

Typical tools used: get_plugin_install_package → write each file.content_full to file.install_targets.claude_local and file.install_targets.copilot


6) Check for outdated plugins

Check if my locally installed gen-e2 plugins are up to date with the registry.

Typical tools used: discover .claude/plugins/*/plugin.jsoncheck_complianceget_changelog for outdated entries


7) Read one entry

Get the full content of android/skill/android-architecture

Typical tools used: get_entry_by_id


8) Validate a new contribution

Validate this new skill markdown file against the gen-e2 schema

Typical tools used: validate_entry


9) Refresh cache after marketplace updates

Reload the gen-e2 registry and tell me what changed

Typical tools used: reload_registry


Registry coverage

Current state of gen-e2-marketplace as indexed:

Plugin

Version

Skills

Agents

Commands

Hooks

android

0.1.0

14

9

9

1

architecture-reviewer

0.1.0

4

1

0

0

delivery

0.2.3

5

1

0

0

figma-design-to-code

0.1.0

1

0

0

0

fortran77-explainer

0.1.0

0

1

0

0

go-tdd-orchestrator

0.1.0

2

3

0

0

html-planner-and-presentation

0.1.0

3

0

0

0

html-presentation

0.1.0

1

0

0

0

implementation-plan

0.1.0

1

0

0

0

kotlin-and-kotlin-multiplatform

0.1.0

4

0

0

0

migration-implementation-plan

0.1.0

1

0

0

0

research-suite

1.0.1

2

0

0

0

swift5-development-test-writer

0.1.0

2

0

0

0

Total

40

15

9

1

65 artefacts indexed across 13 plugins when reading from GLOBAL-PALO-IT/gen-e2-marketplace.

dev-workflow exists in a local clone of the marketplace but is not published to the shared GitHub repository — it is excluded from the counts above. updated_at is null for plugins without a CHANGELOG.md.


Tests

tests/
  conftest.py              # session fixture: mock registry with 1 plugin / 4 artefacts
  test_registry.py         # unit: indexer, parsers, cache (25 tests)
  test_tools_search.py     # unit: list_entries, search_entries (11 tests)
  test_tools_fetch.py      # unit: get_entry, get_plugin (8 tests)
  test_tools_compliance.py # unit: check_compliance (6 tests)
  test_tools_reload.py     # unit: reload_registry (4 tests)
  test_tools_new.py        # unit: 7 new tools — list_plugins, get_entry_by_id,
                           #       get_changelog, get_marketplace_stats,
                           #       suggest_entries, validate_entry,
                           #       get_plugin_install_package (38 tests)
  test_contract.py         # contract: response shapes for all tools (40 tests)
  test_registry_github.py  # GitHub source mode (mocked HTTP, 16 tests)
  test_integration.py      # real marketplace: IDs, content, handlers (15 tests)
  test_e2e.py              # full MCP subprocess — all 15 tools (20 tests)

187 tests total, 0 failures. E2E and integration tests are skipped if REGISTRY_PATH is not set. GitHub tests use fully mocked HTTP — no network access required.


Known limitations

  • No per-artifact versioning — version is at plugin level; a plugin bump marks all its artefacts as outdated even if only one changed

  • No deprecated detection — no deprecated flag in the source format

  • updated_at is best-effort — parsed from CHANGELOG.md; null if absent

  • Cache on demand — use reload_registry tool to refresh without restarting the server

  • Hooks indexed one entry per plugin — not per event type

Available Tools

15 tools
check_complianceA

Check whether locally installed gen-e2 plugin artefacts are up to date with the registry.

Use this whenever the user asks to verify, check, or audit their installed gen-e2 plugins. Workflow: discover local plugin.json files (e.g. .claude/plugins/*/plugin.json), read the version field from each, then call this tool — do NOT compare versions manually.

Each item in entries must have:

  • name: artifact name (e.g. "research", "commit-push-pr")

  • type: "skill", "agent", "command", or "hook"

  • plugin: plugin name (e.g. "research-suite", "delivery")

  • local_version: version read from the local plugin.json (e.g. "0.8.0")

Returns:

  • outdated: entries where local_version != current registry version (includes registry_version)

  • unknown: entries not found in the registry

  • up_to_date_count: number of entries that match the registry

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It explains the core workflow (discover local files, read versions, compare) and the return structure (outdated, unknown, up_to_date_count). However, it does not mention side effects (likely none), authentication needs, or error handling. The description is adequate but not exhaustive.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, then provides usage guidance, workflow, parameter details, and return structure. It is well-structured and each sentence adds value. Slightly verbose but not wasteful.

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?

Given the tool's complexity, the output schema is present (context signals indicate true), and the description explains return values in detail. It covers the tool's behavior adequately. Minor omissions like empty input handling or error conditions are acceptable for a read-only compliance check.

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 input schema has one parameter (entries) with 0% description coverage. The description compensates by detailing the required fields for each entry (name, type, plugin, local_version) and providing examples. This adds significant meaning beyond the schema, which only specifies an array of objects.

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 clearly states the tool checks locally installed gen-e2 plugin artifacts against the registry for updates. It uses specific verbs ('Check') and resources ('gen-e2 plugin artefacts'), and the purpose is distinct from sibling tools which are for retrieval or validation.

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?

The description explicitly tells when to use this tool ('whenever the user asks to verify, check, or audit'), and provides a workflow including the instruction to not compare versions manually. It does not mention when not to use it or list alternatives, but the guidance is clear and helpful.

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

check_compliance_pluginA

Check all artefacts of a gen-e2 plugin against a single local version.

Use this when you have a plugin.json with one version field and want to verify the whole plugin in one call, instead of listing artefacts manually and calling check_compliance with each one.

Typical workflow:

  1. Read .claude/plugins//plugin.json → get local version

  2. Call check_compliance_plugin(plugin=, local_version=)

Returns the same shape as check_compliance:

  • outdated: artefacts where local_version != registry version (includes registry_version)

  • unknown: artefacts not found in the registry

  • up_to_date_count: number of matching artefacts

ParametersJSON Schema
NameRequiredDescriptionDefault
pluginYes
local_versionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations are absent, so the description carries full burden. It describes the return shape (same as check_compliance with outdated, unknown, up_to_date_count), implying read-only behavior, but does not explicitly state safety, authorization needs, rate limits, or side effects. The description is adequate but lacks explicit behavioral guarantees.

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?

The description is compact with three concise paragraphs: a clear first line, a usage guideline paragraph with workflow, and a return shape paragraph. No fluff, every sentence adds value, and it is well-structured for quick reading.

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?

Given the presence of an output schema (which explains return values), the description covers purpose, usage, differentiation, and return shape. It lacks explicit mention of error cases or prerequisites (e.g., plugin must exist in registry), but overall it is sufficiently complete for effective tool selection and invocation.

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

Parameters3/5

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

Schema has 0% description coverage, so the description must compensate. It mentions 'local version' and 'plugin.json with one version field' in the workflow, linking 'plugin' to a plugin name and 'local_version' to a version string for comparison. However, it does not detail format constraints (e.g., semver) or validation rules, providing only partial semantic enrichment.

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 clearly states 'Check all artefacts of a gen-e2 plugin against a single local version', specifying the verb 'check', the resource 'artefacts of a plugin', and distinguishes from sibling 'check_compliance' by noting it performs batch verification instead of manual per-artefact calls.

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

Usage Guidelines5/5

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

Explicitly says 'Use this when you have a plugin.json with one version field and want to verify the whole plugin in one call, instead of listing artefacts manually and calling check_compliance with each one.' Provides a typical workflow with steps, giving clear context for when and how to use this tool over alternatives.

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

get_changelogA

Get the full CHANGELOG.md content for a plugin.

Useful after check_compliance signals an outdated entry — shows what changed between versions without leaving the MCP context.

Returns:

  • plugin: plugin name

  • version: current version

  • changelog_raw: full CHANGELOG.md text (null if absent)

ParametersJSON Schema
NameRequiredDescriptionDefault
pluginYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It describes the return values (plugin, version, changelog_raw with null case), offering good insight into behavior. No side effects noted, but as a read operation this is acceptable.

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?

Description is concise, front-loaded with the main purpose, then usage hint, then return fields. No unnecessary words, well structured.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, read operation), the description covers the purpose, usage context, and return structure. With an output schema present, it provides sufficient completeness.

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

Parameters3/5

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

The only parameter 'plugin' is a string; the description does not add meaning beyond the schema property name. Schema coverage is 0%, but the parameter is self-explanatory. Score reflects adequate but not enhanced sematics.

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?

Clearly states 'Get the full CHANGELOG.md content for a plugin', providing a specific verb and resource. While it doesn't explicitly distinguish from siblings, the mention of being useful after check_compliance hints at differentiation.

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?

Provides a concrete usage scenario: 'Useful after check_compliance signals an outdated entry.' It implies when to use but lacks explicit exclusions or alternative tools.

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

get_entryA

Get a specific registry entry with its full content.

Use this to read a single artefact's documentation or to get its install files. To get all artefacts of a plugin at once, use get_plugin_install_package instead.

Returns:

  • entry: structured RegistryEntry fields

  • metadata: parsed YAML frontmatter from the source file

  • content_raw: markdown body below the frontmatter (the actual instructions)

  • content_full: verbatim file content (frontmatter + body), write-ready

  • install_targets: exact destination paths per client (claude_local, copilot, plugin_tracking)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
pluginYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully details the return structure (entry, metadata, content_raw, content_full, install_targets), disclosing exactly what the tool outputs. It implies a non-destructive read operation without hidden side effects.

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?

The description is efficient: two sentences for purpose/usage and a bullet list for outputs. No redundant information, every part adds value.

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?

While the output fields are well described, the description lacks parameter explanations. Given the tool has a moderate complexity (3 required params) and no schema descriptions, the description is incomplete without parameter semantics.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the three required parameters ('plugin', 'type', 'name'). Despite having output details, the parameter semantics are absent, requiring the agent to infer their meaning from context.

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 clearly states it retrieves a specific registry entry with full content, using the verb 'get' on the resource 'registry entry'. It distinguishes from the sibling tool 'get_plugin_install_package' by noting the latter retrieves all artefacts at once.

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

Usage Guidelines5/5

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

Explicitly states when to use ('to read a single artefact's documentation or to get its install files') and when not to, providing the alternative tool name 'get_plugin_install_package' for bulk retrieval.

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

get_entry_by_idA

Get a registry entry by its full ID (plugin/type/name).

Shortcut for get_entry when you already have the entry ID from list_entries. Returns same shape as get_entry: {entry, metadata, content_raw}.

Example: id="android/skill/android-architecture"

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It mentions return shape and gives an example, but doesn't explicitly state read-only nature, error cases, or authorization. Adequate but could be more thorough.

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

Conciseness4/5

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

Four sentences, each serving a purpose: description, usage guidance, return shape, example. No redundant text. Efficient and well-structured.

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?

Given simplicity (one parameter, output schema exists), description covers purpose, usage, return shape, and example. Doesn't mention error handling or performance, but sufficient for the tool's scope.

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

Parameters5/5

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

The only parameter 'id' has no description in the input schema (0% coverage). The description compensates fully by explaining the format ('plugin/type/name') and providing an example, making it easy for an agent to construct valid input.

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 clearly states the tool retrieves a registry entry by its full ID, distinguishing it from get_entry by noting it's a shortcut when you already have the ID from list_entries. The verb 'get' and resource 'entry' are specific.

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?

Explicitly says 'Shortcut for get_entry when you already have the entry ID from list_entries,' providing clear context on when to use this tool over alternatives. Does not state when not to use, but implication is clear.

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

get_marketplace_statsB

Get a dashboard overview of the entire registry.

Returns:

  • total_entries, total_plugins

  • by_type: entry counts per artifact type

  • by_plugin: per-plugin breakdown with version and counts

  • last_updated: most recent CHANGELOG date across all plugins

  • plugins_without_changelog: plugins missing a CHANGELOG.md

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description fails to disclose behavioral traits such as read-only status, authentication requirements, or rate limits. It only enumerates return fields, leaving the agent uninformed about side effects or constraints.

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

Conciseness4/5

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

The description is reasonably concise, with a clear purpose sentence followed by a bulleted list of return fields. It front-loads the key verb and resource. Minor improvement could be made by grouping related output fields.

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?

Given the tool has an output schema, the description explains return values adequately. However, it lacks usage context (when to call) and does not mention that results reflect the entire registry, which is a significant omission.

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

Parameters4/5

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

The input schema has zero parameters, so no additional meaning is required. The description implicitly conveys that no filters are needed, which is adequate for a parameterless tool.

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 clearly states the verb 'Get' and resource 'dashboard overview of the entire registry'. This distinguishes it from sibling tools like get_entry and list_entries, which focus on specific entries or lists.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like list_entries or get_plugin. It only lists return fields without specifying context (e.g., 'Use for high-level registry statistics').

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

get_pluginC

Get all registry entries for a plugin, plus its manifest.

Returns:

  • manifest: Plugin metadata (name, version, description, tags)

  • entries: list of all RegistryEntry objects in the plugin

ParametersJSON Schema
NameRequiredDescriptionDefault
pluginYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

The description explains the return structure (manifest plus list of entries), which provides behavioral insight beyond the input schema. However, with no annotations, it omits details like auth requirements, rate limits, or potential side effects, which are moderate gaps.

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?

The description is very concise (two lines for purpose, then bullet points for output). Every sentence adds value, and the structure is easy to parse.

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?

Given the tool has only one parameter and an output schema, the description covers the return structure but misses parameter semantics and usage context. It is adequate but not thorough.

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

Parameters1/5

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

With 0% schema description coverage, the description fails to explain the 'plugin' parameter at all. It does not specify whether this is a name, ID, or slug, leaving the agent guessing.

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 clearly states the tool retrieves 'all registry entries for a plugin plus its manifest.' The verb 'get' and noun 'plugin' are specific, but it does not differentiate from sibling tools like 'get_entry' or 'list_entries'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'get_entry', 'get_entry_by_id', or 'list_plugins'. The description lacks any situational context or exclusion criteria.

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

get_plugin_install_packageA

Get full documentation AND install-ready files for an entire plugin in one call.

Use this whenever the user wants to:

  • install a plugin into their project

  • get the documentation and install files for a plugin

  • know where to place a plugin's artefacts in their project

Returns all artefacts with:

  • content_full: verbatim file content (frontmatter + body), write-ready — use this to write the file directly without any reconstruction

  • install_targets: exact destination paths per client: claude_local → .claude/skills|agents|commands/{name}/... copilot → .github/skills|agents|prompts/{name}/... plugin_tracking → .claude/plugins/{plugin}/plugin.json

  • plugin_tracking: the plugin.json content to write for compliance tracking

Prefer this over multiple get_entry calls when working with a full plugin.

ParametersJSON Schema
NameRequiredDescriptionDefault
pluginYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It describes return fields (content_full, install_targets, plugin_tracking) and their usage details. Does not cover auth or side effects, but for a read-like tool the output description is thorough.

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

Conciseness4/5

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

The description is well-structured with bullet points and front-loaded purpose. It is fairly long but each sentence adds value. Could be slightly tighter but overall efficient for the information conveyed.

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?

Given one parameter, no annotations, and presence of output schema, the description provides sufficient context: what the tool returns and how to interpret it. It lacks error handling or prerequisites, but is largely complete for its simplicity.

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

Parameters2/5

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

Schema coverage is 0% for the single parameter 'plugin'. The description does not elaborate on its format or constraints beyond the tool context. It relies on the parameter name and tool purpose to convey meaning.

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 explicitly states the tool's purpose: 'Get full documentation AND install-ready files for an entire plugin in one call.' It distinguishes from siblings like get_entry by noting this is for full plugins vs individual entries.

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

Usage Guidelines5/5

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

Provides clear when-to-use scenarios: 'install a plugin... get the documentation and install files... know where to place artefacts.' Also explicitly suggests preferring this over multiple get_entry calls, offering an alternative.

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

list_entriesA

List all registry entries.

Filter by:

  • type: "skill", "agent", "command", or "hook"

  • plugin: plugin name (e.g. "android", "delivery", "research-suite")

  • tags: list of keywords (OR match — any tag must match)

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
typeNo
pluginNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses tags use OR match, but lacks mention of pagination, limits, or default behavior when no filters applied. Without annotations, more behavioral details would be beneficial.

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?

Short and front-loaded: the main action in the first sentence, followed by a clean list of filter options. Each sentence serves a purpose with no wasted words.

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?

The tool has an output schema (not shown), so return values are not needed. The description covers filters and tag logic, but pagination info is missing. Overall, fairly complete for a listing tool with 3 optional params.

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 0%, yet the description adds meaning by listing possible values for type (skill, agent, command, hook), examples for plugin (android, delivery, research-suite), and clarifying tag matching logic. This compensates well for the schema gap.

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 clearly states 'List all registry entries' with specific filter options (type, plugin, tags), distinguishing it from siblings like list_plugins (only plugins) and search_entries (likely more advanced).

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

Usage Guidelines2/5

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

No explicit guidance on when to use list_entries versus alternatives such as search_entries, get_entry, or list_plugins. The description only explains how to filter but not when to choose this tool.

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

list_pluginsA

List all plugins with version, description, and entry counts per type.

Returns one entry per plugin sorted alphabetically, with:

  • name, version, description, tags, author

  • entry_counts: {skill, agent, command, hook, total}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description discloses the return structure (sorted, alphabetical, fields including entry_counts). It lacks mention of performance or state implications, but for a read-only list, this is adequate.

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 concise sentences front-loading the purpose and listing output fields. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Even with an output schema, the description fully covers returned data, sorting, and entry_counts structure. No gaps given zero parameters and simple semantics.

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?

No parameters (schema coverage 100%), baseline 4. The description adds value by detailing output fields and nested structure, compensating for lack of parameters.

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 clearly states the tool lists all plugins with version, description, and entry counts per type. It specifies sorted order and explicit fields, distinguishing it from siblings like list_entries (entries vs plugins) and get_plugin (single vs all).

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 for listing all plugins, but no explicit guidance on when to use vs alternatives (e.g., search_entries, get_plugin) or when not to use it.

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

reload_registryA

Force reload the registry from its source (GitHub or local path).

Clears the in-memory cache and re-fetches all entries. Use after a marketplace update (git pull / new commit) to get fresh data without restarting the server.

Returns a diff vs the previous state:

  • added: entry IDs new in this reload

  • removed: entry IDs no longer present

  • modified: entry IDs whose plugin_version changed

  • total: total number of entries after reload

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses key behavioral traits: clears in-memory cache, re-fetches all entries, and returns a diff of added/removed/modified IDs. While it doesn't discuss performance or authorization, the side effect and return format are well explained.

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?

The description is concise and well-structured: a one-sentence purpose, a usage guideline sentence, and a bullet list for return details. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the zero-parameter complexity and the presence of an output schema (evidenced by context signal), the description is complete. It covers purpose, usage, side effects, and return format in detail, leaving no significant gaps.

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 has no parameters, so the description does not need to add parameter semantics. Baseline 4 is appropriate since the schema coverage is 100% and there are no properties to describe.

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 starts with a clear action statement: 'Force reload the registry from its source (GitHub or local path).' It specifies the resource and the verb, clearly distinguishing this tool from listing and search siblings, which do not reload.

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?

The description explicitly says when to use it: 'Use after a marketplace update (git pull / new commit) to get fresh data without restarting the server.' It does not mention when not to use or alternatives, but the context is clear enough for an AI agent to infer appropriate usage.

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

search_entriesA

Search registry entries by exact keyword or partial name match.

Searches name, description, and plugin name. Name matches are ranked before description matches. Optionally restrict results to a specific type.

Use this when you have a specific keyword or partial name (e.g. "tdd", "android", "architecture"). For natural language task descriptions, use suggest_entries instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description details search behavior: fields searched, ranking logic, and type restriction. However, it does not explicitly state that it is read-only or mention any potential side effects, which would be expected for a search tool.

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

Conciseness5/5

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

The description is concise with five sentences, front-loading the core action and efficiently providing key details without redundancy.

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?

Covers input behavior, ranking, and type restriction adequately. With an output schema present, the description need not explain return values. However, it omits potential details like pagination or ordering beyond ranking, which are minor gaps.

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 0%, so the description must explain parameters. It describes 'query' as an exact keyword or partial name and mentions optional type restriction, but lacks specifics on 'type' values or query format details (e.g., case sensitivity). Adds meaning but could be more comprehensive.

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 clearly states the tool searches registry entries by exact or partial name, matching against name, description, and plugin name, with ranking and optional type restriction. It distinguishes itself from the 'suggest_entries' sibling, making purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly states when to use (specific keyword or partial name) and when not to (natural language tasks, suggesting 'suggest_entries' instead), providing clear guidance with examples.

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

suggest_entriesA

Suggest registry entries relevant to a natural language task description.

Splits the task into individual terms and scores entries by how many terms appear in their name, description, plugin name, and tags. Returns entries ranked by relevance score with matched_terms listed.

Use this for natural language queries (e.g. "I need to review architecture and create ADRs", "write tests for a Go service"). For exact keyword or partial name matching, use search_entries instead.

  • task: natural language description of what you need

  • type: optional type filter ("skill", "agent", "command", "hook")

  • limit: max results to return (default 5)

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes
typeNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

Explains the scoring mechanism (splits task into terms, scores by term matches) and ranking. Lacks explicit mention of non-destructive nature or idempotency, but overall reasonable given no annotations.

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?

Concise, front-loaded, every sentence adds value. Structured with main purpose, then usage, then parameters. No unnecessary text.

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

Completeness5/5

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

Given an output schema exists, the description doesn't need to explain return values. It covers behavior, parameters, and use cases adequately for the tool's complexity.

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

Parameters5/5

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

With 0% schema description coverage, the description fully explains each parameter: 'task' as natural language description, 'type' as optional filter, 'limit' with default. Adds meaning 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 clearly states the tool suggests registry entries relevant to a natural language task description. It distinguishes itself from the sibling 'search_entries' by specifying it's for natural language queries vs. exact keyword matching.

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

Usage Guidelines5/5

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

Provides explicit guidance: use for natural language queries like 'I need to review architecture' and for exact keyword matching use 'search_entries' instead.

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

suggest_pluginsA

Suggest gen-e2 plugins relevant to a natural language task or project description.

Use this for plugin-level discovery when the user describes their project or use case and wants to know which plugins are most relevant — before drilling into individual artefacts with suggest_entries.

Scores plugins by how many task words appear in their name (3x weight), description, and tags. Returns plugins sorted by relevance score.

Examples:

  • "I'm building an Android app" → android, delivery, architecture-reviewer

  • "I need to research and document a technical decision" → research-suite, delivery

  • "Go microservice with TDD" → go-tdd-orchestrator

  • task: natural language description of the project or need

  • limit: max results to return (default 5)

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description fully bears the burden. It explains the scoring mechanism (word matching with 3x weight on plugin names), sorting by relevance, and gives examples. This provides comprehensive insight into the tool's behavior without contradiction.

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?

The description is well-structured: purpose, usage guidelines, behavioral details, examples, and parameter definitions. Every sentence adds value without repetition, and it remains concise while covering all essential aspects.

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

Completeness5/5

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

Given the simplicity of the tool (2 parameters, one required) and the presence of an output schema (not shown but noted), the description provides complete contextual information. It explains when to use it, how it works, and what parameters are needed, leaving no critical gaps for an AI agent.

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?

With 0% schema description coverage, the description adds necessary meaning: 'task: natural language description of the project or need' and 'limit: max results to return (default 5)'. This is helpful but could be slightly more detailed about the task format or limit constraints.

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?

Clearly states the tool's function: 'Suggest gen-e2 plugins relevant to a natural language task or project description.' Uses a specific verb (suggest) and resource (plugins), and distinguishes from the related sibling 'suggest_entries' by emphasizing plugin-level discovery before drilling into individual artefacts.

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

Usage Guidelines5/5

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

Explicitly tells when to use the tool: 'Use this for plugin-level discovery when the user describes their project or use case and wants to know which plugins are most relevant — before drilling into individual artefacts with suggest_entries.' Also provides examples of typical inputs and outputs, giving clear context for appropriate invocation.

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

validate_entryA

Validate a skill/agent/command markdown file against the marketplace schema.

Checks required fields, recommended fields, body content, and naming conventions.

  • content: full file content including YAML frontmatter

  • type: "skill", "agent", "command", or "hook"

Returns:

  • valid: bool

  • errors: blocking schema violations

  • warnings: non-blocking recommendations

  • parsed: the parsed YAML frontmatter

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Without annotations, the description adequately conveys that this tool performs read-only validation with no side effects. It lists return values but does not explicitly state non-destructive behavior, though it is implied.

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?

The description is succinct, using bullet points for parameters and return values. No redundant information; every sentence serves a purpose.

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?

The description covers the tool's purpose, parameters, and return format comprehensively. Given no output schema, including the return structure is beneficial. Minor omissions like error handling do not detract significantly.

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 description adds significant meaning beyond the schema by explaining the content parameter as full file content with YAML frontmatter and listing allowed values for type (skill, agent, command, hook). With 0% schema coverage, this compensation is effective.

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 clearly states it validates a skill/agent/command markdown file against a marketplace schema, specifying the types of files and checks performed. It distinguishes from siblings by focusing on validation, unlike tools like get_entry or check_compliance.

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?

The description implies usage for pre-submission validation, but does not explicitly contrast with siblings like check_compliance. No alternative tool comparisons are provided, so usage context is implied only.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv0.3.0
    • Addedcheck_compliance_plugin
    • Addedsuggest_plugins
  2. 13 tool updatesv0.2.0
    • First observedcheck_compliance
    • First observedget_changelog
    • First observedget_entry
    • First observedget_entry_by_id
    • First observedget_marketplace_stats
    • First observedget_plugin
    • First observedget_plugin_install_package
    • First observedlist_entries
    • First observedlist_plugins
    • First observedreload_registry
    • First observedsearch_entries
    • First observedsuggest_entries
    • First observedvalidate_entry

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes, but check_compliance and check_compliance_plugin overlap in checking compliance at different granularities, which could cause minor confusion. Overall, tools are well-differentiated.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (e.g., get_entry, list_plugins, suggest_entries). No mixing of conventions or ambiguous verbs.

Tool Count5/5

With 15 tools, the server covers the registry domain comprehensively without being bloated. Each tool serves a clear purpose and earns its place.

Completeness5/5

The tool surface covers all key operations for a registry: listing, searching, getting details, compliance checking, installation, validation, and reloading. No obvious gaps for the stated purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to discover, install, and manage SKILL.md skills from a Git-backed registry via MCP tools for search, install, and list operations.
    17
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Discovers and manages portable agent capabilities (skills and MCP servers) from configurable collections, providing search, inspection, and local installation via CLI and MCP tools.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables managing a canonical library of agent skills and MCP servers, syncing them across multiple development harnesses, and adding, importing, or configuring them through MCP tools.
    95
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP-capable agents to search, inspect, lint, and safely install Agent Skills from the skillmd registry mid-conversation.
    2
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Palo-IT-GitHub-Demos/lab-registry-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server