Skip to main content
Glama
awesomemotive

pushengage-mcp

Send a push notification

pushengage_send_notification

Send push notifications to website and app subscribers, with immediate, scheduled, or recurring delivery and audience targeting.

Instructions

Creates and sends a push notification on the current site. Required fields: title, message, url. Do not add optional fields (tags, image_url, utm_params, audience_groups, actions, etc.) unless the user explicitly asks for them — for example, do not infer tags from the notification topic. Delivery modes (mutually exclusive — pick AT MOST one): (a) status="schedule" + schedule_date for a one-shot scheduled send; (b) pass recurring_schedule { days, times, start_date, end_date } for a recurring/repeating notification — leave status at "sent" (default) to activate the recurrence, or use "draft" to save without activating; (c) when scheduling one-shot, optionally pass send_in_subscribers_timezone=true to deliver at the scheduled wall-clock time in each subscriber's local timezone (only when the user explicitly asks, e.g. "send at 9am in their timezone"). Otherwise the notification is sent immediately. Use status="draft" to save without sending or activating. Audience: by default sends to all subscribers. Pass audience_groups (array of 1-20 predefined audience-group IDs) only when the user mentions a saved/predefined audience group. When the user asks to use the site URL, call pushengage_list_sites and use the current site's site_url.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesDestination URL when the subscriber clicks the notification
tagsNoUp to 5 tags, 36 chars each. Only when the user explicitly asks for tags.
titleYesNotification title
statusNoSend now (sent), schedule for later (schedule), or save without sending (draft)sent
actionsNoAction buttons. Only when the user explicitly asks.
messageYesNotification message body
site_idNoOverride the currently selected site
ios_pushNoiOS-specific options. Only when the user explicitly asks.
expire_inNoExpiry in seconds (60–2419200). Only when the user explicitly asks.
image_urlNoSmall notification icon. Only when the user explicitly asks for an image.
utm_paramsNoUTM tracking params. Only when the user explicitly asks.
android_pushNoAndroid-specific options. Requires channel_id when set. Only when the user explicitly asks.
big_image_urlNoLarge hero image. Only when the user explicitly asks for a big image.
schedule_dateNoRequired when status is "schedule". Format: YYYY-MM-DD HH:mm:ss in the site timezone.
audience_groupsNoSend to one or more predefined audience groups (1-20 group IDs). Each ID refers to an audience group already configured in PushEngage. Omit this field to send to all subscribers. Only set this when the user mentions a saved/predefined audience group.
recurring_scheduleNoOPTIONAL. Turns this into a recurring notification that fires on the chosen days/times between start_date and end_date. Mutually exclusive with status="schedule", schedule_date, and send_in_subscribers_timezone. With recurring_schedule set, leave status at "sent" (default) to activate the recurrence, or use "draft" to save without activating. Only set this when the user explicitly asks for a recurring/repeating notification.
send_in_subscribers_timezoneNoOnly valid when status="schedule" (and not combined with recurring_schedule). When true, schedule_date is interpreted in each subscriber's local timezone instead of the site timezone — one delivery is scheduled per subscriber timezone so every recipient receives the push at the same wall-clock time. Only set this when the user explicitly asks for subscriber-timezone delivery (for example: "send at 9am in their timezone").

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNo
titleNo
statusNo
messageNo
view_urlNo
notification_idNo
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses far beyond annotations: it explains default behavior (send immediately, all subscribers), the meaning of status values, mutual exclusivity of scheduling options, timezone interpretation, and the critical instruction not to infer optional fields. This rich behavioral context is not present in the annotations (which only state non-read-only, non-idempotent, non-destructive) and is exactly what an agent needs to avoid misusing the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but exceptionally well-structured and front-loaded. It opens with the core purpose, then proceeds through required fields, optional-field constraints, and delivery modes in a logically ordered, scannable format. Every sentence earns its place; the density is justified by the tool's 17 parameters and complex scheduling behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested objects, 17 params, scheduling modes) and the availability of a full output schema, the description is remarkably complete. It covers all major decision points: send modes, audience targeting, optional-field restrictions, timezone handling, and the site-URL workflow. No critical operational aspect appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description adds substantial meaning beyond the schema: it calls out required fields, states that optional fields must not be added unless explicitly requested, clarifies the semantics of recurring_schedule (activate vs draft), and explains when send_in_subscribers_timezone is valid. This transforms the schema from a field list into actionable decision guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource statement: 'Creates and sends a push notification on the current site.' It clearly distinguishes the tool's core action and scope, and the level of detail makes it unmistakable what the tool accomplishes. It also implicitly differentiates from siblings like send_ab_notification by focusing on standard sends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides extensive when-to-use guidance: explicit delivery modes, when to use draft vs sent vs schedule, when to pass audience_groups, and an explicit alternative (call pushengage_list_sites for site URL). However, it does not explicitly mention sibling alternatives like send_ab_notification or list_notifications for A/B testing or viewing existing notifications, which would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/awesomemotive/pushengage-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server