Awesome MCP Servers by AI Anytime

Directory / Marketing, content & social

PushNotif

Web Push (VAPID), Android (FCM), iOS (APNs), In-App Popup Banners, Social Proof Toasts, and Transactional Email OTP with 24 native MCP tools. Install: npx -y pushnotif-mcp · Website

Live  Answered an MCP handshake without credentials and listed 19 tools.

Category
Marketing, content & social
Transport
http
Source
https://github.com/AarsyDesign/pushnotif-mcp
Endpoint
https://pushnotif.biz.id/mcp
MCP Registry
io.github.AarsyDesign/pushnotif-mcp
Reports itself as
pushnotif-mcp 2.5.3
Protocol
2024-11-05
Tools
19
Context cost
about 8,308 tokens for the tool definitions (estimated at four characters per token)
Tool definitions last changed
no change seen since first check
Handshake time
842 ms
Repository
0 stars · last push 2026-10-28 · MIT
Last checked
2026-11-03 10:54:48 UTC
Listed since
2026-10-25

Health and compatibility

Endpoint reachableVerifiedResponded in 842 ms
MCP handshake (initialize)VerifiedCompleted without credentials
Tool discovery (tools/list)Verified19 tools listed
AuthenticationVerifiedNone needed to connect
Protocol versionVerified2024-11-05
TransportVerifiedStreamable HTTP
Capabilities declaredVerifiedtools

Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.

Recent history

5 daily checks so far; median response 842 ms. Green answered, violet asked for auth, red did not answer.

Set up in your client

Claude Code

Run this in a terminal:

claude mcp add --transport http pushnotif https://pushnotif.biz.id/mcp

Claude Desktop

Open Settings → Connectors → Add custom connector and paste this URL:

https://pushnotif.biz.id/mcp

Or bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):

{
  "mcpServers": {
    "pushnotif": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://pushnotif.biz.id/mcp"
      ]
    }
  }
}

Cursor

Add to Cursor

Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "pushnotif": {
      "url": "https://pushnotif.biz.id/mcp"
    }
  }
}

VS Code

Add to VS Code

Or add it to .vscode/mcp.json:

{
  "servers": {
    "pushnotif": {
      "type": "http",
      "url": "https://pushnotif.biz.id/mcp"
    }
  }
}

Or from a terminal:

code --add-mcp '{"name": "pushnotif", "type": "http", "url": "https://pushnotif.biz.id/mcp"}'

Windsurf

Add it to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "pushnotif": {
      "serverUrl": "https://pushnotif.biz.id/mcp"
    }
  }
}

Other clients

Most clients accept this shape. The endpoint is:

https://pushnotif.biz.id/mcp
{
  "mcpServers": {
    "pushnotif": {
      "type": "http",
      "url": "https://pushnotif.biz.id/mcp"
    }
  }
}

If it does not connect

Tools 19

Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON

check_billing_and_qris_statusread-onlyCheck QRIS top-up order payment status (PENDING or PAID), current workspace credit balance, credit mutation …

Check QRIS top-up order payment status (PENDING or PAID), current workspace credit balance, credit mutation ledger history, and official downloadable PDF invoice URLs. Use this tool to verify whether an order from create_qris_invoice has settled or to audit credit consumption; do not use it to generate a new payment invoice (use create_qris_invoice instead) or view campaign click rates (use get_campaign_analytics instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost; pass order_id to inspect a single invoice or omit it to list recent orders and ledger entries. Returns JSON { credits_balance, orders: [{ id, amount_rp, credits_added, status, invoice_pdf_url, created_at }], recent_ledger: [{ id, delta, reason, created_at }] }.

ParameterTypeDescription
order_idstringoptionalOptional specific QRIS order ID in format ord_xxxx (from create_qris_invoice) to check; omit to return the latest orders and ledger history

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "check_billing_and_qris_status",
    "arguments": {}
  }
}
configure_email_automationcan modifyConfigure per-app module switches (ON/OFF) for Transactional Email OTP, Automated Payment Webhook Email …

