Skip to main content
Glama

preview_notification

Read-only

Checks a message without sending it. Returns the cleaned content, how many devices it reaches, warnings, how it reads for a few real people (samples), when each wave goes out, what each platform receives, and a confirmToken (valid 30 minutes) that send_notification needs for anything beyond a few named users. Show the person this preview before sending.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "content": "<content>"
    },
    "name": "preview_notification"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNoDefault marketing
appIdNoThe app to act on, from list_apps. Optional when the key belongs to one app.
contentYesText fields and links can use {{variables}}, each with an optional fallback: {{first_name|there}}, {{city}}, {{time_of_day}}, {{greeting}}, {{weekday}}, {{weather}}, {{temp}}, {{occasion}}, {{tag.plan}}, {{app_name}}. They are filled in for each person; call get_context first.
audienceNoWho receives it. Empty means every subscribed device of the app.
deliveryNoWhen each person gets it. now (default): at sendAfter, holding marketing pushes for anyone in the app's quiet hours. local_time: at this clock time in each person's own time zone, e.g. 09:00. best_hour: at the hour each person usually uses the app, with fallback for people without enough history. Waves run over up to 24 hours.
platformsNoSeveral platforms of one app in one campaign: "all", or a list of "ios", "android", "web" (or App IDs). Each person gets it once. Omit (with no productId) for the one platform of appId.
productIdNoThe whole app (productId from list_apps), for a campaign across its platforms. Same as appId of any platform with platforms "all".
sendAfterNoISO 8601

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / audience / properties / externalIds / description
      Previous value: -"Your own user ids, as the app passed to Hailbell's identify"New value: +"User ids: the id the app signs in to Hailbell with, or the Superwall user id, Superwall alias id or RevenueCat id it sends as metadata (as on the customer's sheet)"
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds genuinely new behavior: the response includes warnings and sampled reads, the confirmToken expires after 30 minutes, and it gates larger sends. The human-in-the-loop instruction and token lifetime are things no annotation or schema conveys. It stops short of saying whether previewing has side effects (e.g. whether it consumes quota or is rate-limited).

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

Conciseness4/5

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

Front-loaded with the core distinction (checks, doesn't send) before the long return-value enumeration, and the closing instruction lands last. The middle sentence is a dense comma list, but each item names a distinct output an agent would otherwise not know about, so little is wasted.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and does so by naming every meaningful output including warnings, samples, waves, and the token. For an 8-parameter tool with deep nesting, the schema covers the inputs thoroughly. Minor gap: nothing about how a large preview behaves (latency, cost) before the agent commits to calling it.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 8 parameters is already documented in detail, including nested content and audience fields. The description adds only a faint hint tying the confirmToken to the 'beyond a few named users' audience threshold. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

"Checks a message without sending it" gives a specific verb (checks/preview) and resource (message/notification), and the read-only framing separates it cleanly from any actual send. The enumeration of what comes back (cleaned content, reach count, warnings, samples, waves, per-platform payload) further pins down what this tool is rather than leaving it as a vague 'validate'.

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?

"Show the person this preview before sending" is an explicit usage directive, and the confirmToken sentence tells the agent exactly when this tool is prerequisite (sending to more than a few named users). It doesn't mention when a preview is unnecessary, or contrast with estimate_audience, so the exclusion side is unstated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources