Skip to main content
Glama

Skill Retriever

Graph-based MCP server for Claude Code component retrieval.

Given a task description, returns the minimal correct set of components (agents, skills, commands, hooks, MCPs) with all dependencies resolved.

Current Index

2,561 components from 56 repositories, auto-discovered and synced hourly.

Type

Count

Description

Skills

1,952

Portable instruction sets that package domain expertise and procedural knowledge

Agents

492

Specialized AI personas with isolated context and fine-grained permissions

Commands

40

Slash commands (/commit, /review, etc.)

Hooks

37

Event handlers (SessionStart, PreCompact, etc.)

MCPs

37

Model Context Protocol servers for external integrations

Settings

3

Configuration presets

Top Repositories

Repository

Components

Description

sickn33/antigravity-awesome-skills

722

Large curated skills collection across domains

VoltAgent/awesome-agent-skills

232

200+ curated skills compatible with Codex, Gemini CLI

wshobson/agents

226

Multi-agent orchestration with 129 skills

davepoon/buildwithclaude

158

Full-stack development skills

hesreallyhim/awesome-claude-code

155

Comprehensive Claude Code skills collection

K-Dense-AI/claude-scientific-skills

123

Scientific computing and research skills

zhayujie/chatgpt-on-wechat

113

WeChat bot with multi-platform agent skills

ComposioHQ/awesome-claude-skills

85

Automation skills with Rube MCP integration (Gmail, Slack, Calendar)

Orchestra-Research/AI-Research-SKILLs

80

AI research skills (fine-tuning, interpretability, distributed training, MLOps)

assafelovic/gpt-researcher

78

Deep research agent skills

BehiSecc/awesome-claude-skills

61

Document processing, security, scientific skills

jeffallan/claude-skills

56

Community Claude skills collection

trailofbits/skills

46

Security-focused skills from Trail of Bits

remotion-dev/skills

35

Remotion video rendering skills

anthropics/skills

17

Official Anthropic skills (Excel, PowerPoint, PDF, skill-creator)

What Problem Does This Solve?

Claude Code supports custom components stored in .claude/ directories.

The Agent Skills Standard

Skills are folders of instructions that extend Claude's capabilities. Every skill includes a SKILL.md markdown file containing name, description, and instructions. Skills are progressively disclosed—only name and description load initially; full instructions load only when triggered.

The open standard means skills work across:

  • Claude AI and Claude Desktop

  • Claude Code

  • Claude Agent SDK

  • Codex, Gemini CLI, OpenCode, and other compatible platforms

Component Types Explained

Type

What It Does

When to Use

Skill

Packages domain expertise + procedural knowledge into portable instructions

Repeatable workflows, company-specific analysis, new capabilities

Agent

Spawned subprocess with isolated context and tool access

Parallel execution, specialized tasks, permission isolation

Command

Slash command (/name) that triggers specific behavior

Quick actions, shortcuts, task invocation

Hook

Runs automatically on events (SessionStart, PreCompact)

Context setup, auto-save, cleanup

MCP

Model Context Protocol server connecting to external systems

Database access, APIs, file systems

Skills vs Tools vs Subagents

Concept

Analogy

Persistence

Context

Tools

Hammer, saw, nails

Always in context

Adds to main window

Skills

How to build a bookshelf

Progressively loaded

Name/desc → SKILL.md → refs

Subagents

Hire a specialist

Session-scoped

Isolated from parent

Key insight: Skills solve the context window problem. By progressively disclosing instructions, they avoid polluting context with data that may never be needed.

The Problem This Solves

There are now 1,000+ community components scattered across GitHub repos. Finding the right ones for your task, understanding their dependencies, and ensuring compatibility is painful.

Skill Retriever solves this by:

  1. Indexing component repositories into a searchable knowledge graph

  2. Understanding dependencies between components

  3. Returning exactly what you need for a given task (not too much, not too little)

  4. Installing them directly into your .claude/ directory

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                        Claude Code                               │
│                                                                  │
│  "I need to add git commit automation"                          │
│                    │                                             │
│                    ▼                                             │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              MCP Client (built into Claude Code)          │   │
│  │                                                           │   │
│  │  tools/call: search_components                            │   │
│  │  tools/call: install_components                           │   │
│  │  tools/call: check_dependencies                           │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘
                              │
                              │ stdio (JSON-RPC)
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    Skill Retriever MCP Server                    │
│                                                                  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐  │
│  │   Vector    │  │    Graph    │  │      Metadata           │  │
│  │   Store     │  │    Store    │  │       Store             │  │
│  │  (FAISS)    │  │(FalkorDB/NX)│  │      (JSON)             │  │
│  └─────────────┘  └─────────────┘  └─────────────────────────┘  │
│         │                │                    │                  │
│         └────────────────┼────────────────────┘                  │
│                          ▼                                       │
│              ┌───────────────────────┐                          │
│              │   Retrieval Pipeline  │                          │
│              │                       │                          │
│              │  1. Vector Search     │                          │
│              │  2. Graph PPR         │                          │
│              │  3. Score Fusion      │                          │
│              │  4. Dep Resolution    │                          │
│              │  5. Conflict Check    │                          │
│              │  6. Context Assembly  │                          │
│              └───────────────────────┘                          │
└─────────────────────────────────────────────────────────────────┘

How It Works

1. Ingestion (Indexing Repositories)

When you ingest a component repository:

Repository (GitHub)
       │
       ▼
┌──────────────────┐
│  Clone to temp   │
└──────────────────┘
       │
       ▼
┌──────────────────┐    Strategies (first match wins):
│  Crawler         │    1. Davila7Strategy: cli-tool/components/{type}/
│  (Strategy-based)│    2. PluginMarketplaceStrategy: plugins/{name}/skills/
└──────────────────┘    3. FlatDirectoryStrategy: .claude/{type}/
       │                4. GenericMarkdownStrategy: Any *.md with name frontmatter
       │                5. AwesomeListStrategy: README.md curated lists
       │                6. PythonModuleStrategy: *.py with docstrings
       ▼
┌──────────────────┐
│  Entity Resolver │    Deduplicates similar components using:
│  (Fuzzy + Embed) │    - RapidFuzz token_sort_ratio (Phase 1)
└──────────────────┘    - Embedding cosine similarity (Phase 2)
       │
       ▼
┌──────────────────┐
│  Index into:     │
│  - Graph nodes   │    Component → Node with type, label
│  - Graph edges   │    Dependencies → DEPENDS_ON edges
│  - Vector store  │    Embeddings for semantic search
│  - Metadata      │    Full content for installation
└──────────────────┘

2. Retrieval (Finding Components)

When you search for components:

Query: "git commit automation with conventional commits"
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│                    Query Planning                              │
│                                                                │
│  - Extract entities (keywords, component names)                │
│  - Determine complexity (simple/medium/complex)                │
│  - Decide: use PPR? use flow pruning?                         │
│  - Detect abstraction level (agent vs command vs hook)        │
└───────────────────────────────────────────────────────────────┘
                    │
        ┌───────────┴───────────┐
        ▼                       ▼
┌───────────────┐      ┌───────────────────────┐
│ Vector Search │      │ Graph PPR (PageRank)  │
│               │      │                       │
│ Semantic      │      │ Follows dependency    │
│ similarity    │      │ edges to find         │
│ via FAISS     │      │ related components    │
└───────────────┘      └───────────────────────┘
        │                       │
        └───────────┬───────────┘
                    ▼
┌───────────────────────────────────────────────────────────────┐
│                    Score Fusion                                │
│                                                                │
│  Combined score = α × vector_score + (1-α) × graph_score      │
│  Filtered by component type if specified                       │
└───────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│              Transitive Dependency Resolution                  │
│                                                                │
│  If "commit-command" depends on "git-utils" which depends     │
│  on "shell-helpers" → all three are included                  │
└───────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│                  Conflict Detection                            │
│                                                                │
│  Check CONFLICTS_WITH edges between selected components        │
│  Warn if incompatible components would be installed           │
└───────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│                  Context Assembly                              │
│                                                                │
│  - Sort by type priority (agents > skills > commands)         │
│  - Estimate token cost per component                          │
│  - Stay within token budget                                   │
│  - Generate rationale for each recommendation                 │
└───────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│                      Results                                   │
│                                                                │
│  [                                                            │
│    { id: "davila7/commit-command", score: 0.92,               │
│      rationale: "High semantic match + 3 dependents" },       │
│    { id: "davila7/git-utils", score: 0.85,                    │
│      rationale: "Required dependency of commit-command" }     │
│  ]                                                            │
└───────────────────────────────────────────────────────────────┘

3. Installation

When you install components:

install_components(["davila7/commit-command"])
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│              Resolve Dependencies                              │
│                                                                │
│  commit-command → [git-utils, shell-helpers]                  │
│  Total: 3 components to install                               │
└───────────────────────────────────────────────────────────────┘
                    │
                    ▼
┌───────────────────────────────────────────────────────────────┐
│              Write to .claude/                                 │
│                                                                │
│  .claude/                                                     │
│  ├── commands/                                                │
│  │   └── commit.md          ← commit-command                  │
│  └── skills/                                                  │
│      ├── git-utils.md       ← dependency                      │
│      └── shell-helpers.md   ← transitive dependency           │
└───────────────────────────────────────────────────────────────┘

4. Discovery Pipeline (OSS-01, HEAL-01)

Automatically discovers and ingests high-quality skill repositories from GitHub:

┌─────────────────────────────────────────────────────────────────┐
│                    Discovery Pipeline                            │
│                                                                  │
│  ┌──────────────────┐                                           │
│  │   OSS Scout      │  Searches GitHub for skill repos:         │
│  │                  │  - 8 search queries (claude, skills, etc) │
│  │  discover()      │  - MIN_STARS: 5                           │
│  │  ─────────────▶  │  - Recent activity: 180 days              │
│  └────────┬─────────┘  - Quality scoring (stars, topics, etc)   │
│           │                                                      │
│           ▼                                                      │
│  ┌──────────────────┐                                           │
│  │  Filter & Score  │  Score = stars (40) + recency (20)        │
│  │                  │        + topics (20) + description (10)   │
│  │  min_score: 30   │        + forks (10)                       │
│  └────────┬─────────┘                                           │
│           │                                                      │
│           ▼                                                      │
│  ┌──────────────────┐                                           │
│  │    Ingest New    │  Clone → Crawl → Dedupe → Index           │
│  │  (max 10/run)    │  Uses same pipeline as ingest_repo        │
│  └────────┬─────────┘                                           │
│           │                                                      │
│           ▼                                                      │
│  ┌──────────────────┐                                           │
│  │   Auto-Healer    │  Tracks failures:                         │
│  │                  │  - CLONE_FAILED, NO_COMPONENTS            │
│  │  MAX_RETRIES: 3  │  - NETWORK_ERROR, RATE_LIMITED            │
│  └──────────────────┘  Automatically retries healable failures   │
└─────────────────────────────────────────────────────────────────┘

5. Auto-Sync (SYNC-01, SYNC-02)

Repositories are automatically polled for updates every hour. The poller starts on the first tool call — no manual activation needed:

┌─────────────────────────────────────────────────────────────────┐
│                      Sync Manager                                │
│                                                                  │
│  ┌──────────────────┐         ┌──────────────────────────────┐  │
│  │  Webhook Server  │         │       Repo Poller            │  │
│  │  (port 9847)     │         │  (hourly by default)         │  │
│  │                  │         │                              │  │
│  │  POST /webhook   │         │  GET /repos/{owner}/{repo}   │  │
│  │  ← GitHub push   │         │  → GitHub API                │  │
│  └────────┬─────────┘         └──────────────┬───────────────┘  │
│           │                                   │                  │
│           └─────────────┬─────────────────────┘                  │
│                         ▼                                        │
│              ┌─────────────────────┐                            │
│              │  Change Detected?   │                            │
│              │  (new commit SHA)   │                            │
│              └──────────┬──────────┘                            │
│                         │ yes                                    │
│                         ▼                                        │
│              ┌─────────────────────┐                            │
│              │   Re-ingest Repo    │                            │
│              │   (incremental)     │                            │
│              └─────────────────────┘                            │
└─────────────────────────────────────────────────────────────────┘

6. Feedback Loop (LRNG-04, LRNG-05, LRNG-06)

Execution outcomes feed back into the graph to improve future recommendations:

┌─────────────────────────────────────────────────────────────────┐
│                      Feedback Loop                               │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                 Outcome Tracking (LRNG-05)               │   │
│  │                                                          │   │
│  │  install_components()                                    │   │
│  │         │                                                │   │
│  │         ├── success → INSTALL_SUCCESS + bump usage       │   │
│  │         └── failure → INSTALL_FAILURE + track context    │   │
│  │                                                          │   │
│  │  report_outcome()                                        │   │
│  │         ├── USED_IN_SESSION → usage count++              │   │
│  │         ├── REMOVED_BY_USER → negative feedback          │   │
│  │         └── DEPRECATED → deprecation flag                │   │
│  └──────────────────────────────────────────────────────────┘   │
│                          │                                       │
│                          ▼                                       │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Usage-Based Boosting (LRNG-04)              │   │
│  │                                                          │   │
│  │  Selection Rate Boost:                                   │   │
│  │    high_selection_rate → +50% score boost                │   │
│  │    low_selection_rate  → no boost                        │   │
│  │                                                          │   │
│  │  Co-Selection Boost:                                     │   │
│  │    frequently_selected_together → +10% each (max 30%)    │   │
│  │                                                          │   │
│  │  Final score = base_score × boost_factor                 │   │
│  └──────────────────────────────────────────────────────────┘   │
│                          │                                       │
│                          ▼                                       │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Feedback Engine (LRNG-06)                   │   │
│  │                                                          │   │
│  │  analyze_feedback() discovers patterns:                  │   │
│  │                                                          │   │
│  │  Co-selections (≥3) → suggest BUNDLES_WITH edge          │   │
│  │  Co-failures (≥2)   → suggest CONFLICTS_WITH edge        │   │
│  │                                                          │   │
│  │  Human reviews suggestions via review_suggestion()       │   │
│  │  Accepted suggestions → apply_feedback_suggestions()     │   │
│  │  New edges added to graph with confidence scores         │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Key insight: The system learns from real-world usage. Components that work well together get boosted. Components that fail together get flagged as conflicts. This creates a self-improving recommendation engine.

7. Security Scanning (SEC-01)

Scans components for security vulnerabilities during ingestion and on-demand:

┌─────────────────────────────────────────────────────────────────┐
│                    Security Scanner                              │
│                                                                  │
│  Based on Yi Liu et al. "Agent Skills in the Wild" research:    │
│  - 26.1% of skills contain vulnerable patterns                  │
│  - 5.2% show malicious intent indicators                        │
│  - Skills with scripts are 2.12x more likely to be vulnerable   │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Vulnerability Detection                      │   │
│  │                                                          │   │
│  │  Data Exfiltration (13.3%)                               │   │
│  │    - HTTP POST with data payload                         │   │
│  │    - File read + external request                        │   │
│  │    - Webhook endpoints                                   │   │
│  │                                                          │   │
│  │  Credential Access                                       │   │
│  │    - Environment variable harvesting                     │   │
│  │    - SSH key / AWS credential access                     │   │
│  │    - Sensitive env vars (API_KEY, SECRET, TOKEN)        │   │
│  │                                                          │   │
│  │  Privilege Escalation (11.8%)                            │   │
│  │    - Shell injection via variable interpolation          │   │
│  │    - Dynamic code execution (eval/exec)                  │   │
│  │    - sudo execution, chmod 777                           │   │
│  │    - Download and execute patterns                       │   │
│  │                                                          │   │
│  │  Obfuscation (malicious intent)                          │   │
│  │    - Hex-encoded strings                                 │   │
│  │    - Unicode escapes                                     │   │
│  │    - String concatenation obfuscation                    │   │
│  └──────────────────────────────────────────────────────────┘   │
│                          │                                       │
│                          ▼                                       │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Risk Assessment                              │   │
│  │                                                          │   │
│  │  Risk Levels: safe → low → medium → high → critical      │   │
│  │                                                          │   │
│  │  Risk Score (0-100):                                     │   │
│  │    Base = sum of finding weights                         │   │
│  │    Script multiplier = 1.5x if has_scripts               │   │
│  │                                                          │   │
│  │  Each component stores:                                  │   │
│  │    - security_risk_level                                 │   │
│  │    - security_risk_score                                 │   │
│  │    - security_findings_count                             │   │
│  │    - has_scripts                                         │   │
│  └──────────────────────────────────────────────────────────┘   │
│                          │                                       │
│                          ▼                                       │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Integration Points                           │   │
│  │                                                          │   │
│  │  Ingestion: scan during ingest_repo()                    │   │
│  │  Retrieval: include SecurityStatus in search results     │   │
│  │  On-demand: security_scan() and security_audit() tools   │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Key insight: Security scanning catches 22%+ of potentially vulnerable patterns before they reach your codebase. The system flags data exfiltration, credential access, privilege escalation, and code obfuscation.

Current Index Statistics (2,561 components):

Risk Level

Count

%

Safe

796

~49%

Low

2

~0.1%

Medium

19

~1.2%

High

8

~0.5%

Critical

202

~12%

Unscanned

600

~37%

Top Finding Patterns (in CRITICAL components):

Pattern

Count

Notes

shell_injection

424

Many are bash examples in markdown (false positives)

webhook_post

87

Discord/Slack webhook URLs

env_harvest_all

74

process.env / os.environ access

ssh_key_access

51

References to .ssh/ paths

http_post_with_data

38

HTTP POST with data payload

Known Limitations:

  • The shell_injection pattern has false positives for bash code blocks in markdown

  • Webhook patterns flag legitimate integrations (Discord bots, Slack notifications)

8. LLM-Assisted Security Analysis (SEC-02)

Optional layer on top of regex scanning that uses Claude to reduce false positives:

