Provides complete CapRover management through Model Context Protocol, enabling app creation, deployment, configuration, and monitoring
Four tools with complete input schemas and descriptions, but significant gaps in output documentation, error handling, and parameter clarity. All tools follow verb_noun naming (caprover_*). Descriptions are present (avg ~80 chars) but lack actionable context for LLM selection. No output schemas documented. Parameters lack constraints (enums, ranges, format specs). Error responses are generic success/failure dicts with no recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being WRITE operations.
Create a new CapRover app
Create and deploy an app from a Docker image
Deploy a one-click app from CapRover's registry
Update an existing app configuration
No output schemas documented. Tools return generic {success, error, app_name} dicts. LLMs cannot plan downstream calls or extract structured data. Missing: what fields are returned on success? What IDs can be chained to other tools?
All four tools are WRITE operations (create, deploy, update) but lack tool annotations. No destructiveHint or idempotentHint declared. LLMs cannot determine if tools are safe to retry or have irreversible side effects.
Error responses provide no recovery guidance. Generic 'success: false, error: str(e)' returns raw exception text. LLMs cannot determine if error is retryable, user-fixable, or fatal. No actionable next steps.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Parameters lack constraints. 'app_name' has no length/format spec. 'image_name' accepts any string (should validate Docker image format). 'instance_count' has no min/max bounds. 'port_mapping' is free-form string with no format guidance.
Tool descriptions lack WHEN-to-use context. 'Create a new CapRover app' does not explain when to call this vs deploy_app_from_image or deploy_oneclick_app. LLMs cannot disambiguate between similar tools.