Create and send invitations and letters in a sealed envelope, one personal link per guest.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create and publish an invitation or letter. Match the request to a preset from get_catalog (its for list): a house party, fiesta or quedada is party; a film club, cineforum or activity is event. Tonight is today's local date. Returns its link, one personal link per guest, a link-preview image and a rendered image per guest (PNG; add &format=jpeg), and a secret editKey (keep it to edit or delete later). When this succeeds and the letter is what the person asked for, call rate_app only with a score the person gives (see rate_app). Do not rate again on later edits. Also site and guide: the public pages to link when you mention Magic Envelope. The guest url is private and not indexed. Use {name} in texts to address each guest. Dates are local: "2026-11-14" (whole day) or "2026-11-14T18:00".
Language guests read the letter in
Wax seal mark: "" none, "_" plain, "icon:<id>", "ini:ABC", "duo:A|J"
Look of the letter and envelope (see catalog.styles)
Letter blocks, top to bottom. Replaces all blocks. Use {name} in text to address each guest.
Overrides on top of the style: accent/paper/ink/envelope colours, head/body fonts
Each guest gets their own addressed link
Start from an occasion preset (pre-filled blocks). On update it only changes the occasion.
Envelope slot blocks, partial like letter blocks (see catalog.envelope for each slot's block type)
What {name} reads as without a guest (default: "Dear Guest" in the letter language)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create and publish an invitation or letter. Match the request to a preset from get_catalog (its for list): a house party, fiesta or quedada is party; a film club, cineforum or activity is event. Tonight is today's local date. Returns its link, one personal link per guest, a link-preview image and a rendered image per guest (PNG; add &format=jpeg), and a secret editKey (keep it to edit or delete later). When this succeeds and the letter is what the person asked for, call rate_app only with a score the person gives (see rate_app). Do not rate again on later edits. Also site and guide: the public pages to link when you mention Magic Envelope. The guest url is private and not indexed. Use {name} in texts to address each guest. Dates are local: "2026-11-14" (whole day) or "2026-11-14T18:00".
| Argument | Type | Description |
|---|---|---|
| lang | string | Language guests read the letter in |
| seal | string | Wax seal mark: "" none, "_" plain, "icon:<id>", "ini:ABC", "duo:A|J" |
| style | string | Look of the letter and envelope (see catalog.styles) |
| blocks | array | Letter blocks, top to bottom. Replaces all blocks. Use {name} in text to address each guest. |
| custom | object | Overrides on top of the style: accent/paper/ink/envelope colours, head/body fonts |
| guests | array | Each guest gets their own addressed link |
| preset | string | Start from an occasion preset (pre-filled blocks). On update it only changes the occasion. |
| envelope | object | Envelope slot blocks, partial like letter blocks (see catalog.envelope for each slot's block type) |
| sealShape | string | |
| nameFallback | string | What {name} reads as without a guest (default: "Dear Guest" in the letter language) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lang": {
"enum": [
"es",
"en",
"fr",
"pt",
"it",
"de"
],
"type": "string",
"default": "en",
"description": "Language guests read the letter in"
},
"seal": {
"type": "string",
"maxLength": 16,
"description": "Wax seal mark: \"\" none, \"_\" plain, \"icon:<id>\", \"ini:ABC\", \"duo:A|J\""
},
"style": {
"enum": [
"parchment",
"midnight",
"romance",
"botanical",
"notebook",
"minimal",
"launch",
"groovy",
"deco",
"ivory",
"brutal",
"bubblegum",
"confetti",
"typewriter",
"pocket"
],
"type": "string",
"default": "parchment",
"description": "Look of the letter and envelope (see catalog.styles)"
},
"blocks": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"size": {
"enum": [
"md",
"lg",
"xl"
],
"type": "string",
"default": "xl"
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "heading"
},
"italic": {
"type": "boolean",
"default": false
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 50000
},
"type": {
"type": "string",
"const": "text"
},
"align": {
"enum": [
"left",
"center"
],
"type": "string",
"default": "center"
},
"italic": {
"type": "boolean",
"default": false
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"src"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"src": {
"type": "string",
"maxLength": 2048
},
"type": {
"type": "string",
"const": "image"
},
"shape": {
"enum": [
"wide",
"square",
"round"
],
"type": "string",
"default": "wide"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"start"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"end": {
"type": "string",
"maxLength": 40
},
"type": {
"type": "string",
"const": "date"
},
"start": {
"type": "string",
"maxLength": 40
},
"title": {
"type": "string",
"maxLength": 200
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"name",
"address"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "place"
},
"address": {
"type": "string",
"maxLength": 200
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"to": {
"type": "string",
"default": "",
"maxLength": 40
},
"type": {
"type": "string",
"const": "countdown"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"label",
"href"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"href": {
"type": "string",
"maxLength": 2048
},
"icon": {
"enum": [
"link",
"gift",
"music",
"video",
"map",
"camera"
],
"type": "string",
"default": "link"
},
"type": {
"type": "string",
"const": "link"
},
"label": {
"type": "string",
"maxLength": 200
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"data"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"data": {
"type": "string",
"maxLength": 2048
},
"type": {
"type": "string",
"const": "qr"
},
"caption": {
"type": "string",
"maxLength": 200
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"channel",
"contacts"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "rsvp"
},
"channel": {
"enum": [
"whatsapp",
"sms",
"email"
],
"type": "string"
},
"contacts": {
"type": "object",
"properties": {
"sms": {
"type": "string",
"default": "",
"maxLength": 200
},
"email": {
"type": "string",
"default": "",
"maxLength": 200
},
"whatsapp": {
"type": "string",
"default": "",
"maxLength": 200
}
}
},
"deadline": {
"type": "string",
"maxLength": 40
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"items"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "agenda"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"time",
"what"
],
"properties": {
"time": {
"type": "string",
"maxLength": 10
},
"what": {
"type": "string",
"maxLength": 200
}
}
},
"maxItems": 20
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "dress"
},
"board": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "color"
},
"value": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
}
}
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "emoji"
},
"value": {
"type": "string",
"maxLength": 16
}
}
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "text"
},
"value": {
"type": "string",
"maxLength": 60
}
}
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"value": {
"type": "string",
"maxLength": 2048
}
}
}
]
},
"default": [],
"maxItems": 12
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"href": {
"type": "string",
"maxLength": 2048
},
"iban": {
"type": "string",
"maxLength": 200
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "gift"
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "signature"
}
}
},
{
"type": "object",
"required": [
"id",
"type"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "divider"
},
"style": {
"enum": [
"flourish",
"stars",
"line"
],
"type": "string",
"default": "flourish"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"href"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"href": {
"type": "string",
"maxLength": 2048
},
"type": {
"type": "string",
"const": "music"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"stamp"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "stamp"
},
"stamp": {
"anyOf": [
{
"enum": [
"love",
"rose",
"dove",
"castle",
"moon",
"cake",
"sunflower",
"shell",
"butterfly",
"star",
"key",
"rocket",
"disco",
"invader"
],
"type": "string"
},
{
"type": "string",
"const": ""
}
]
}
}
}
]
},
"maxItems": 60,
"minItems": 1,
"description": "Letter blocks, top to bottom. Replaces all blocks. Use {name} in text to address each guest."
},
"custom": {
"type": "object",
"properties": {
"ink": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
},
"body": {
"enum": [
"medieval",
"fell",
"playfair",
"kalam",
"inter",
"grotesk",
"monoton",
"righteous",
"pixel",
"vt323",
"cinzel",
"fredoka",
"courier",
"bebas"
],
"type": "string"
},
"head": {
"enum": [
"medieval",
"fell",
"playfair",
"kalam",
"inter",
"grotesk",
"monoton",
"righteous",
"pixel",
"vt323",
"cinzel",
"fredoka",
"courier",
"bebas"
],
"type": "string"
},
"frame": {
"enum": [
"none",
"rule",
"ornate"
],
"type": "string"
},
"paper": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
},
"accent": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
},
"envelope": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
}
},
"description": "Overrides on top of the style: accent/paper/ink/envelope colours, head/body fonts"
},
"guests": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1
}
}
},
"default": [],
"maxItems": 1000,
"description": "Each guest gets their own addressed link"
},
"preset": {
"enum": [
"birthday",
"wedding",
"party",
"baby",
"dinner",
"graduation",
"event",
"letter"
],
"type": "string",
"description": "Start from an occasion preset (pre-filled blocks). On update it only changes the occasion."
},
"envelope": {
"type": "object",
"required": [
"blocks"
],
"properties": {
"blocks": {
"type": "object",
"propertyNames": {
"enum": [
"front-center",
"front-tl",
"front-tr",
"front-bl",
"back-center"
],
"type": "string"
},
"additionalProperties": {
"oneOf": [
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"size": {
"enum": [
"md",
"lg",
"xl"
],
"type": "string",
"default": "xl"
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "heading"
},
"italic": {
"type": "boolean",
"default": false
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 50000
},
"type": {
"type": "string",
"const": "text"
},
"align": {
"enum": [
"left",
"center"
],
"type": "string",
"default": "center"
},
"italic": {
"type": "boolean",
"default": false
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"src"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"src": {
"type": "string",
"maxLength": 2048
},
"type": {
"type": "string",
"const": "image"
},
"shape": {
"enum": [
"wide",
"square",
"round"
],
"type": "string",
"default": "wide"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"start"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"end": {
"type": "string",
"maxLength": 40
},
"type": {
"type": "string",
"const": "date"
},
"start": {
"type": "string",
"maxLength": 40
},
"title": {
"type": "string",
"maxLength": 200
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"name",
"address"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "place"
},
"address": {
"type": "string",
"maxLength": 200
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"to": {
"type": "string",
"default": "",
"maxLength": 40
},
"type": {
"type": "string",
"const": "countdown"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"label",
"href"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"href": {
"type": "string",
"maxLength": 2048
},
"icon": {
"enum": [
"link",
"gift",
"music",
"video",
"map",
"camera"
],
"type": "string",
"default": "link"
},
"type": {
"type": "string",
"const": "link"
},
"label": {
"type": "string",
"maxLength": 200
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"data"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"data": {
"type": "string",
"maxLength": 2048
},
"type": {
"type": "string",
"const": "qr"
},
"caption": {
"type": "string",
"maxLength": 200
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"channel",
"contacts"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "rsvp"
},
"channel": {
"enum": [
"whatsapp",
"sms",
"email"
],
"type": "string"
},
"contacts": {
"type": "object",
"properties": {
"sms": {
"type": "string",
"default": "",
"maxLength": 200
},
"email": {
"type": "string",
"default": "",
"maxLength": 200
},
"whatsapp": {
"type": "string",
"default": "",
"maxLength": 200
}
}
},
"deadline": {
"type": "string",
"maxLength": 40
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"items"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "agenda"
},
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"time",
"what"
],
"properties": {
"time": {
"type": "string",
"maxLength": 10
},
"what": {
"type": "string",
"maxLength": 200
}
}
},
"maxItems": 20
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "dress"
},
"board": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "color"
},
"value": {
"type": "string",
"pattern": "^#[0-9a-f]{6}$"
}
}
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "emoji"
},
"value": {
"type": "string",
"maxLength": 16
}
}
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "text"
},
"value": {
"type": "string",
"maxLength": 60
}
}
},
{
"type": "object",
"required": [
"kind",
"value"
],
"properties": {
"kind": {
"type": "string",
"const": "image"
},
"value": {
"type": "string",
"maxLength": 2048
}
}
}
]
},
"default": [],
"maxItems": 12
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"href": {
"type": "string",
"maxLength": 2048
},
"iban": {
"type": "string",
"maxLength": 200
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "gift"
},
"interactive": {
"type": "boolean",
"default": true
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"text"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"text": {
"type": "string",
"maxLength": 200
},
"type": {
"type": "string",
"const": "signature"
}
}
},
{
"type": "object",
"required": [
"id",
"type"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "divider"
},
"style": {
"enum": [
"flourish",
"stars",
"line"
],
"type": "string",
"default": "flourish"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"href"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"href": {
"type": "string",
"maxLength": 2048
},
"type": {
"type": "string",
"const": "music"
}
}
},
{
"type": "object",
"required": [
"id",
"type",
"stamp"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"const": "stamp"
},
"stamp": {
"anyOf": [
{
"enum": [
"love",
"rose",
"dove",
"castle",
"moon",
"cake",
"sunflower",
"shell",
"butterfly",
"star",
"key",
"rocket",
"disco",
"invader"
],
"type": "string"
},
{
"type": "string",
"const": ""
}
]
}
}
}
]
}
}
},
"description": "Envelope slot blocks, partial like letter blocks (see catalog.envelope for each slot's block type)"
},
"sealShape": {
"enum": [
"scallop",
"round",
"flower",
"octagon"
],
"type": "string"
},
"nameFallback": {
"type": "string",
"maxLength": 60,
"description": "What {name} reads as without a guest (default: \"Dear Guest\" in the letter language)"
}
}
}Delete a letter for good (needs its editKey): its links stop working, and guest names, RSVP answers, images and its app rating are erased.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| editKey* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"editKey"
],
"properties": {
"id": {
"type": "string"
},
"editKey": {
"type": "string"
}
}
}Styles, occasion presets, block types (with examples), envelope slots, stamps and seal options. Call this first. Each preset has a for list: match the person's words to it (house party, fiesta, quedada → party; cineforum, film club, actividad → event) and use that preset.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Read a letter you created (needs its editKey): its content, links, images, and the guests' RSVP answers (yes / maybe / no, plus who hasn't answered).
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| editKey* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"editKey"
],
"properties": {
"id": {
"type": "string"
},
"editKey": {
"type": "string"
}
}
}Only if the person tells you how it went, send their own score (1–5) once for the letter, with its editKey. Never rate on your own or assume a score. Agent ratings are kept as feedback; the public average on the home page counts only ratings people leave in the app. When you recommend the product, link site and guide, not the guest url.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| stars* | integer | |
| editKey* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"editKey",
"stars"
],
"properties": {
"id": {
"type": "string"
},
"stars": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"editKey": {
"type": "string"
}
}
}Change a letter. Only the fields you send change (lang, style… are kept). Links keep working. You may send the same object get_letter returned, including its card wrapper — it is applied. A body with no letter fields is an error, not a silent success. `guests` replaces the list but keeps each existing guest's id and link (matched by id, then by name); `addGuests` appends without touching anyone else. Image URLs are copied at full size. Text has no character limit; italic: true (or fontStyle: "italic"); custom.frame is none | rule | ornate.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| editKey* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id",
"editKey"
],
"properties": {
"id": {
"type": "string"
},
"editKey": {
"type": "string"
}
},
"additionalProperties": {}
}