{
  "markdown": "# agentvet-mcp\n\n**MCP server for [`@mukundakatta/agentvet`](https://www.npmjs.com/package/@mukundakatta/agentvet).** Lets Claude Desktop, Cursor, Cline, Windsurf, Zed, or any other MCP client validate LLM-generated tool-call args before execution and produce LLM-friendly retry messages when something's wrong.\n\n```bash\nnpx -y @mukundakatta/agentvet-mcp\n```\n\nThree tools:\n\n- **`validate_tool_args`** — check args against a small shape spec; returns `{ valid, error?, retry_hint? }` where `retry_hint` is a ready-to-send LLM feedback message.\n- **`lint_tool_definition`** — sanity-check a tool definition for common mistakes that hurt LLM tool-use accuracy.\n- **`generate_retry_message`** — given a validation error, build the canonical LLM-facing retry message using agentvet's `ToolArgError.toLLMFeedback()` formatting.\n\n## Add to your client\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"agentvet\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mukundakatta/agentvet-mcp\"]\n    }\n  }\n}\n```\n\nSame shape for Cursor (`~/.cursor/mcp.json`), Cline, Windsurf, Zed.\n\n## Tool examples\n\n**`validate_tool_args`:**\n\n```json\n{\n  \"tool_name\": \"send_email\",\n  \"args\": { \"to\": \"a@b.com\" },\n  \"shape\": { \"to\": \"string\", \"subject\": \"string\", \"body\": \"string\" }\n}\n```\n\nReturns:\n\n```json\n{\n  \"valid\": false,\n  \"error\": \"missing required field: subject\",\n  \"retry_hint\": \"send_email rejected your args: missing required field: subject. Please call again with the corrected arguments.\"\n}\n```\n\n**`lint_tool_definition`:**\n\n```json\n{\n  \"tool\": {\n    \"name\": \"BadName\",\n    \"inputSchema\": { \"type\": \"object\", \"properties\": { \"x\": { \"type\": \"string\" } } }\n  }\n}\n```\n\nReturns warnings about non-snake_case name, missing description, missing field descriptions, and no required fields.\n\n**`generate_retry_message`:**\n\n```json\n{\n  \"tool_name\": \"send_email\",\n  \"validation_error\": \"missing required field: subject\",\n  \"attempted_args\": { \"to\": \"a@b.com\" }\n}\n```\n\nReturns the canonical retry feedback string the runtime callers see — so you can prepare retry text outside the live agent loop.\n\n## Why a separate MCP server\n\n`@mukundakatta/agentvet` is a zero-dependency JavaScript library. This MCP server makes its validation primitives accessible from any MCP-aware AI assistant. Useful for quickly auditing a registry of tools, or asking the assistant \"is this args object valid for my `send_email` tool?\" without leaving the chat.\n\nFor runtime arg validation in your agent loop, use `@mukundakatta/agentvet` directly inside your Node process (it wraps your tool fn and throws `ToolArgError` synchronously).\n\n## Sibling MCP servers\n\nPart of the agent-stack series:\n\n- [`@mukundakatta/agentfit-mcp`](https://www.npmjs.com/package/@mukundakatta/agentfit-mcp) — *Fit it.*\n- [`@mukundakatta/agentguard-mcp`](https://www.npmjs.com/package/@mukundakatta/agentguard-mcp) — *Sandbox it.*\n- [`@mukundakatta/agentsnap-mcp`](https://www.npmjs.com/package/@mukundakatta/agentsnap-mcp) — *Test it.*\n- [`@mukundakatta/agentvet-mcp`](https://www.npmjs.com/package/@mukundakatta/agentvet-mcp) — *Vet it.* (this)\n- [`@mukundakatta/agentcast-mcp`](https://www.npmjs.com/package/@mukundakatta/agentcast-mcp) — *Validate it.*\n\n## License\n\nMIT\n",
  "bytes": 3348,
  "sha": "69aca95a86704945dfb766ef6a397908347d787616ce511884bb05387e5a3ba0",
  "repo_slug": "mukundakatta/agentvet-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mukundakatta_agentvet_c5cde055/readme"
}