Configure per-app module switches (ON/OFF) for Transactional Email OTP, Automated Payment Webhook Email Receipts, Order Status Emails, and the Web Push Notification collector, plus sender brand name and Reply-To email address. Use this tool to enable or disable individual channels per website; do not use it to send an immediate email or OTP (use send_transactional_email instead). Requires PUSHNOTIF_API_KEY and costs 0 credits. Returns JSON { ok, app_id, push_enabled, email_otp_enabled, email_invoice_enabled, email_status_enabled, email_brand_name, email_reply_to }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
push_enabledbooleanoptionalSet true to enable Web Push Notification collection on the website, or false to disable
email_otp_enabledbooleanoptionalSet true to enable 6-digit Email OTP generation and verification for this app
email_invoice_enabledbooleanoptionalSet true to automatically send paid invoice receipts via email when a payment webhook arrives
email_status_enabledbooleanoptionalSet true to enable order status and shipping tracking emails
email_brand_namestringoptionalSender brand name shown in the recipient inbox (e.g., 'Kopi Nusantara')
email_reply_tostringoptionalBusiness Reply-To email address where customer replies are routed

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "configure_email_automation",
    "arguments": {
      "app_id": "..."
    }
  }
}
configure_inapp_bannercan modifyConfigure and publish an on-site In-App Popup or Banner (center modal, top sticky bar, or bottom slide-in …

Configure and publish an on-site In-App Popup or Banner (center modal, top sticky bar, or bottom slide-in toast) rendered inside the website by the PushNotif SDK without requiring browser push permission. Use this tool for visual in-page promos and announcements; do not use it for OS lock-screen notifications (use send_push_notification instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY; saving configuration is idempotent and costs 0 credits, while each live visitor display deducts 1 credit (inapp_trigger controls when the banner fires—such as 'scroll_50' for 50% page scroll or 'event:add_to_cart' for custom DOM events—combined with inapp_freq to cap repeat impressions per visitor). Returns JSON { ok, app_id, inapp_enabled, inapp_style, inapp_trigger, inapp_freq }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
inapp_enabledbooleanoptionalSet true to publish the banner live on the website, or false to pause it (default: true)
inapp_stylestringoptionalVisual layout: 'modal' (center dialog), 'top_bar' (sticky top ribbon), or 'bottom_slide' (corner slide-in toast)
inapp_triggerstringoptionalTrigger condition: 'immediate' (default), 'delay_5s', 'delay_10s', 'scroll_50', 'scroll_80', or custom DOM event 'event:<name>'
inapp_titlestringrequiredBanner headline text (1 to 100 characters)
inapp_bodystringrequiredBanner supporting message text (1 to 240 characters)
inapp_cta_textstringoptionalOptional CTA button label (must be paired with inapp_cta_url to render a clickable action button)
inapp_cta_urlstringoptionalOptional HTTPS destination URL opened when the CTA button is clicked
inapp_accentstringoptionalOptional 6-digit hex color code for the CTA button and accent border (default: '#0058BE')
inapp_freqstringoptionalPer-visitor frequency cap: 'once_forever' (one-time announcement per visitor, never shown again), 'once_per_session' (default), 'once_per_day', 'cooldown_3h', 'cooldown_12h', 'once_per_week', or 'always'
segment_tagstringoptionalOptional target segment/merchant tag (e.g., 'seblak-nearby') to display a dedicated In-App Banner on pages matching that tag under a single shared App ID (default: 'all' for global fallback)
inapp_template_idstringoptionalOptional template preset: 'default', 'ai_custom' (custom HTML card), 'voucher_copy', 'flash_timer', 'feature_grid', or 'event_invite'
inapp_custom_htmlstringoptionalOptional raw HTML card markup when inapp_template_id is ai_custom (renders up to 96vw x 94vh)
inapp_image_urlstringoptionalOptional HTTPS image/poster URL (supports transparent PNG/WEBP)
inapp_image_sizestringoptionalOptional poster width preset when using image_only: 'compact', 'standard' (default), 'large', 'xl', or 'full'
inapp_image_transparentbooleanoptionalSet true when using a transparent PNG/WEBP poster in image_only style so no card box is rendered

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "configure_inapp_banner",
    "arguments": {
      "app_id": "...",
      "inapp_title": "...",
      "inapp_body": "..."
    }
  }
}
configure_payment_webhookcan modifyexternal accessGenerate the ready-to-paste Universal Incoming Webhook URL (POST /api/v1/apps/{app_id}/incoming-event) for 9 …

