Skip to main content
Glama

Update a notification

update_message
DestructiveIdempotent

Revise a published notification in place using its sequence ID, so subscribers see the updated text and fields without receiving another notification.

Instructions

Replaces the content of a notification already published, so subscribers see it change in place instead of receiving another one.

The sequence id is the id returned by publish_message. It only exists for cached messages: one published with "cache": false cannot be updated. Only the fields given are sent; the cache keeps each revision as its own entry pointing back at the original, which is why list_messages shows them with an "updates" field — the original keeps its old text and a second entry carries the new one.

Needs ntfy 2.16.0 or newer, and the failure below that is silent: an older server simply publishes a new notification instead of revising the old one, and answers success. If subscribers report receiving two, that is why — check get_server_info for the version.

Asks a person first; where the client cannot show a dialog, call once to receive a token and again with it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
iconNoURL of a JPEG or PNG icon.
tagsNoTags as separate entries. Names that match an emoji short code (for example "warning", "rocket") are rendered as that emoji.
clickNoURL opened when the notification itself is tapped.
titleNoThe notification title.
topicNoIts topic. Defaults to the first NTFY_TOPICS entry.
actionsNoUp to 3 action buttons. An "http" action fires from the recipient's device, not from the server, and defaults to POST.
messageNoThe notification body.
markdownNoRender the message as Markdown in clients that support it.
priorityNo1 (min) to 5 (max), or "min"/"low"/"default"/"high"/"max".
sequence_idYesId of the notification to revise, as returned by publish_message.
confirm_tokenNoThe token from this tool’s previous, unconfirmed response.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
topicYes
updatedYesThe sequence id that was revised.
revision_idYesId of the revision entry the cache now also holds.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.2.0

TDQS

A4.7/5.0
Behavior5/5

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

Even with annotations marking this as destructive and idempotent, the description adds substantial behavioral context: the sequence_id only exists for cached messages, the cache stores revisions with the original preserved, list_messages surfaces an "updates" field, older servers fail silently, and a person-confirmation/token flow is required. These details go far beyond what the annotations alone convey and help the agent anticipate side effects and failure modes.

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 dense but every sentence earns its place: purpose, cache/revision semantics, version compatibility, and human confirmation. It is front-loaded with the core concept and then layers the necessary caveats without fluff. The length is justified by the tool's complexity and the critical failure modes it must warn about.

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 output schema exists and the input schema fully documents parameters, the description covers the remaining contextual needs: when the operation is available, what happens for unsupported versions, how revisions appear in list_messages, and the exact confirmation protocol. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds extra value by explaining that only supplied fields are sent, that sequence_id is tied to cached messages from publish_message, and that confirm_token is part of a two-call confirmation flow. This cross-parameter behavior is not fully evident from the schema alone.

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 and resource: "Replaces the content of a notification already published." It also distinguishes itself from related operations by saying subscribers see the change "in place instead of receiving another one," which directly contrasts with publish behavior. This is more than adequate to differentiate update_message from publish_message and the other siblings.

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 clearly indicates when this tool is appropriate: for already-published, cached notifications that should be revised in place. It also gives important exclusions: messages published with cache=false cannot be updated, and older ntfy versions silently fall back to publishing a new notification. It does not explicitly name publish_message as the alternative for non-cached messages, but the contrast is implied strongly enough that an agent can route correctly.

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

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/ni-c/ntfy-mcp'

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