┌─────────────────────────────────────────────────────────────────┐
│               LLM Security Analyzer (SEC-02)                     │
│                                                                  │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              When to Use                                  │   │
│  │                                                          │   │
│  │  - Component flagged HIGH/CRITICAL by regex scanner      │   │
│  │  - Suspected false positives (shell commands in docs)    │   │
│  │  - Need confidence before installing critical component  │   │
│  └──────────────────────────────────────────────────────────┘   │
│                          │                                       │
│                          ▼                                       │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Analysis Process                             │   │
│  │                                                          │   │
│  │  1. Run regex scan (SEC-01) to get findings              │   │
│  │  2. Send findings + component content to Claude          │   │
│  │  3. Claude analyzes each finding:                        │   │
│  │     - Is it in documentation vs executable code?         │   │
│  │     - Is it legitimate functionality (JWT accessing env)?│   │
│  │     - Context: webhook in notification skill = expected  │   │
│  │  4. Returns verdict per finding:                         │   │
│  │     - TRUE_POSITIVE: Real security concern               │   │
│  │     - FALSE_POSITIVE: Safe, incorrectly flagged          │   │
│  │     - CONTEXT_DEPENDENT: Depends on usage                │   │
│  │     - NEEDS_REVIEW: Cannot determine, human review       │   │
│  └──────────────────────────────────────────────────────────┘   │
│                          │                                       │
│                          ▼                                       │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Adjusted Risk Score                          │   │
│  │                                                          │   │
│  │  Original score = 75 (CRITICAL, 5 findings)              │   │
│  │                                                          │   │
│  │  LLM analysis:                                           │   │
│  │    - 3 × FALSE_POSITIVE (bash in markdown)              │   │
│  │    - 1 × TRUE_POSITIVE (env var harvesting)             │   │
│  │    - 1 × CONTEXT_DEPENDENT                               │   │
│  │                                                          │   │
│  │  Adjusted score = 75 × (1 + 0.5) / 5 = 22.5 (MEDIUM)    │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

Requirements:

  • ANTHROPIC_API_KEY environment variable set

  • anthropic package installed (included in dependencies)

Usage:

# Full LLM analysis of a flagged component
security_scan_llm(component_id="owner/repo/skill/name")

# Returns:
{
  "component_id": "...",
  "llm_available": true,
  "original_risk_level": "critical",
  "adjusted_risk_level": "medium",
  "original_risk_score": 75.0,
  "adjusted_risk_score": 22.5,
  "finding_analyses": [
    {
      "pattern_name": "shell_injection",
      "verdict": "false_positive",
      "confidence": 0.95,
      "reasoning": "Pattern in markdown code block showing CLI usage",
      "is_in_documentation": true,
      "mitigations": []
    }
  ],
  "overall_assessment": "Low actual risk...",
  "false_positive_count": 3,
  "true_positive_count": 1,
  "context_dependent_count": 1
}

Cost Consideration: LLM analysis uses Claude API calls (~2000 tokens per component). Use selectively for:

  • Components you plan to install

  • HIGH/CRITICAL flagged components

  • Components with many findings that may be false positives

Integration with Claude Code

Setup

  1. Add to Claude Code's MCP config (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "skill-retriever": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/skill-retriever", "skill-retriever"]
    }
  }
}
  1. Restart Claude Code to load the MCP server.

Available Tools

Once configured, Claude Code can use these tools:

Tool

Purpose

Search & Install

search_components

Find components for a task description

get_component_detail

Get full info about a specific component

install_components

Install components to .claude/ (auto-records outcome)

check_dependencies

Check deps and conflicts before install

Ingestion

ingest_repo

Index a new component repository

Sync Management

register_repo

Track a repo for auto-sync

unregister_repo

Stop tracking a repo

list_tracked_repos

List all tracked repos

sync_status

Get sync system status

start_sync_server

Start webhook + poller

stop_sync_server

Stop sync services

poll_repos_now

Trigger immediate poll

Discovery Pipeline

run_discovery_pipeline

Discover + ingest new skill repos from GitHub

discover_repos

Search GitHub for skill repositories

get_pipeline_status

Get discovery pipeline configuration

get_heal_status

View auto-heal failures and status

clear_heal_failures

Clear tracked failures

Outcome Tracking

report_outcome

Record usage outcome (used, removed, deprecated)

get_outcome_stats

Get success/failure stats for a component

get_outcome_report

View problematic components and conflicts

Feedback Engine

analyze_feedback

Analyze patterns to suggest graph improvements

get_feedback_suggestions

View pending edge suggestions

review_suggestion

Accept or reject a suggested edge

apply_feedback_suggestions

Apply accepted suggestions to the graph

Security Scanning

security_scan

Scan a specific component for vulnerabilities (regex)

security_scan_llm

Scan with LLM false-positive reduction (requires API key)

security_audit

Audit all components, report by risk level

backfill_security_scans

Scan existing components that haven't been scanned

Example Conversation

User: I need to set up git commit automation with conventional commits

Claude: Let me search for relevant components.

[Calls search_components with query="git commit automation conventional commits"]

I found 3 components that would help:

1. **commit-command** (command) - Automated git commits with conventional format
   - Score: 0.92
   - Health: active (updated 2 days ago)
   - Token cost: 450

2. **git-utils** (skill) - Git helper functions
   - Score: 0.85
   - Required by: commit-command

3. **conventional-commits-hook** (hook) - Pre-commit validation
   - Score: 0.78
   - Health: active

Would you like me to install these?

User: Yes, install them

Claude: [Calls install_components with ids=["davila7/commit-command", "davila7/conventional-commits-hook"]]

Installed 4 components to .claude/:
- commands/commit.md
- skills/git-utils.md
- skills/shell-helpers.md (dependency)
- hooks/conventional-commits.md

You can now use `/commit` to create conventional commits!

Workflow with Security Integration

┌─────────────────────────────────────────────────────────────────┐
│                 Claude Code + Skill Retriever Workflow           │
│                                                                  │
│  1. USER: "I need JWT authentication"                           │
│                    │                                             │
│                    ▼                                             │
│  2. CLAUDE: search_components("JWT authentication")              │
│                    │                                             │
│                    ▼                                             │
│  3. SKILL RETRIEVER returns:                                     │
│     ┌────────────────────────────────────────────────────┐      │
│     │ auth-jwt-skill                                      │      │
│     │   Score: 0.89                                       │      │
│     │   Health: active (2 days ago)                       │      │
│     │   Security: ⚠️ MEDIUM (env_sensitive_keys)          │      │
│     │   Tokens: 320                                       │      │
│     │                                                     │      │
│     │ crypto-utils                                        │      │
│     │   Score: 0.72                                       │      │
│     │   Health: active                                    │      │
│     │   Security: ✅ SAFE                                 │      │
│     │   Tokens: 180                                       │      │
│     └────────────────────────────────────────────────────┘      │
│                    │                                             │
│                    ▼                                             │
│  4. CLAUDE: "auth-jwt-skill has MEDIUM security risk             │
│              (accesses JWT_SECRET from env). Proceed?"           │
│                    │                                             │
│                    ▼                                             │
│  5. USER: "Yes, that's expected for JWT"                        │
│                    │                                             │
│                    ▼                                             │
│  6. CLAUDE: install_components(["auth-jwt-skill"])               │
│                    │                                             │
│                    ▼                                             │
│  7. SKILL RETRIEVER:                                             │
│     - Resolves dependencies (adds crypto-utils)                  │
│     - Writes to .claude/skills/                                  │
│     - Records INSTALL_SUCCESS outcome                            │
│                    │                                             │
│                    ▼                                             │
│  8. CLAUDE: "Installed auth-jwt-skill + crypto-utils.            │
│              Note: Requires JWT_SECRET env variable."            │
└─────────────────────────────────────────────────────────────────┘

Security-Aware Retrieval

When search_components returns results, each component includes:

{
  "id": "owner/repo/skill/auth-jwt",
  "name": "auth-jwt",
  "type": "skill",
  "score": 0.89,
  "rationale": "High semantic match + required dependency",
  "token_cost": 320,
  "health": {
    "status": "active",
    "last_updated": "2026-02-02T10:30:00Z",
    "commit_frequency": "high"
  },
  "security": {
    "risk_level": "medium",
    "risk_score": 25.0,
    "findings_count": 1,
    "has_scripts": false
  }
}

Best Practice: Claude should surface security warnings to users before installation, especially for CRITICAL and HIGH risk components.

Backfilling Existing Components

If you have components indexed before SEC-01 was implemented:

User: Run a security audit on all components

Claude: [Calls security_audit(risk_level="medium")]

Security Audit Results:
- Total: 1027 components
- Safe: 796 (77.5%)
- Low: 2 (0.2%)
- Medium: 19 (1.9%)
- High: 8 (0.8%)
- Critical: 202 (19.7%)

Would you like to see the flagged components?

User: Yes, show critical ones

Claude: [Shows list of critical components with their findings]

Note: Many "shell_injection" findings are false positives from
bash code examples in markdown. Review manually for true concerns.

To backfill security scans for components indexed before SEC-01:

Claude: [Calls backfill_security_scans(force_rescan=false)]

Data Flow Summary

┌─────────────┐     ┌──────────────┐     ┌─────────────────┐
│   GitHub    │────▶│   Ingestion  │────▶│   Graph Store   │
│   Repos     │     │   Pipeline   │     │ (FalkorDB/NX)   │
└─────────────┘     └──────────────┘     └─────────────────┘
                                                  │
                                                  ▼
