MCP server exposing 45 product compliance skills (cosmetics, food, electronics, toys, textiles, supplements, medical devices, and more) as native MCP resources, prompts, and tools.
Three well-named, verb-prefixed tools (list_skills, find_skill, read_skill) with clear, actionable descriptions (120 - 180 chars). All tools have complete JSON Schema input definitions with typed parameters and descriptions. Schemas include proper constraints (minLength, maximum, integer, positive). Output structure is documented via structuredContent returns. However, output schemas are not formally documented in tool metadata, and error handling lacks recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all three being read-only operations.
Given a natural-language question or task, return the top compliance skills most likely to help. Use this before pulling skill content with `read_skill`.
List the available product compliance skills. Optionally filter by `vertical` (e.g. "cosmetics", "food") or a free-text `query` over name and description.
Return the full SKILL.md content (frontmatter + Markdown body) for a single skill identified by its exact name.
Output schemas not formally documented in tool metadata. Callers must infer structure from code (structuredContent returns JSON, read_skill returns {name, description, content}). LLMs cannot plan downstream operations without explicit output schema declarations.
No tool annotations despite all three tools being read-only. Missing readOnlyHint metadata prevents clients from optimizing caching, retry logic, and safety guarantees. Current spec (2026-07-28) expects tool annotations for safety classification.
Error handling lacks recovery guidance. No documented error cases, retryability classification, or actionable error messages. E.g., if read_skill receives an invalid skill name, the response should suggest 'Skill not found. Call list_skills() to see available skills.'
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2025-06-18+ | v2 |
find_skill description does not explain when to use it vs list_skills. Both discover skills, but find_skill uses semantic search (NLP-based) while list_skills filters by metadata. This distinction should be explicit to guide LLM tool selection.
list_skills limit parameter defaults to 'all matches' but lacks a documented upper bound. Returning 45+ skills in one response risks context window exhaustion. Should cap at 20 - 50 and document pagination strategy.