Skip to main content
Glama
README.md
# @timergy/mcp

[![Smithery](https://smithery.ai/badge/timergy/timergy)](https://smithery.ai/server/timergy/timergy)

MCP server for [Timergy](https://timergy.com) - the scheduling poll app. Create polls, vote on time slots, and finalize meetings directly from AI agents like Claude, ChatGPT, and Gemini.

**No authentication required.** Works out of the box.

## What is Timergy?

Timergy is a scheduling poll service (like Doodle or When2Meet). You create a poll with time slot options, share it with participants, everyone votes on their availability, and you pick the best time.

## Quick Start

### Claude Desktop / Claude Code

Add to your MCP config (`~/.claude/claude_desktop_config.json` or project `.mcp.json`):

```json
{
  "mcpServers": {
    "timergy": {
      "command": "npx",
      "args": ["@timergy/mcp"]
    }
  }
}
```

Then just ask:

> "Create a poll for dinner next Friday or Saturday evening"

### Smithery (Remote, no install)

```
smithery mcp add timergy/timergy
```

Or connect directly via `https://timergy--timergy.run.tools`

### Other MCP Clients

Any MCP-compatible client can use this server. Supports stdio (local) and Streamable HTTP (remote at `https://api.timergy.com/mcp`).

## Tools

### `create_poll`

Create a scheduling poll with time slot options.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | yes | Poll title |
| `options` | array | yes | Time slots (`{start, end}` in ISO 8601 with timezone) |
| `description` | string | no | Poll description |
| `deadline` | string | no | Voting deadline (ISO 8601) |
| `location` | string | no | Event location |
| `creatorName` | string | no | Name shown as poll creator |

```
"Create a poll called 'Team Lunch' with slots on Monday 12-13 and Tuesday 12-13"
```

Returns: poll URL (to share), passphrase (for admin access), option IDs.

### `get_poll`

Get poll details and time slot options (no votes). Use this to retrieve option IDs before voting or finalizing.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pollId` | string | yes | Poll UUID |

```
"Show me the details of poll abc-123"
```

### `vote_on_poll`

Submit votes on a poll. Each vote maps a time slot to yes/maybe/no.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pollId` | string | yes | Poll UUID |
| `voterName` | string | yes | Name of the voter |
| `voterEmail` | string | no | Voter email (for notifications) |
| `votes` | array | yes | `{optionId, availability}` where availability is `yes`/`maybe`/`no` |

```
"Vote 'yes' for Monday and 'no' for Tuesday on poll abc-123 as Max"
```

### `get_results`

See who voted and which time slots are most popular.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pollId` | string | yes | Poll UUID |

```
"Show me the results for poll abc-123"
```

### `finalize_poll`

Lock in the winning time slot. Notifies participants who provided an email.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `pollId` | string | yes | Poll UUID |
| `optionId` | string | yes | Winning time slot UUID |
| `passphrase` | string | no | Admin passphrase (auto-remembered from create_poll) |

```
"Finalize poll abc-123 with the Monday slot"
```

## Workflow

```
1. create_poll  ->  Get poll URL + passphrase
2. Share URL    ->  Send to participants
3. get_results  ->  See who voted yes/maybe/no
4. finalize_poll -> Pick the best time, lock it in
```

The passphrase from step 1 is automatically remembered for step 4 within the same session.

## REST API

The MCP server calls the Timergy Open API under the hood. You can also use the API directly:

| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/api/open/polls` | Create a poll |
| `GET` | `/api/open/polls/:id` | Get poll details |
| `GET` | `/api/open/polls/:id/options` | Get time slots |
| `GET` | `/api/open/polls/:id/results` | Get vote results |
| `POST` | `/api/open/polls/:id/vote` | Submit votes |
| `POST` | `/api/open/polls/:id/admin-token` | Get admin token |
| `POST` | `/api/open/polls/:id/finalize` | Finalize poll |

Base URL: `https://api.timergy.com`

OpenAPI spec: `https://api.timergy.com/api/open/openapi.json`

## Configuration

| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `TIMERGY_API_URL` | `https://api.timergy.com` | API base URL |

For local development:

```json
{
  "mcpServers": {
    "timergy": {
      "command": "npx",
      "args": ["@timergy/mcp"],
      "env": { "TIMERGY_API_URL": "http://localhost:4000" }
    }
  }
}
```

## Rate Limits

| Action | Limit |
|--------|-------|
| Create poll | 5 per hour |
| Vote | 20 per minute |
| Get poll/results | 60 per minute |
| Admin token | 5 per 10 minutes |
| Finalize | 3 per hour |

## License

MIT

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a distinct purpose: creating polls, getting info, voting, viewing results, finalizing. No overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun_snake_case pattern, e.g., create_poll, get_results.

Tool Count5/5

Five tools cover the essential poll lifecycle without being too many or too few.

Completeness4/5

Covers the main workflow from creation to finalization. Missing update/delete operations, but not critical for scheduling polls.

Maintenance

ActivityInactive
ResponsivenessNo issues