Developers

Luau for AI assistants.

Luau exposes what it does best to any agent that speaks MCP: plan the hangout, invite the people, track who's coming, and know who's free. Works with Meta Muse, ChatGPT, and any Model Context Protocol client. Not a developer? The plain-English version is at luau.co/muse.

Connect in one message (Muse)

In Muse, paste the prompt below. Muse builds the bridge, walks you through signing in to Luau, and saves the connection as a skill.

Build a custom integration to Luau. Its MCP server is https://app.luau.co/api/mcp (streamable HTTP; OAuth 2.1 authorization code with PKCE S256 — discovery at https://app.luau.co/.well-known/oauth-authorization-server). Use a static public client: client ID kai-muse-connector, no client secret, token endpoint auth method none; do not use dynamic client registration. Request scopes events.read events.write social.read social.write invites.write rsvp.write. I want you to be able to see my events and guest lists, create events and Hangvites, invite friends, remind people who haven't RSVP'd, RSVP for me, manage sign-up sheets, and tell me who's free. Test it, then save it as a skill.

When Muse's “Add custom connector” sheet asks for a Client ID, enter kai-muse-connector. If you weren't already signed in to Luau, the first attempt can end with “Something went wrong” after you approve; tap Add again and it completes.

Things to ask once connected

  • Plan my daughter's 8th birthday at the park Saturday at 2, invite her class, and make a sign-up sheet for snacks.
  • Who hasn't RSVP'd to the birthday party? Remind them.
  • When was the last time I hung out with Justin?
  • When did Cassie, Devyn, Justin and I last hang out as a group?
  • Which of my close friends have I not seen in a while?
  • I want to watch the game today — who's free? Send a Hangvite.
  • Who's in for the Hangvite I sent this morning?
  • What's on my calendar with friends this month?
  • RSVP yes to Sarah's party with a plus-one.
  • RSVP yes to the block party for me and the kids. Is Devyn's family coming?
  • Hide the guest list for the shower and let guests share the invite.
  • What's the Packers schedule? Move Saturday's game to 3pm.
  • RSVP me to every fish fry except the ones that clash with my calendar.
  • What did I do with friends last month? Who actually showed up to the party?
  • Log that I had dinner with Cassie and her mom last night.
  • Find an evening next week that works for Cassie, Devyn and Justin.
  • Make Sarah a co-host of the block party. Cancel Saturday's dinner.
  • Sign Maria up for the 9am check-in shift, and send me the volunteer list.
  • Remind me to see Justin twice a month. Mom's birthday is Nov 3 — what should I plan?
  • Who are my ten closest friends? Do Cassie and Devyn know each other? Make a crew called Game Night with Justin and Mark.

Endpoints

MCP server
https://app.luau.co/api/mcp (streamable HTTP; POST JSON-RPC)
Server card
https://app.luau.co/.well-known/mcp/server-card.json
Authorization server
https://app.luau.co/.well-known/oauth-authorization-server
Protected resource
https://app.luau.co/api/mcp/.well-known/oauth-protected-resource

Auth is OAuth 2.1 authorization code with PKCE (S256) and RFC 7591 dynamic client registration. Clients that don't register dynamically can use a static public client ID instead: no secret, token endpoint auth method none, PKCE required. Calling a protected tool without a token returns HTTP 401 with a WWW-Authenticate header that points at the protected-resource metadata; expired tokens say so; a missing scope returns 403 naming the scope; more than 60 tool calls a minute returns 429 with Retry-After. preview_event works without an account so anyone can plan before they sign up.

Scopes

  • events.read — See your events, guest lists, and RSVPs
  • events.write — Create and update events and Hangvites on your account
  • social.read — See your friends on Luau, when you last hung out, and who might be free
  • social.write — Set your social goals and important dates (your own profile only)
  • invites.write — Invite guests and send reminders on your behalf
  • rsvp.write — RSVP to events and Hangvites for you

Ask for a subset with the standard scope parameter; the consent screen lists exactly what was requested.

Tools

