Core Hot language runtime, compiler, storage, and package support with MCP (Model Context Protocol) tool integration for exposing Hot functions as MCP-compliant tools
This MCP server has severe definition quality issues across all dimensions. Of 10 tools, 6 are HTTP handler functions (mcp_handler, mcp_handler_domain, mcp_sse_handler, mcp_sse_handler_domain, mcp_http_sse_messages_handler, mcp_http_sse_messages_handler_domain) that appear to be internal routing/transport handlers rather than legitimate user-facing tools. The 4 demo tools (demo/search, demo/a, demo/b, demo/ping) are defined only in test files (tool_schema_extraction.rs), not in production code, indicating they are test fixtures. Critically: (1) Parameter descriptions are almost entirely missing across all tools; (2) Return/output schemas are completely undocumented; (3) Tool descriptions are minimal or generic ('MCP desc' for demo/ping, none for demo/a and demo/b); (4) No evidence of error handling patterns or recovery guidance; (5) The HTTP handlers expose internal routing parameters (org_slug, env_name, service) as tool inputs, which violates the principle that tools should expose user-facing intent, not API plumbing; (6) No idempotency or confirmation patterns for WRITE tools (mcp_handler, mcp_handler_domain, mcp_http_sse_messages_handler, mcp_http_sse_messages_handler_domain). The server conflates transport routing with tool definitions, these handler functions should not be exposed as tools at all; they are implementation details of the MCP transport layer.
MCP desc
Search the index for matching docs.
HTTP POST handler for MCP tool invocation at /mcp/{org_slug}/{env_name}/{service}
HTTP POST handler for MCP tool invocation via custom domain at /mcp/{service}
HTTP POST handler for MCP HTTP+SSE transport message endpoint at /mcp/{org_slug}/{env_name}/{service}/messages
Test-only tool definitions: demo/search, demo/a, demo/b, demo/ping are defined only in crates/hot/tests/tool_schema_extraction.rs. These are test fixtures, not production tools. No evidence they are registered as actual MCP tools available to clients.
Transport handlers exposed as tools: mcp_handler, mcp_handler_domain, mcp_sse_handler, mcp_sse_handler_domain, mcp_http_sse_messages_handler, mcp_http_sse_messages_handler_domain are HTTP request handlers (from crates/hot_api/src/server.rs), not domain tools. They conflate MCP transport routing with tool semantics. These should be internal to the server; they should not be exposed as callable tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | 2026-07-28+ | v2 |
HTTP POST handler for MCP HTTP+SSE transport message endpoint via custom domain at /mcp/{service}/messages
HTTP GET handler for MCP tool invocation via SSE at /mcp/{org_slug}/{env_name}/{service}
HTTP GET handler for MCP tool invocation via SSE using custom domain at /mcp/{service}
Missing parameter descriptions: All 10 tools lack descriptions for their input parameters. E.g., demo/search has 'query' and 'limit' with no explanation of what they do or constraints. mcp_handler has 'org_slug', 'env_name', 'service' with no descriptions. Per pattern:tool-description, every parameter requires a non-empty description.
Missing output schemas: No tool documents what it returns. LLMs cannot plan downstream calls or extract results without knowing the response structure. Output schema documentation is baseline for A+ tools (100% compliance).
Missing tool descriptions for non-demo tools: demo/a and demo/b have no descriptions at all. Per HARD SCORING RULE, tools with no description score 0 on description dimension.
Ambiguous/generic tool names: demo/a and demo/b are non-descriptive. They do not start with action verbs and do not convey what they do. 'a' and 'b' violate verb_noun naming convention and leave LLMs unable to infer intent.
Internal API parameters exposed as tool inputs: mcp_handler* tools expose org_slug, env_name, service, which are routing parameters internal to the Hot API server. User-facing tools should accept business-domain parameters, not internal path segments. This violates the pattern:chat-data-model principle.
No error handling guidance: No tool describes how to recover from failures, what errors are retryable, or what the LLM should do if the call fails. Per pattern:recovery-guide, error responses must tell the agent what to do next.
WRITE tools lack idempotency/confirmation: mcp_handler, mcp_handler_domain, mcp_http_sse_messages_handler, mcp_http_sse_messages_handler_domain are marked WRITE but have no idempotent hint or confirmation pattern. Agents cannot safely retry without risking duplicate side effects per pattern:idempotent-operation.
Undocumented parameter constraints: demo/search has 'limit' (integer) with no min/max bounds, range description, or default. LLMs may pass absurd values without constraints.