Go-based LLM server with MCP support for tool execution, heartbeat scheduling, and connector management
The server implements a single tool 'add_heartbeat' with reasonable naming and parameter documentation. The tool name follows verb_noun convention (add_heartbeat), which is clear and actionable. The description is detailed (252 chars) and explains the tool's purpose, handling of RFC 3339 vs cron schedules, timezone inference, and return value. Parameters (schedule, timezone, message) all have type definitions and descriptions. However, there is no documented output schema, the description mentions 'Returns the created heartbeat including its ID' but does not specify what fields the response object contains (e.g., does it return {id, schedule, timezone, message, created_at}?). This is a critical gap for tool composition, downstream tools cannot know what fields to extract. Additionally, there is no evidence of error handling guidance (what if the schedule is invalid? what if timezone doesn't exist?). The tool performs a write operation (WRITE risk) but there is no confirmation or dry-run pattern documented. Schema validation (enums for timezone, format validation for schedule) is not visible in the tool definition itself, it likely exists at runtime but the schema should declare these constraints.
Schedule a new heartbeat reminder. The message is delivered once the specified time is reached. For RFC 3339 schedules that already include a timezone offset (e.g. 2026-06-01T15:00:00+02:00), the timezone is inferred from the timestamp and need not be provided separately. For cron schedules without an embedded offset, pass a timezone (IANA name, e.g. Europe/London) so the schedule is evaluated in the user's local time; omitting it defaults to UTC. Returns the created heartbeat including its ID.
No documented output schema. The tool description says 'Returns the created heartbeat including its ID' but does not specify the structure of the response object (fields, types, optional vs required). Downstream tools cannot reliably extract the heartbeat ID or other fields for composition.
No error handling guidance. The tool accepts schedule and timezone strings but does not document what happens if invalid values are provided (e.g. invalid cron expression, non-existent IANA timezone). LLM cannot know what to do on failure or how to self-correct.
Write operation (WRITE risk) lacks confirmation or dry-run pattern. The tool schedules a heartbeat that will trigger at a future time, an irreversible operation. No confirmation step or dry-run option is documented to prevent accidental scheduling.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 61 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 30 | - | v1 |
Schema constraints not visible in tool definition. Parameters like 'schedule' (cron or RFC 3339 format) and 'timezone' (IANA name) should declare regex patterns or enums in the JSON Schema to make constraints machine-parseable. Relying on description text alone is insufficient.