Skip to main content
Glama

Create a proactive message

create_proactive_message

Saves a new chat message, pop-up or banner as a draft. Visitors see nothing until publish_proactive_message. write_proactive_message_copy can draft the words.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
goalNoWhat counts as success: { event (a journey trigger name such as page.visited, or null), name (for custom.event), days, stop: stop showing it to people who reached it }.
kindYes
nameYesInternal name.
pagesNoPage paths: { include: ["/pricing", "/docs/**"], exclude: [] }. No includes means every page.
contentNoBy kind. chat: { text (markdown, at most 300 chars, {{first_name}} works), sender: {type:"agent"} | {type:"member",userId} | {type:"team",name}, display: "bubble"|"messenger", buttons: [{label, action: url|chat|article|dismiss|reply, value}], replyable }. popup: { slides: [{ title, text, button: {label, action, value} | null, media: null }], size: small|medium|large, layout: top|side|background, dismissible }. banner: { text (at most 120 chars), position: top|bottom, style: inline|floating, tone: accent|neutral|warning, cta: { type: none|link|button, label, url }, dismissible }.
triggerNoPopups and banners only: when it shows. { type: "load" } | { type: "delay", seconds } | { type: "scroll", percent } | { type: "exit" } | { type: "time_on_page", seconds } | { type: "inactivity", seconds } | { type: "click", selector } | { type: "event", name } | { type: "manual" }.
audienceNoWho sees it: { who: all|identified|anonymous|journey ("journey" only when a journey sends it), device: any|desktop|mobile, utm: {source, medium, campaign}, conditions: rules on contact fields }.
priorityNoHigher shows first.
scheduleNo{ start, end }: ISO dates or null.
frequencyNo{ repeat: once|session|days, days (for "days"), skipIfChatted: skip people who chatted in the last day }.
productIdNoOne product, or null for every product.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag a non-readonly, non-idempotent, non-destructive mutation, so the safety profile is covered. The description adds crucial context beyond that: it is a draft, visitors see nothing until publish. It omits return shape and any permission limits, but the key behavioral trait is disclosed.

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?

Three short sentences, zero waste, with the draft scoping front-loaded and the sibling pointers following. Every sentence earns its place.

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?

For an 11-parameter creation tool with no output schema, the description covers purpose, lifecycle (draft vs published) and the copy-drafting alternative, while the rich schema handles the parameter detail. Output/return values are not described, which is a minor residual gap.

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 91% and the properties already explain content, trigger, audience, goal, frequency and schedule in detail. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

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?

States a specific verb and resource ("Saves a new chat message, pop-up or banner as a draft") and immediately distinguishes the three message kinds. It also implicitly differentiates from publish_proactive_message and write_proactive_message_copy, so an agent can place it in the create/draft slot without opening a sibling schema.

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?

Clearly signals the create-as-draft flow and names two alternatives with their roles: publish_proactive_message to make it visible, write_proactive_message_copy to draft the wording. No explicit when-not-to-use or preconditions, but the routing is clear.

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