Generate the ready-to-paste Universal Incoming Webhook URL (POST /api/v1/apps/{app_id}/incoming-event) for 9 auto-detected formats (Midtrans, Xendit, Mayar, Lynk.id, Duitku, Tripay, Supabase Database/Auth, Saweria/Trakteer, Shopify, WooCommerce, GitHub, and Custom JSON), or trigger a live test event when simulate_test=true. Use this tool when connecting a payment gateway, Supabase backend, creator tipping page, or e-commerce store to automatically show a Live Activity Toast, broadcast a Web Push, and/or send a transactional receipt email upon settlement; do not use it for RSS blog feeds (use configure_rss_autopush instead) or manual push campaigns (use send_push_notification instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY; generating the webhook URL costs 0 credits, while live or simulated push broadcasts deduct 1 credit per delivered device (toast_only mode costs 0 credits on display). Returns JSON { ok, app_id, mode, webhook_url, supported_platforms, setup_guides, simulation_result }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
modestringoptionalAction when incoming webhook event arrives: 'both' (default: show Live Activity Toast on website + send Web Push), 'toast_only' (show Live Activity Toast only, 0 credits), or 'push_only' (send Web Push notification only)
simulate_testbooleanoptionalSet true to immediately fire a test incoming webhook event to verify Live Activity Toast and Web Push delivery
platformstringoptionalPlatform format to simulate when simulate_test=true: 'midtrans' (default), 'supabase', 'saweria', 'shopify', 'xendit', 'woocommerce', or 'github'
buyer_namestringoptionalOptional custom actor/buyer name for test simulation (default: 'Budi (Jakarta)')
item_namestringoptionalOptional custom product/order/table name for test simulation (default: 'Paket Premium Rp 149.000')

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "configure_payment_webhook",
    "arguments": {
      "app_id": "..."
    }
  }
}
configure_rss_autopushcan modifyexternal accessConfigure automated 24/7 RSS, Atom, or XML Sitemap polling for an app_id, or trigger an immediate feed check …

Configure automated 24/7 RSS, Atom, or XML Sitemap polling for an app_id, or trigger an immediate feed check and push broadcast via dispatch_now=true. Use this tool when a blog, news portal, or store wants newly published URLs automatically broadcast as push notifications; do not use it for manual one-off messages (use send_push_notification instead) or fixed-time calendar campaigns (use schedule_push_notification instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY; feed URLs are validated against SSRF rules, deduplicated by item GUID/URL so each post is sent only once, and deduct 1 credit per delivered subscriber when a new item is broadcast (setting dispatch_now=true immediately fetches and broadcasts the newest feed entry even if rss_enabled=false). Returns JSON { ok, app_id, rss_enabled, rss_feed_url, rss_interval, dispatched_now, latest_item_title }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
rss_enabledbooleanoptionalSet true to enable background RSS/Sitemap polling at rss_interval, or false to pause background polling
rss_feed_urlstringoptionalPublic HTTPS URL of the RSS 2.0, Atom, or XML Sitemap feed (required when enabling polling or calling dispatch_now=true)
rss_intervalstringoptionalBackground polling interval: '5m', '15m', '30m' (default), '1h', '3h', or 'daily_digest'
rss_prefixstringoptionalOptional text prepended to each auto-generated notification title (e.g., 'Artikel Baru: ')
dispatch_nowbooleanoptionalSet true to immediately fetch the latest feed entry and broadcast it to active subscribers right now

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "configure_rss_autopush",
    "arguments": {
      "app_id": "..."
    }
  }
}
configure_social_toastcan modifyConfigure the standalone on-site Live Activity Social Proof Toast (corner notification card showing recent …

Configure the standalone on-site Live Activity Social Proof Toast (corner notification card showing recent subscriber joins, logins, and purchases) and its 3 automated DOM/webhook sensors for an app_id without overwriting the In-App Promo Banner. Use this tool to enable/disable social proof toasts, change visual theme or screen corner, or toggle auto-capture sensors; do not use it for promo popups (use configure_inapp_banner instead). Requires PUSHNOTIF_API_KEY and costs 0 credits. Returns JSON { ok, app_id, toast_enabled, toast_theme, toast_position, toast_action, sensors }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
toast_enabledbooleanoptionalSet true to enable Live Activity Toast on the website, or false to turn it off
toast_themestringoptionalVisual theme: 'light_emerald' (default), 'dark_slate', 'royal_blue', or 'ai_custom' (bespoke HTML/CSS)
toast_custom_titlestringoptionalOptional custom headline override for the Live Toast (leave empty to use automated sensor feed)
toast_custom_bodystringoptionalOptional custom message body override for the Live Toast
toast_custom_htmlstringoptionalOptional bespoke HTML/CSS markup when toast_theme='ai_custom'
toast_positionstringoptionalScreen corner: 'bottom_left' (default) or 'bottom_right'
toast_actionstringoptionalClick behavior: 'subscribe_push' (default), 'custom_url', or 'none'
toast_custom_urlstringoptionalOptional HTTPS URL opened when toast_action='custom_url'
toast_sensor_subbooleanoptionalAuto-show toast when a new visitor subscribes to push notifications
toast_sensor_authbooleanoptionalAuto-detect signup/login forms on the website
toast_sensor_buybooleanoptionalAuto-detect checkout/payment forms and incoming payment webhooks

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "configure_social_toast",
    "arguments": {
      "app_id": "..."
    }
  }
}
create_appcan modifyRegister a new website domain or mobile application under the authenticated workspace and generate its unique …

