Zapnoty — MCP server for AI agents

API Documentation

REST API for notifications via Telegram and Max. Subscribers, OTP, broadcasts, forms, helpdesk.

MCP server for AI agents

The Zapnoty MCP server connects the notification service to AI agents (Claude Code, Cursor, Codex and others) via the Model Context Protocol. The agent gets over 100 tools: sending messages to Telegram and Max, OTP codes, broadcasts, forms, helpdesk, files, project configuration.

Connecting via OAuth (recommended)

Server endpoint — https://mcp.zapnoty.com/mcp (Streamable HTTP). The server supports OAuth 2.1 with Dynamic Client Registration (DCR) and PKCE: just add the address to your client — on first use it opens the browser automatically. In the Zapnoty dashboard you pick a project, set the key name and lifetime and confirm access with a code — the agent is ready. The key is never copied by hand and never appears in the chat.

Claude Code:

claude mcp add --transport http zapnoty https://mcp.zapnoty.com/mcp

Cursor:

// .cursor/mcp.json
{
"mcpServers": {
"zapnoty": { "url": "https://mcp.zapnoty.com/mcp" }
}
}

VS Code (Copilot, Agent mode):

// .vscode/mcp.json — the key is "servers", not "mcpServers"
{
"servers": {
"zapnoty": { "type": "http", "url": "https://mcp.zapnoty.com/mcp" }
}
}

OpenAI Codex CLI:

# ~/.codex/config.toml
[mcp_servers.zapnoty]
url = "https://mcp.zapnoty.com/mcp"

OpenCode:

// opencode.json
{
"mcp": {
"servers": {
"zapnoty": { "type": "remote", "url": "https://mcp.zapnoty.com/mcp" }
}
}
}

Windsurf:

// ~/.codeium/windsurf/mcp_config.json — via mcp-remote (OAuth wrapper)
{
"mcpServers": {
"zapnoty": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.zapnoty.com/mcp"]
}
}
}

Access management and revocation

  • Access granted via OAuth is a regular project API key (zn_live_…): it is visible in the dashboard under “MCP” and in project settings → “API keys” with an MCP badge.
  • Revocation takes effect immediately — the agent gets a 401 and will offer to re-authorize.
  • The key lifetime is set on the consent screen (from 1 hour to unlimited); after expiry the client simply goes through OAuth again.

Alternative: API key in the header

For CI/headless environments where browser OAuth is inconvenient, pass the project API key directly:

{
"mcpServers": {
"zapnoty": {
"url": "https://mcp.zapnoty.com/mcp",
"headers": { "Authorization": "Bearer zn_live_..." }
}
}
}

Setup endpoint: turnkey project without an account

The public /mcp/setup endpoint is the virtual projects flow: an AI agent creates and configures a project for a user who has no Zapnoty account yet. zapnoty_create_virtual_project returns a temporary zn_virt_… key (passed as the api_key argument to setup tools) and an accept_url — the user follows the link and clicks Accept. Before Accept only configuration is available (templates, permissions, tags, webhooks); runtime — after Accept, with the zn_live_ key.

POST https://mcp.zapnoty.com/mcp/setup
tools/call → zapnoty_create_virtual_project
{
"owner_email": "user@example.com",
"name": "My project",
"slug": "my-project"
}

Available tools

  • Setup — templates, permissions, tags (full CRUD), webhook endpoints, auto-messages.
  • Runtime — sending messages, batch, broadcasts, OTP, events, auth sessions, helpdesk tickets, approvals.
  • Scheduler — delayed messages, drip chains, recurring broadcasts.
  • Forms — CRUD for forms and delivery routes, reading submissions.
  • Helpdesk config — module settings, SLA, ticket types, canned responses, routing rules.
  • Reading — subscribers, subscriber permissions, audit log, setup summary.

The tool set mirrors the REST /v1 API. Dashboard-only operations (team management, custom bot connection, key issuance) are not available via MCP.

Security

  • OAuth 2.1: mandatory PKCE S256, single-use codes, consent confirmed with an OTP code in the dashboard.
  • The key travels only in the Authorization header — it never appears in the chat with the AI and never ends up in chat logs.
  • In the setup flow the agent cannot send messages until the user confirms the project with Accept; the temporary zn_virt_ key lives for 24 hours.
  • Every issued key is visible in the dashboard and can be revoked in one click.

Related sections