# Zola MCP tools

> Every Zola MCP tool on the Cotlet server: tool names, input schemas, a tools/call example and an example result for each tool.

Source: https://cotlet.dev/docs/mcp/zola

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

10 tools for Zola on the Cotlet MCP server. Your agent picks them from tools/list.

- MCP server: `https://cotlet.dev/mcp/v1`
- Connects with: Your own Zola couple account (email and password, or Google or Apple sign-in)
- Integration page: https://cotlet.dev/integrations/zola-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `zola_list_guests` | read | Guests with their list (Definitely Invited or Maybe), events invited to and RSVP state. |
| `zola_list_events` | read | Your wedding events with type, name, date and start time. |
| `zola_track_rsvps` | read | RSVPs for one event: who is attending, declined or has not replied, with meal choices. |
| `zola_list_gifts` | read | Gift tracker: each gift with giver, message, value, giver address, order status and thank-you note status. |
| `zola_add_guest` | write | Add a guest, optionally with a plus-one, to your guest list. Nothing is sent to the guest. |
| `zola_update_guest_address` | write | Set the mailing address used for Save the Dates and invitation envelopes. |
| `zola_invite_guest_to_event` | write | Mark a guest as invited to an event, so they can RSVP to it on your wedding website. |
| `zola_record_rsvp` | write | Record a reply you got by phone or mail: attending or declined, with meal choice. |
| `zola_mark_mail_sent` | write | Track that a guest has received a Save the Date or an invitation. |
| `zola_mark_thank_you_sent` | write | Mark the thank-you note for one or more gifts in the gift tracker as sent. |

## List guests

MCP tool: `zola_list_guests`

Access: read.

Returns the guests on your guest list, each with the list they are on, the events they are invited to and their reply per event. Contact details are left out unless include_contact is true. Use guest_id from each item in the other tools.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `list` | enum | no | definitely_invited, maybe or all. Default: all. |
| `include_contact` | boolean | no | Add mailing address, email and phone. Default: false. |
| `search` | string | no | Match on guest name. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_list_guests",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guests": [
      {
        "guest_id": "gst_a41c07",
        "name": "Maria Example",
        "list": "definitely_invited",
        "events": [
          {
            "event_id": "evt_ceremony",
            "rsvp": "attending"
          },
          {
            "event_id": "evt_reception",
            "rsvp": "no_response"
          }
        ]
      },
      {
        "guest_id": "gst_a41c08",
        "name": "Tom Example",
        "list": "definitely_invited",
        "events": [
          {
            "event_id": "evt_ceremony",
            "rsvp": "declined"
          }
        ]
      }
    ]
  },
  "isError": false
}
```

## List events

MCP tool: `zola_list_events`

Access: read.

Returns the events from "Your Events" in Zola: ceremony, reception, rehearsal dinner and any others you added. Use event_id from each item in the RSVP and invite tools. Guests can only RSVP to events they are invited to.

### Parameters

No parameters.

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_list_events",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "events": [
      {
        "event_id": "evt_ceremony",
        "type": "Ceremony",
        "name": "Wedding Ceremony",
        "date": "2027-06-12",
        "start_time": "15:00"
      },
      {
        "event_id": "evt_reception",
        "type": "Reception",
        "name": "Dinner and Dancing",
        "date": "2027-06-12",
        "start_time": "18:00"
      }
    ]
  },
  "isError": false
}
```

## Track RSVPs

MCP tool: `zola_track_rsvps`

Access: read.

Returns the replies for one event with each guest's status, meal choice and answers to the questions you added to the event. Online RSVPs from your wedding website and replies you recorded by hand are both included. Meal totals are counted from the attending guests.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `status` | enum | no | attending, declined, no_response or all. Default: all. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_track_rsvps",
    "arguments": {
      "event_id": "evt_reception",
      "status": "no_response"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "evt_reception",
    "counts": {
      "attending": 2,
      "declined": 1,
      "no_response": 1
    },
    "meals": {
      "Chicken": 1,
      "Fish": 1
    },
    "rsvps": [
      {
        "guest_id": "gst_a41c07",
        "name": "Maria Example",
        "status": "attending",
        "meal_choice": "Chicken"
      },
      {
        "guest_id": "gst_a41c08",
        "name": "Tom Example",
        "status": "attending",
        "meal_choice": "Fish"
      },
      {
        "guest_id": "gst_a41c09",
        "name": "Ana Example",
        "status": "declined",
        "meal_choice": null
      },
      {
        "guest_id": "gst_a41c10",
        "name": "Sam Example",
        "status": "no_response",
        "meal_choice": null
      }
    ]
  },
  "isError": false
}
```

## List gifts

MCP tool: `zola_list_gifts`

Access: read.

Returns the gifts in your gift tracker with the fields Zola's CSV download has: order number, name, quantity, value, gift message, giver's address, order status and thank-you note status. Use gift_id from each item in mark_thank_you_sent.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `thank_you` | enum | no | sent, not_sent or all. Default: all. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_list_gifts",
    "arguments": {}
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "gifts": [
      {
        "gift_id": "gft_8f21c4",
        "order_number": "ZO-100412",
        "name": "Dutch Oven",
        "quantity": 1,
        "value": 389,
        "giver": "Alex Example",
        "message": "Congratulations!",
        "address": "12 Example Street, Springfield, IL 62701",
        "order_status": "delivered",
        "thank_you": "not_sent"
      },
      {
        "gift_id": "gft_8f21d9",
        "order_number": "ZO-100417",
        "name": "Honeymoon Fund",
        "quantity": 1,
        "value": 150,
        "giver": "Sam Example",
        "message": "Have a great trip.",
        "address": "4 Sample Road, Portland, OR 97201",
        "order_status": "completed",
        "thank_you": "not_sent"
      }
    ]
  },
  "isError": false
}
```