Register a new website domain or mobile application under the authenticated workspace and generate its unique ECDSA P-256 VAPID keypair and 1-line HTML SDK snippet. Use this tool when adding an additional website or app to an existing account; do not use it to modify an existing app's icon, welcome push, or mobile keys (use update_app_branding instead) or to remove an app (use delete_app instead). Requires PUSHNOTIF_API_KEY, costs 0 credits, and creates a persistent app record where site_url must be a valid HTTPS origin (or http://localhost for local testing). Returns JSON { ok, app: { id, site_name, site_url, vapid_public_key, created_at }, sdk_snippet }.

ParameterTypeDescription
site_namestringrequiredDisplay name of the website or mobile application (2 to 80 characters)
site_urlstringrequiredCanonical HTTPS origin URL of the website (must start with https:// or http://localhost)

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "create_app",
    "arguments": {
      "site_name": "...",
      "site_url": "..."
    }
  }
}
create_qris_invoicecan modifyexternal accessCreate a prepaid credit top-up invoice payable via Indonesian QRIS (all banks and e-wallets) at a flat rate …

Create a prepaid credit top-up invoice payable via Indonesian QRIS (all banks and e-wallets) at a flat rate of Rp 0.20 per credit (Rp 1,000 = 5,000 non-expiring credits). Use this tool when the user wants to purchase additional credits; do not use it to check whether an existing invoice has been paid (use check_billing_and_qris_status instead). Requires PUSHNOTIF_API_KEY, generates a PENDING order valid for 30 minutes at 0 fee, and automatically credits the workspace upon payment webhook confirmation; if both package_id and custom amount_rp are supplied, amount_rp takes precedence (minimum Rp 1,000). Returns JSON { ok, order: { id, amount_rp, credits_added, status, qris_checkout_url, expires_at } }.

ParameterTypeDescription
package_idstringoptionalPreset package tier: 'starter' (Rp 20,000 = 100,000 credits), 'growth' (Rp 50,000 = 250,000 credits), or 'pro' (Rp 100,000 = 500,000 credits); ignored if amount_rp is explicitly provided
amount_rpintegeroptionalCustom top-up amount in Indonesian Rupiah (minimum 1000, maximum 10000000; 1 IDR = 5 lifetime credits, overrides package_id)

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "create_qris_invoice",
    "arguments": {}
  }
}
delete_appcan modifydestructivePermanently delete a registered application (app_id) along with all of its subscriber device tokens, …