┌─────────────┐     ┌──────────────┐     ┌─────────────────┐
│   Claude    │◀───▶│     MCP      │◀───▶│   Retrieval     │
│    Code     │     │   Server     │     │   Pipeline      │
└─────────────┘     └──────────────┘     └─────────────────┘
                           │                      │
                           ▼                      ▼
                    ┌──────────────┐     ┌─────────────────┐
                    │   .claude/   │     │  Vector Store   │
                    │  directory   │     │    (FAISS)      │
                    └──────────────┘     └─────────────────┘

Performance

Metric

Value

MCP server startup

~1s (lazy-loaded, non-blocking)

First search (cold)

~7s (embedding model loads once)

Subsequent searches

~120ms (vector + graph + fusion)

Cached searches

<0.1ms (LRU cache)

Auto-sync interval

1 hour (56 repos tracked, polled via GitHub API)

Startup optimization: fastembed (the embedding library) is lazy-loaded and pre-warmed in a background thread, so the MCP server responds to tool calls within ~1s instead of blocking for ~9s.

Key Design Decisions

  1. Hybrid retrieval (vector + graph) — Semantic similarity alone misses dependency relationships

  2. Incremental ingestion — Only re-index changed files, not entire repos

  3. Entity resolution — Deduplicate similar components across repos

  4. Token budgeting — Don't overwhelm Claude's context window

  5. Health signals — Surface stale/abandoned components

  6. MCP protocol — Native integration with Claude Code (no plugins needed)

  7. Security-first scanning — 26% of skills contain vulnerabilities; scan before installation

Requirements Coverage

v1 (Complete)

  • Ingestion: crawl any repo structure, extract metadata + git signals

  • Retrieval: semantic search + graph traversal + score fusion

  • Dependencies: transitive resolution + conflict detection

  • Integration: MCP server + component installation

v2 (Implemented)

  • SYNC-01: Webhook server for GitHub push events

  • SYNC-02: Auto-reingest on detected changes

  • SYNC-03: Incremental ingestion

  • OSS-01: GitHub-based repository discovery (OSS Scout)

  • HEAL-01: Auto-heal for failed ingestions with retry logic

  • RETR-06: Abstraction level awareness

  • RETR-07: Fuzzy entity extraction with RapidFuzz + synonym expansion

  • LRNG-03: Co-occurrence tracking

  • LRNG-04: Usage-based score boosting (selection rate + co-selection)

  • LRNG-05: Outcome tracking (install success/failure, usage, removal)

  • LRNG-06: Feedback engine for implicit edge discovery

  • HLTH-01: Component health status

  • SEC-01: Security vulnerability scanning (based on Yi Liu et al. research)

  • SEC-02: LLM-assisted false positive reduction for security scanning

Deferred

  • RETR-05: LLM-assisted query rewriting

  • LRNG-01/02: Collaborative filtering from usage patterns

  • HLTH-02: Deprecation warnings

  • SEC-02: LLM-assisted false positive reduction ✅ IMPLEMENTED

  • SEC-03: Real-time re-scanning of installed components

Troubleshooting

Ingestion Failures

# Check auto-heal status
get_heal_status()

Failure Type

Cause

Solution

CLONE_FAILED

Network timeout, auth required

Check URL, verify public access

NO_COMPONENTS

Repo has no Claude Code components

Expected for non-skill repos

RATE_LIMITED

GitHub API limit exceeded

Wait 1 hour, retry

PARSE_ERROR

Malformed markdown/YAML

Open issue on source repo

To retry failed ingestion:

clear_heal_failures()
ingest_repo(repo_url="https://github.com/owner/repo", incremental=False)

Search Returns Empty Results

  1. Verify index is loaded:

    sync_status()  # Check tracked_repos > 0
  2. Check if component exists:

    get_component_detail(component_id="owner/repo/skill/name")
  3. Try broader search terms:

    • "auth" instead of "JWT RS256 authentication"

    • Remove specific technology mentions

  4. Check type filter isn't too restrictive:

    search_components(query="auth", component_type=None)  # Remove filter

Installation Failures

# Always check dependencies first
check_dependencies(component_ids=["id1", "id2"])

Error

Cause

Solution

Component not found

Not in metadata store

ingest_repo() the source repo

Conflict detected

Incompatible components

Choose one, or use conflicts field to understand

Write permission denied

Target dir not writable

Check .claude/ exists and is writable

Security Scan False Positives

The shell_injection pattern flags many legitimate bash examples:

# This is flagged but safe (bash in markdown):
gh pr view $PR_NUMBER

# This would be actually dangerous:
eval "$USER_INPUT"

To review false positives:

security_scan(component_id="owner/repo/skill/name")
# Review each finding's matched_text

MCP Server Won't Start

  1. Check Python version: Requires 3.13+

  2. Check dependencies: uv sync

  3. Check port conflicts: Webhook server uses 9847

  4. Check Claude Code config:

    {
      "mcpServers": {
        "skill-retriever": {
          "command": "uv",
          "args": ["run", "--directory", "/path/to/skill-retriever", "skill-retriever"]
        }
      }
    }

Data Corruption

If the index seems corrupted:

# Backup existing data
cp -r ~/.skill-retriever/data ~/.skill-retriever/data.bak

