Expose a durable Resonate workflow as an MCP tool over stdio.
Single tool with clear naming (get_forecast) and good description (127 chars, within 10-1024 range). Input schema properly defined with latitude/longitude as f64 with descriptions. However, output schema is undocumented, CallToolResult wraps a text response but the actual forecast format is not specified. No parameter constraints (min/max bounds for lat/lon). Error handling returns generic McpError::internal_error without recovery guidance. Tool is read-only (good), but lacks idempotent/readonly annotations. Resonate durability is a strength but not a standard MCP pattern.
Get the National Weather Service forecast for a US location. Backed by a durable Resonate workflow — the call automatically retries on transient failure and survives process restarts.
Output schema undocumented. Tool returns CallToolResult::success(vec![Content::text(result)]) but the structure and format of the forecast text response is not specified. LLMs cannot plan downstream operations or validate the response structure.
No parameter bounds. Latitude and longitude accept any f64 value, but NWS only covers the United States (roughly -125 to -66 longitude, 24 to 49 latitude). Unbounded parameters let LLMs pass invalid coordinates without validation.
Error handling lacks recovery guidance. McpError::internal_error(format!("resonate rpc failed: {e}"), None) returns a generic error with no actionable next step. LLM cannot determine if the error is retryable, user-fixable, or fatal.
No tool annotations. Tool is read-only and idempotent (same lat/lon always returns same forecast), but lacks readOnlyHint and idempotentHint annotations in the schema. LLMs cannot infer safety properties.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
STDIO transport only. Server is not remotely accessible and cannot be used by hosted MCP clients. Limits deployment to local/desktop environments only.