Permanently delete a registered application (app_id) along with all of its subscriber device tokens, scheduled campaigns, and delivery history. Use this tool only when a user explicitly asks to remove a duplicate or decommissioned app; do not use it to pause notifications or change app settings (use update_app_branding or configure_inapp_banner instead). Prerequisite: call list_apps first to verify the exact app_id and active subscriber count. Requires PUSHNOTIF_API_KEY, costs 0 credits, and is irreversibly destructive (confirm_delete must be set to true or the call is rejected). Returns JSON { ok, deleted_app_id, deleted_site_name, subscribers_removed }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx to permanently delete (obtain from list_apps)
confirm_deletebooleanrequiredSafety confirmation flag: must be explicitly set to true to execute permanent deletion

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "delete_app",
    "arguments": {
      "app_id": "...",
      "confirm_delete": false
    }
  }
}
get_campaign_analyticsread-onlyRetrieve historical push campaign delivery metrics (delivered count, click count, CTR percentage, credits …

Retrieve historical push campaign delivery metrics (delivered count, click count, CTR percentage, credits spent) and active scheduled queue items (cmp_sch_xxxx). Use this tool to audit campaign performance or look up scheduled campaign IDs before editing or canceling them with schedule_push_notification; do not use it to inspect QRIS payment invoices (use check_billing_and_qris_status instead) or subscriber device lists (use list_subscribers instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost; omitting app_id aggregates metrics across all workspace apps up to limit rows. Returns JSON { summary: { total_sent, total_clicks, avg_ctr_percent }, campaigns: [{ id, app_id, title, delivered_count, click_count, ctr_percent, created_at }], scheduled_queue: [{ id, app_id, title, scheduled_for, recurrence_rule, status }] }.

ParameterTypeDescription
app_idstringoptionalOptional application ID filter in format app_xxxx (omit to aggregate across all workspace apps)
limitintegeroptionalMaximum number of recent campaigns to return (1 to 50, default: 10)

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "get_campaign_analytics",
    "arguments": {}
  }
}
list_appsread-onlyList all registered websites and mobile apps in the workspace with active subscriber counts, current credit …

List all registered websites and mobile apps in the workspace with active subscriber counts, current credit balance, and optional framework SDK installation snippets (when include_sdk_framework is set). Use this tool first as a prerequisite to obtain a valid app_id before calling send_push_notification, schedule_push_notification, update_app_branding, delete_app, configure_inapp_banner, or configure_rss_autopush; do not use it to inspect individual subscriber devices (use list_subscribers instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost; when include_sdk_framework is passed ('html', 'nextjs', 'laravel', 'wordpress', 'flutter'), each app entry also includes ready-to-paste SDK setup code. Returns JSON { tenant_name, credits_balance, total_apps, apps: [{ id, site_name, site_url, active_subscribers, sdk_guide }] }.

ParameterTypeDescription
app_idstringoptionalOptional specific app_id (format app_xxxx) to filter and inspect in detail
include_sdk_frameworkstringoptionalOptional target stack ('html', 'nextjs', 'laravel', 'wordpress', or 'flutter') to include copy-paste SDK & service worker installation code

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "list_apps",
    "arguments": {}
  }
}
list_subscribersread-onlyRetrieve active subscriber device records, assigned segment tags, platform breakdown counts (Web VAPID, …

Retrieve active subscriber device records, assigned segment tags, platform breakdown counts (Web VAPID, Android FCM, iOS APNs), or full CSV/JSON backup export for zero-downtime migration. Use this tool to inspect audience size, platform distribution, export subscriber tokens (export_format="csv" or "json"), or obtain a subscriber_id before calling update_subscriber_tags; do not use it to view campaign click metrics (use get_campaign_analytics instead) or modify/import subscribers (use update_subscriber_tags instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost; filter by app_id and optional tag to narrow results. Returns JSON { total_active, platform_breakdown: { web, android_fcm, ios_apns }, subscribers: [{ id, app_id, platform, tags, created_at }], export_data }.

ParameterTypeDescription
app_idstringoptionalOptional application ID filter in format app_xxxx (omit to aggregate across all apps in the workspace)
tagstringoptionalOptional segment tag filter (returns only subscribers carrying this tag)
limitintegeroptionalMaximum number of subscriber records to return (1 to 100, default: 15)
export_formatstringoptionalOptional backup export format: 'csv' or 'json' to include full VAPID endpoint/p256dh/auth migration dump for the specified app_id

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "list_subscribers",
    "arguments": {}
  }
}
login_existing_accountcan modifyAuthenticate an existing PushNotif account using email and password to retrieve its live API key and …