ToolScopeWhat it does
preview_eventread-onlynoneDraft an event and show the user a preview (no account needed).
create_eventevents.writeCreate the previewed event on the user's account.
create_event_seriesevents.writeCreate a recurring or explicit series of events.
list_my_eventsread-onlyevents.readUpcoming events the user hosts, attends, or was invited to.
get_eventread-onlyevents.readOne event with its guest list and who hasn't responded.
get_event_by_urlread-onlynoneResolve a pasted Luau link to its event or series.
list_my_seriesread-onlyevents.readEvent series the user hosts or belongs to, with the next occurrence.
get_seriesread-onlyevents.readOne series: full schedule, members, settings.
update_seriesevents.writeChange a series' details or settings (pushed to upcoming occurrences).
add_series_eventsevents.writeAdd occurrences to a series.
cancel_series_eventevents.writeCancel one occurrence (guests notified).
reschedule_series_eventevents.writeMove one occurrence to a new date (guests notified).
rsvp_to_seriesrsvp.writeRSVP the user to every upcoming occurrence at once.
invite_to_seriessendsinvites.writeInvite friends to a whole series (sends invites).
cancel_seriesevents.writeCancel every upcoming occurrence of a series (guests notified).
find_peopleread-onlysocial.readFind friends in the user's Luau circle by name.
last_hangout_withread-onlysocial.readWhen the user last hung out with someone, and their rhythm.
friends_to_reconnectread-onlysocial.readClose friends the user is overdue to see.
who_is_freeread-onlysocial.readWho is free now, today, or on a date.
group_historyread-onlysocial.readWhen a group of friends and the user were last all together, and how often.
find_timeread-onlysocial.readBest windows over the next days for a named group of friends.
get_my_profileread-onlysocial.readWhat Luau knows about the user for planning: interests, household, upcoming dates, goals, prefs.
get_social_goalsread-onlysocial.readThe user's social goals with progress.
set_social_goalsocial.writeSet a social goal (preset, custom, or "see X twice a month").
add_important_datesocial.writeAdd a birthday / anniversary / date for Kai to plan around.
list_planning_opportunitiesread-onlysocial.readWhat Kai's planner has queued to nudge the user about.
my_circleread-onlysocial.readThe user's closest people, ranked, with last-seen and upcoming-together.
mutual_friendsread-onlysocial.readWhether named friends know each other, and who knows all of them.
list_crewsread-onlysocial.readThe user's Hangvite crews and members.
create_crewsocial.writeCreate a named crew (optionally with members).
update_crewsocial.writeRename / add / remove members / make default / delete a crew.
crew_invite_linkread-onlysocial.readA join link + text for inviting someone to a crew (nothing sent).
log_momentevents.writeLog a hangout that wasn't on Luau (counts toward closeness).
mark_attendanceevents.writeHost corrects who came / no-showed on a past event.
create_hangvitesendsevents.writeSend a same-day "who's in?" Hangvite (sends invites).
get_hangvite_statusread-onlyevents.readWho's in, out, or silent on a Hangvite.
invite_to_hangvitesendsevents.writeInvite more people to a live Hangvite (sends invites).
respond_to_hangvitersvp.writeAccept or pass on a Hangvite the user received.
invite_guestssendsinvites.writeInvite people to an event by name, phone, or email (sends invites).
remind_non_responderssendsinvites.writeRemind invited guests who haven't RSVP'd (sends reminders).
uninvite_guestsendsinvites.writeRemove a guest from an event; preview first, then confirm (sends them a notice).
cancel_eventevents.writeCancel a standalone event the user hosts (guests notified).
add_co_hostsendsinvites.writeMake a friend a co-host (sends them a notice), or mint an invite link for someone not on Luau.
remove_co_hostevents.writeRemove a co-host (nothing sent).
rsvprsvp.writeRSVP to an event as the user.
update_eventevents.writeChange an event's details.
create_signups_sheetevents.writeAdd a sign-up sheet (roles, shifts, supplies, zones).
get_signups_boardread-onlyevents.readThe sign-up board: what's filled, what's still needed.
claim_signuprsvp.writeSign the user up for a role or supply.
share_needread-onlyevents.readA ready-to-send ask for one need or the whole board.
assign_signupsendsinvites.writeHost puts a person on a need/shift (sends them a note; holds a spot for non-mutuals).
update_signups_sheetevents.writeHost edits a published sheet: needs, shifts, zones, cap.
get_signups_rosterread-onlyevents.readHost roster of who signed up, with a CSV link.
upload_event_imageevents.writeUpload an image (base64) to use as an invite image.
set_event_imageevents.writeSet or replace an event's invite image from a URL or bytes.

Tools marked sends message other people (invites, reminders) and are annotated so your assistant asks you before running them.

Images

Every event gets an invite image. If you do nothing, Luau picks one from the draft's image_search_keywords and preview_event shows it before you commit. If the user made or chose an image, there are two ways to bring it in:

  • upload_event_image — base64 in the tool call (up to about 3 MB decoded), returns an image_url to put on the draft or pass to set_event_image.
  • POST https://app.luau.co/api/mcp/upload — multipart file with the same bearer token, for larger files from a shell (up to 4 MB). Same response.

A public https image_url is also accepted on drafts and by set_event_image; Luau checks it is a real image and re-hosts it. A URL that fails the check never blocks the event — the automatic image is used and the result says so. Uploads are moderated. Event results include the final image_url and an inline image so you can show the invite.

Access requirements

  • A free Luau account (phone sign-in). United States.
  • Everything a tool returns is the connected user's own data: their events, their guest lists, their friends on Luau. Nothing about anyone else's graph is exposed.
  • “Who's free” uses a friend's Google Calendar only when that friend opted into calendar matching, and only as free/busy, never event details.
  • Rate limits are fair use; sustained abuse gets HTTP 429.

Support

Questions or a connector review to coordinate: support@luau.co. Policies: privacy · terms.