Skip to main content
Glama
temurkhan13

openclaw-skill-vetter-mcp

by temurkhan13

flagged_skills_report

Identifies skills requiring review or blocking, sorted by highest risk score. Focuses only on items needing immediate attention.

Instructions

Returns just the REVIEW + BLOCK skills with their findings, sorted by risk_score descending. Use this when you only care about what needs attention.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Core implementation of flagged_skills_report — vets all skills, filters to BLOCK/REVIEW, sorts by risk_score descending, returns FlaggedSkillsReport.
    def flagged_skills_report(skills: list[Skill], directory: str) -> FlaggedSkillsReport:
        """List of REVIEW + BLOCK skills with their findings."""
        reports = [vet_skill(s) for s in skills]
        flagged = [r for r in reports if r.risk_level in (RiskLevel.BLOCK, RiskLevel.REVIEW)]
        flagged.sort(key=lambda r: r.risk_score, reverse=True)
        return FlaggedSkillsReport(
            captured_at=datetime.now(UTC),
            directory=directory,
            flagged=flagged,
        )
  • FlaggedSkillsReport Pydantic model schema — captured_at, directory, flagged (list of VetReport).
    class FlaggedSkillsReport(BaseModel):
        """List of currently-flagged skills with their top findings."""
    
        model_config = ConfigDict(frozen=True)
    
        captured_at: datetime
        directory: str
        flagged: list[VetReport]
        """REVIEW + BLOCK skills, sorted risk-score descending."""
  • Tool registration with name, description, and inputSchema in the list_tools handler.
    Tool(
        name="flagged_skills_report",
        description=(
            "Returns just the REVIEW + BLOCK skills with their findings, sorted by "
            "risk_score descending. Use this when you only care about what needs attention."
        ),
        inputSchema={"type": "object", "properties": {}, "required": []},
    ),
  • Server call_tool dispatcher — calls flagged_skills_report(skills, directory) when tool name matches.
    if name == "flagged_skills_report":
        skills = await backend.get_skills()
        directory = await backend.get_directory()
        return _serialize(flagged_skills_report(skills, directory))
  • Resource handler for skill-vetter://flagged URI — also calls flagged_skills_report for the resource endpoint.
    if uri_s == "skill-vetter://flagged":
        skills = await backend.get_skills()
        directory = await backend.get_directory()
        return flagged_skills_report(skills, directory).model_dump_json(indent=2)
Behavior4/5

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

No annotations exist, so description fully bears transparency burden. Clearly states it returns a filtered subset of skills sorted by risk_score, with no side effects mentioned. Sufficient for a read-only report.

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?

Single sentence, front-loaded with purpose. Every word serves a purpose; no unnecessary elaboration.

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

Completeness4/5

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

Description covers return type and sorting. Lacks detail on what 'findings' entail, but given no output schema and zero parameters, it is functionally complete for selecting and invoking.

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

Parameters4/5

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

No parameters in schema, so description does not need to add parameter details. Baseline 3, but the clarity of the tool's function elevates it to 4.

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

Purpose5/5

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

Description explicitly states it returns REVIEW and BLOCK skills with findings sorted by risk_score descending. Clear verb and resource, and distinguishes from sibling tools by focusing on what needs attention.

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

Usage Guidelines4/5

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

Provides direct usage guidance: 'Use this when you only care about what needs attention.' Implicitly suggests not use when full overview is needed, but does not explicitly name alternatives.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/temurkhan13/openclaw-skill-vetter-mcp'

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