create_canned_reply
Save a reusable support reply on a project, with an optional slash-command shortcut and picker position.
Add a snippet to a project's saved replies. It appears in the thread composer's picker straight away, and a creator can pull it in by typing its shortcut. The text is validated against the same rules the dashboard form applies, so a snippet accepted here renders in the composer exactly as one saved from the inbox.
Synchronous — the new row is returned, and support.canned_reply.created emits once.
Not idempotent
Two calls with the same title and body save two snippets. Only shortcut
is unique within a project, so a snippet without one can be duplicated freely.
Check list_canned_replies before creating.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it. It reaches beyond Subscriby: a connector, a provider or a member.
Arguments
project_id*stringUUID of the project the snippet belongs to.
title*stringShort label shown in the picker, 2 to 80 characters.
body*stringThe reply text, 2 to 4000 characters.
shortcutstringoptionalSlash-command a creator types to insert the snippet: letters, numbers, dashes and underscores, up to 30 characters, unique within the project.
sort_orderintegeroptionalPosition in the picker, 0 to 999. Defaults to 0.
0max999What it returns
{ "data": { "id": "5d2f8a71-3c9e-4b06-a8f4-1e7c9d2b6a35", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "title": "Refund policy", "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-09-06T10:05:00+00:00", "updated_at": "2026-09-06T10:05:00+00:00" }}title comes back trimmed. body is stored as sent, whitespace included, because it reaches members verbatim. An omitted or empty shortcut is stored as null.
How it fails
VALIDATION_FAILEDtitle outside 2–80 characters, body outside 2–4000, shortcut longer than 30 characters, containing anything but letters, numbers, dashes and underscores, or already used by another snippet in this project, or sort_order outside 0–999. The envelope names the offending field. Also returned when the token's owner is on the project's team but their role lacks the support permission on it.
RESOURCE_NOT_FOUNDproject_id names a project the token cannot see: unknown, another team's, or outside the token's scope:project: allow-list.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks support-canned-reply:create.
How is this guide?
Last updated on