mcp-htmx has 7 tools with basic descriptions but critical gaps in schema completeness, parameter documentation, and error handling. Most tools lack input parameter descriptions, e.g., htmx_events has 'limit' and 'filter' with types but no guidance on valid ranges or use cases. Output schemas are not documented. Error responses are generic ('Cannot connect to Chrome') without recovery guidance. Tool names follow verb_noun convention (htmx_check, htmx_events) but descriptions are terse (10-50 chars, below the 50-200 char baseline for LLM optimization). No tool declares permissions, audit trails, or idempotency. The htmx_trigger tool accepts a 'selector' parameter with no validation or format guidance, inviting CSS injection risks.
Check if htmx is loaded on page and get version.
Find all htmx-enabled elements on page.
Get captured htmx errors.
Get captured htmx events (beforeRequest, afterSwap, etc.).
Navigate to a URL and inject htmx interceptor.
Get htmx internal state.
Trigger an event on an htmx element.
Parameter descriptions missing or incomplete. htmx_events 'limit' and 'filter' have types but no guidance on valid ranges, defaults, or use cases. htmx_trigger 'selector' has no format constraints or validation hints.
Output schemas not documented. Tools return JSON but LLMs cannot infer structure (e.g., does htmx_events return array of objects? What fields?). No documentation of return types or field meanings.
Error handling lacks recovery guidance. Errors like 'Cannot connect to Chrome on port 9222' do not tell the LLM what to do next (retry? check prerequisites? call a different tool?). No error categorization (retryable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
Security: htmx_trigger accepts CSS selector as free-form string with minimal escaping validation. js_escape() is applied but no validation that selector is a valid CSS selector. Malformed selectors could cause unexpected behavior or injection.
Tool descriptions are terse (10-50 chars, below 50-200 char baseline). 'Check if htmx is loaded on page and get version' lacks context on when to call this vs other tools, what the response structure is, or what to do if htmx is not loaded.