lesgooo.fun
Free no-signup group planner: dates, RSVPs, place votes, shared checklist and split costs.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"lesgooo": {
"url": "https://lesgooo.fun/mcp"
}
}
}Remote endpoints
https://lesgooo.fun/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟡create_plan(title, your_name)
Create a new lesgooo plan and get its shareable links. Optionally adds the user as the first participant (returns their participant_token). Only call after the user asked for it.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Short plan name, e.g. \"Weekend at the cabin\" (max 120 chars)."
},
"your_name": {
"type": "string",
"description": "Name of the person you act for; adds them as the first participant (max 80 chars)."
}
},
"required": [
"title"
],
"additionalProperties": false
}🟢get_plan(plan, since)
Read a plan: today's date, title, event details, participants and their available dates and RSVP, the best dates so far (with weekday), the places being voted on (with place_id) and the currency for shared costs. Pass since (the server_time of an earlier call) to also get a list of what changed: people, days, RSVPs, places, checklist, expenses and payments.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"since": {
"type": "string",
"description": "Optional ISO timestamp (server_time from an earlier get_plan)."
}
},
"required": [
"plan"
],
"additionalProperties": false
}⚪join_plan(plan, name)
Join a plan as the person you act for. If a participant with the same name already exists, you act as them (like picking your name in the app). Returns participant_id and participant_token. Confirm the name with the user first.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"name": {
"type": "string",
"description": "The person's name as the group knows them (max 80 chars)."
}
},
"required": [
"plan",
"name"
],
"additionalProperties": false
}🔴set_availability(plan, participant_id, participant_token, dates, mode)
Set which days the person is free (YYYY-MM-DD, today up to 2 years ahead). mode: "replace" (default) sets exactly these days, "add" / "remove" change them. Only with the user's confirmation.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"dates": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"maxItems": 370
},
"mode": {
"type": "string",
"enum": [
"replace",
"add",
"remove"
]
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"dates"
],
"additionalProperties": false
}🔴set_rsvp(plan, participant_id, participant_token, status, occurrence_date)
Answer whether the person is coming: "yes", "no", or "clear" to remove the answer. For a repeating event the answer is for one occurrence: the next one by default, or pass occurrence_date (see get_plan event.upcoming). Only with the user's confirmation.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"status": {
"type": "string",
"enum": [
"yes",
"no",
"clear"
]
},
"occurrence_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Repeating events only: the date of the occurrence to answer for."
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"status"
],
"additionalProperties": false
}🟡add_place(plan, participant_id, participant_token, name, address, ...)
Suggest a place the group can vote on (Where tab). Give a name and optionally an address plus either a Google Maps link or any other web link (Mapy.cz, Airbnb, Booking, the venue's website). Duplicates are merged. Acts as the participant.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"name": {
"type": "string",
"description": "Place name (max 300 chars)."
},
"address": {
"type": "string",
"description": "Optional address (max 500 chars)."
},
"google_maps_url": {
"type": "string",
"description": "Optional Google Maps link (google.com/maps or maps.app.goo.gl). Links with coordinates (…/@50.08,14.42,…) also show a map preview."
},
"link": {
"type": "string",
"description": "Optional link to any other page about the place (http/https), instead of google_maps_url."
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"name"
],
"additionalProperties": false
}🔴vote_place(plan, participant_id, participant_token, place_id, vote)
Up-vote ("up"), down-vote ("down") or remove your vote ("clear") on a place, by place_id from get_plan. Only with the user's confirmation.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"place_id": {
"type": "string",
"description": "From get_plan places[].place_id or add_place (the exact place name also works)."
},
"vote": {
"type": "string",
"enum": [
"up",
"down",
"clear"
]
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"place_id",
"vote"
],
"additionalProperties": false
}🟢get_checklist(plan)
Read the plan's shared checklist: open and done items, with item_id.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
}
},
"required": [
"plan"
],
"additionalProperties": false
}🟡add_checklist_item(plan, participant_id, participant_token, text)
Add an item to the plan's shared checklist (e.g. "Bring the grill"). Acts as the participant.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"text": {
"type": "string",
"description": "Item text (max 500 chars)."
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"text"
],
"additionalProperties": false
}🟢check_item(plan, participant_id, participant_token, item_id, done)
Mark a checklist item done (done: true) or open again (done: false), by item_id from get_checklist.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"item_id": {
"type": "string",
"description": "From get_checklist or add_checklist_item (the exact item text also works)."
},
"done": {
"type": "boolean"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"item_id",
"done"
],
"additionalProperties": false
}🔴update_event(plan, participant_id, participant_token, title, start_date, ...)
Change the shared event everyone sees on the RSVP page: title, date/time, place or description. Only after the group agreed. Times are local (no time zone); omit start_time for an all-day event. Send only the fields to change; an empty string clears a field.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"title": {
"type": "string",
"description": "Plan / event name (max 120 chars)."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"start_time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$",
"description": "HH:MM, local time."
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"end_time": {
"type": "string",
"pattern": "^\\d{2}:\\d{2}$"
},
"location": {
"type": "string",
"description": "Place as plain text (max 500 chars)."
},
"description": {
"type": "string",
"description": "Details for the group (max 4000 chars)."
}
},
"required": [
"plan",
"participant_id",
"participant_token"
],
"additionalProperties": false
}🟢get_expenses(plan)
Read the plan's shared costs (Splitwise tab): expenses, each person's balance, and the suggested payments to settle up. Amounts are in the plan's currency.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
}
},
"required": [
"plan"
],
"additionalProperties": false
}🟡add_expense(plan, participant_id, participant_token, description, amount, ...)
Record a shared expense, split equally. paid_by defaults to the person you act for; split_among defaults to everyone in the plan. Always confirm the amount and who shares it with the user first.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"description": {
"type": "string",
"description": "What it was for, e.g. \"Groceries\" (max 120 chars)."
},
"amount": {
"type": "number",
"description": "Total, max 2 decimals (e.g. 42.5). Send a plain number."
},
"currency": {
"type": "string",
"description": "ISO code, e.g. CZK or EUR. Sets the plan's currency if it has no expenses yet; otherwise must match it (see get_plan currency)."
},
"paid_by_participant_id": {
"type": "string",
"description": "Who paid (participant_id from get_plan, or their exact name). Defaults to you."
},
"split_among": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who shares the cost (participant_id values or exact names). Defaults to everyone."
},
"allow_duplicate": {
"type": "boolean",
"description": "Only if the user confirms a second, identical expense within 10 minutes (otherwise it is treated as a retry)."
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"description",
"amount"
],
"additionalProperties": false
}🟢record_payment(plan, participant_id, participant_token, to_participant_id, amount, ...)
Record that the person you act for paid someone back (settling up). amount defaults to what they owe that person according to get_expenses. Only after the money was actually sent.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"to_participant_id": {
"type": "string",
"description": "Who received the money (participant_id, or their exact name)."
},
"amount": {
"type": "number",
"description": "Optional; defaults to the suggested settle-up amount."
},
"allow_duplicate": {
"type": "boolean",
"description": "Only if the user confirms a second, identical payment within 10 minutes (otherwise it is treated as a retry)."
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"to_participant_id"
],
"additionalProperties": false
}🔴remove_entry(plan, participant_id, participant_token, kind, id)
Delete an expense, payment, checklist item or place that the person you act for added (e.g. to fix a wrong amount: remove, then add again). Entries added by others can't be removed here. Always confirm with the user first.
Input Schema
{
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "Plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id."
},
"participant_id": {
"type": "string",
"description": "From create_plan or join_plan."
},
"participant_token": {
"type": "string",
"description": "From create_plan or join_plan."
},
"kind": {
"type": "string",
"enum": [
"expense",
"payment",
"checklist_item",
"place"
]
},
"id": {
"type": "string",
"description": "expense_id / payment_id (get_expenses), item_id (get_checklist) or place_id (get_plan). For items and places the exact text/name also works."
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"kind",
"id"
],
"additionalProperties": false
}Community
Evidence