lesgooo
Registry code: a5ac53489aae3a0d
lesgooo.fun is a free group planner without accounts. Each plan is a shareable link with five modules: When (all-day or exact-time availability), Where (places and votes), Event (agreed details and RSVPs; module key rsvp), Checklist and Splitwise (shared costs). Friends can take part in a browser without Claude.
Act for one person. Reading or opening a plan needs no identity. Before changing an existing plan, know who the user is in it: an existing participant or someone new (join_plan). A mentioned friend, an expense payer, a sole participant or the default Organizer label alone does not…
- endpoint
- https://lesgooo.fun/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is lesgooo live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is lesgooo free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does lesgooo have?
- 23 tools: update_plugin_settings, get_plan, vote_place, check_item, update_event, record_payment, widget_select_participant, read_plugin_settings, ….
- Is lesgooo safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.2%· all time 99.2%
last good check
of 23 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- used for
- create a group plan
- pick dates the group is free
- vote on places
- split group expenses
- manage rsvps and checklists
- takes → gives
- text, data → data
- tools
- 8 reads15 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
open_preferences reads open 32d ago
Open local widget preferences. Defaults and recent history stay on this device; does not change a shared plan.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 linesopen_planner reads open 32d ago
Opens the interactive lesgooo planner (When, Where, Event, Checklist, Splitwise) in the conversation, optionally on a saved plan and module and as a previously selected participant. Without a plan it shows an unsaved local draft. Opening saves nothing. Use when the user wants to see or edit the plan visually.
{ "type": "object", "properties": { "plan": { "type": "string" }, "module": { "enum": [ "when", "where", "rsvp", "checklist", "splitwise" ], "type": "string" }, "participant_id": { "type": "string", "description": "Previously selected participant in this plan; requires participant_token." }, "participant_token": { "type": "string", "description": "Token returned by join_plan/create_plan for this participant and plan; requires participant_id." } }, "additionalProperties": false }arguments 27 linesfind_plan_mentions reads open 33d ago
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.
{ "type": "object", "required": [ "query" ], "properties": { "query": { "type": "string", "maxLength": 300 } }, "additionalProperties": false }arguments 13 linesupdate_plugin_settings changes data unknown never probed
No primitive account settings are available. An empty update is a no-op; device preferences are changed in the widget.
{ "type": "object", "required": [ "set" ], "properties": { "set": { "type": "object", "properties": {}, "additionalProperties": false } }, "additionalProperties": false }arguments 14 linesget_plan reads unknown 33d ago
Reads a saved plan: title, Event details, participants with their all-day and exact-time availability and RSVP answers, best dates and shared free-time windows, suggested places with votes, and the currency. Use when the user shares a plan link or asks about a plan's current state. time_zone resolves today's date; since returns changes after an earlier server_time.
{ "type": "object", "required": [ "plan" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "since": { "type": "string", "description": "Optional ISO timestamp (server_time from an earlier get_plan)." }, "time_zone": { "type": "string", "description": "The user's IANA time zone, e.g. Europe/Prague." }, "include_all_dates": { "type": "boolean", "description": "For calendar UI: return all dates within the existing bounded read budget, instead of the concise first 60 per person." } }, "additionalProperties": false }arguments 25 linesvote_place changes data unknown never probed
Up-votes, down-votes or clears the participant's vote on a suggested place. Use when the user expresses a preference for or against a place in the plan.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "place_id", "vote" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "vote": { "enum": [ "up", "down", "clear" ], "type": "string" }, "place_id": { "type": "string", "description": "From get_plan places[].place_id or add_place (the exact place name also works)." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 37 linescheck_item changes data unknown never probed
Marks a checklist item done (done=true) or open again (done=false). Use when the user says a task is finished or needs reopening.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "item_id", "done" ], "properties": { "done": { "type": "boolean" }, "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "item_id": { "type": "string", "description": "From get_checklist or add_checklist_item (the exact item text also works)." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 32 linesupdate_event changes data unknown never probed
Updates the shared Event details everyone sees: title, date and time (local time, no time zone; no start_time means all day), location and description. Omitted fields stay unchanged; an empty string clears a field. Use when the user sets or changes the agreed event details or renames the plan.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "title": { "type": "string", "description": "Plan / event name (max 120 chars)." }, "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)." }, "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." }, "description": { "type": "string", "description": "Details for the group (max 4000 chars)." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 52 linesrecord_payment changes data unknown never probed
Records that the participant has already paid someone back (settling up); the amount defaults to what they owe that person. It records a completed payment only and moves no money. Use when the user says the money was actually sent.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "to_participant_id" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "amount": { "type": "number", "description": "Optional; defaults to the suggested settle-up amount." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "allow_duplicate": { "type": "boolean", "description": "Only if the user confirms a second, identical payment within 10 minutes (otherwise it is treated as a retry)." }, "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)." } }, "additionalProperties": false }arguments 36 lineswidget_select_participant changes data unknown 33d ago
App-only identity picker. Bind the name explicitly selected in the shared web UI. Does not change schedule data.
{ "type": "object", "required": [ "plan", "participant_id" ], "properties": { "plan": { "type": "string" }, "participant_id": { "type": "string" } }, "additionalProperties": false }arguments 16 linesread_plugin_settings reads unknown never probed
Read the plugin settings layout. There are no account settings; the action opens device-local preferences.
{ "type": "object", "properties": {}, "additionalProperties": false }arguments 5 lineswidget_write changes data unknown never probed
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.
{ "type": "object", "required": [ "operation", "payload" ], "properties": { "plan": { "type": "string" }, "payload": { "type": "object" }, "operation": { "type": "string" }, "participant_id": { "type": "string" }, "participant_token": { "type": "string" }, "target_participant_id": { "type": "string" }, "target_participant_token": { "type": "string" } }, "additionalProperties": false }arguments 31 linesadd_expense changes data unknown never probed
Records a shared expense split equally: description, amount, currency, who paid (defaults to the participant) and who shares it (defaults to everyone). It records the cost only and moves no money. Use when the user reports something they or someone in the group paid for.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "description", "amount" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "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)." }, "description": { "type": "string", "description": "What it was for, e.g. \"Groceries\" (max 120 chars)." }, "split_among": { "type": "array", "items": { "type": "string" }, "description": "Who shares the cost (participant_id values or exact names). Defaults to everyone." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "allow_duplicate": { "type": "boolean", "description": "Only if the user confirms a second, identical expense within 10 minutes (otherwise it is treated as a retry)." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." }, "paid_by_participant_id": { "type": "string", "description": "Who paid (participant_id from get_plan, or their exact name). Defaults to you." } }, "additionalProperties": false }arguments 52 linescreate_plan changes data unknown never probed
Creates a new saved lesgooo group plan with the user as its first participant. Use when the user wants to start planning something new. Returns the shareable plan links and the participant's private credentials (participant_id, participant_token) needed for later changes. Title and name are optional. Sends no invitations or notifications.
{ "type": "object", "required": [], "properties": { "title": { "type": "string", "description": "User-supplied short plan name (max 120 chars). Omitted when unknown; temporary Event label until collected after the requested action." }, "your_name": { "type": "string", "description": "User-supplied participant name (max 80 chars). Omitted when unknown; temporary Organizer participant until their name is collected after the requested action." }, "request_id": { "type": "string", "description": "Optional UUID v4 for atomic creation. An identical UUID and identical fields (including omissions) replay the same creation; a changed payload is rejected." } }, "additionalProperties": false }arguments 19 linesjoin_plan changes data unknown never probed
Adds the user to a saved plan under their name, or selects the existing participant with that name, and returns that person's private credentials. Use when the user wants to take part in an existing plan or act as a specific participant in it. With existing credentials it renames that same participant instead. It does not verify identity or grant organizer rights.
{ "type": "object", "required": [ "plan", "name" ], "properties": { "name": { "type": "string", "description": "The person's name as the group knows them (max 80 chars)." }, "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "selection": { "enum": [ "auto", "existing", "new" ], "type": "string", "description": "Without credentials: auto matches or adds; existing never adds; new never takes another person's matching name. Default auto." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." }, "existing_participant_id": { "type": "string", "description": "Exact existing participant ID from get_plan or received user UI selection; requires selection=existing and matching name. No rename." } }, "additionalProperties": false }arguments 39 linesset_availability changes data unknown never probed
Changes one participant's availability: all-day dates and/or exact free-time windows (ISO start and end with offset, plus the IANA time_zone). mode=add merges, remove subtracts, replace overwrites. Use when the user says which days or hours they are or are no longer free. It does not set the agreed Event date or an RSVP.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "dates" ], "properties": { "mode": { "enum": [ "replace", "add", "remove" ], "type": "string", "description": "add/remove change supplied days/windows; replace is a full replacement when time_slots is supplied. Default replace (legacy all-day behavior)." }, "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "dates": { "type": "array", "items": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "maxItems": 370 }, "time_zone": { "type": "string", "description": "The user's IANA time zone, e.g. Europe/Prague." }, "time_slots": { "type": "array", "items": { "type": "object", "required": [ "start", "end" ], "properties": { "end": { "type": "string", "description": "ISO timestamp with Z or UTC offset, after start, max 7 days." }, "start": { "type": "string", "description": "ISO timestamp with Z or UTC offset." } }, "additionalProperties": false }, "maxItems": 300, "description": "Optional exact windows. For hours-only changes pass dates=[] and mode=add/remove; replace changes the entire availability. End is exclusive." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 68 linesset_rsvp changes data unknown never probed
Records whether the participant is coming to the plan's Event: yes, no, or clear to remove the answer. For a repeating event it answers one occurrence (the next one by default, or occurrence_date). Use when the user says they are or are not attending.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "status" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "status": { "enum": [ "yes", "no", "clear" ], "type": "string" }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "occurrence_date": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "description": "Repeating events only: the date of the occurrence to answer for." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 37 linesadd_place changes data unknown never probed
Suggests a place for the group to vote on (Where). By default it searches Google Places and returns up to five candidates without saving (status needs_selection); calling it again with the chosen google_place_id saves the place with its official details, map link and photo. source=manual saves a supplied name, address or link without a lookup. Duplicates are merged. Use when the user proposes a venue or destination.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "name" ], "properties": { "link": { "type": "string", "description": "Optional link to any other page about the place (http/https), instead of google_maps_url." }, "name": { "type": "string", "description": "Requested place name, including accents (max 300 chars). A selected Google result supplies its official name." }, "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "query": { "type": "string", "description": "Optional Google autocomplete query including the known city/address (max 160 chars); otherwise name/address are used." }, "source": { "enum": [ "auto", "manual" ], "type": "string", "description": "Default auto uses Google first. Manual explicitly saves the supplied name/address/link without a paid lookup." }, "address": { "type": "string", "description": "Optional address (max 500 chars)." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "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." }, "google_place_id": { "type": "string", "description": "Exact place ID from returned Google candidates; official details are loaded server-side (max 160 chars)." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 56 linesget_checklist reads unknown 33d ago
Reads the plan's shared checklist: open and done items with their item_id. Use when the user asks what still needs doing or what is on the list.
{ "type": "object", "required": [ "plan" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." } }, "additionalProperties": false }arguments 13 linesadd_checklist_item changes data unknown never probed
Adds one item to the plan's shared checklist: one task, ingredient or thing to bring per call. Use when the user wants something added to the to-do or packing list.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "text" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "text": { "type": "string", "description": "One independently checkable item, single line, max 500 chars. Not a list of multiple tasks/ingredients." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 28 linesget_expenses reads unknown 33d ago
Reads the plan's shared costs: recorded expenses and payments, each participant's balance and the suggested transfers to settle up, in the plan's currency. Use when the user asks who paid what or who owes whom.
{ "type": "object", "required": [ "plan" ], "properties": { "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." } }, "additionalProperties": false }arguments 13 linesremove_entry changes data unknown never probed
Deletes an expense, payment, checklist item or place that this participant added; entries added by others cannot be removed. Use when the user asks to delete a specific entry, for example to correct a mistake.
{ "type": "object", "required": [ "plan", "participant_id", "participant_token", "kind", "id" ], "properties": { "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." }, "kind": { "enum": [ "expense", "payment", "checklist_item", "place" ], "type": "string" }, "plan": { "type": "string", "description": "Saved plan link (e.g. https://lesgooo.fun/ab12/when) or its 4-character plan ID. Links without a plan ID (e.g. https://lesgooo.fun/when) are unsaved local drafts and are not accepted." }, "participant_id": { "type": "string", "description": "From create_plan or join_plan." }, "participant_token": { "type": "string", "description": "From create_plan or join_plan." } }, "additionalProperties": false }arguments 38 lineswidget_lookup reads unknown 33d ago
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.
{ "type": "object", "required": [ "service", "payload" ], "properties": { "payload": { "type": "object" }, "service": { "enum": [ "fetchPlacesAutocompleteV2", "fetchPlaceDetailsV2", "fetchLinkPreviewV2", "fetchPreviewImage" ], "type": "string" } }, "additionalProperties": false }arguments 22 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's ida5ac53489aae3a0d.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/a5ac53489aae3a0d/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/a5ac53489aae3a0d?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.