Authenticate an existing PushNotif account using email and password to retrieve its live API key and registered apps, with optional inline profile name or password update (when new_name or new_password is provided). Use this tool for existing users connecting from chat or updating account credentials; do not use it for new signups (use register_new_account instead) or app-level branding (use update_app_branding instead). Requires valid email and password (no prior API key needed), costs 0 credits, and is rate-limited against brute-force attempts; read-only unless new_name or new_password is supplied. Returns JSON { ok, tenant: { id, name, email, api_key, credits }, apps: [{ id, site_name, site_url }], profile_updated }.

ParameterTypeDescription
emailstringrequiredRegistered PushNotif account email address
passwordstringrequiredCurrent account login password
new_namestringoptionalOptional new workspace display name (2 to 80 characters) to update upon login
new_passwordstringoptionalOptional new account password (minimum 6 characters) to replace the current password

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "login_existing_account",
    "arguments": {
      "email": "...",
      "password": "..."
    }
  }
}
register_new_accountcan modifyexternal accessTwo-step onboarding tool to request a 6-digit email OTP (step 1: omit otp_code) or verify the OTP to create a …

Two-step onboarding tool to request a 6-digit email OTP (step 1: omit otp_code) or verify the OTP to create a new PushNotif account with 1,000 free lifetime credits, register the initial website, and return a live API key (step 2: pass otp_code, password, and name). Use this tool only for brand-new user signups; do not use it for existing accounts (use login_existing_account instead) or to add websites to an existing account (use create_app instead). Public endpoint requiring no API key; step 1 is rate-limited to 5 OTPs per 10 minutes per IP (valid 10 minutes), while step 2 irreversibly creates a tenant and ECDSA P-256 VAPID keypair. Returns JSON { ok, step, tenant: { id, name, email, api_key, credits }, app: { id, site_name, site_url, vapid_public_key } }.

ParameterTypeDescription
emailstringrequiredEmail address to register (must not already belong to an existing PushNotif account)
namestringoptionalWorkspace or company display name (2 to 80 characters; required when verifying otp_code)
passwordstringoptionalAccount login password (minimum 6 characters; required when verifying otp_code)
otp_codestringoptionalOptional 6-digit numeric OTP from email: omit on first call to send the OTP email, then provide on second call to complete registration
site_namestringoptionalOptional display name for the initial website or app (defaults to workspace name)
site_urlstringoptionalOptional full HTTPS origin URL of the initial website (e.g., https://example.com)

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "register_new_account",
    "arguments": {
      "email": "..."
    }
  }
}
schedule_push_notificationcan modifyCreate a new scheduled or recurring push notification campaign, edit an existing queued campaign (via …

Create a new scheduled or recurring push notification campaign, edit an existing queued campaign (via update_campaign_id), or cancel a queued campaign before execution (via cancel_campaign_id). Use this tool for delayed, recurring, or editable future broadcasts; do not use it for immediate sending (use send_push_notification instead) or automated RSS feed polling (use configure_rss_autopush instead). Prerequisite: call list_apps to obtain app_id, or call get_campaign_analytics to obtain an existing cmp_sch_xxxx ID for editing or cancellation. Requires PUSHNOTIF_API_KEY; scheduling, editing, or canceling costs 0 credits up front, and 1 credit per delivered device is deducted only when the schedule fires (mutually exclusive modes: pass cancel_campaign_id to delete, update_campaign_id to modify fields in-place, or neither to create a new schedule). Returns JSON { ok, action, scheduled_campaign: { id, app_id, title, body, scheduled_for, recurrence_rule, status } }.

ParameterTypeDescription
app_idstringoptionalTarget application ID in format app_xxxx (required when creating a new schedule)
titlestringoptionalNotification headline (1 to 100 characters; required when creating, optional when editing via update_campaign_id)
bodystringoptionalNotification body text (1 to 240 characters; required when creating, optional when editing via update_campaign_id)
urlstringoptionalOptional HTTPS destination URL opened when the notification is tapped
scheduled_forstringoptionalISO-8601 execution timestamp with timezone offset (e.g., '2026-10-21T08:00:00+07:00')
recurrence_rulestringoptionalRecurrence pattern: 'once' (default), 'daily', 'twice_daily', 'weekly', 'monthly', 'every_30m', 'every_3h', 'every_6h', or a 5-field cron expression
update_campaign_idstringoptionalOptional existing scheduled campaign ID (format cmp_sch_xxxx from get_campaign_analytics) to edit in-place with new title, body, url, scheduled_for, or recurrence_rule
cancel_campaign_idstringoptionalOptional existing scheduled campaign ID (format cmp_sch_xxxx from get_campaign_analytics) to cancel and remove from the queue

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "schedule_push_notification",
    "arguments": {}
  }
}
send_push_notificationcan modifyexternal accessBroadcast an immediate push notification across Web Push (VAPID), Android (FCM), and iOS (APNs) to active …

