Integration details
Description
Funlet helps you coordinate your group, automatically, without the back and forth. Describe what you want, select options, and Funlet creates events, collects RSVPs by text, sends reminders, and manages your saved groups (crews) and contacts. Invitees can respond right from their phones without downloading an app or creating an account. Things organizers ask for: - Set up pickleball July 16th, 2pm at Piper Park with Pickleball People - Ask my Parents Supper Club which Friday works, the 10th, 17th, or 24th - Text my Mt. Tam Hiking Group to see who's interested in a trip next month Add an event time to invite your crew and collect RSVPs. Add two or three times to poll your crew to find the best time. Don't add any times to send an overall interest check. Select Recurring to schedule a series, or Limit Spots to cap how many can join; if a spot opens up later, funlet texts to see who wants to fill it. Turn on Reminders to text responders 24 hours before the event, or use Auto-nudge to text non-responders automatically to improve responses and reduce the organizer workload. Create a crew once, then use it for multiple events. Share a crew link or QR code and people add themselves. Connect Google or Microsoft Contacts to sync contacts, and Google or Outlook Calendar so funlet can check your availability when you plan. One account, every surface: the same account works whether you use funlet on the web, through Claude, ChatGPT, or any AI agent. Turn on Conversation mode and funlet replies with speech or text only, great for a hands free planning experience. Funlet is available in the US and Canada.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Funlet
- Access
- Account required
- First tracked
- 2026-09-25
- Tool count
- 46
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Funlet
Get updates when Funlet’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competitive lineup
46 tools agents can invoke
Opens the add-contact form in the conversation, where the organizer types a new contact's name and phone and saves. Use this when the organizer wants to enter a contact by hand or asks to open the form. The form collects name and phone together. A funlet contact is a name and phone with an optional email; there is no company, role, or notes field. Optionally pass prefill with fields the organizer already gave. If the organizer already gave a name and phone and wants it saved directly, use funlet_create_contact instead. To browse contacts use funlet_open_contacts; to change one use funlet_update_contact; to remove one use funlet_delete_contact.
funlet_add_contact_form
Opens the new-crew form in the conversation, where the organizer names the crew and picks members, then saves. Use this when the organizer wants to build a crew in the UI or asks to open the form. A crew is a saved, named group of contacts reused across events. The form collects the details. Pass crew_name when the organizer already said a name so the reply echoes it. If the organizer already gave a crew name and wants it created directly, use funlet_create_crew instead. To add or remove members later use funlet_set_crew_members; to rename one use funlet_update_crew.
funlet_add_crew_form
Creates a contact in the organizer's address book directly, without opening a form. Use this to save a person when you have a name and phone, including when the organizer asks to just add the contact ('add Priya, 415-555-0134'). Pass phone (E.164, required) and optionally first_name, last_name, email. If the phone is missing, ask for it or open funlet_add_contact_form. Do not create a contact just because a lookup found no match; only when the organizer means to save that person. A funlet contact is a name and phone with an optional email. A create with only name and phone opens the Add-manually sheet pre-filled so the organizer confirms the phone before it commits. A phone already saved returns duplicate_conflict. To change a contact use funlet_update_contact; to remove one use funlet_delete_contact.
funlet_create_contact
Adds specific contacts to an event as attendees and texts them the invite, without opening the picker. Use this when the organizer has already named who to add and asks to just add them. New people join the event's crew and receive their invite. Call once to get a confirmation prompt, then again with confirmed:true and contact_ids to commit. When the organizer wants to browse and pick in a visual picker, open funlet_add_people_to_event_form instead. If unsure which contacts they mean, confirm before adding.
funlet_add_people_to_event
Opens the add-people picker on an event so the organizer can choose contacts to invite and save. Use this when the organizer wants to add or invite more people to an existing event ('add Priya to pickleball'). New people are added as attendees, receive their invite by text, and join the event's crew. Opening the picker adds no one on its own; the organizer picks and saves from it. Pass contact_name when the organizer named someone so the reply echoes it; the picker still opens for them to pick and save. To add specific contacts directly without the picker, use funlet_add_people_to_event. If unsure which event they mean, confirm before opening.
funlet_add_people_to_event_form
Cancels an event. Attendees stop receiving automated nudges. This cannot be undone. Use this when the organizer wants to cancel or call off a specific event. To start, call funlet_open_event with raise_confirm:"cancel_event"; that opens Event Detail with the cancel sheet raised, and the organizer's tap on the sheet is the commit. A direct call to this tool without confirmation returns a redirect to that surface. Pass event_id, resolving a name to an id first with funlet_list_events if needed. An unresolved id returns EVENT_NOT_FOUND.
funlet_cancel_event
Checks the organizer's connected calendars for conflicts. Pass slots[] to test specific times (returns free, busy, or unknown per slot), or range_start and range_end to list every busy block in a window (returns busy_blocks[] with start and end timestamps). Busy block timestamps are returned; event titles, locations, and attendees are withheld. Use this to answer when the organizer is busy or free.
funlet_check_freebusy
Connects the organizer's Google or Microsoft Calendar (for free/busy checks) or Contacts (to import the address book). Use this when the organizer wants to connect or link a calendar or contacts source. Pass service ('google_calendar', 'microsoft_calendar', 'google_contacts', or 'microsoft_contacts'). Returns a secure link the organizer opens to approve access on the provider's site. Access is read-only; funlet never changes the calendar or contacts. Connected contacts import and auto-sync daily. To disconnect, use funlet_disconnect_service.
funlet_connect_service
Opens the organizer's Contacts surface, and can look up whether a phone number belongs to a saved contact or deep-link to one named contact. Use this to browse the contact list, run a phone (E.164) lookup, or open a single contact. This tool only opens and views contacts; it never adds, changes, or deletes one. A funlet contact is a name and phone with an optional email; funlet does not store company, role, or notes. Contacts are the people the organizer can invite; crews are saved groups of contacts. On no match or multiple matches the result returns a message and the Contacts tab opens in the same call so the organizer can find or pick the person. Pass contact_name to open a named contact, contact_id for a specific one, or phone for a number lookup. To add a contact use funlet_add_contact_form; to change one use funlet_update_contact; to delete one use funlet_delete_contact. Any intent about crews, contacts, events, or notifications that does not map to a specific action opens that entity's list; help renders only on an explicit help ask.
funlet_open_contacts
Creates a funlet event and sends the invite to the crew; funlet then handles RSVP collection over RCS and SMS, automatic nudges, and response tracking. To start a new event, open funlet_create_event_form so the organizer reviews and sends; the organizer's send from the builder is the commit, even when they ask to just create and send it. This tool commits when called with confirmed:true from the builder's send. Pass crew_name/contact_names when the organizer named a crew or people instead of ids; the same server-side resolution the form uses applies.
funlet_create_event
Creates a crew directly, a saved, named group of contacts reused across events, without opening a form. Use this when you have a crew name and the organizer asks to just make the crew. Pass name (required, max 30 characters) and optionally contact_ids (initial members, contact UUIDs). If the organizer would rather name it and pick members in the UI, funlet_add_crew_form opens a form instead. The organizer approves the write before it commits. To add members later use funlet_set_crew_members; to rename use funlet_update_crew.
funlet_create_crew
Opens the funlet event builder, pre-filled from what the organizer said, so they review, edit, and send; funlet then handles RSVP collection over RCS and SMS, automatic nudges, and response tracking. Use this when the organizer wants to plan or send out a group event, including indirect phrasing ('plan Mom's 70th', 'find a night for dinner with the crew'). Pass crew_name and/or contact_names when named so the builder opens pre-filled; a name that does not resolve to exactly one match opens blank and never blocks the builder. Opening the builder sends nothing on its own; the organizer's send from it is the commit, even when they ask to just create and send it.
funlet_create_event_form
Deep-links to one specific crew the organizer names so they can view its members. A bare call with no crew_name or crew_id redirects to the Crews tab of the dashboard rather than opening a separate surface. A crew is a saved, named group of contacts reused across events. On no match or multiple matches the result returns a message and the Crews tab opens in the same call so the organizer can find or pick the crew. To get a crew's share link or QR code use funlet_get_crew_link; to add or remove members use funlet_set_crew_members. Any intent about crews, contacts, events, or notifications that does not map to a specific action opens that entity's list; help renders only on an explicit help ask.
funlet_open_crews
Starts deletion of the organizer's funlet account. Three-step confirmation in chat: the first call with confirmed:false returns the first prompt; the second call with confirmed:true returns the final prompt; the third call with confirmed:true and final_confirmation_text set to the phrase "delete my account" (matched case-insensitively) starts deletion. Deletion is not immediate; a 30-day grace period follows, during which the organizer can email [email protected] to restore. Pass the literal text the organizer said or typed; only that phrase commits. Do not call again if the organizer declines.
funlet_request_account_deletion
Permanently deletes a saved contact. Use this when the organizer wants to remove or delete a contact. To start, call funlet_open_contact with raise_confirm:"delete_contact"; that opens Contact Detail with the delete sheet raised, and the organizer's tap is the commit. A direct call without confirmation returns a redirect to that surface. In Conversation mode, if the organizer has not named the contact, call without contact_identifier and the server asks which contact; never ask in chat yourself. Ambiguous names return disambiguation_required with phones; re-call with the resolved contact_id. The contact is removed from every crew; past event responses are preserved. This cannot be undone. To fix a contact use funlet_update_contact; to remove someone from one crew only, use funlet_set_crew_members.
funlet_delete_contact
Deletes a saved crew. Use this when the organizer wants to remove or delete a crew. To start, call funlet_open_crew with raise_confirm:"delete_crew"; that opens Crew Detail with the delete sheet raised, and the organizer's tap is the commit. A direct call without confirmation returns a redirect to that surface. In Conversation mode, if the organizer has not named the crew, call without crew_identifier and the server asks which crew; never ask in chat yourself. Ambiguous names return disambiguation_required and never commit; re-call with the resolved crew_id. Deleting removes the saved group; members stay in the address book, and any events using the crew keep it. This cannot be undone. To rename use funlet_update_crew; to remove members without deleting, use funlet_set_crew_members.
funlet_delete_crew
Disconnects the organizer's Google or Microsoft Calendar or Contacts. Use this when the organizer wants to disconnect or unlink a connected source. To start, call funlet_open_profile with raise_confirm set to the matching service; that opens the Profile tab with the disconnect sheet raised, and the organizer's tap is the commit. A direct call without confirmation returns a redirect to that surface. Disconnecting revokes funlet's access with the provider and deletes the stored connection. Disconnecting calendar stops free/busy checks; disconnecting contacts stops the daily sync but keeps imported contacts. To connect again, use funlet_connect_service.
funlet_disconnect_service
Applies changes to an event's details (name, location, notes, payment, and/or times) and sends one consolidated update to attendees, without opening the editor. The event's type re-derives from the committed time_slots count on every commit; changing the slot count can change the event type. Also accepts reminders_enabled, auto_nudge, and slot_cap (Limit Spots; can be lowered, raised, or turned off, never turned on for an uncapped sent event) as an options-only pass; these commit silently with no attendee notice unless another field also changed. Use this when the organizer has given the new values and asks to just apply them. Call once to get a confirmation prompt, then again with confirmed:true and field_updates/time_slots to commit. A time change the organizer wants to review visually opens funlet_edit_event_form instead; a quick single-field change goes to funlet_edit_event_chat.
funlet_edit_event
Edits an existing event's details in the conversation, without opening an interface. Call with just event_id to see the event's current name, location, notes, and payment details. Pass any field the organizer wants to change (event_name, location, notes, payment_link, payment_amount, reminders_enabled, auto_nudge, slot_cap) to preview the combined screen: the merged current + changed values plus the event options (reminders, auto-nudge, limit spots, whether to keep or reset attendee responses). Re-pass every field described so far on every call, including ones from earlier turns; nothing is remembered server side. Pass send: true once the organizer says to send, with the same accumulated fields, to commit. RSVPs are kept by default; pass responses: "reset" only if the organizer wants to wipe and re-collect them. On a capped event, slot_cap can be raised or lowered (never below the confirmed count), or set to null to turn Limit Spots off; turning it on for an uncapped sent event is not supported here. Do not use this tool for time or slot changes, recurring events, or an explicit request to open the editor: those go to funlet_edit_event_form. To add attendees use funlet_add_people_to_event_form; to message attendees use funlet_send_message. Crew and recurrence can't be changed after send from this tool; cancel and recreate the event instead.
funlet_edit_event_chat
Opens the visual event editor so the organizer reviews and changes an event's details and sends the update; attendees get one consolidated update. Use this for multi-field edits, time changes, recurring events (scope picker), or when the organizer asks to open the editor. Opening the editor changes nothing on its own; the organizer reviews and saves from it. For a quick single-field text change, funlet_edit_event_chat handles it in the conversation. To apply changes directly without the editor, use funlet_edit_event.
funlet_edit_event_form
Returns one saved contact as data with no UI: name, phone, email, and crew memberships, resolved by name or id. Use this to read a single contact's fields rather than opening a surface. Read structuredContent for the data; the text content is a short narration. Ambiguous names return disambiguation_required with phones; re-call with the resolved contact_id. If no contact matches, the result returns a not-found message. To open the interactive Contact Detail surface, use funlet_open_contact.
funlet_get_contact
Returns one saved crew as data with no UI: the crew's name and its members, resolved by name or id. Use this to read a single crew's fields rather than opening a surface. Read structuredContent for the data; the text content is a short narration. Ambiguous names return disambiguation_required; re-call with the resolved crew_id. If no crew matches, the result returns a not-found message. The full roster rides structuredContent. To open the interactive Crew Detail surface, use funlet_open_crew.
funlet_get_crew
Returns a crew's stable share link, and with format "qr" an inline QR code, as data: the URL anyone can open to join the crew. Use this when the organizer wants to share or get the link or QR code for one specific crew. Read structuredContent for the data; the text content is a short narration. Name the crew with crew_name or crew_id; ambiguous names return disambiguation_required, so re-call with the resolved crew_id. An unresolved crew returns CREW_NOT_FOUND.
funlet_get_crew_link
Returns full details for a specific event by id, including metadata, RSVP roster, and host messages. Use this when the organizer asks about a particular event: time, location, notes, who has responded, or the message thread. Read structuredContent for the data; the text content is a short narration. Pass event_name (or event_id); the server resolves the name and asks which one if several match, so there is no need to look up an id first. An unresolved id returns EVENT_NOT_FOUND. Its roster is the canonical source for attendee crew_member ids; resolve a named attendee here before calling a tool that takes attendee_id.
funlet_get_event
Returns funlet help content. Call with no topic to list the available help topics; pass a topic for that topic's questions; pass topic plus question to get one answer. Use this when the organizer asks how funlet works, what funlet can do, or asks for help or a menu within funlet — 'what can you do' is topic 'creating an event', question 'What does funlet do?', and "what's the dashboard?" is also topic 'creating an event', question "What's the dashboard?". When a question names a subject that is not itself a topic, try topic 'creating an event' with the question's own words before settling for a menu. Read-only.
funlet_help
Reads the organizer's profile fields: display name, phone (masked), timezone, notification setting, and which calendar and contacts sources are connected. Use this to answer questions about those fields in chat. To open the Profile surface use funlet_open_profile; to change a field use funlet_update_profile; to connect a source use funlet_connect_service.
funlet_get_profile
Returns the organizer's contacts as data with no UI. Use this to read the address book, all contacts or one resolved by name, id, or phone, when you need the rows themselves rather than a surface. Read structuredContent for the data; the text content is a short narration. If a name does not match, the result returns a not-found message. To open the interactive Contacts surface, use funlet_open_dashboard with default_tab "contacts".
funlet_list_contacts
Returns the organizer's crews as data with no UI: each crew's name and member count. A crew is a saved, named group of contacts reused across events. Use this to read the crew list when you need the rows themselves rather than a surface. Read structuredContent for the data; the text content is a short narration. Pass crew_name or crew_id to resolve one crew; if it does not match, the result returns a not-found message. To open the interactive Crews surface, use funlet_open_dashboard with default_tab "crews".
funlet_list_crews
Lists the organizer's events as data. Use this to read or answer questions about their events in the conversation ('what events do I have', 'what's coming up') without opening a surface. Read structuredContent for the data; the text content is a short narration. Supports filtering by active or archived and forward pagination. For the interactive view, funlet_open_dashboard renders the Events tab. Any intent about crews, contacts, events, or notifications that does not map to a specific action opens that entity's list; help renders only on an explicit help ask.
funlet_list_events
Lists the organizer's recent activity (the Latest tab): replies, completed responses, reminders paused, and other notifications, newest first. Read-only. Any intent about crews, contacts, events, or notifications that does not map to a specific action opens that entity's list; help renders only on an explicit help ask.
funlet_list_notifications
Sends a nudge text to attendees who have not responded to an event. Use audience to target non-respondents (default), non-respondents plus maybes, or a custom list. Call once to resolve the recipient count and get an awaiting_confirmation prompt without sending; re-call with confirmed:true to send.
funlet_nudge_attendees
Opens one saved contact in the Contact Detail surface inside the conversation, where the organizer can review and edit name, phone, and email, change crew membership, or delete the contact. Use this when the organizer wants to open a specific contact ('show me Sarah Chen'). Pass contact_name, or contact_id when already resolved. If no contact or multiple contacts match, the result returns a message; follow up with funlet_open_contacts so the organizer can find or pick the person from the list. To browse the full list use funlet_open_contacts; to add a new contact use funlet_create_contact. This tool only opens an existing contact.
funlet_open_contact
Opens one saved crew in the Crew Detail surface inside the conversation, where the organizer can review the crew's name and members. Use this when the organizer wants to open a specific crew ('open my pickleball crew'). Pass crew_name, or crew_id when already resolved. If no crew or multiple crews match, the result returns a message; follow up with funlet_open_crews so the organizer can find or pick the crew from the list. To browse the full crew list use funlet_open_crews. This tool only opens an existing crew.
funlet_open_crew
Opens the funlet dashboard inside the conversation: the organizer's home view of upcoming events, latest activity, crews, contacts, and profile, rendered inline. Use this when the organizer asks for their dashboard or an overall view of their funlet activity. To open one specific event, crew, or contact, use the matching open tool instead.
funlet_open_dashboard
Opens one saved event in the Event Detail surface inside the conversation, where the organizer reviews time, location, notes, and the RSVP roster, and can edit or add people. Use this when the organizer wants to open a specific event ('show me the trivia night RSVPs'). Pass event_name, or event_id when already resolved. If no event or multiple events match, the result returns a message; follow up with funlet_open_dashboard so the organizer can find or pick the event from the list. To read the event list as data use funlet_list_events. This tool only opens an existing event.
funlet_open_event
Opens the organizer's Profile surface inside the conversation: display name, phone, timezone, notification setting, and connected calendar and contacts services, with controls to edit fields and connect or disconnect services. Use this when the organizer asks to open their profile, account, or settings. To read profile fields for answering in chat use funlet_get_profile; to change a field use funlet_update_profile.
funlet_open_profile
Parses a natural language time phrase into a calendar slot for the event builder. Internal; called by the create-event surface.
funlet_parse_time
Renames a saved crew in the conversation, without opening an interface. Pass crew_identifier (name or crew_id) when the organizer has named the crew, and name (the new name, max 30 characters). If they have not named one, call without crew_identifier and the server asks which crew; never ask in chat yourself. Ambiguous names return disambiguation_required; re-call with the resolved crew_id, or open funlet_open_crews so the organizer picks from the list. The organizer approves before it commits. To add or remove members use funlet_set_crew_members; to delete a crew use funlet_delete_crew.
funlet_update_crew
Revokes a crew's share link so the old link and QR code stop working, then issues a fresh one. Use this when the organizer wants to revoke or reset a crew's share link, for example after sharing it too widely. Pass crew_identifier (name or crew_id); ambiguous names return disambiguation_required, so re-call with the resolved crew_id, or open funlet_open_crews so the organizer picks the crew from the list. The organizer approves before it commits. The success response embeds the new share link and QR directly. The saved link is otherwise stable, so use this only to intentionally cut off the old one.
funlet_revoke_crew_link
Sends a crew's share link, or with format "qr" its QR code as an image, as a text message to the organizer's own phone. Use this when the organizer asks to text themselves the crew link or QR code. Name the crew with crew_name or crew_id; ambiguous names return disambiguation_required, so re-call with the resolved crew_id. Call once to get a confirmation prompt, then again with confirmed:true to send. Pass format only when the organizer named the link or the QR code; if they asked to share without naming one, omit format and the server asks which. To read the link as data use funlet_get_crew_link.
funlet_send_crew_link
Sends a text message from the organizer to an event's crew (plain text, max 1000 characters). Use mode broadcast (default) with audience to target the crew: all (default, everyone except people who declined), no_response, yes, no, maybe, or responded. To respond in-thread to one attendee, pass mode reply or attendee_reply with attendee_id (their crew_member id) and omit audience; fetch the roster via funlet_get_event to resolve a named attendee to an id; never guess one.
funlet_send_message
Adds or removes a saved contact across crews. Use this when the organizer wants to put a contact into crews or take them out. Pass contact_id and add_crew_ids and/or remove_crew_ids. Changes commit immediately. To change the contact's own fields use funlet_update_contact.
funlet_set_contact_crews
Adds or removes saved contacts in a crew. Use this when the organizer wants to put contacts into a crew or take them out. Pass crew_id when the organizer has named the crew, plus add_contact_ids and/or remove_contact_ids (contact UUIDs), or pass add_all_contacts:true to add every saved contact not already in the crew in one call. If the organizer has not named the crew, call without crew_id and the server asks which crew; never ask in chat yourself. Call once to resolve the add and remove counts and get an awaiting_confirmation prompt without writing; re-call with confirmed:true to commit. To rename a crew use funlet_update_crew; to delete it use funlet_delete_crew; to move one contact across several crews use funlet_set_contact_crews.
funlet_set_crew_members
Stops the automated reminder cadence for an event. Attendees receive no further automated nudges. This cannot be undone. Use this when the organizer wants to stop or turn off auto-reminders for a specific event. To start, call funlet_open_event with raise_confirm:"stop_auto_reminders"; that opens Event Detail with the stop sheet raised, and the organizer's tap is the commit. A direct call without confirmation returns a redirect to that surface. Pass event_id, resolving a name to an id first with funlet_list_events if needed. An unresolved id returns EVENT_NOT_FOUND.
funlet_stop_auto_reminders
Edits one field of a saved contact in the conversation, without opening an interface. Use this to change a single contact's name, phone, or email. Pass contact_identifier (name or contact_id) when the organizer has named the contact, plus field ("name", "phone", or "email") and new_value: an object {first_name?, last_name?} for name (null clears a part), an E.164 string for phone, or an email string (empty string clears it). If the organizer has not named the contact, call without contact_identifier and the server asks which contact; never ask in chat yourself. Ambiguous names return disambiguation_required with phones; re-call with the resolved contact_id, or open funlet_open_contacts so the organizer picks from the list. The organizer approves before it commits, and the change applies everywhere the contact appears. To add a contact use funlet_create_contact; to remove one use funlet_delete_contact.
funlet_update_contact
Updates the organizer's own profile: name, timezone, whether funlet texts them updates, and/or Conversation mode. Pass any of display_name (max 30 chars), first_name plus last_name (structured name; required to satisfy NAME_REQUIRED; last name optional; display name recomputes), timezone (IANA name like America/New_York), notifications_enabled (true/false), voice_only_mode (true/false). notifications_enabled is the account-wide "Text me updates" opt-out for all funlet SMS updates, not per-event, so 'turn off text me updates' and 'stop texting me' route here. voice_only_mode is funlet's Conversation mode setting: when on, funlet replies in words only and never opens panels; 'turn on conversation mode', 'turn off conversation mode', 'turn on voice mode' and 'turn off voice mode' route here and apply immediately with no confirm step. Phone is read-only. Other profile changes apply in the Profile visual with no separate chat confirm. To view the profile use funlet_get_profile.
funlet_update_profile
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.