Altessa Wedding Planner

Reception layouts to scale, seating charts, wedding day timelines, and budgets. No login needed.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
81%
Naming quality
90%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,870Tokens (tool definitions)
~6.7 KBTypical response size
Significant attention impact (2.24% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "altessa": {
      "url": "https://mcp.altessa.studio/mcp"
    }
  }
}

Remote endpoints

https://mcp.altessa.studio/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢plan_reception_layout(guest_count, room_length_ft, room_width_ft, table_shape, seats_per_table, ...)

Use this when someone wants to plan a wedding reception floor plan, figure out how many tables fit in a room, or check whether a venue space can hold their guest count with a dance floor, bar, buffet, DJ or band, and head table. Needs guest count; room dimensions in feet are optional (if missing, returns the space required instead of a fit check). Do not use for ceremony seating, seating assignments by name (use generate_seating_chart), or venue search.

Input Schema

{
  "type": "object",
  "properties": {
    "guest_count": {
      "type": "integer",
      "minimum": 10,
      "maximum": 600,
      "description": "Total guests, including the couple."
    },
    "room_length_ft": {
      "description": "Room length in feet.",
      "type": "number",
      "minimum": 10,
      "maximum": 300
    },
    "room_width_ft": {
      "description": "Room width in feet.",
      "type": "number",
      "minimum": 10,
      "maximum": 300
    },
    "table_shape": {
      "default": "round_60",
      "type": "string",
      "enum": [
        "round_60",
        "round_72",
        "rectangle_8ft",
        "mixed"
      ]
    },
    "seats_per_table": {
      "description": "Defaults by shape: round_60 8, round_72 10, rectangle_8ft 10, mixed 8.",
      "type": "integer",
      "minimum": 6,
      "maximum": 12
    },
    "head_table": {
      "default": "sweetheart",
      "type": "string",
      "enum": [
        "none",
        "sweetheart",
        "head_table_8",
        "head_table_12"
      ]
    },
    "dance_floor": {
      "default": true,
      "type": "boolean"
    },
    "entertainment": {
      "default": "dj",
      "type": "string",
      "enum": [
        "none",
        "dj",
        "band"
      ]
    },
    "food_service": {
      "default": "plated",
      "type": "string",
      "enum": [
        "plated",
        "buffet",
        "stations"
      ]
    },
    "bars": {
      "default": 1,
      "type": "integer",
      "minimum": 0,
      "maximum": 3
    },
    "cake_table": {
      "default": true,
      "type": "boolean"
    }
  },
  "required": [
    "guest_count"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "tables_needed": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "seats_needed": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "One seat per guest."
    },
    "tables_that_fit": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Tables placed in the room; fewer than tables_needed when the room is too small."
    },
    "seats_available": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "square_feet_needed": {
      "type": "number"
    },
    "fits": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "slack_square_feet": {
      "type": [
        "number",
        "null"
      ]
    },
    "suggested_room_ft": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "length": {
              "type": "number"
            },
            "width": {
              "type": "number"
            }
          },
          "required": [
            "length",
            "width"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "room_ft": {
      "type": "object",
      "properties": {
        "length": {
          "type": "number"
        },
        "width": {
          "type": "number"
        }
      },
      "required": [
        "length",
        "width"
      ],
      "additionalProperties": false,
      "description": "The room the positions are drawn in, in feet."
    },
    "zones": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "width_ft": {
            "type": "number"
          },
          "length_ft": {
            "type": "number"
          },
          "x_ft": {
            "type": "number"
          },
          "y_ft": {
            "type": "number"
          }
        },
        "required": [
          "name",
          "width_ft",
          "length_ft",
          "x_ft",
          "y_ft"
        ],
        "additionalProperties": false
      },
      "description": "Corner positions in feet from the entrance corner; x along the length, y across the width."
    },
    "tables": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "shape": {
            "type": "string"
          },
          "x_ft": {
            "type": "number"
          },
          "y_ft": {
            "type": "number"
          },
          "seats": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "id",
          "shape",
          "x_ft",
          "y_ft",
          "seats"
        ],
        "additionalProperties": false
      },
      "description": "Table center positions in feet, same axes as zones."
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "truncated": {
      "description": "True when table positions were dropped to stay under 50 KB.",
      "type": "boolean"
    },
    "share_url": {
      "description": "View-only link to this plan.",
      "type": "string"
    }
  },
  "required": [
    "tables_needed",
    "seats_needed",
    "tables_that_fit",
    "seats_available",
    "square_feet_needed",
    "fits",
    "slack_square_feet",
    "suggested_room_ft",
    "room_ft",
    "zones",
    "tables",
    "notes"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢generate_seating_chart(guests, seats_per_table, table_count, keep_together, keep_apart, ...)

Use this when someone has a list of wedding guests and wants them assigned to tables, keeping families, friend groups, or couples together and keeping specific people apart. Accepts names with optional group labels and keep-apart pairs. Returns table assignments and a shareable chart. Do not use for floor plans without names (use plan_reception_layout) or for RSVP tracking.

Input Schema

{
  "type": "object",
  "properties": {
    "guests": {
      "minItems": 2,
      "maxItems": 600,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "group": {
            "description": "Household or group, seated together where possible.",
            "type": "string"
          },
          "plus_one": {
            "default": false,
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ]
      }
    },
    "seats_per_table": {
      "default": 8,
      "type": "integer",
      "minimum": 4,
      "maximum": 14
    },
    "table_count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "keep_together": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "keep_apart": {
      "description": "Pairs of names to seat at different tables.",
      "type": "array",
      "items": {
        "minItems": 2,
        "maxItems": 2,
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "head_table_names": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "fill_strategy": {
      "default": "balanced",
      "type": "string",
      "enum": [
        "balanced",
        "fill_tables"
      ]
    }
  },
  "required": [
    "guests"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "tables": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "number": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "label": {
            "type": "string"
          },
          "seats": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "guests": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "number",
          "label",
          "seats",
          "guests"
        ],
        "additionalProperties": false
      }
    },
    "unseated": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "reason"
        ],
        "additionalProperties": false
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "truncated": {
      "description": "True when names or tables were cut to stay under 50 KB.",
      "type": "boolean"
    },
    "share_url": {
      "description": "View-only link to this chart.",
      "type": "string"
    }
  },
  "required": [
    "tables",
    "unseated",
    "warnings"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡build_wedding_timeline(ceremony_time, wedding_date, location, first_look, same_venue, ...)

Use this when someone wants a minute-by-minute wedding day schedule: getting ready, first look, ceremony, cocktail hour, reception, send-off. Needs the ceremony start time; everything else has defaults. Do not use for the months-long planning checklist or vendor payment schedules.

Input Schema

{
  "type": "object",
  "properties": {
    "ceremony_time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "Ceremony start, 24-hour HH:MM."
    },
    "wedding_date": {
      "description": "YYYY-MM-DD, for sunset.",
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "location": {
      "description": "City and state, for sunset.",
      "type": "string",
      "maxLength": 120
    },
    "first_look": {
      "default": true,
      "type": "boolean"
    },
    "same_venue": {
      "default": true,
      "type": "boolean"
    },
    "travel_minutes": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 120
    },
    "ceremony_minutes": {
      "default": 30,
      "type": "integer",
      "minimum": 15,
      "maximum": 90
    },
    "cocktail_hour_minutes": {
      "default": 60,
      "type": "integer",
      "minimum": 45,
      "maximum": 90
    },
    "reception_hours": {
      "default": 4.5,
      "type": "number",
      "minimum": 3,
      "maximum": 6
    },
    "hair_and_makeup_people": {
      "default": 4,
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "photo_priorities": {
      "default": [
        "couple",
        "family",
        "wedding_party",
        "sunset",
        "detail"
      ],
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "couple",
          "family",
          "wedding_party",
          "sunset",
          "detail"
        ]
      }
    },
    "send_off": {
      "default": "none",
      "type": "string",
      "enum": [
        "none",
        "sparklers",
        "bubbles",
        "car"
      ]
    }
  },
  "required": [
    "ceremony_time"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string"
          },
          "duration_minutes": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "title": {
            "type": "string"
          },
          "who": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          }
        },
        "required": [
          "time",
          "duration_minutes",
          "title",
          "who",
          "notes"
        ],
        "additionalProperties": false
      }
    },
    "sunset_time": {
      "type": [
        "string",
        "null"
      ]
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "share_url": {
      "description": "View-only link to this timeline.",
      "type": "string"
    }
  },
  "required": [
    "events",
    "sunset_time",
    "warnings"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
⚪estimate_wedding_budget(total_budget_usd, guest_count, region, priorities, style)

Use this when someone gives a total wedding budget, a guest count, or both and wants a category-by-category split (venue, catering, photo and video, flowers, music, attire, stationery, and so on) with per-guest math and a contingency line. Do not use for tracking actual spending or vendor payments.

Input Schema

{
  "type": "object",
  "properties": {
    "total_budget_usd": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 500000
    },
    "guest_count": {
      "type": "integer",
      "minimum": 10,
      "maximum": 600
    },
    "region": {
      "default": "national",
      "type": "string",
      "enum": [
        "northeast",
        "southeast",
        "midwest",
        "southwest",
        "west",
        "mountain",
        "national"
      ]
    },
    "priorities": {
      "maxItems": 3,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "venue",
          "food",
          "photo_video",
          "flowers",
          "music",
          "attire",
          "stationery",
          "planner"
        ]
      }
    },
    "style": {
      "default": "classic",
      "type": "string",
      "enum": [
        "classic",
        "modern",
        "rustic",
        "destination"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "total_budget_usd": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "guest_count": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "per_guest_usd": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "percent": {
            "type": "number"
          },
          "amount_usd": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "percent",
          "amount_usd",
          "note"
        ],
        "additionalProperties": false
      }
    },
    "contingency_usd": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "share_url": {
      "description": "View-only link to this budget.",
      "type": "string"
    }
  },
  "required": [
    "total_budget_usd",
    "guest_count",
    "per_guest_usd",
    "categories",
    "contingency_usd",
    "assumptions"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools