Error monitoring and triage MCP server for Rails applications
Rails Informant demonstrates solid tool definition quality with consistent naming patterns, comprehensive parameter schemas, and detailed descriptions. All 14 tools follow verb_noun naming conventions (get_, list_, delete_, mark_, resolve_, etc.). Tool descriptions are well-crafted (averaging ~120 chars) and explain WHAT the tool does and WHEN to use it. Parameter schemas are fully typed with descriptions for all inputs. However, output schemas are not formally documented in the source code, responses are shaped as JSON text rather than structured MCP Response objects with explicit field definitions. Error handling is present but generic (catches Client::Error with message-only responses). The server includes comprehensive instructions guiding agent workflows, which partially compensates for missing output documentation. Tool composition is excellent, each tool has a single responsibility, and chaining is well-designed (mark_fix_pending → verify_pending_fixes → resolve_error). No security vulnerabilities detected (config/token injection via server_context, not parameters). Naming is context-specific and avoids ambiguity (e.g., list_errors vs list_occurrences vs get_error are clearly distinguished). The main gaps are: (1) no explicit output schema definitions in tool registrations, (2) error responses lack recovery guidance or categorization, (3) no confirmation patterns for destructive operations (delete_error, mark_duplicate).
Add notes/annotations to an error group for context and diagnosis
Permanently delete an error group (irreversible action)
Retrieve detailed information about a specific error group including up to 10 recent occurrences
Get overview status counts of errors by status and top unresolved errors
Mark an error group as ignored (not actionable)
List all configured Rails environments
List error groups with filtering by status, error class, controller action, job class, severity, and search query
Output schemas are not formally documented. Tool responses are shaped as JSON text (via text_response/paginated_text_response) rather than explicit structured output schemas in tool definitions. This forces LLMs to parse unstructured text responses, risking extraction errors and context waste.
Error handling lacks recovery guidance. The error_response helper returns only a message string without categorizing errors as retryable, user-fixable, or fatal, or suggesting next steps (e.g., 'User not found. Try search_users()' or 'Rate limit hit. Retry in 30s').
Destructive operations (delete_error, mark_duplicate) lack confirmation or dry-run patterns. An agent could irreversibly delete an error group or consolidate duplicates without explicit confirmation, risking data loss.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Paginate through all occurrences of a specific error group
Mark an error group as a duplicate of another error group
Mark an error as fix_pending with commit SHAs and optional PR URL for deployment tracking
Notify the system of a deployment to auto-resolve stale errors (errors not seen in >1 hour)
Reopen a previously resolved or ignored error group
Mark an error group as resolved
Check deployed fixes by verifying git ancestry to confirm deployed fixes and auto-resolve verified errors
Pagination meta information (page, per_page, has_more) is embedded in text responses rather than returned as structured metadata. LLMs cannot reliably extract pagination state to drive multi-page workflows without text parsing.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in source. While risk classifications are documented in the tool list (READ_ONLY, WRITE, DESTRUCTIVE), these should be formally declared in tool metadata per the current MCP spec.