Broadcast an immediate push notification across Web Push (VAPID), Android (FCM), and iOS (APNs) to active subscribers of a specific app_id. Use this tool for instant real-time delivery; do not use it for future or recurring broadcasts (use schedule_push_notification instead) or on-site HTML popups (use configure_inapp_banner instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY, deducts 1 credit (Rp 0.20) per successfully delivered device (0 credits charged for 404/410 dead tokens, which are auto-pruned), and is irreversible once dispatched; when segment is set to a custom tag (from update_subscriber_tags) instead of 'all', only subscribers carrying that tag receive the broadcast, and omitting url defaults the tap action to the app's registered site_url. Returns JSON { ok, campaign_id, total_targeted, total_delivered, total_gone_pruned, credits_deducted, credits_remaining }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
titlestringrequiredNotification headline shown on the lock screen (1 to 100 characters)
bodystringrequiredNotification message body text (1 to 240 characters)
urlstringoptionalOptional HTTPS destination URL opened when the notification is tapped (defaults to app's site_url)
segmentstringoptionalTarget audience filter: 'all' (default) or a specific subscriber/merchant tag assigned via data-tags, PushNotif.addTag(), or update_subscriber_tags
icon_urlstringoptionalOptional HTTPS URL of a custom notification icon/logo (e.g., per-merchant logo override on a shared App ID)

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "send_push_notification",
    "arguments": {
      "app_id": "...",
      "title": "...",
      "body": "..."
    }
  }
}
send_transactional_emailcan modifyexternal accessSend a 1-to-1 locked transactional email (6-digit OTP challenge, paid invoice receipt, or order shipping …

Send a 1-to-1 locked transactional email (6-digit OTP challenge, paid invoice receipt, or order shipping status update) or verify a 6-digit OTP code entered by a user. Use this tool for transactional 1-to-1 emails and managed OTP verification; bulk marketing or promotional blasts are strictly prohibited. Requires PUSHNOTIF_API_KEY; sending an email or OTP deducts 25 credits (Rp 5), while verifying an OTP code (action=verify_otp) costs 0 credits. Returns JSON delivery receipt or OTP verification token.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
actionstringrequiredOperation mode: 'send_otp' (generate & email 6-digit OTP), 'verify_otp' (verify 6-digit code), 'send_invoice' (send paid receipt email), or 'send_order_status' (send order/shipping update)
to_emailstringrequiredSingle recipient email address (1-to-1 transactional only)
otp_codestringoptional6-digit numeric OTP code (required when action='verify_otp')
reference_idstringoptionalInvoice number or Order ID (e.g., 'INV-2026-001' or 'ORD-99281' for send_invoice / send_order_status)
detail_textstringoptionalTransaction amount/items or shipping courier tracking info (e.g., 'Rp 85.000 — Kopi Susu' or 'DIKIRIM — Resi JNE: JP882910')

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "send_transactional_email",
    "arguments": {
      "app_id": "...",
      "action": "...",
      "to_email": "..."
    }
  }
}
update_app_brandingcan modifyUpdate an existing application's notification icon URL, automated welcome push message (including drip delay …

Update an existing application's notification icon URL, automated welcome push message (including drip delay welcome_delay_sec and promo target URL welcome_url), zero-downtime custom VAPID keys (vapid_public_key & vapid_private_key for migrating from OneSignal/LaraPush), and optional native mobile push credentials (Android FCM HTTP v1 service account JSON and iOS APNs .p8 key). Use this tool to configure app-level branding, onboarding welcome alerts, custom VAPID key migration, or native mobile credentials; do not use it to create a new app (use create_app instead) or configure on-site HTML popups (use configure_inapp_banner instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY and idempotently updates only the fields provided at 0 configuration cost (when welcome_enabled=true, each new subscriber welcome push deducts 1 credit; APNs requires apns_key_id, apns_team_id, apns_bundle_id, and apns_p8_key together). Returns JSON { ok, app_id, icon_url, welcome_enabled, welcome_url, welcome_delay_sec, custom_vapid_updated, android_fcm_configured, ios_apns_configured }.

