API & MCP
Everything you can do on the site, your own assistant can do for you. One token, two doors, the same 12 tools behind both.
1 · Get a token
Settings → API & MCP. It is shown once and starts with lh_.
2a · MCP
Streamable HTTP at https://letshang.io/mcp with your token as a bearer.
claude mcp add --transport http letshang https://letshang.io/mcp \ --header "Authorization: Bearer lh_…"
2b · REST
curl https://letshang.io/api/v1/tools/explore_hangouts \
-H "Authorization: Bearer lh_…" -H "Content-Type: application/json" \
-d '{"topic":"ai","this_week":true}'
GET /api/v1/me · GET /api/v1/tools (with JSON schemas) · POST /api/v1/tools/{name}. 60 requests a minute. Errors come back as {"error": "…"} with 4xx.
The tools
explore_hangouts(topic, this_week, fits_my_schedule)
Upcoming public tables, soonest first. Each has seats taken, seats still needed before it happens, and its link.
get_hangout(slug)
One table in full: who is sitting (nickname, country), the time options and how many can make each, the deadline, and the Meet link if this account has a seat and the lights are on.
create_hangout(title, topic, description, times, duration_min, min_seats, max_seats, decide_hours, visibility, format)
Set a new table. It only happens if min_seats people sit down before the deadline. Times are ISO 8601 with an offset; one to three options. The account becomes the host and takes the first seat.
grab_seat(slug, times)
Sit down at a table (or join its waitlist when full). With several time options, pass the ones that work as times; omit to accept all.
leave_seat(slug)
Free this account's seat. The host cannot leave their own table.
my_hangouts()
Tables this account sits at or hosts, upcoming first, then the recent past.
share_text(slug)
A ready-to-post invitation for a table, with its link.
table_talk_read(slug, limit)
The last messages of a table's chat. Only for people sitting at it.
table_talk_post(slug, body)
Say something in a table's chat as this account. Only for people sitting at it.
alert_channels()
Where news about this account's tables is announced besides email.
add_alert_channel(kind, url, label, slug)
Announce this account's tables in Discord, Slack, Teams, Google Chat, Telegram or any https URL that takes JSON. With slug the channel only hears about that one table. A test message goes out at once.
remove_alert_channel(id)
Remove one alert channel by id.