Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PUSHNOTIF_API_KEYYesYour PushNotif.biz.id API key (pn_live_...), sent as an `Authorization: Bearer YOUR_API_KEY` header. Sign up for free at https://pushnotif.biz.id to get 1,000 free starter credits, or self-register autonomously via OTP following https://pushnotif.biz.id/llms.txt.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
request_registration_otpA

Send a 6-digit email verification OTP to start registering a new PushNotif account. Use this tool first when a user wants to create a new account from chat; do not use it for existing accounts (use login_existing_account instead). Public endpoint requiring no API key; checks for duplicate emails, rate-limited to 5 requests per 10 minutes per IP, and sends an OTP valid for 10 minutes before calling register_new_account. Returns JSON { ok, status, email, message }.

register_new_accountA

Verify a 6-digit email OTP, create a new PushNotif tenant account with 1,000 free lifetime credits, register the initial website app, and issue a live API key. Use this tool immediately after request_registration_otp once the user providesotp_code; do not use it to add extra websites to an existing account (use create_app instead). Public endpoint requiring no prior API key; irreversibly creates a tenant record and auto-generates ECDSA P-256 VAPID keys. Returns JSON { ok, tenant: { id, name, email, api_key, credits }, app: { id, site_name, site_url, vapid_public_key } }.

login_existing_accountA

Authenticate an existing PushNotif account with email and password to retrieve its active API key and registered apps list. Use this tool when an existing user wants to connect their account in chat without opening the web dashboard; do not use it for new signups (use request_registration_otp and register_new_account instead). Read-only authentication check with no credit cost, rate-limited against brute-force attempts. Returns JSON { ok, tenant: { id, name, email, api_key, credits }, apps: [{ id, site_name, site_url }] }.

list_appsA

List all registered websites and mobile apps in the authenticated PushNotif workspace along with active subscriber counts and current credit balance. Use this tool first as a prerequisite before calling send_push_notification, schedule_push_notification, get_integration_guide, or configure_inapp_banner to obtain a valid app_id; do not use it to inspect individual device tokens (use list_subscribers instead). Read-only operation requiring PUSHNOTIF_API_KEY with zero credit cost. Returns JSON { tenant_name, credits_balance, total_apps, apps: [{ id, site_name, site_url, active_subscribers }] }.

create_appA

Register an additional website or mobile application under the authenticated PushNotif workspace and generate its unique ECDSA P-256 VAPID keypair. Use this tool when an authenticated user wants to add a new website domain or app; do not use it to modify an existing app's logo or welcome message (use update_app_branding instead) or to register a brand-new user account (use register_new_account instead). Requires PUSHNOTIF_API_KEY, costs 0 credits, and creates a persistent app record. Returns JSON { ok, app: { id, site_name, site_url, vapid_public_key, created_at }, sdk_snippet }.

send_push_notificationA

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 in-page 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. Set segment='all' for all active subscribers or pass a specific tag name to target a subset. Returns JSON { ok, campaign_id, total_targeted, total_delivered, total_gone_pruned, credits_deducted, credits_remaining }.

get_integration_guideA

Generate copy-pasteable SDK installation code and service worker setup instructions for a specific app_id and target framework. Use this tool when a developer asks how to install PushNotif on HTML, Laravel, Next.js/React, WordPress, or Flutter/mobile; do not use it to send notifications (use send_push_notification instead). Prerequisite: call list_apps first to get app_id. Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost. Returns JSON { app_id, site_name, framework, one_line_script, service_worker_url, code_snippet, verification_steps }.

update_profileA

Update the authenticated tenant's workspace display name or account password. Use this tool only for account-level profile or password changes; do not use it to change a website's notification logo or welcome push message (use update_app_branding instead). Requires PUSHNOTIF_API_KEY, costs 0 credits, and overwrites the workspace name (and password hash if new_password is supplied). Returns JSON { ok, tenant: { id, name, email }, password_updated }.

update_app_brandingA

Configure an application's notification icon URL and automated welcome push notification sent when a visitor first subscribes. Use this tool to customize app-level branding and onboarding welcome alerts; do not use it to change account-level workspace names (use update_profile instead) or in-page popups (use configure_inapp_banner instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY, idempotently updates the app record at 0 configuration cost (welcome pushes cost 1 credit per new subscriber when welcome_enabled=true). Returns JSON { ok, app_id, icon_url, welcome_enabled, welcome_title, welcome_body }.

create_qris_invoiceA

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 lifetime credits). Use this tool when the user wants to add credit balance; do not use it to check whether an existing invoice has been paid (use check_billing_and_qris_status instead). Requires PUSHNOTIF_API_KEY, creates a PENDING order valid for 30 minutes, and automatically adds non-expiring credits upon payment webhook confirmation. Provide either package_id ('starter'=Rp 20,000, 'growth'=Rp 50,000, 'pro'=Rp 100,000) or a custom amount_rp (>= 1000). Returns JSON { ok, order: { id, amount_rp, credits_added, status, qris_checkout_url, expires_at } }.

schedule_push_notificationA

Schedule a one-time or recurring push notification campaign for a future timestamp, or cancel an existing pending schedule. Use this tool for delayed or recurring broadcasts (daily, weekly, cron); do not use it for immediate sending (use send_push_notification instead). Prerequisite: call list_apps first to obtain app_id, or call get_campaign_analytics to find a cancel_campaign_id. Requires PUSHNOTIF_API_KEY; credits (1 per delivered device) are deducted only when the scheduled dispatch executes. Pass cancel_campaign_id ('cmp_sch_xxxx') to cancel a queued job, or pass app_id, title, body, and scheduled_for (ISO-8601) to create one. Returns JSON { ok, action, scheduled_campaign: { id, app_id, title, scheduled_for, recurrence_rule, status } }.

get_campaign_analyticsA

Retrieve historical push campaign delivery metrics (sent count, click count, CTR percentage, credits spent) and active scheduled queue items. Use this tool to audit campaign performance or find scheduled campaign IDs (cmp_sch_xxxx); do not use it to check QRIS payment invoices (use check_billing_and_qris_status instead) or raw subscriber device lists (use list_subscribers instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost. 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: [...] }.

list_subscribersA

Retrieve active subscriber device records and platform breakdown counts (Web VAPID, Android FCM, iOS APNs) for the workspace or a specific app_id. Use this tool to inspect audience size, platform distribution, or subscriber tags; do not use it to view campaign click metrics (use get_campaign_analytics instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost. Returns JSON { total_active, platform_breakdown: { web, android_fcm, ios_apns }, subscribers: [{ id, app_id, platform, tags, created_at }] }.

check_billing_and_qris_statusA

Check QRIS top-up order payment status (PENDING or PAID), current credit balance, credit ledger history, and official PDF invoice URLs. Use this tool to verify whether a QRIS invoice from create_qris_invoice has been paid or to audit credit usage; do not use it to create a new top-up invoice (use create_qris_invoice instead). Read-only operation requiring PUSHNOTIF_API_KEY with 0 credit cost. Returns JSON { credits_balance, orders: [{ id, amount_rp, credits_added, status, invoice_pdf_url, created_at }], recent_ledger: [...] }.

configure_mobile_credentialsA

Store native mobile push credentials—Firebase Cloud Messaging (FCM HTTP v1 service-account.json) for Android APK and Apple Push Notification service (.p8 AuthKey, Key ID, Team ID, Bundle ID) for iOS—on a specific app_id. Use this tool when enabling native Android or iOS push delivery; do not use it for standard browser Web Push (which uses auto-generated VAPID keys from create_app). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY, costs 0 credits, and idempotently updates encrypted mobile credentials. Returns JSON { ok, app_id, android_fcm_configured, ios_apns_configured }.

configure_inapp_bannerA

Configure and publish an on-site In-App Popup or Banner (center modal, top sticky bar, or bottom slide-in card) rendered by the PushNotif SDK without requiring browser notification permission. Use this tool to display promotional popups or announcements to all active website visitors; do not use it to send OS lock-screen push notifications (use send_push_notification instead). Prerequisite: call list_apps first to obtain app_id. Requires PUSHNOTIF_API_KEY; saving configuration costs 0 credits, and each live visitor impression deducts 1 credit. Returns JSON { ok, app_id, inapp_enabled, inapp_style, inapp_trigger, inapp_freq }.

configure_rss_autopushA

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 articles automatically broadcast as push notifications; do not use it for manual one-off messages (use send_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, and deduct 1 credit per delivered subscriber when a new post is broadcast. Returns JSON { ok, app_id, rss_enabled, rss_feed_url, rss_interval, dispatched_now, latest_item_title }.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a clearly distinct resource+action, and descriptions actively cross-reference the nearest confusable sibling (e.g. send vs. schedule vs. configure_inapp_banner vs. configure_rss_autopush, update_profile vs. update_app_branding). The send/schedule/banner/RSS quartet are all notification-adjacent yet cleanly separated by channel and timing. An agent can reliably pick the right tool.

Naming Consistency5/5

Consistent snake_case verb_noun pattern throughout (list_apps, create_app, send_push_notification, configure_inapp_banner, check_billing_and_qris_status). Verbs are used with stable meaning (list/get for reads, create/configure/update for writes, check for status). No style mixing.

Tool Count4/5

17 tools is slightly above the ideal 3-15 range but each earns its place given the broad domain (auth, apps, notifications, mobile/RSS/in-app channels, billing, analytics, subscribers). No obvious redundancy or filler tools. Marginally heavy but well-scoped for the feature surface.

Completeness4/5

Strong lifecycle coverage: registration/login, app creation and branding, multi-channel sending, scheduling/cancel, billing, analytics, subscriber inspection, and integration guides. Minor gaps remain—no delete_app, no subscriber/tag management, and scheduled campaigns can only be canceled, not edited. These are workaround-able, so a small deduction only.

Maintenance

ActivityNo data
ResponsivenessNo issues