## Add guest

MCP tool: `zola_add_guest`

Access: write.

Adds a guest to "Definitely Invited" or "Maybe" and returns the new guest_id. A plus-one is added as a second guest in the same party. Nothing is sent to anyone, so add_guest runs without asking first. Events are set with invite_guest_to_event.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `first_name` | string | yes | Guest first name. |
| `last_name` | string | yes | Guest last name. |
| `email` | string | no | Guest email. |
| `phone` | string | no | Guest phone number. |
| `plus_one` | object | no | first_name and last_name of the plus-one, if known. |
| `list` | enum | no | definitely_invited or maybe. Default: definitely_invited. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_add_guest",
    "arguments": {
      "first_name": "first name",
      "last_name": "last name"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "gst_b7720e",
    "name": "Maria Example",
    "list": "definitely_invited",
    "plus_one": {
      "guest_id": "gst_b7720f",
      "name": "Tom Example"
    },
    "status": "added"
  },
  "isError": false
}
```

## Update guest address

MCP tool: `zola_update_guest_address`

Access: write.

Replaces the mailing address of one guest, the address shown on the "Address Envelopes" page. Nothing is sent to the guest, so it runs without asking first, and calling it again with the old address undoes it.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `guest_id` | string | yes | Guest ID from list_guests. |
| `address` | object | yes | address_1, address_2, city, state_province, postal_code, country_code. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_update_guest_address",
    "arguments": {
      "guest_id": "guest_8c41d2",
      "address": "address"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "gst_a41c07",
    "address": {
      "address_1": "12 Example Street",
      "address_2": null,
      "city": "Springfield",
      "state_province": "IL",
      "postal_code": "62701",
      "country_code": "US"
    },
    "status": "updated"
  },
  "isError": false
}
```

## Invite guest to event

MCP tool: `zola_invite_guest_to_event`

Access: write.

Adds an event to the events a guest is invited to, the choice you make on the "Invite Guests to Events" tab. Guests can only RSVP to events they are invited to. It sends no message, so it runs without asking first.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `guest_id` | string | yes | Guest ID from list_guests. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_invite_guest_to_event",
    "arguments": {
      "event_id": "event_8c41d2",
      "guest_id": "guest_8c41d2"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "gst_a41c07",
    "event_id": "evt_reception",
    "invited": true
  },
  "isError": false
}
```

## Record RSVP

MCP tool: `zola_record_rsvp`

Access: write.

Records the reply of one guest to one event, the same as entering it under "Track RSVPs". The guest must be invited to the event, and meal_choice must be one of the options set on it. It changes only your own records and one more call corrects it, so it runs without asking first.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `event_id` | string | yes | Event ID from list_events. |
| `guest_id` | string | yes | Guest ID from list_guests. |
| `status` | enum | yes | attending or declined. |
| `meal_choice` | string | no | One of the meal options set on the event. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_record_rsvp",
    "arguments": {
      "event_id": "evt_reception",
      "guest_id": "gst_a41c07",
      "status": "attending",
      "meal_choice": "Vegetarian"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "gst_a41c07",
    "event_id": "evt_reception",
    "status": "attending",
    "meal_choice": "Vegetarian",
    "recorded": true
  },
  "isError": false
}
```

## Mark mail sent

MCP tool: `zola_mark_mail_sent`

Access: write.

Updates the mail tracking on the "Address Envelopes" page for one guest. It does not mail anything and reaches no one, so it runs without asking first.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `guest_id` | string | yes | Guest ID from list_guests. |
| `type` | enum | yes | save_the_date or invitation. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_mark_mail_sent",
    "arguments": {
      "guest_id": "guest_8c41d2",
      "type": "save_the_date"
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "gst_a41c07",
    "type": "save_the_date",
    "mailed": true
  },
  "isError": false
}
```

## Mark thank-you sent

MCP tool: `zola_mark_thank_you_sent`

Access: write.

Sets the thank-you note status of the gifts you pass, as the gift tracker does for one gift at a time. Set sent to false to undo. It changes only your tracker and nothing goes to the giver, so it runs without asking first.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `gift_ids` | string[] | yes | Gift IDs from list_gifts. |
| `sent` | boolean | no | false to undo. Default: true. |

### tools/call

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "zola_mark_thank_you_sent",
    "arguments": {
      "gift_ids": [
        "gft_8f21c4",
        "gft_8f21d9"
      ],
      "sent": true
    }
  }
}
```

### Example response

```json
{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "updated": [
      {
        "gift_id": "gft_8f21c4",
        "gift": "Dutch Oven",
        "giver": "Alex Example",
        "thank_you": "sent"
      },
      {
        "gift_id": "gft_8f21d9",
        "gift": "Honeymoon Fund",
        "giver": "Sam Example",
        "thank_you": "sent"
      }
    ]
  },
  "isError": false
}
```
