lesgooo.fun

Free no-signup group planner: dates, RSVPs, place votes, shared checklist and split costs.

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
98%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,311Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (2.59% of 128k context)

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-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools