MCP tools reference

Joy MCP tools

15 tools for Joy on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own Joy account, as the event owner or a collaborator
Integration page
Joy
Joy Endpoints
Endpoint Access Description
joy_list_events read Joy events you own or collaborate on, with name, date and website URL.
joy_list_guests read Guest list with party, plus-ones, tags, contact details and RSVP answers per question.
joy_get_guest read One guest profile: contact details, party, tags, all RSVP answers and email tracking history.
joy_get_rsvp_summary read Attending, declined and pending counts, with a breakdown of answers to each RSVP question.
joy_list_schedule read Events on your Schedule page with time, time zone, venue, dress code and privacy.
joy_list_registry_gifts read Registry items and cash funds with price, quantity, Our Most Wanted flag and purchased or reserved status.
joy_list_received_gifts read The gift tracker: who bought each gift, order info, cash fund contributions and whether you sent a thank-you.
joy_add_guest write Add a guest to the guest list, optionally into a party with blank plus-ones. Sends nothing.
joy_update_guest write Change contact details, party or plus-ones, or set or remove an RSVP answer for a guest.
joy_assign_guest_tags write Add or remove guest tags on several guests at once. Tags control private events and RSVP questions.
joy_update_schedule_event write Change an event on your Schedule page. Guests see it on your website right away.
joy_add_registry_gift write Add a gift from any store by product URL. Joy fills in the title and price when it can.
joy_send_rsvp_reminder write RSVP reminder with a link to your RSVP page, by default to every guest who has not responded.
joy_send_email_message write Email update to selected guests or tags, with a button linking to your event website.
joy_send_thank_you_note write Digital thank-you email to the guest who gave a gift, sent from the gift tracker.

MCP tool joy_list_events

Returns every Joy event your account can open, as owner or collaborator. Use event_id from each item as the event_id parameter of the other endpoints.

Parameters

No parameters.

tools/call

JSON-RPC

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

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "events": [
      {
        "event_id": "evt_8KQ2mZ",
        "name": "Maria and Tom",
        "date": "2027-06-12",
        "role": "owner",
        "website": "https://withjoy.com/maria-and-tom"
      }
    ]
  },
  "isError": false
}

MCP tool joy_list_guests

Returns guests in guest list order with their party, tags and answers to each RSVP question. Filter by RSVP status, tag or name to narrow it down. Pages hold up to 500 guests; pass next_cursor back as cursor.

Parameters

Parameters: list_guests
NameTypeDescription
event_id required string Event ID from list_events.
rsvp enum all, attending, declined or no_response. Default: all.
tag string Only guests with this guest tag.
search string Match on guest name or email.
limit integer 1 to 500. Default: 100.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_list_guests",
    "arguments": {
      "event_id": "evt_8KQ2mZ",
      "rsvp": "attending",
      "tag": "Reception",
      "limit": 500
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guests": [
      {
        "guest_id": "g_4d21",
        "first_name": "Ana",
        "last_name": "Lopez",
        "email": "ana@example.com",
        "party": "Lopez",
        "tags": [
          "friends"
        ],
        "rsvp": "attending",
        "answers": {
          "Meal choice": "Vegetarian"
        }
      },
      {
        "guest_id": "g_4d22",
        "first_name": "Luis",
        "last_name": "Lopez",
        "email": null,
        "party": "Lopez",
        "tags": [
          "friends"
        ],
        "rsvp": "attending",
        "answers": {
          "Meal choice": "Fish"
        }
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

Get guest

read

MCP tool joy_get_guest

Returns one guest with the full set of RSVP answers and which emails were sent to them. Use it before changing an RSVP or contacting the guest.

Parameters

Parameters: get_guest
NameTypeDescription
event_id required string Event ID from list_events.
guest_id required string Guest ID from list_guests.

tools/call

JSON-RPC

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

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "g_4d21",
    "first_name": "Ana",
    "last_name": "Lopez",
    "email": "ana@example.com",
    "phone": null,
    "party": "Lopez",
    "plus_ones": 0,
    "tags": [
      "friends"
    ],
    "rsvp": "attending",
    "answers": {
      "Meal choice": "Vegetarian",
      "Dietary notes": "No nuts"
    },
    "emails": [
      {
        "subject": "Two weeks left to RSVP",
        "sent_at": "2027-05-29T10:00:00Z",
        "opened": true
      }
    ]
  },
  "isError": false
}

MCP tool joy_get_rsvp_summary

Returns counts of guests who are attending, declined or have not responded, and for each RSVP question how many guests gave each answer. The counts match the Guest List screen.

Parameters

Parameters: get_rsvp_summary
NameTypeDescription
event_id required string Event ID from list_events.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_get_rsvp_summary",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "evt_8KQ2mZ",
    "guests_total": 120,
    "attending": 74,
    "declined": 9,
    "no_response": 37,
    "questions": [
      {
        "question": "Meal choice",
        "answers": {
          "Beef": 31,
          "Fish": 24,
          "Vegetarian": 19
        }
      }
    ]
  },
  "isError": false
}

MCP tool joy_list_schedule

Returns the events on your Schedule page in time order. Privacy says whether everyone or only specific guests see an event. Use schedule_item_id with update_schedule_event.

Parameters

Parameters: list_schedule
NameTypeDescription
event_id required string Event ID from list_events.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_list_schedule",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "schedule": [
      {
        "schedule_item_id": "sch_41",
        "name": "Welcome dinner",
        "start": "2027-06-11T18:00:00",
        "time_zone": "Europe/Rome",
        "venue": "Osteria del Ponte",
        "dress_code": "Smart casual",
        "privacy": "everyone"
      }
    ]
  },
  "isError": false
}

MCP tool joy_list_registry_gifts

Returns everything on your registry: gifts from any store and cash funds. Each item shows how many are still wanted and whether any were purchased or reserved.

Parameters

Parameters: list_registry_gifts
NameTypeDescription
event_id required string Event ID from list_events.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_list_registry_gifts",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "gifts": [
      {
        "gift_id": "gft_7731",
        "title": "Stand mixer",
        "store": "example-store.com",
        "price": "329.00",
        "quantity": 1,
        "purchased": 1,
        "most_wanted": true
      },
      {
        "gift_id": "gft_7740",
        "title": "Honeymoon fund",
        "type": "cash_fund",
        "raised": "450.00"
      }
    ]
  },
  "isError": false
}

MCP tool joy_list_received_gifts

Returns what the Track tab of your Registry shows: the guest who bought each physical gift, the quantity and order info, and what each guest put into a cash fund. Each row says whether a thank-you was sent.

Parameters

Parameters: list_received_gifts
NameTypeDescription
event_id required string Event ID from list_events.
since date Only gifts received on or after this date.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_list_received_gifts",
    "arguments": {
      "event_id": "event_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "gifts": [
      {
        "gift_id": "gft_7731",
        "item": "Stand mixer",
        "from": "Ana Lopez",
        "quantity": 1,
        "received_at": "2027-05-20",
        "thank_you_sent": false
      },
      {
        "gift_id": "gft_7740",
        "item": "Honeymoon fund",
        "from": "Luis Lopez",
        "amount": "100.00",
        "received_at": "2027-05-22",
        "thank_you_sent": true
      }
    ]
  },
  "isError": false
}

Add guest

write

MCP tool joy_add_guest

Adds one guest to the guest list. Guests with the same party value are grouped and can RSVP for each other. It sends nothing to the guest and is undone by removing the guest, so it runs without asking.

Parameters

Parameters: add_guest
NameTypeDescription
event_id required string Event ID from list_events.
first_name required string First name, no symbols.
last_name string Last name, no symbols.
email string Needed for digital cards and email messages.
phone string Mobile number, for text messages with Messaging Plus.
party string Party name. Guests with the same party are grouped and can RSVP for each other.
plus_ones integer Number of blank plus-ones. Default: 0.
name_on_envelope string How the party is addressed on envelopes, e.g. The Porter Family.
tags string[] Guest tags to assign. New tags are created.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_add_guest",
    "arguments": {
      "event_id": "evt_8KQ2mZ",
      "first_name": "Ada",
      "last_name": "Okafor",
      "email": "ada.okafor@example.com",
      "party": "Okafor",
      "name_on_envelope": "The Okafor Family",
      "tags": [
        "Bride family"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "g_4e08",
    "first_name": "Maria",
    "last_name": "Porter",
    "party": "Porter family",
    "name_on_envelope": "The Porter Family",
    "tags": [
      "family"
    ],
    "rsvp": "no_response"
  },
  "isError": false
}

Update guest

write

MCP tool joy_update_guest

Changes the fields you pass and leaves the rest. Setting rsvp_answers records the answer as if the guest gave it; null removes an answer. It sends nothing to the guest and one more call reverts it, so it runs without asking.

Parameters

Parameters: update_guest
NameTypeDescription
event_id required string Event ID from list_events.
guest_id required string Guest ID from list_guests.
fields required object Any of first_name, last_name, email, phone, party, plus_ones, name_on_envelope, rsvp_answers ({question: answer or null to remove}).

tools/call

JSON-RPC

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

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "guest_id": "g_4d22",
    "email": "luis@example.com",
    "rsvp": "attending",
    "answers": {
      "Meal choice": "Fish"
    }
  },
  "isError": false
}

MCP tool joy_assign_guest_tags

Adds or removes tags on many guests in one call. New tags are created. Tags can limit who sees a private event or an RSVP question, so check them before the next send. It sends nothing and is undone with one call.

Parameters

Parameters: assign_guest_tags
NameTypeDescription
event_id required string Event ID from list_events.
guest_ids required string[] Guest IDs from list_guests.
add string[] Tags to assign. New tags are created.
remove string[] Tags to take off these guests.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_assign_guest_tags",
    "arguments": {
      "event_id": "event_8c41d2",
      "guest_ids": [
        "guest ids"
      ]
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "updated": 12,
    "added": [
      "family"
    ],
    "removed": []
  },
  "isError": false
}

Update schedule event

write Confirm

MCP tool joy_update_schedule_event

Changes the fields you pass on one Schedule event. The new time or venue shows on your public website at once, so guests can see it before any email goes out. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: update_schedule_event
NameTypeDescription
event_id required string Event ID from list_events.
schedule_item_id required string Schedule item ID from list_schedule.
fields required object Any of name, description, start, end, time_zone, venue, dress_code, privacy (everyone or specific_guests).

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_update_schedule_event",
    "arguments": {
      "event_id": "event_8c41d2",
      "schedule_item_id": "schedule_item_8c41d2",
      "fields": "fields"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "schedule_item_id": "sch_41",
    "name": "Welcome dinner",
    "start": "2027-06-11T19:00:00",
    "time_zone": "Europe/Rome",
    "privacy": "everyone",
    "status": "updated"
  },
  "isError": false
}

MCP tool joy_add_registry_gift

Adds a gift to your registry from a product page. Joy reads the title and price from the page when it can; set them yourself otherwise. Mark it Our Most Wanted to highlight it. It reaches no one directly and one removal undoes it, so it runs without asking.

Parameters

Parameters: add_registry_gift
NameTypeDescription
event_id required string Event ID from list_events.
product_url required string Product page on any retailer site.
title string Overrides the title Joy reads from the page.
price string MSRP price in your registry currency, e.g. 89.00.
quantity integer How many you want. Default: 1.
most_wanted boolean Mark as Our Most Wanted. Default: false.
note string Note to Family and Friends shown with the gift.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_add_registry_gift",
    "arguments": {
      "event_id": "event_8c41d2",
      "product_url": "https://example.com"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "gift_id": "gft_7752",
    "title": "Cast iron pan",
    "price": "89.00",
    "quantity": 1,
    "most_wanted": false
  },
  "isError": false
}

Send RSVP reminder

write Confirm

MCP tool joy_send_rsvp_reminder

Sends the Joy RSVP reminder. Without guest_ids it goes to every guest with no response. Guests with no email are skipped and counted in the response. Email is free; text needs Messaging Plus. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_rsvp_reminder
NameTypeDescription
event_id required string Event ID from list_events.
guest_ids string[] Recipients. Default: guests with no response.
delivery enum email, text or both. Text needs Messaging Plus. Default: email.
subject string Email subject line.
message string Message body. Default: the Joy reminder text.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_send_rsvp_reminder",
    "arguments": {
      "event_id": "evt_8KQ2mZ",
      "delivery": "email",
      "subject": "Two weeks left to RSVP"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "event_id": "evt_8KQ2mZ",
    "status": "sent",
    "delivery": "email",
    "recipients": 35,
    "skipped_missing_email": 2,
    "rsvp_url": "https://withjoy.com/maria-and-tom/rsvp"
  },
  "isError": false
}

Send email message

write Confirm

MCP tool joy_send_email_message

Sends a freeform email to the guests you pick by ID or tag, with a button to your event website. Guests without an email address do not get it. Scheduling for later needs Messaging Plus. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_email_message
NameTypeDescription
event_id required string Event ID from list_events.
guest_ids string[] Recipients by guest ID.
tags string[] Recipients by guest tag. Use guest_ids or tags.
subject required string Email subject line.
message required string Message body.
send_at datetime Schedule for later, ISO 8601. Needs Messaging Plus. Default: now.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_send_email_message",
    "arguments": {
      "event_id": "event_8c41d2",
      "subject": "subject",
      "message": "message"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "message_id": "msg_2290",
    "status": "sent",
    "recipients": 74,
    "skipped_missing_email": 1
  },
  "isError": false
}

Send thank-you note

write Confirm

MCP tool joy_send_thank_you_note

Sends one thank-you to the guest who gave the gift, and marks the gift as thanked in the tracker. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_thank_you_note
NameTypeDescription
event_id required string Event ID from list_events.
gift_id required string Gift ID from list_received_gifts.
message required string Thank-you text.
subject string Email subject line.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "joy_send_thank_you_note",
    "arguments": {
      "event_id": "evt_8KQ2mZ",
      "gift_id": "gft_7731",
      "subject": "Thank you, Ana",
      "message": "Ana, thank you for the stand mixer and for the gift to our honeymoon fund. The mixer has made bread every weekend since we got home. Maria and Tom"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "gift_id": "gft_7731",
    "to": "Ana Lopez",
    "status": "sent",
    "thank_you_sent": true
  },
  "isError": false
}