MCP server for Timergy - create scheduling polls, vote, and finalize from AI agents like Claude, GPT, and Gemini. No authentication required.
Timergy MCP has well-structured tool definitions with clear naming (verb_noun pattern), comprehensive descriptions (150-250 chars each), and complete input schemas using Zod validation. All 5 tools follow a coherent workflow pattern. However, output schemas are not formally documented in the tool definitions, responses are JSON stringified but lack explicit schema declarations. Parameter descriptions are thorough and include format guidance (ISO 8601 examples). Error handling is minimal; no recovery guidance or actionable error messages are visible in the code. The passphrase auto-save mechanism is clever but introduces stateful behavior that complicates distributed deployments.
Create a Timergy scheduling poll (like Doodle) where participants vote on preferred time slots. Provide a title and at least 2-5 time slot options with ISO 8601 date-times (include timezone, e.g. 2026-03-20T18:00:00+02:00 or use UTC with Z suffix). Returns a shareable URL to send to participants and a passphrase for admin access. The passphrase is automatically remembered for finalize_poll. Workflow: create_poll -> share URL -> wait for votes -> get_results -> finalize_poll.
Finalize a poll by picking the winning time slot. Call get_results first to find the best optionId. Uses the passphrase auto-saved from create_poll. If the MCP server was restarted since poll creation, provide the passphrase manually. This locks the poll and notifies participants who provided an email.
Get poll metadata and time slot options (but NOT votes). Returns title, status, deadline, location, and all available time slots with their option IDs. Use this to retrieve optionId values needed for vote_on_poll or finalize_poll. To see who voted, use get_results instead.
Get voting results for a Timergy poll, showing who voted yes/maybe/no for each time slot. Use this after participants have voted to see which slot has the most availability. To finalize, pick the optionId with the most 'yes' votes and call finalize_poll.
Output schemas not formally documented. Tool descriptions state what is returned (e.g., 'Returns a shareable URL...') but the response structure is not declared in a machine-readable schema. LLMs cannot reliably extract fields from unstructured JSON responses.
No error handling or recovery guidance. The code does not show error responses, validation failures, or actionable error messages. If a poll ID is invalid or voting fails, the LLM receives no guidance on what to do next.
Stateful session management (passphraseMap, voterTokenMap) tied to process memory. In distributed or serverless deployments, state is lost on restart. The finalize_poll description acknowledges this ('If the MCP server was restarted...') but forces the user to manually provide the passphrase, breaking the promised auto-save workflow.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Submit votes on a Timergy poll. First call get_poll to retrieve the available optionId values. Each vote maps an optionId to an availability: 'yes' (available), 'maybe' (might work), or 'no' (unavailable). A unique voter token is auto-generated per voter name. Resubmitting with the same voter name updates previous votes.
No pagination or result limits documented. get_results aggregates all votes into a single response. For polls with hundreds of participants, this could exhaust context windows. No limit parameter or pagination guidance is present.
Passphrase handling lacks security guidance. The passphrase is returned in create_poll response and stored in memory. No documentation on whether it should be treated as a secret, how it is transmitted, or whether it appears in logs.