# Clear and re-ingest
rm ~/.skill-retriever/data/*.json
rm -rf ~/.skill-retriever/data/vectors/

# Re-run discovery pipeline
run_discovery_pipeline(dry_run=False, max_new_repos=50)

Development

# Install
uv sync

# Run MCP server
uv run skill-retriever

# Run tests
uv run pytest

# Type check
uv run pyright

# Lint
uv run ruff check

License

MIT

Available Tools

27 tools
analyze_feedbackC

Analyze usage patterns and generate edge suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
applied_countYes
last_analysisYes
total_suggestionsYes
pending_suggestionsYes

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. The description mentions analysis and generation but doesn't specify what kind of analysis occurs, what 'edge suggestions' are, whether this is a read-only or write operation, what permissions might be needed, or what the output looks like. For a tool with no annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence: 'Analyze usage patterns and generate edge suggestions.' It's appropriately sized for a tool with no parameters and gets straight to the point without unnecessary words. However, it could be slightly more structured by clarifying what 'edge suggestions' means.

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 that the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description doesn't need to explain parameters or return values. However, the description is vague about what the tool actually does operationally, leaving gaps in understanding its purpose and behavior. For a tool with no annotations, it should provide more complete context about its function.

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 0 parameters, and schema description coverage is 100% (though empty). With no parameters to document, the description doesn't need to add parameter semantics beyond what the schema provides. The baseline for 0 parameters is 4, as there's nothing to compensate for.

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

Purpose3/5

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

The description 'Analyze usage patterns and generate edge suggestions' states a general purpose (analyzing patterns and generating suggestions) but lacks specificity about what resources or data it operates on. It doesn't distinguish itself from sibling tools like 'get_feedback_suggestions' or 'review_suggestion' that also deal with feedback/suggestions. The purpose is somewhat vague rather than clearly defined.

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. With sibling tools like 'get_feedback_suggestions' and 'review_suggestion' that appear related to feedback/suggestions, there's no indication of when 'analyze_feedback' is appropriate versus those other tools. No context or prerequisites are mentioned.

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

apply_feedback_suggestionsB

Apply all accepted suggestions to the graph.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but is minimal. 'Apply' implies a write/mutation operation, but it doesn't disclose critical behavioral traits like whether this is destructive, requires specific permissions, has side effects, or how it interacts with the graph. This leaves significant gaps for a mutation 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 a single, efficient sentence with no wasted words. It's front-loaded with the core action and target, making it easy to parse quickly. Every word earns its place.

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

Completeness3/5

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

Given the tool's complexity (a mutation operation with no annotations) and the presence of an output schema, the description is incomplete. It lacks behavioral context (e.g., safety, effects) and usage guidance, though the output schema may cover return values. This is minimally adequate but with clear 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 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description doesn't need to add parameter details, and it doesn't introduce any confusion. Baseline is 4 for zero-parameter tools, as there's nothing to compensate for.

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 action ('Apply') and target ('all accepted suggestions to the graph'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'review_suggestion' or 'get_feedback_suggestions', which prevents a perfect score.

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 offers no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., needing suggestions from 'get_feedback_suggestions' first), exclusions, or how it relates to siblings like 'review_suggestion' or 'analyze_feedback'.

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

backfill_security_scansB

Backfill security scans for existing components.

Scans all components in the metadata store that don't have security data, or all components if force_rescan=True.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNo
safe_countYes
scanned_countYes
skipped_countYesAlready scanned (not force_rescan)
low_risk_countYes
high_risk_countYes
total_componentsYes
medium_risk_countYes
critical_risk_countYes

TDQS

B3.3/5.0
Behavior2/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 mentions scanning 'all components in the metadata store' and the batch processing nature ('Components to scan per batch' is in schema, not description). However, it doesn't disclose critical behavioral traits: whether this is a long-running operation, what permissions are required, whether it's destructive (e.g., overwrites existing data), rate limits, or error handling. For a tool that likely performs batch operations on a metadata store, this is a significant gap.

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 extremely concise: two sentences that directly state the purpose and key parameter effect. Every word earns its place with zero redundancy. It's front-loaded with the core purpose, followed by clarifying details. This is an excellent example of efficient communication.

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's complexity (batch processing of security scans), the description is incomplete. No annotations are provided to cover safety or behavioral aspects, and while an output schema exists (which helps), the description doesn't address critical context like what 'backfill' entails operationally, whether it's idempotent, or what happens during execution. For a tool that interacts with a metadata store and performs scans, more contextual information would be helpful.

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 0%, so the description must compensate. It explains the 'force_rescan' parameter's effect ('all components if force_rescan=True'), adding meaning beyond the schema's 'Rescan already-scanned components'. However, it doesn't mention the 'batch_size' parameter at all, leaving half the parameters undocumented. The description adds some value but doesn't fully compensate for the coverage gap.

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's purpose: 'Backfill security scans for existing components.' This specifies both the action (backfill security scans) and the target (existing components). It distinguishes from siblings like 'security_scan' (likely for new scans) and 'security_audit' (likely for analysis rather than scanning). However, it doesn't explicitly differentiate from all siblings, so it's not a perfect 5.

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 provides implied usage guidance: use when components lack security data or when force_rescan is needed. It mentions the 'force_rescan' parameter to control behavior. However, it doesn't explicitly state when to use this tool versus alternatives like 'security_scan' or 'security_audit', nor does it mention prerequisites or exclusions. This leaves some ambiguity for the agent.

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

check_dependenciesD

Check deps and conflicts.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
conflictsYes
all_componentsYes
dependencies_addedYes

TDQS

D1.6/5.0
Behavior1/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 of behavioral disclosure. 'Check deps and conflicts' reveals nothing about whether this is a read-only operation, whether it has side effects, what permissions are required, rate limits, or what happens when conflicts are detected. For a tool with no annotation coverage, this minimal description fails to provide essential behavioral context.

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

Conciseness3/5

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

The description is extremely concise at just three words, but this brevity comes at the cost of meaningful information. While it's front-loaded (the entire description is the first and only phrase), it's under-specified rather than efficiently informative. The structure is minimal but doesn't effectively communicate.

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

Completeness2/5

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

Given that this tool has 1 parameter with 0% schema coverage, no annotations, and an output schema exists (which reduces the need to describe return values), the description is still inadequate. It doesn't explain what the tool actually does, what inputs it expects, or when to use it. While the output schema might document return values, the description fails to provide the essential context needed to understand and use the tool effectively.

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?

Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The tool description 'Check deps and conflicts' adds no information about the single required parameter 'component_ids' or what format it expects. It doesn't explain what component IDs are, how to obtain them, or what the tool does with them. The description fails to compensate for the complete lack of schema documentation.

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

Purpose2/5

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

The description 'Check deps and conflicts' is vague and tautological - it essentially restates the tool name 'check_dependencies' without specifying what kind of dependencies or conflicts are being checked. It doesn't distinguish this tool from potential siblings like 'install_components' or 'security_audit' that might also involve dependency management. The description lacks a clear verb+resource combination that would make the purpose specific.

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

Usage Guidelines1/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. With siblings like 'install_components', 'security_audit', and 'search_components' that might relate to dependency management, there's no indication of when this specific dependency check is appropriate versus other tools. No context, prerequisites, or exclusions are mentioned.

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

clear_heal_failuresB

Clear all tracked failures from auto-heal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is destructive (likely yes, as it clears data), requires specific permissions, has side effects, or how it interacts with the auto-heal system, leaving significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, direct sentence that efficiently conveys the core action without any wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.

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 no parameters and an output schema exists, the description covers the basic purpose adequately. However, as a likely destructive operation with no annotations, it lacks details on permissions, effects, or integration with siblings like 'get_heal_status', making it minimally viable but incomplete for safe agent use.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, but it implies the tool operates on all failures without specifying scope, earning a baseline score for zero-param tools.

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 action ('Clear') and the target ('all tracked failures from auto-heal'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_heal_status' or 'security_audit', which might relate to failure tracking or healing processes, leaving some ambiguity about its unique role.

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 is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., after failures are detected), exclusions, or related tools like 'get_heal_status' for checking status before clearing, leaving the agent to infer usage context.

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

discover_reposB

Discover skill repositories from GitHub.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
reposYes
totalYes
new_countYesRepos not yet tracked

TDQS

B3/5.0
Behavior2/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 of behavioral disclosure. It only states what the tool does ('Discover skill repositories from GitHub') without mentioning any behavioral traits such as whether it's read-only, if it triggers background processes, rate limits, authentication needs, or what the discovery entails. This is insufficient for a tool with no annotation coverage.

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 a single, efficient sentence with no wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly. Every word earns its place by conveying the core action and source.

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 no parameters, an output schema exists, and no annotations, the description is minimally complete. However, it lacks details on what 'discover' means operationally (e.g., search, scan, list) and how it relates to siblings, which could be important for an agent to use it correctly. The output schema helps, but the description could provide more context.

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 0 parameters with 100% schema description coverage, so no parameter information is needed in the description. The description doesn't add parameter semantics, but this is acceptable given the lack of parameters. A baseline of 4 is appropriate as it doesn't need to compensate for any gaps.

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

Purpose3/5

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

The description states the tool's purpose ('Discover skill repositories from GitHub'), which is clear but vague. It specifies the action ('Discover') and source ('from GitHub'), but doesn't clarify what 'skill repositories' are or how this differs from sibling tools like 'list_tracked_repos' or 'poll_repos_now'. This makes it minimally adequate but lacking specificity.

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 is provided on when to use this tool versus alternatives. With siblings like 'list_tracked_repos' and 'poll_repos_now', the description doesn't indicate whether this is for initial discovery, ongoing monitoring, or other contexts. This leaves the agent without explicit or implied usage instructions.

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

get_component_detailC

Get full component info.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameYes
tagsYes
typeYes
token_costYes
descriptionYes
raw_contentYes
dependenciesYes

TDQS

C2.6/5.0
Behavior2/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 of behavioral disclosure. It states 'Get full component info', which implies a read-only operation, but does not specify whether this requires authentication, has rate limits, or what the output format entails. The description is minimal and fails to provide essential behavioral context beyond the basic action.

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 extremely concise with a single sentence, 'Get full component info.', which is front-loaded and wastes no words. While efficient, it may be overly brief given the tool's complexity, but it earns a high score for structure and lack of redundancy.

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 that there is an output schema (which should document return values), the description's minimalism is somewhat acceptable. However, with no annotations, low schema coverage, and a single parameter that lacks semantic explanation, the description is incomplete. It provides the basic action but misses crucial details about usage, behavior, and parameters, making it only minimally viable.

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?

The input schema has 0% description coverage, with only a parameter named 'component_id' documented without explanation. The description does not add any meaning beyond the schema; it does not clarify what a 'component' is, what 'full info' includes, or how the component_id should be formatted. With low schema coverage, the description fails to compensate for the lack of parameter details.

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

Purpose3/5

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

The description 'Get full component info' clearly indicates a retrieval action ('Get') and the target resource ('component info'), which establishes the basic purpose. However, it lacks specificity about what constitutes 'full component info' and does not differentiate this tool from sibling tools like 'search_components' or 'check_dependencies', making it vague in context.

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. It does not mention prerequisites, such as needing a component ID, or suggest when to choose this over other component-related tools like 'search_components'. Without any usage context or exclusions, the agent must infer this from the schema alone.

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

get_feedback_suggestionsB

Get pending edge suggestions from feedback analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure. It states 'Get pending edge suggestions' but doesn't clarify what 'pending' means (e.g., unprocessed, awaiting review), whether this is a read-only operation, if it requires specific permissions, or how the suggestions are formatted. For a tool with no annotations, this leaves significant behavioral 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 a single, efficient sentence with no wasted words. It is front-loaded with the core action and resource, making it easy to parse quickly. Every word contributes directly to conveying the tool's purpose.

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 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, it lacks context about the feedback analysis system, what 'edge suggestions' entail, or how this integrates with sibling tools. For a tool in a complex server with many siblings, more contextual information would be beneficial.

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 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics beyond what the schema provides. A baseline score of 4 is appropriate as it doesn't introduce confusion or omissions regarding parameters.

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 verb 'Get' and the resource 'pending edge suggestions from feedback analysis', making the purpose understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'analyze_feedback' or 'review_suggestion', which appear related to feedback processing. The purpose is specific but lacks sibling differentiation.

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. It doesn't mention prerequisites, context, or exclusions, and with sibling tools like 'analyze_feedback' and 'review_suggestion' present, there's no indication of how this tool fits into the workflow or when it should be preferred over others.

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

get_heal_statusB

Get auto-heal status and failures.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
failuresYes
healed_countYes
healable_countYes
total_failuresYes

TDQS

B3.2/5.0
Behavior2/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 mentions 'status and failures' but does not disclose behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, or what the output format entails. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It is front-loaded with the core action and resource, making it highly concise and well-structured for quick understanding.

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 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally complete. However, it lacks details on behavioral aspects and usage context, which are important for a tool that might interact with healing processes. The output schema helps, but the description could be more informative.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter details, which is appropriate, but it could have elaborated on implicit inputs or context. Baseline is 4 for zero parameters, as it adequately handles the lack of parameters.

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 verb 'Get' and the resource 'auto-heal status and failures', making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'clear_heal_failures' or 'sync_status', which could have related functions, so it misses full sibling differentiation.

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. With siblings like 'clear_heal_failures' and 'sync_status' that might relate to healing or status checks, there is no indication of context, prerequisites, or exclusions for usage.

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

get_outcome_reportC

Get overall outcome report with problematic components.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
total_componentsYes
frequently_removedYesComponents often removed by users
potential_conflictsYes(component_a, component_b, co_failure_count) tuples
problematic_componentsYesComponents with low success rates

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates a read operation ('Get') but doesn't mention permissions, rate limits, response format, or whether it's idempotent. For a report-fetching tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 a single, efficient sentence that directly states the tool's purpose. It's front-loaded with the core action and includes a key detail (problematic components), though it could be slightly more structured for clarity.

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 (which handles return values) and a simple parameterless input schema, the description is minimally adequate. However, for a report tool in a context with many siblings (like 'get_outcome_stats'), it lacks detail on scope, format, or integration points, making it incomplete for optimal agent use.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter information, but this is appropriate given the schema completeness. Baseline is 4 for zero parameters, as the description doesn't need to compensate for any gaps.

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

Purpose3/5

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

The description states the tool 'Get overall outcome report with problematic components' which provides a general purpose (retrieving a report) but is vague about what constitutes an 'outcome report' or 'problematic components'. It distinguishes from siblings like 'get_outcome_stats' by focusing on problematic components rather than statistics, but lacks specificity about the resource domain or exact verb meaning.

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 this tool versus alternatives like 'get_outcome_stats' or 'report_outcome' is provided. The description implies usage for obtaining reports with problematic components, but doesn't specify contexts, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.

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

get_outcome_statsC

Get outcome statistics for a component.

ParametersJSON Schema
NameRequiredDescriptionDefault
component_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
usage_countYes
component_idYes
success_rateYes
removal_countYes
install_failuresYes
install_successesYes

TDQS

C2.7/5.0
Behavior2/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 of behavioral disclosure. It only states the action ('Get outcome statistics') without detailing what 'outcome statistics' entails, how data is retrieved (e.g., real-time vs. cached), any rate limits, permissions required, or error handling. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It is front-loaded and appropriately sized for its purpose, making it easy to scan and understand quickly without unnecessary elaboration.

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's low complexity (1 parameter) and the presence of an output schema, the description is minimally adequate. However, with no annotations and low schema coverage, it lacks details on behavior, parameter meaning, and usage context, making it incomplete for fully informed tool selection and invocation.

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?

The input schema has 1 parameter with 0% description coverage, so the schema provides no semantic information. The description does not explain what 'component_id' represents, its format, or valid values, failing to compensate for the lack of schema documentation and leaving the parameter's meaning unclear.

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

Purpose3/5

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

The description states the tool's purpose as 'Get outcome statistics for a component,' which includes a verb ('Get') and resource ('outcome statistics for a component'), making it clear what it does. However, it does not distinguish this from sibling tools like 'get_outcome_report' or 'get_component_detail,' leaving ambiguity about how it differs from related tools.

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. It does not mention any context, prerequisites, or exclusions, such as when to choose 'get_outcome_stats' over 'get_outcome_report' or other sibling tools, leaving usage decisions unclear.

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

get_pipeline_statusB

Get discovery pipeline status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
min_scoreYes
heal_statusYes
max_new_reposYes
scout_cache_pathYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'gets' status, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, returns real-time or cached data, or what the output format entails. This leaves significant gaps for a status-checking 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 a single, clear sentence with no wasted words. It's front-loaded with the core action and resource, making it highly efficient and 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 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally complete. However, it lacks context about the discovery pipeline's nature or how this tool fits into workflows with siblings like 'run_discovery_pipeline', leaving room for improvement in guiding the 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?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param details, which is appropriate, earning a baseline score of 4 for adequately handling the lack of parameters.

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

Purpose3/5

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

The description 'Get discovery pipeline status' clearly states the verb ('Get') and resource ('discovery pipeline status'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'sync_status' or 'get_heal_status', which also retrieve status information for different resources, leaving some ambiguity about scope.

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. It doesn't mention prerequisites, timing (e.g., after running 'run_discovery_pipeline'), or exclusions, leaving the agent to infer usage from context alone.

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

ingest_repoB

Index a component repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsYes
components_foundYes
components_indexedYes
components_skippedNoUnchanged components skipped
components_deduplicatedNoDuplicates removed by entity resolution

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Index' which implies a processing operation, but doesn't specify whether this is a one-time or recurring task, what 'Index' entails (e.g., scanning files, extracting metadata), or any side effects like network usage or storage implications. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 (which handles return values) and the input schema provides good parameter coverage, the description's minimalism is partially acceptable. However, for a tool that performs 'Indexing'—a potentially complex operation—the lack of behavioral context and usage guidelines makes it incomplete for safe and effective use by an agent.

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 description provides no parameter information, but the input schema has 100% description coverage (since 'input' is a nested object with well-documented properties like 'repo_url' and 'incremental'). This meets the baseline score of 3, as the schema adequately compensates for the lack of param details in the description.

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 action ('Index') and resource ('a component repository'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'register_repo' or 'discover_repos', which might have overlapping repository-related functions.

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 is provided on when to use this tool versus alternatives like 'register_repo' or 'discover_repos'. The description lacks context about prerequisites, timing, or exclusions, leaving the agent without clear usage instructions.

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

install_componentsB

Install components to .claude/.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsYes
skippedYes
installedYes

TDQS

B3/5.0
Behavior2/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 of behavioral disclosure. It mentions installation to a directory but doesn't describe what happens during installation (e.g., whether it overwrites files, requires permissions, has side effects, or what the output looks like). For a mutation tool with zero annotation coverage, this leaves significant behavioral 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 extremely concise—a single sentence that directly states the action and target. There's no wasted verbiage, and it's front-loaded with the essential information, making it efficient and well-structured.

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 that there's an output schema (which reduces the need to describe return values) but no annotations and low schema coverage, the description is minimally adequate. It covers the basic purpose and target but lacks details on behavior, usage context, and parameter meanings, leaving room for improvement in completeness.

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 has 0% schema description coverage, but it compensates by implicitly indicating the 'target_dir' parameter ('.claude/') in the description. However, it doesn't explain 'component_ids' or their format. With only 1 parameter (a nested object with 2 sub-parameters), the description adds some value but doesn't fully clarify the semantics.

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

Purpose3/5

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

The description states the action ('Install components') and target location ('.claude/'), which provides a basic purpose. However, it doesn't specify what type of components these are or how this differs from sibling tools like 'check_dependencies' or 'search_components', making it somewhat vague rather than clearly distinguished.

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 offers no guidance on when to use this tool versus alternatives. There are multiple sibling tools related to components and dependencies (e.g., 'check_dependencies', 'search_components'), but the description doesn't indicate when this installation tool is appropriate or what prerequisites might be needed.

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

list_tracked_reposB

List all tracked repos.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
reposYes
totalYes

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure. It states what the tool does but fails to describe key traits: whether it's a read-only operation, if it requires authentication, what the output format looks like (though an output schema exists), or any rate limits. For a tool with zero annotation coverage, this is inadequate.

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 a single, efficient sentence with zero waste. It is front-loaded and gets straight to the point without unnecessary elaboration, making it easy for an agent to parse quickly.

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's simplicity (0 parameters, output schema provided), the description is minimally adequate. However, it lacks context about what 'tracked repos' means or how this fits with sibling tools, and with no annotations, it misses behavioral details. The output schema mitigates some gaps, but overall completeness is limited.

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 0 parameters, and the input schema has 100% description coverage (though empty). The description adds no parameter information, which is appropriate here. With no parameters to document, a baseline score of 4 is warranted as there's nothing to compensate for.

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 verb ('List') and resource ('tracked repos'), making the purpose immediately understandable. It distinguishes from siblings like 'discover_repos' or 'register_repo' by specifying 'tracked' repos, though it doesn't explicitly contrast them. The description avoids tautology by not merely restating the name.

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 'discover_repos' or 'sync_status'. It lacks any context about prerequisites, timing, or exclusions, leaving the agent to infer usage based on the name alone. This is a significant gap for a tool with many siblings.

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

poll_repos_nowB

Trigger immediate poll of all repos.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/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 mentions 'trigger immediate poll' which implies an action, but doesn't disclose behavioral traits such as whether this is a read-only or mutative operation, potential side effects, permissions required, or rate limits. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's action without any wasted words. It's front-loaded and appropriately sized for its purpose, making it highly concise and well-structured.

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 no parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, it lacks details on behavioral aspects like side effects or permissions, which are important for a tool that triggers an action, making it incomplete in context despite the structured data.

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 0 parameters, and the schema description coverage is 100%, so there's no need for parameter details in the description. The description doesn't add parameter semantics, but this is acceptable given the lack of parameters, aligning with the baseline for 0 params.

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 action ('trigger immediate poll') and resource ('all repos'), making the purpose specific and understandable. However, it doesn't differentiate from sibling tools like 'discover_repos' or 'sync_status', which might have overlapping or related functionality, so it doesn't achieve full distinction.

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. With siblings like 'discover_repos' and 'sync_status' that might involve repository operations, there's no indication of prerequisites, timing, or exclusions, leaving usage ambiguous.

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

register_repoC

Register a repo for auto-sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
nameYes
ownerYes
poll_enabledYes
last_ingestedNoISO timestamp of last ingestion
last_commit_shaNoSHA of last ingested commit
webhook_enabledYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a write operation ('Register') but doesn't specify permissions required, side effects, or what 'auto-sync' involves. This leaves critical behavioral traits undocumented, making it inadequate for a mutation 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 a single, clear sentence with no wasted words. It's front-loaded with the core action and purpose, making it efficient and easy to understand at a glance.

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

Completeness2/5

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

Given the tool's complexity as a mutation operation with no annotations, the description is insufficient. It doesn't explain what 'registering' entails, potential outcomes, or how it interacts with other tools. While an output schema exists, the description should provide more context for safe and effective use.

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 doesn't mention any parameters, but with only 1 parameter (a nested object) and 0% schema description coverage, it doesn't need to compensate heavily. The schema provides detailed descriptions for the nested properties, so the lack of param info in the description is acceptable, warranting a baseline score.

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

Purpose3/5

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

The description states the action ('Register') and resource ('a repo') with a purpose ('for auto-sync'), making the basic purpose clear. However, it lacks specificity about what 'auto-sync' entails and doesn't differentiate from sibling tools like 'unregister_repo' or 'sync_status', leaving room for ambiguity.

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 is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, such as whether the repo must be accessible or if authentication is needed, nor does it reference related tools like 'unregister_repo' or 'list_tracked_repos' for context.

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

report_outcomeC

Report a component outcome (used, removed, deprecated).

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/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 of behavioral disclosure. It states the tool reports outcomes but doesn't explain what 'reporting' entails—whether it's a write operation, sends notifications, updates a database, or has side effects like triggering workflows. For a tool with no annotations, this leaves critical behavioral traits undocumented.

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 extremely concise—a single sentence with no wasted words. It's front-loaded with the core purpose. While it may be too brief for completeness, it earns full marks for conciseness and structure as every word contributes directly to the tool's function.

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

Completeness2/5

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

Given the tool's complexity (reporting outcomes, which implies data mutation), no annotations, low schema coverage, and the presence of an output schema (which might cover return values), the description is incomplete. It doesn't address behavioral aspects, parameter meanings, or usage context, leaving significant gaps for the agent to understand how to use this tool effectively.

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?

The input schema has 1 parameter (a nested object with 3 sub-parameters) and 0% schema description coverage, meaning schema descriptions are minimal (e.g., 'Component ID', 'Outcome type'). The description doesn't add any parameter semantics beyond the schema—it doesn't explain what 'component_id' refers to, how 'outcome' values affect the system, or what 'context' is used for. With low schema coverage, the description fails to compensate.

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

Purpose3/5

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

The description states the tool's purpose as 'Report a component outcome (used, removed, deprecated)', which is clear but vague. It specifies the verb 'report' and resource 'component outcome', but doesn't distinguish it from sibling tools like 'get_outcome_report' or 'get_outcome_stats'. The purpose is understandable but lacks specificity about what reporting entails.

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. It doesn't mention prerequisites, timing, or compare it to siblings such as 'get_outcome_report' (which likely retrieves reports) or 'analyze_feedback' (which might involve outcomes). Without any usage context, the agent must infer when this tool is appropriate.

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

review_suggestionC

Review a pending edge suggestion (accept or reject).

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states 'accept or reject' implying a mutation, but doesn't disclose permissions needed, side effects (e.g., if rejection deletes the suggestion), or response format. This is inadequate for a tool that likely modifies data.

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 a single, efficient sentence with zero wasted words. It front-loads the core action ('Review a pending edge suggestion') and adds essential detail ('accept or reject') without redundancy, making it highly concise and well-structured.

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

Completeness2/5

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

Given a mutation tool with no annotations, 0% schema coverage, and an output schema (which helps), the description is incomplete. It lacks behavioral context (e.g., auth needs, side effects), parameter explanations, and usage guidance, leaving significant gaps for effective tool 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 description coverage is 0%, so the description must compensate but adds no parameter details. It mentions 'accept or reject' which hints at the 'accept' parameter, but doesn't explain 'source_id', 'target_id', or 'suggestion_type'. Baseline is 3 as it partially addresses one parameter without covering others.

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 action ('Review') and the resource ('a pending edge suggestion'), specifying that it involves accepting or rejecting. It distinguishes from siblings like 'get_feedback_suggestions' (which likely lists suggestions) by indicating a decision-making action, though it doesn't explicitly name alternatives.

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. It mentions 'pending edge suggestion' but doesn't specify prerequisites (e.g., after fetching suggestions) or contrast with tools like 'apply_feedback_suggestions' for batch operations, leaving usage context unclear.

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

run_discovery_pipelineD

Run the discovery and ingestion pipeline.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoError messages
failed_countYesFailed to ingest
healed_countYesPrevious failures healed
skipped_countYesSkipped (dry-run or meta-list)
ingested_countYesSuccessfully ingested
new_repos_countYesRepos not yet tracked
discovered_countYesTotal repos discovered
duration_secondsYesPipeline run duration

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states the action 'run' without details on permissions, side effects, rate limits, or what 'discovery and ingestion' entails. This is inadequate for a tool that likely involves significant operations, leaving the agent unaware of critical behaviors.

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 a single, direct sentence with no wasted words, making it highly concise. It is front-loaded with the core action, though this brevity contributes to its lack of detail in other dimensions.

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

Completeness1/5

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

Given the tool's complexity (involving discovery and ingestion pipelines), no annotations, low schema coverage, and the presence of an output schema, the description is severely incomplete. It does not explain what the tool does, when to use it, its behavior, or parameter meanings, failing to provide adequate context for an agent.

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?

The description mentions no parameters, while the input schema has one parameter ('input') with nested properties (dry_run, min_score, max_new_repos) and 0% schema description coverage. The description fails to add any semantic meaning beyond the schema, not compensating for the low coverage, which leaves parameters poorly understood.

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

Purpose2/5

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

The description 'Run the discovery and ingestion pipeline' restates the tool name 'run_discovery_pipeline' with minimal elaboration, making it tautological. It specifies the verb 'run' and the resource 'discovery and ingestion pipeline', but lacks detail on what this pipeline actually does or how it differs from sibling tools like 'discover_repos' or 'ingest_repo', leaving the purpose vague.

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

Usage Guidelines1/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. With sibling tools like 'discover_repos' and 'ingest_repo' that seem related, there is no indication of context, prerequisites, or exclusions, making it misleading for an agent to choose appropriately without additional information.

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

search_componentsC

Search components by task.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
conflictsYes
componentsYes
total_tokensYes
suggested_typesNoSuggested component types
abstraction_levelNohigh, medium, or low

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Search components by task' gives minimal insight into what the tool actually does - it doesn't specify whether this is a read-only operation, what permissions might be required, whether it's paginated or rate-limited, or what format the results take. The description provides almost no behavioral context beyond the basic action implied by the name.

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 maximally concise - a single 4-word phrase. There's zero waste or redundancy. While this conciseness comes at the cost of completeness, the description itself is perfectly structured and front-loaded with the essential action.

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

Completeness2/5

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

For a search tool with 3 parameters, no annotations, and sibling tools that might overlap in functionality, this description is inadequate. While an output schema exists (which reduces the need to describe return values), the description fails to provide necessary context about what 'components' are, how the search works, or when to use this versus other component-related tools. The minimal description leaves too many questions unanswered for effective tool selection.

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?

The description mentions 'by task' which hints at the 'query' parameter's purpose, but with 0% schema description coverage and 3 parameters nested within the 'input' object (query, top_k, component_type), this minimal hint is insufficient. The description doesn't explain what 'task description' means for the query, what 'component_type' filtering entails, or how 'top_k' affects results. It adds marginal value but doesn't compensate for the schema coverage gap.

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

Purpose2/5

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

The description 'Search components by task' is tautological - it essentially restates the tool name 'search_components' with minimal elaboration. While it specifies 'by task' as a search criterion, it doesn't clarify what 'components' are in this context or what kind of search results to expect. Compared to siblings like 'get_component_detail' or 'install_components', the differentiation is minimal.

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 is provided about when to use this tool versus alternatives. There are multiple sibling tools that might relate to components (get_component_detail, install_components) and search/discovery operations (discover_repos, run_discovery_pipeline), but the description offers no context about when this specific search tool is appropriate versus those alternatives.

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

security_auditC

Audit all indexed components for security vulnerabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
safe_countYes
top_findingsYesMost common finding patterns
scanned_countYes
low_risk_countYes
high_risk_countYes
total_componentsYes
medium_risk_countYes
flagged_componentsYesComponent IDs at or above threshold
critical_risk_countYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'Audit all indexed components' but doesn't clarify what an audit entails (e.g., is it read-only, does it modify data, does it require specific permissions, what are rate limits, or what happens if vulnerabilities are found?). This leaves critical behavioral traits unspecified for a security-related 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 a single, efficient sentence that front-loads the core action and target without unnecessary words. It's appropriately sized for a simple tool, with no wasted language.

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

Completeness2/5

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

Given the complexity of a security audit tool with no annotations, 1 parameter (poorly documented in schema), and an output schema (which helps but isn't described), the description is incomplete. It lacks details on behavior, usage context, and parameter meaning, making it inadequate for an agent to fully understand the tool's role 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?

The description doesn't mention any parameters, while the input schema has 1 parameter with 0% description coverage (only a basic description in the schema). Since schema coverage is low, the description should compensate but doesn't, leaving the 'risk_level' parameter's role unclear. However, with only 1 parameter, the baseline is slightly higher, but the description adds no value beyond the schema.

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

Purpose3/5

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

The description states the action ('Audit') and target ('all indexed components for security vulnerabilities'), which provides a basic purpose. However, it's vague about scope and doesn't distinguish from sibling tools like 'security_scan' or 'backfill_security_scans', leaving ambiguity about when to use this specific audit tool versus alternatives.

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 is provided on when to use this tool versus alternatives such as 'security_scan' or 'backfill_security_scans'. The description implies a broad audit but doesn't specify prerequisites, timing, or exclusions, leaving the agent with no clear usage context.

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

security_scanB

Scan a component for security vulnerabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
is_safeYesTrue if no significant vulnerabilities found
findingsNo
risk_levelYessafe, low, medium, high, or critical
risk_scoreYes0-100 risk score
has_scriptsNoContains executable scripts
component_idYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Scan') but doesn't reveal whether this is a read-only operation, its side effects (e.g., if it logs or triggers alerts), performance characteristics, or authentication needs. This is a significant gap for a tool that likely interacts with security systems.

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 extremely concise at one sentence with zero waste. It's front-loaded with the core action and purpose, making it easy to parse quickly.

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's moderate complexity (security scanning), no annotations, and an output schema exists (which reduces need to describe returns), the description is incomplete. It covers the basic purpose but lacks behavioral details and parameter context, making it minimally adequate but with clear gaps for effective agent use.

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 schema description coverage is 0%, so the description must compensate, but it doesn't mention any parameters. The schema defines one required parameter 'component_id', but the description adds no semantic context about what a component is or how to identify it, leaving the agent reliant solely on the schema.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Scan') and resource ('a component'), specifying the goal is for 'security vulnerabilities'. It distinguishes from some siblings like 'security_audit' by focusing on scanning rather than auditing, though the distinction isn't explicitly articulated.

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 is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, timing, or how it differs from similar tools like 'security_audit' or 'check_dependencies', leaving the agent to infer usage context.

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

start_sync_serverB

Start webhook server and poller.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/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 states the action ('Start') but does not disclose behavioral traits such as whether this is a long-running process, if it requires specific permissions, what happens on failure, or how it interacts with the 'webhook server and poller' (e.g., startup time, resource usage). This is inadequate for a tool that likely initiates system services.

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 a single, efficient sentence with no wasted words. It is front-loaded with the core action and resources, making it easy to parse quickly.

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's complexity (starting servers and pollers) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and a potentially state-changing operation, it lacks details on behavior, side effects, or integration with siblings like 'stop_sync_server', leaving gaps in understanding.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter details, which is acceptable here. A baseline of 4 is appropriate as it avoids redundancy and the tool has no inputs to explain.

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

Purpose3/5

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

The description 'Start webhook server and poller' specifies the action ('Start') and the target resources ('webhook server and poller'), which is clear. However, it does not distinguish this tool from its sibling 'stop_sync_server' in terms of purpose, nor does it explain what 'sync' entails in this context, leaving some ambiguity.

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. It does not mention prerequisites (e.g., server state), exclusions, or relate to sibling tools like 'stop_sync_server' or 'sync_status', leaving the agent to infer usage context.

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

stop_sync_serverB

Stop webhook server and poller.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without disclosing behavioral traits like whether this is reversible, if it requires specific permissions, what happens to ongoing processes, or any side effects. It's minimal and lacks critical operational context.

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 extremely concise—a single, clear sentence with no wasted words. It's front-loaded with the core action and target, making it efficient and 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 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, as a control tool (stopping a server), it lacks context about effects, reversibility, or integration with sibling tools like 'start_sync_server', leaving gaps in operational understanding.

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 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and it appropriately doesn't mention any, earning a baseline high score for this dimension.

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 action ('Stop') and the target resources ('webhook server and poller'), making the purpose immediately understandable. However, it doesn't differentiate from its sibling 'start_sync_server' beyond the obvious verb difference, missing an opportunity to clarify their relationship.

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 is provided on when to use this tool versus alternatives or what conditions might warrant its use. The description merely states what it does without context about appropriate scenarios or prerequisites.

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

sync_statusB

Get sync system status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
webhook_portYes
tracked_reposYes
polling_enabledYes
poll_interval_secondsYes
webhook_server_runningYes

TDQS

B3/5.0
Behavior2/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 of behavioral disclosure. It only states the action ('Get') without detailing what 'status' includes, whether it's real-time or cached, error handling, or any operational constraints like rate limits. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is extremely concise with a single sentence, 'Get sync system status,' which is front-loaded and wastes no words. It efficiently conveys the core purpose without unnecessary elaboration.

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's simplicity (0 parameters, output schema exists), the description is minimally adequate. However, with no annotations and a generic purpose, it lacks depth about what 'sync system status' entails or how it differs from other status tools, making it incomplete for full contextual understanding.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter information, but this is acceptable given the lack of parameters, aligning with the baseline for zero parameters.

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

Purpose3/5

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

The description 'Get sync system status' clearly states the action (get) and resource (sync system status), making the purpose understandable. However, it lacks specificity about what 'sync system' refers to and doesn't distinguish this tool from siblings like 'get_heal_status' or 'get_pipeline_status', which also retrieve status information for different systems.

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. It doesn't mention prerequisites, context, or exclusions, nor does it reference sibling tools that might handle related status checks, leaving the agent without usage direction.

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

unregister_repoB

Unregister a repo from auto-sync.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is destructive (likely yes, as it removes auto-sync), requires specific permissions, has side effects, or what the output includes (though an output schema exists). This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words, making it easy to parse. It's front-loaded with the core action, which is ideal for quick understanding.

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's complexity (a mutation operation with no annotations) and the presence of an output schema (which handles return values), the description is minimally adequate. However, it lacks details on behavioral traits and usage context, making it incomplete for safe and effective use without additional inference.

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 description adds no parameter information beyond the schema, which has 0% description coverage (parameters are documented but without semantic context). Since schema coverage is low, the description doesn't compensate by explaining what 'owner' and 'name' mean in this context, but it doesn't contradict the schema either, so it meets the baseline.

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

Purpose4/5

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

The description clearly states the action ('Unregister') and resource ('a repo from auto-sync'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'stop_sync_server' or 'list_tracked_repos', which could involve related sync operations, so it doesn't reach the highest score.

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. It doesn't mention prerequisites (e.g., if the repo must be registered first), exclusions, or compare to siblings like 'register_repo' or 'stop_sync_server', leaving usage context unclear.

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. 27 tool updatesv0.1.0
    • First observedanalyze_feedback
    • First observedapply_feedback_suggestions
    • First observedbackfill_security_scans
    • First observedcheck_dependencies
    • First observedclear_heal_failures
    • First observeddiscover_repos
    • First observedget_component_detail
    • First observedget_feedback_suggestions
    • First observedget_heal_status
    • First observedget_outcome_report
    • First observedget_outcome_stats
    • First observedget_pipeline_status
    • First observedingest_repo
    • First observedinstall_components
    • First observedlist_tracked_repos
    • First observedpoll_repos_now
    • First observedregister_repo
    • First observedreport_outcome
    • First observedreview_suggestion
    • First observedrun_discovery_pipeline
    • First observedsearch_components
    • First observedsecurity_audit
    • First observedsecurity_scan
    • First observedstart_sync_server
    • First observedstop_sync_server
    • First observedsync_status
    • First observedunregister_repo

TDQS

C2.7/5.0

Scored across 27 tools

Disambiguation3/5

Most tools have distinct purposes, but some overlap exists that could cause confusion. For example, 'security_scan' and 'security_audit' both handle security checks, and 'run_discovery_pipeline' overlaps with 'discover_repos' and 'ingest_repo'. Descriptions help clarify, but agents might misselect between related tools.

Naming Consistency4/5

Tool names follow a consistent snake_case verb_noun pattern throughout, such as 'analyze_feedback' and 'get_component_detail'. There are minor deviations like 'backfill_security_scans' using plural 'scans' while others use singular nouns, but overall the naming is predictable and readable.

Tool Count2/5

With 27 tools, the count is too high for the server's apparent scope of skill retrieval and management. This many tools suggests fragmentation or redundancy, making it heavy for agents to navigate and likely including overlapping functionalities that could be consolidated.

Completeness4/5

The tool set covers a broad range of operations for skill retrieval, including discovery, ingestion, security, feedback, and sync management. Minor gaps exist, such as no explicit tool for updating component metadata or handling errors in detail, but core workflows are well-supported with CRUD-like operations.

Related MCP Connectors