A Go-based framework for building, managing, and orchestrating MCP (Model Context Protocol) tools and agents. Provides tool registration, dependency management, and execution capabilities.
Scoring was not performed
6 tools (GetTools, GetToolsForAgent, RegisterTool, ValidateAgentRequirements, GetToolNames, AddProvider, RemoveProvider) have NO visible input schema. Parameters are described only as vague object types without field documentation. An LLM cannot infer what fields to pass.
ExecuteTool and RegisterTool accept generic 'object' or 'input' parameters without documenting required fields, types, or valid values. This forces LLMs to guess payload structure.
No output schemas documented for any tool. LLMs cannot plan chained calls or extract returned IDs when the response structure is unknown.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 20 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
Tool descriptions are generic and under-optimized for LLM selection. E.g., 'Retrieves a tool by ID' (18 chars) lacks context about when to use GetTool vs GetToolByName. Baseline is 50-200 chars for LLM-friendly descriptions.
UpdateTool's 'updates' parameter is described as 'Map of fields to update' without specifying which fields are mutable or their types. This is too vague for agent planning.
No error handling guidance provided. Tools do not describe failure modes, retry strategies, or recovery paths. E.g., what happens if ExecuteTool times out? Should the agent retry or give up?
DeleteTool is destructive but the description does not warn agents of irreversibility. No dry-run or confirmation mechanism documented.
ListTools and SearchTools accept limit/offset but no maximum is documented. Agents could request 10,000 results, causing memory/latency issues.
ExecuteTool parameter 'input' is documented as 'Tool input' (generic) without specifying format (JSON string? object? file path?). This ambiguity will cause tool invocations to fail.