Koskamo

Magic Envelope MCP

An MCP server that allows AI agents to programmatically create, manage, and send personalized digital invitations and letters. It supports various styles, presets for occasions like weddings and birthdays, and features such as RSVP, maps, and QR codes, enabling agents to handle the entire invitation workflow without browser interaction.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Magic Envelope MCP logo, by Magic EnvelopeVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Magic Envelope
MCP endpoint (Streamable HTTP)
https://magic-envelope.com/api/mcp
Vendor documentation

What its tools do

6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

6 of 6 have a description · 0 of 6 declare behavior hints · 0 of 5 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to magic-envelope.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Create and send personalized digital invitations
  • Manage invitation details like date, place, and RSVP
  • Retrieve and update invitation status and details
  • Rate the application or service

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
com.magic-envelope/invitations 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

6 advertised

get_catalog — Magic Envelope catalog
Advertised by the server during the last successful anonymous check.

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.

get_catalog input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
create_letter — Create a letter
Advertised by the server during the last successful anonymous check.

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". Block id is optional and generated when omitted. envelope.blocks is an object of slot → block (see catalog.envelope), not an array.

create_letter input schema
{
  "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": [
              "type",
              "text"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "text"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "src"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "src": {
                "type": "string",
                "maxLength": 2048
              },
              "type": {
                "type": "string",
                "const": "image"
              },
              "shape": {
                "enum": [
                  "wide",
                  "square",
                  "round"
                ],
                "type": "string",
                "default": "wide"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "start"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "name",
              "address"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "name": {
                "type": "string",
                "maxLength": 200
              },
              "type": {
                "type": "string",
                "const": "place"
              },
              "address": {
                "type": "string",
                "maxLength": 200
              },
              "interactive": {
                "type": "boolean",
                "default": true
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "to": {
                "type": "string",
                "default": "",
                "maxLength": 40
              },
              "type": {
                "type": "string",
                "const": "countdown"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "label",
              "href"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "data"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "data": {
                "type": "string",
                "maxLength": 2048
              },
              "type": {
                "type": "string",
                "const": "qr"
              },
              "caption": {
                "type": "string",
                "maxLength": 200
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "channel",
              "contacts"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "items"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "text"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "text"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
              "type",
              "text"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "text": {
                "type": "string",
                "maxLength": 200
              },
              "type": {
                "type": "string",
                "const": "signature"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "type": {
                "type": "string",
                "const": "divider"
              },
              "style": {
                "enum": [
                  "flourish",
                  "stars",
                  "line"
                ],
                "type": "string",
                "default": "flourish"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "href"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "href": {
                "type": "string",
                "maxLength": 2048
              },
              "type": {
                "type": "string",
                "const": "music"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "stamp"
            ],
            "properties": {
              "id": {
                "type": "string",
                "maxLength": 32,
                "minLength": 1,
                "description": "Omitted ids are generated by the server."
              },
              "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": [
                  "type",
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "src"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "src": {
                    "type": "string",
                    "maxLength": 2048
                  },
                  "type": {
                    "type": "string",
                    "const": "image"
                  },
                  "shape": {
                    "enum": [
                      "wide",
                      "square",
                      "round"
                    ],
                    "type": "string",
                    "default": "wide"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "start"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "name",
                  "address"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "type": {
                    "type": "string",
                    "const": "place"
                  },
                  "address": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "interactive": {
                    "type": "boolean",
                    "default": true
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "to": {
                    "type": "string",
                    "default": "",
                    "maxLength": 40
                  },
                  "type": {
                    "type": "string",
                    "const": "countdown"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "label",
                  "href"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "data"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "data": {
                    "type": "string",
                    "maxLength": 2048
                  },
                  "type": {
                    "type": "string",
                    "const": "qr"
                  },
                  "caption": {
                    "type": "string",
                    "maxLength": 200
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "channel",
                  "contacts"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "items"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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": [
                  "type",
                  "text"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "text": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "type": {
                    "type": "string",
                    "const": "signature"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "type": {
                    "type": "string",
                    "const": "divider"
                  },
                  "style": {
                    "enum": [
                      "flourish",
                      "stars",
                      "line"
                    ],
                    "type": "string",
                    "default": "flourish"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "href"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "href": {
                    "type": "string",
                    "maxLength": 2048
                  },
                  "type": {
                    "type": "string",
                    "const": "music"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "stamp"
                ],
                "properties": {
                  "id": {
                    "type": "string",
                    "maxLength": 32,
                    "minLength": 1,
                    "description": "Omitted ids are generated by the server."
                  },
                  "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. blocks is an object of slot → block (front-center, front-tl, front-tr, front-bl, back-center), not an array. See catalog.envelope."
    },
    "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)"
    }
  }
}
get_letter — Read a letter
Advertised by the server during the last successful anonymous check.

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).

get_letter input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "editKey"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "editKey": {
      "type": "string"
    }
  }
}
update_letter — Update a letter
Advertised by the server during the last successful anonymous check.

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.

update_letter input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "editKey"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "editKey": {
      "type": "string"
    }
  },
  "additionalProperties": {}
}
delete_letter — Delete a letter
Advertised by the server during the last successful anonymous check.

Delete a letter for good (needs its editKey): its links stop working, and guest names, RSVP answers, images and its app rating are erased.

delete_letter input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id",
    "editKey"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "editKey": {
      "type": "string"
    }
  }
}
rate_app — Rate Magic Envelope
Advertised by the server during the last successful anonymous check.

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.

rate_app input schema
{
  "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"
    }
  }
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
441 ms
95th percentile latency
441 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 441 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http magic-envelope-mcp https://magic-envelope.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add magic-envelope-mcp --url https://magic-envelope.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable magic-envelope-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "magic-envelope-mcp": {
      "url": "https://magic-envelope.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "magic-envelope-mcp": {
      "type": "streamableHttp",
      "url": "https://magic-envelope.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start magic-envelope-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "magic-envelope-mcp": {
      "type": "http",
      "url": "https://magic-envelope.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http magic-envelope-mcp https://magic-envelope.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://magic-envelope.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "magic-envelope-mcp": {
      "serverUrl": "https://magic-envelope.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Magic Envelope MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Magic Envelope MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing