Version
DESTRUCTIVE

update_canned_reply

Change one or more fields of a saved support reply. Anything omitted keeps its stored value.

Edit a snippet in place — reword the body, rename it, give it a shortcut or move it in the picker. The change is partial by design: only the arguments present in the call are written, and every other field is filled from the stored row.

Emits support.canned_reply.updated with the fields that changed, and only when something did. Idempotent: sending the stored values again writes nothing and emits nothing.

Omitted is not the same as null

Leaving shortcut out keeps the current shortcut; passing shortcut: null clears it. sort_order is the exception — null there is treated like an omission and the stored position stays.

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Delivered to every endpoint subscribed to it once the change is made.

Annotations

DestructiveIdempotentOpen world

A client that honours annotations asks a person before running it. Sending the same arguments twice changes nothing the second time. It reaches beyond Subscriby: a connector, a provider or a member.

Arguments

project_id*string

UUID of the project the snippet belongs to.

canned_reply_id*string

UUID of the saved reply to change.

titlestringoptional

New label, 2 to 80 characters.

bodystringoptional

New reply text, 2 to 4000 characters.

shortcutstringoptional

New slash-command, unique within the project. Pass null to clear it.

sort_orderintegeroptional

New position in the picker, 0 to 999.

min0max999

What it returns

{  "data": {    "id": "5d2f8a71-3c9e-4b06-a8f4-1e7c9d2b6a35",    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",    "title": "Refund policy (2026)",    "body": "Refunds are available within 14 days of your first payment. Reply here with the email you paid with and we'll sort it.",    "shortcut": "refund",    "sort_order": 0,    "created_at": "2026-06-02T09:14:02+00:00",    "updated_at": "2026-09-06T10:05:00+00:00"  }}

The full row after the change, not just the fields sent — so the response is what a creator now sees in the picker.

How it fails

VALIDATION_FAILED

a title or body that is present but empty or outside its length limits, a shortcut over 30 characters, with disallowed characters, or already used by a different snippet in this project, or sort_order outside 0–999. Also returned when the token's owner is on the project's team but their role lacks the support permission on it.

RESOURCE_NOT_FOUND

project_id names a project the token cannot see, or canned_reply_id is unknown, deleted, or belongs to another project.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks support-canned-reply:update.

How is this guide?

Last updated on