@pingfyr/mcp
Connect your AI assistant to Pingfyr via MCP. Manage reminders through natural conversation.
One API call. Seven channels. Your reminders fire automatically — no external cron, no polling, no babysitting.
Available as a local npm package or as a hosted server at mcp.pingfyr.com — no local install required.
Installation
npm install -g @pingfyr/mcpOr run directly with npx:
npx @pingfyr/mcpConfiguration
Local Setup (stdio)
Run the MCP server as a local process. Requires Node.js 18+.
Add to your MCP client config (Claude Code, Cursor, Windsurf, etc.):
{
"mcpServers": {
"pingfyr": {
"command": "pingfyr-mcp",
"env": {
"PINGFYR_API_KEY": "rm_your_api_key"
}
}
}
}Sign up at pingfyr.com to get your API key.
Hosted Setup
No install required. Connect directly to mcp.pingfyr.com using HTTP transport. Your API key is sent as a Bearer token per request.
{
"mcpServers": {
"pingfyr": {
"type": "http",
"url": "https://mcp.pingfyr.com",
"headers": {
"Authorization": "Bearer rm_your_api_key"
}
}
}
}HTTP transport is supported by Claude Code and Cursor. Claude Desktop requires the local (stdio) option above.
Available Tools
| Tool | Description |
|---|---|
create_reminder | Schedule a new reminder via email, webhook, Slack, Discord, Telegram, OpenClaw, or Google Calendar |
list_reminders | List all reminders with optional filtering by status, limit, and offset |
update_reminder | Update a pending reminder (title, body, fire_at, channel, recipients, repeat, timezone) |
cancel_reminder | Cancel a pending reminder |
create_reminder Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
title | Yes | string | Title of the reminder (max 200 chars) |
fire_at | Yes | string | When to fire (ISO 8601 datetime, must be in the future) |
channel | Yes | enum | email, webhook, slack, discord, telegram, openclaw, google_calendar |
recipients | Yes | string[] | Delivery addresses (see Channels table for format per channel) |
body | No | string | Body/description of the reminder (max 2000 chars) |
repeat | No | enum | daily, weekly, monthly, custom |
cron_expression | No | string | Cron expression (required when repeat is custom) |
timezone | No | string | IANA timezone for recurring reminders (default: UTC) |
metadata | No | object | Arbitrary key-value metadata to attach to the reminder |
list_reminders Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
status | No | enum | pending, processing, delivered, failed, cancelled |
limit | No | number | Max results (default: 50, max: 100) |
offset | No | number | Pagination offset (default: 0) |
update_reminder Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
id | Yes | string | UUID of the reminder to update |
title | No | string | New title |
body | No | string | New body |
fire_at | No | string | New fire time (ISO 8601) |
channel | No | enum | New channel |
recipients | No | string[] | Updated delivery addresses |
repeat | No | enum | New repeat schedule (null to remove) |
timezone | No | string | New timezone |
Examples
Email reminder (multi-recipient)
{
"title": "Project deadline reminder",
"fire_at": "2026-12-15T08:00:00Z",
"channel": "email",
"recipients": ["alice@example.com", "bob@example.com"]
}Slack reminder
{
"title": "Weekly team sync reminder",
"fire_at": "2026-12-01T09:00:00Z",
"channel": "slack",
"recipients": ["https://hooks.slack.com/services/T.../B.../xxx"],
"repeat": "weekly",
"timezone": "America/New_York"
}Discord notification
{
"title": "Deploy notification",
"fire_at": "2026-12-01T17:00:00Z",
"channel": "discord",
"recipients": ["https://discord.com/api/webhooks/xxx/yyy"]
}Telegram reminder
{
"title": "Daily standup",
"fire_at": "2026-12-01T09:00:00Z",
"channel": "telegram",
"recipients": ["bot:your-bot-uuid:your-chat-id"],
"repeat": "daily",
"timezone": "Europe/Berlin"
}Find your bot_id in Settings → Telegram Bots on the Pingfyr dashboard.
OpenClaw notification
{
"title": "Agent task complete",
"fire_at": "2026-12-01T10:00:00Z",
"channel": "openclaw",
"recipients": ["https://openclaw.example.com/webhook"]
}Google Calendar event (Starter+ plan required)
Creates a Google Calendar event on the user's connected Google account. Connect your account at Settings → Google Calendar in the Pingfyr dashboard.
{
"title": "Team sync",
"fire_at": "2026-12-01T09:00:00Z",
"channel": "google_calendar",
"recipients": ["google"]
}Webhook (agent wake-up)
{
"title": "Check for new orders",
"fire_at": "2026-12-01T10:00:00Z",
"channel": "webhook",
"recipients": ["https://your-agent.example.com/webhook"],
"repeat": "daily"
}Custom cron schedule
{
"title": "Weekday morning check",
"fire_at": "2026-12-01T09:00:00Z",
"channel": "webhook",
"recipients": ["https://your-agent.example.com/webhook"],
"repeat": "custom",
"cron_expression": "0 9 * * MON-FRI",
"timezone": "America/New_York"
}Channels
| Channel | recipients format | Description |
|---|---|---|
email | Email addresses | Deliver to one or more email inboxes (Starter+ plan required) |
webhook | HTTP/HTTPS URL | POST request to wake up agents |
slack | Slack Incoming Webhook URL | Post message to a Slack channel |
discord | Discord Webhook URL | Post message to a Discord channel |
telegram | bot:<bot_id>:<chat_id> | Send message via Telegram bot (register bot in Settings → Telegram Bots) |
openclaw | OpenClaw URL | POST request to an OpenClaw endpoint |
google_calendar | google (literal) | Create a Google Calendar event on your connected account (Starter+ plan required) |
Plans
| Plan | Price | Reminders/month | Recipients/month |
|---|---|---|---|
| Free | $0 | 50 | 100 |
| Starter | $59/mo | 10,000 | 20,000 |
| Pro | $269/mo | 50,000 | 100,000 |
| Enterprise | Contact | Unlimited | Unlimited |
Free plan includes Webhook, Slack, Discord, Telegram, and OpenClaw channels. Email and Google Calendar require a paid plan (Starter+).
Environment Variables
| Variable | Required | Description |
|---|---|---|
PINGFYR_API_KEY | Yes | Your Pingfyr API key |
PINGFYR_API_URL | No | API base URL (default: https://pingfyr.com) |
License
MIT