ParameterTypeDescription
app_idstringrequiredTarget application ID in format app_xxxx (obtain from list_apps)
icon_urlstringoptionalOptional direct HTTPS URL to a square PNG/JPG/WebP brand icon (recommended 192x192px)
welcome_enabledbooleanoptionalSet true to automatically send a welcome push notification immediately after a visitor subscribes
welcome_titlestringoptionalHeadline of the automated welcome push notification (max 80 characters; used when welcome_enabled=true)
welcome_bodystringoptionalBody text of the automated welcome push notification (max 180 characters; used when welcome_enabled=true)
welcome_urlstringoptionalOptional target promo/onboarding HTTPS URL opened when the subscriber clicks the welcome push notification (defaults to site_url)
welcome_delay_secintegeroptionalOptional drip delay in seconds (0 to 300, default: 0) before firing the welcome push notification after opt-in
vapid_public_keystringoptionalOptional URL-safe Base64 VAPID Public Key imported from OneSignal, LaraPush, or Webpushr for zero-downtime migration
vapid_private_keystringoptionalOptional URL-safe Base64 or PEM VAPID Private Key paired with vapid_public_key
fcm_service_account_jsonstringoptionalOptional raw JSON string of Google Firebase Service Account key for native Android FCM HTTP v1 delivery
apns_key_idstringoptionalOptional 10-character Apple Developer APNs Key ID (provide together with apns_team_id, apns_bundle_id, and apns_p8_key)
apns_team_idstringoptionalOptional 10-character Apple Developer Team ID
apns_bundle_idstringoptionalOptional iOS application Bundle Identifier (e.g., 'id.company.app')
apns_p8_keystringoptionalOptional full PEM content of Apple's AuthKey_XXXX.p8 private key file

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "update_app_branding",
    "arguments": {
      "app_id": "..."
    }
  }
}
update_subscriber_tagscan modifyAssign or remove audience segment tags on a subscriber device (subscriber_id), permanently unsubscribe a …

Assign or remove audience segment tags on a subscriber device (subscriber_id), permanently unsubscribe a device (unsubscribe=true), or bulk-import existing Web Push subscribers via CSV or JSON array (import_app_id + import_csv or import_subscribers) at 0 credit cost. Use this tool to manage subscriber segmentation, remove a device, or migrate subscribers from OneSignal/LaraPush/Webpushr; do not use it to list or export subscribers (use list_subscribers instead). Requires PUSHNOTIF_API_KEY and costs 0 credits. Returns JSON { ok, subscriber_id, action, tags, removed, imported, updated }.

ParameterTypeDescription
subscriber_idstringoptionalTarget subscriber device ID in format sub_xxxx (required when updating tags or unsubscribing a single device)
add_tagsstring[]optionalOptional list of lowercase segment tag strings (e.g., ['vip', 'jakarta']) to attach to the subscriber for targeted broadcasts
remove_tagsstring[]optionalOptional list of segment tag strings to remove from the subscriber
unsubscribebooleanoptionalSet true to permanently unsubscribe and delete this subscriber device record
import_app_idstringoptionalOptional target app_id (app_xxxx) when performing a zero-downtime bulk subscriber import via import_csv or import_subscribers
import_csvstringoptionalOptional CSV text containing endpoint,p256dh,auth,tags rows to bulk-import into import_app_id
import_subscribersobject[]optionalOptional JSON array of subscriber objects ({endpoint, p256dh, auth, tags}) to bulk-import into import_app_id

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "update_subscriber_tags",
    "arguments": {}
  }
}

Badge

Maintain this server? Put its live status in your README:

MCP status badge

[![MCP status](https://mcp.aianytime.net/badge/pushnotif.svg)](https://mcp.aianytime.net/s/pushnotif/)

Edit this entry · Report a problem

More in Marketing, content & social

Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt

Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers