{
  "markdown": "# tickstem/mcp\n\n[![Glama](https://glama.ai/mcp/servers/tickstem/mcp/badge)](https://glama.ai/mcp/servers/tickstem/mcp)\n[![smithery badge](https://smithery.ai/badge/tickstem-mcp--tickstem-info)](https://smithery.ai/servers/tickstem-info/tickstem-mcp)\n\nMCP server for [Tickstem](https://tickstem.dev) — exposes cron job scheduling, uptime monitoring, heartbeat monitoring, and email verification as native tools for AI coding assistants (Claude, Cursor, Copilot, and any MCP-compatible agent).\n\nLet your AI assistant register cron jobs, create uptime monitors with response assertions, manage heartbeat monitors, verify email addresses, and query results — while you write the app code.\n\n## Install\n\n**Download a pre-built binary** (no Go required):\n\n| Platform | Binary |\n|----------|--------|\n| macOS (Apple Silicon) | `tsk-mcp-darwin-arm64` |\n| macOS (Intel) | `tsk-mcp-darwin-amd64` |\n| Linux (x86-64) | `tsk-mcp-linux-amd64` |\n| Linux (ARM64) | `tsk-mcp-linux-arm64` |\n| Windows (x86-64) | `tsk-mcp-windows-amd64.exe` |\n\nDownload from [Releases](https://github.com/tickstem/mcp/releases), make executable, and place on your `PATH`:\n\n```bash\n# macOS / Linux example\nchmod +x tsk-mcp-darwin-arm64\nmv tsk-mcp-darwin-arm64 /usr/local/bin/tsk-mcp\n```\n\n**Or install with Go:**\n\n```bash\ngo install github.com/tickstem/mcp/cmd/tsk-mcp@latest\n```\n\n## Quick start\n\n```bash\nexport TICKSTEM_API_KEY=tsk_your_key_here\ntsk-mcp\n```\n\nThe server speaks the [Model Context Protocol](https://modelcontextprotocol.io) over stdio — connect it to any MCP-compatible client.\n\n## Claude Code\n\nAdd to your `~/.claude/claude_desktop_config.json` (or equivalent):\n\n```json\n{\n  \"mcpServers\": {\n    \"tickstem\": {\n      \"command\": \"tsk-mcp\",\n      \"env\": {\n        \"TICKSTEM_API_KEY\": \"tsk_your_key_here\"\n      }\n    }\n  }\n}\n```\n\n## Available tools\n\n### Cron jobs\n\n| Tool | Description |\n|------|-------------|\n| `list_jobs` | List all cron jobs in the account |\n| `get_job` | Get a cron job by ID |\n| `register_job` | Register a new cron job (name, schedule, endpoint) |\n| `update_job` | Update an existing job — only provided fields change |\n| `pause_job` | Pause a job so it no longer fires |\n| `resume_job` | Resume a paused or failing job |\n| `delete_job` | Permanently delete a job and its execution history |\n| `list_executions` | List execution history for a job, most recent first |\n\n### Uptime monitoring\n\n| Tool | Description |\n|------|-------------|\n| `list_monitors` | List all monitors — status, URL, interval, SSL expiry, assertions |\n| `create_monitor` | Create a monitor with optional response assertions (status code, response time, body) |\n| `get_monitor` | Get a monitor by ID |\n| `pause_monitor` | Pause a monitor so it stops polling |\n| `resume_monitor` | Resume a paused monitor |\n| `delete_monitor` | Permanently delete a monitor and its check history |\n| `list_monitor_checks` | List recent checks — status, HTTP code, duration, error, SSL expiry |\n\n#### Response assertions\n\n`create_monitor` accepts an `assertions` parameter — a JSON array of conditions that must all pass for a check to be considered up. When assertions are set they replace the default 2xx/3xx logic.\n\n```json\n[\n  { \"source\": \"status_code\",   \"comparison\": \"eq\",       \"target\": \"200\"              },\n  { \"source\": \"response_time\", \"comparison\": \"lt\",       \"target\": \"2000\"             },\n  { \"source\": \"body\",          \"comparison\": \"contains\", \"target\": \"\\\"status\\\":\\\"ok\\\"\" }\n]\n```\n\n| Source | Valid comparisons | Target |\n|--------|------------------|--------|\n| `status_code` | `eq` `ne` `lt` `lte` `gt` `gte` | integer string |\n| `response_time` | `eq` `ne` `lt` `lte` `gt` `gte` | integer string (ms) |\n| `body` | `eq` `ne` `contains` `not_contains` | plain string |\n\n### Heartbeat monitoring\n\n| Tool | Description |\n|------|-------------|\n| `list_heartbeats` | List all heartbeats — status, token, interval, grace window, last ping time |\n| `create_heartbeat` | Create a heartbeat monitor (dead-man's switch) |\n| `get_heartbeat` | Get a heartbeat by ID |\n| `update_heartbeat` | Update name, interval, or grace window |\n| `pause_heartbeat` | Suppress alerts during planned downtime |\n| `resume_heartbeat` | Resume alerting after a pause |\n| `delete_heartbeat` | Permanently delete a heartbeat and its ping history |\n| `ping_heartbeat` | Record a successful job run — no API key needed, token is the credential |\n| `list_heartbeat_pings` | List recent pings for a heartbeat, most recent first |\n\n### Email verification\n\n| Tool | Description |\n|------|-------------|\n| `verify_email` | Check syntax, MX records, disposable domain, and role-based prefix |\n| `list_verify_history` | List past verification results for the account |\n\n## Environment variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `TICKSTEM_API_KEY` | Yes | API key from [app.tickstem.dev](https://app.tickstem.dev) |\n| `TICKSTEM_BASE_URL` | No | Override API base URL (e.g. `http://localhost:8080/v1` for local dev) |\n\n## Local development\n\n```bash\nexport TICKSTEM_API_KEY=tsk_your_key_here\nexport TICKSTEM_BASE_URL=http://localhost:8080/v1\ngo run ./cmd/tsk-mcp\n```\n\n## SDKs\n\nThe MCP server handles infrastructure management from your AI assistant. For application code, use the SDK that matches your language:\n\n| Language | Install | Docs |\n|----------|---------|------|\n| Python | `pip install tickstem` | [github.com/tickstem/python](https://github.com/tickstem/python) |\n| Go (cron) | `go get github.com/tickstem/cron` | [pkg.go.dev](https://pkg.go.dev/github.com/tickstem/cron) |\n| Go (uptime) | `go get github.com/tickstem/uptime` | [pkg.go.dev](https://pkg.go.dev/github.com/tickstem/uptime) |\n| Go (heartbeat) | `go get github.com/tickstem/heartbeat` | [pkg.go.dev](https://pkg.go.dev/github.com/tickstem/heartbeat) |\n| Go (verify) | `go get github.com/tickstem/verify` | [pkg.go.dev](https://pkg.go.dev/github.com/tickstem/verify) |\n| Node.js | `npm install @tickstem/cron` | [github.com/tickstem/node](https://github.com/tickstem/node) |\n\nAll SDKs use the same API key.\n\n## Get an API key\n\n[app.tickstem.dev](https://app.tickstem.dev) — free tier includes 1,000 cron executions, 5 uptime monitors, 5 heartbeat monitors, and 500 email verifications per month.\n\n## License\n\nMIT\n",
  "bytes": 6265,
  "sha": "22d8ff32b3389c844f8a7cd1660640bb4c88d10e204f953844d94ff59e33572e",
  "repo_slug": "tickstem/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_dev_tickstem_mcp_a266f5d7/readme"
}