Server definition
- Hash
- sha256:57b4e499a9fc612a87eedd50e478380ee0f9b02d69371f2926d5379c3cd5a774
- What it is
- What a remote MCP server returned when asked what it offers: 24 tools
The blob, as servednamed by its sha256
{
"instructions": "lesgooo.fun is a free, no-login group planner. A plan is shared as a link; the group picks days they are free, votes on places and RSVPs.\nAn explicitly supplied plan link takes precedence over previous conversation or app context. Bare /when, /where, /rsvp, /checklist and /splitwise links are local drafts, not saved plans. Ask for a saved share link; never substitute a previous plan, invent participants or call a plan tool for another plan.\nYou act for ONE person. A clear user request authorizes the exact named action, dates and RSVP; do not ask them to confirm the same request again. Ask first if the acting person, dates, amount, currency or split are missing or ambiguous. Never assume another person's availability or RSVP.\nTypical flow: create_plan (or get a plan link from the user) → join_plan as your user → set_availability / set_rsvp → get_plan to see the best dates. Creation returns shareable links. Returning a link in the conversation does not send invitations or notify anyone; follow the user's requested reply format.\nKeep the participant_token returned by create_plan/join_plan; it is required for every change made on that person's behalf.\nTo catch up later, call get_plan with since = the server_time of your previous get_plan; the response then lists what changed.\nCosts: get_expenses shows who paid what and who owes whom; add_expense / record_payment change money records — require user-requested amounts and participants; clarify missing or ambiguous details.\nPlaces: add_place / vote_place. Checklist: get_checklist / add_checklist_item / check_item. update_event changes the shared event (title, time, place) for everyone — only after the group agreed.\nAfter changing availability, RSVP, places or event details, read get_plan for the same plan before reporting the stored result. After checklist changes, read get_checklist; after cost changes, read get_expenses. create_plan already returns its saved plan and share links, so an extra read is not required for creation alone.\nA multi-step request can stop after some actions succeeded. Keep a returned plan_id, verify its current state and resume only missing actions. Never create another plan or report that nothing was saved when creation already returned a saved plan.\nParticipant credentials are private tool arguments. Never expose participant_token in replies, URLs, plan fields or app context. lesgooo cannot transfer money; record_payment only records money the user already sent, never a future repayment.\nResolve relative dates such as tomorrow using get_plan with the user's IANA time_zone (e.g. Europe/Prague for Prague). today_timezone identifies the calendar used by today; default UTC may differ from the user's day near midnight. Ask for their zone if unknown instead of assuming UTC. Return the exact calendar dates in the result.\nCopy user-supplied plan titles, participant names, place names and checklist text exactly, including accents; do not silently rewrite them when calling tools.\nMistakes: remove_entry deletes an expense, payment, checklist item or place that your person added — only when they explicitly request the specific deletion.",
"tools": [
{
"description": "Add an item to the plan's shared checklist (e.g. \"Bring the grill\"). Acts as the participant. Current stored state is available through get_checklist.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"text": {
"description": "Item text (max 500 chars).",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"text"
],
"type": "object"
},
"name": "add_checklist_item",
"outputSchema": null
},
{
"description": "Record a shared expense, split equally. paid_by defaults to the person you act for; split_among defaults to everyone in the plan. Requires a user-requested amount, currency, payer and equal-split participants; missing or ambiguous details need clarification.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"allow_duplicate": {
"description": "Only if the user confirms a second, identical expense within 10 minutes (otherwise it is treated as a retry).",
"type": "boolean"
},
"amount": {
"description": "Total, max 2 decimals (e.g. 42.5). Send a plain number.",
"type": "number"
},
"currency": {
"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).",
"type": "string"
},
"description": {
"description": "What it was for, e.g. \"Groceries\" (max 120 chars).",
"type": "string"
},
"paid_by_participant_id": {
"description": "Who paid (participant_id from get_plan, or their exact name). Defaults to you.",
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"split_among": {
"description": "Who shares the cost (participant_id values or exact names). Defaults to everyone.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"description",
"amount"
],
"type": "object"
},
"name": "add_expense",
"outputSchema": null
},
{
"description": "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. Current stored state is available through get_plan.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"address": {
"description": "Optional address (max 500 chars).",
"type": "string"
},
"google_maps_url": {
"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.",
"type": "string"
},
"link": {
"description": "Optional link to any other page about the place (http/https), instead of google_maps_url.",
"type": "string"
},
"name": {
"description": "Place name exactly as supplied, including accents (max 300 chars).",
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"name"
],
"type": "object"
},
"name": "add_place",
"outputSchema": null
},
{
"description": "Mark a checklist item done (done: true) or open again (done: false), by item_id from get_checklist. Current stored state is available through get_checklist.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"done": {
"type": "boolean"
},
"item_id": {
"description": "From get_checklist or add_checklist_item (the exact item text also works).",
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"item_id",
"done"
],
"type": "object"
},
"name": "check_item",
"outputSchema": null
},
{
"description": "Ask the user for missing availability, RSVP, place, expense or agreed event details in a native form. Returns selected values only; NEVER changes a plan. Use the corresponding write tool only after the user explicitly confirms the returned details. Hosts without forms should ask in chat or use open_planner.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"action": {
"enum": [
"availability",
"rsvp",
"place",
"expense",
"event"
],
"type": "string"
},
"plan": {
"type": "string"
}
},
"required": [
"plan",
"action"
],
"type": "object"
},
"name": "collect_plan_details",
"outputSchema": null
},
{
"description": "Create a new saved lesgooo plan with shareable links. Optionally adds the first participant and returns their private participant_token. Does not send invitations or notifications.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"request_id": {
"description": "Optional UUID v4 for an atomic create with your_name. Keep the same UUID and fields on retry; never reuse it for a different plan.",
"type": "string"
},
"title": {
"description": "Short plan name, e.g. \"Weekend at the cabin\" (max 120 chars).",
"type": "string"
},
"your_name": {
"description": "Name of the person you act for; adds them as the first participant (max 80 chars).",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "create_plan",
"outputSchema": null
},
{
"description": "Resolve an explicitly supplied lesgooo saved-plan link or exact ID for the desktop mention picker. Empty or general searches return no results; never enumerate plans.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"maxLength": 300,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "find_plan_mentions",
"outputSchema": null
},
{
"description": "Read the plan's shared checklist: open and done items, with item_id.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan"
],
"type": "object"
},
"name": "get_checklist",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan"
],
"type": "object"
},
"name": "get_expenses",
"outputSchema": null
},
{
"description": "Read the saved plan explicitly requested by the user. If the user's link is a bare /when, /where, /rsvp, /checklist or /splitwise URL, do NOT call this tool: explain it is a local draft and ask for its saved share link, even when a different plan was used earlier. Never replace a supplied link with the previous plan. Returns today's date in time_zone (UTC by default), title, event details, participants and their availability/RSVP, best dates, place votes and currency. Pass since (an earlier server_time) to also read changes.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"include_all_dates": {
"description": "For calendar UI: return all dates within the existing bounded read budget, instead of the concise first 60 per person.",
"type": "boolean"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"since": {
"description": "Optional ISO timestamp (server_time from an earlier get_plan).",
"type": "string"
},
"time_zone": {
"description": "User's IANA time zone, e.g. Europe/Prague. Use when resolving tomorrow or other relative days; today defaults to UTC if omitted.",
"type": "string"
}
},
"required": [
"plan"
],
"type": "object"
},
"name": "get_plan",
"outputSchema": null
},
{
"description": "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. The name must identify the person the user asked to act as.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"name": {
"description": "The person's name as the group knows them (max 80 chars).",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan",
"name"
],
"type": "object"
},
"name": "join_plan",
"outputSchema": null
},
{
"description": "Open the interactive lesgooo planner. Optionally choose a saved plan link and module. Without a plan, show the same local draft as the web application; never save a shared plan automatically.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"module": {
"enum": [
"when",
"where",
"rsvp",
"checklist",
"splitwise"
],
"type": "string"
},
"plan": {
"type": "string"
}
},
"type": "object"
},
"name": "open_planner",
"outputSchema": null
},
{
"description": "Open local widget preferences. Defaults and recent history stay on this device; does not change a shared plan.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "open_preferences",
"outputSchema": null
},
{
"description": "Read the plugin settings layout. There are no account settings; the action opens device-local preferences.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "read_plugin_settings",
"outputSchema": {
"properties": {
"layout": {
"items": {
"type": "object"
},
"type": "array"
},
"schema": {
"type": "object"
},
"values": {
"type": "object"
}
},
"required": [
"schema",
"values"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"allow_duplicate": {
"description": "Only if the user confirms a second, identical payment within 10 minutes (otherwise it is treated as a retry).",
"type": "boolean"
},
"amount": {
"description": "Optional; defaults to the suggested settle-up amount.",
"type": "number"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"to_participant_id": {
"description": "Who received the money (participant_id, or their exact name).",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"to_participant_id"
],
"type": "object"
},
"name": "record_payment",
"outputSchema": null
},
{
"description": "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. Requires an explicit request to delete this specific entry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"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.",
"type": "string"
},
"kind": {
"enum": [
"expense",
"payment",
"checklist_item",
"place"
],
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"kind",
"id"
],
"type": "object"
},
"name": "remove_entry",
"outputSchema": null
},
{
"description": "Add, remove or replace one participant's available calendar dates (YYYY-MM-DD, today up to two years ahead).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"dates": {
"items": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"maxItems": 370,
"type": "array"
},
"mode": {
"description": "replace sets the entire list; add and remove change only the supplied dates. Default: replace.",
"enum": [
"replace",
"add",
"remove"
],
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"dates"
],
"type": "object"
},
"name": "set_availability",
"outputSchema": null
},
{
"description": "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). Changes only the participant bound to the supplied credentials. Current stored state is available through get_plan.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"occurrence_date": {
"description": "Repeating events only: the date of the occurrence to answer for.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"status": {
"enum": [
"yes",
"no",
"clear"
],
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"status"
],
"type": "object"
},
"name": "set_rsvp",
"outputSchema": null
},
{
"description": "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. Current stored state is available through get_plan.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"description": "Details for the group (max 4000 chars).",
"type": "string"
},
"end_date": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"end_time": {
"pattern": "^\\d{2}:\\d{2}$",
"type": "string"
},
"location": {
"description": "Place as plain text (max 500 chars).",
"type": "string"
},
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"start_date": {
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"start_time": {
"description": "HH:MM, local time.",
"pattern": "^\\d{2}:\\d{2}$",
"type": "string"
},
"title": {
"description": "Plan / event name (max 120 chars).",
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token"
],
"type": "object"
},
"name": "update_event",
"outputSchema": null
},
{
"description": "No primitive account settings are available. An empty update is a no-op; device preferences are changed in the widget.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"set": {
"additionalProperties": false,
"properties": {},
"type": "object"
}
},
"required": [
"set"
],
"type": "object"
},
"name": "update_plugin_settings",
"outputSchema": {
"properties": {
"values": {
"type": "object"
}
},
"required": [
"values"
],
"type": "object"
}
},
{
"description": "Up-vote (\"up\"), down-vote (\"down\") or remove your vote (\"clear\") on a place, by place_id from get_plan. Changes only the participant bound to the supplied credentials. Current stored state is available through get_plan.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"participant_id": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"participant_token": {
"description": "From create_plan or join_plan.",
"type": "string"
},
"place_id": {
"description": "From get_plan places[].place_id or add_place (the exact place name also works).",
"type": "string"
},
"plan": {
"description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character id. Bare module links such as https://lesgooo.fun/when are local drafts: ask for a saved link, never substitute a previous plan ID.",
"type": "string"
},
"vote": {
"enum": [
"up",
"down",
"clear"
],
"type": "string"
}
},
"required": [
"plan",
"participant_id",
"participant_token",
"place_id",
"vote"
],
"type": "object"
},
"name": "vote_place",
"outputSchema": null
},
{
"description": "App-only Places search/details and link previews. The backend retains feature flags, monthly provider counters and timeouts. Never calls a paid API from the browser.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"payload": {
"type": "object"
},
"service": {
"enum": [
"fetchPlacesAutocompleteV2",
"fetchPlaceDetailsV2",
"fetchLinkPreviewV2",
"fetchPreviewImage"
],
"type": "string"
}
},
"required": [
"service",
"payload"
],
"type": "object"
},
"name": "widget_lookup",
"outputSchema": null
},
{
"description": "App-only identity picker. Bind the name explicitly selected in the shared web UI. Does not change schedule data.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"participant_id": {
"type": "string"
},
"plan": {
"type": "string"
}
},
"required": [
"plan",
"participant_id"
],
"type": "object"
},
"name": "widget_select_participant",
"outputSchema": null
},
{
"description": "App-only transport for explicit interactions with shared web components. Reuses the web write gateway, validation and budgets. Requires the selected participant token for saved-plan edits.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"operation": {
"type": "string"
},
"participant_id": {
"type": "string"
},
"participant_token": {
"type": "string"
},
"payload": {
"type": "object"
},
"plan": {
"type": "string"
},
"target_participant_id": {
"type": "string"
},
"target_participant_token": {
"type": "string"
}
},
"required": [
"operation",
"payload"
],
"type": "object"
},
"name": "widget_write",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:57b4e499a9fc612a87eedd50e478380ee0f9b02d69371f2926d5379c3cd5a774 | sha256sum