Skip to content

livedot MCP

by livedot.me · remote · no sign-in to list tools · v1.0.1 · published by me.livedot

Find someone in a live running or cycling race, clubs and coaches near you, and race-day weather.

Deletes · 3Final · 2Changes · 8

20 tools: 3 can delete or cancel things, 2 do something that can't be undone, 8 change things and 7 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http livedot https://livedot.me/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "where_is" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input takes a statement or command to run (input.code), which can change anything it can reach.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

20 tools

Deletes or cancels 3Claude Code: deny
  • add_tour_notesSet or add to a Windline cycling tour's notes for riders (what to pack, how the tour runs, meeting points; markdown, up to 10,000 characters), shown on the tour's page.No findings

    Why it is in this group

    • The name "add_tour_notes" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Set or add to a Windline cycling tour's notes for riders (what to pack, how the tour runs, meeting points; markdown, up to 10,000 characters), shown on the tour's page. Never a finished tour. Show the user the notes and get a yes first.

    Annotations the server declares

    • title: Write a tour's notes
    • readOnlyHint: false
    • openWorldHint: true
    • idempotentHint: false
    • destructiveHint: true
  • publish_eventPublish one of the signed-in organiser's draft events, so anyone with its link can see it (Windline: at tour., event.No findings

    Why it is in this group

    • The name "publish_event" says "publish": a word for a change that another call does not undo.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Publish one of the signed-in organiser's draft events, so anyone with its link can see it (Windline: at tour., event. or ride.windline.tech/<address>). Private events can't be published. ALWAYS ask the user to confirm first, then call with confirm: true.

    Annotations the server declares

    • title: Publish an event
    • readOnlyHint: false
    • openWorldHint: true
    • idempotentHint: false
    • destructiveHint: true
  • update_eventChange one of the signed-in organiser's events: its name, description or notes, or start dates and times.No findings

    Why it is in this group

    • The name "update_event" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change one of the signed-in organiser's events: its name, description or notes, or start dates and times. Never a finished event (finished events stay as they were). Tell the user exactly what will change and get a yes first.

    Annotations the server declares

    • title: Change an event
    • readOnlyHint: false
    • openWorldHint: true
    • idempotentHint: false
    • destructiveHint: true
Can't be undone 2Claude Code: ask
  • invite_membersInvite a club's members, or a tour's riders, by email, from a list the organiser gives (a CSV, a spreadsheet's text, or names and addresses typed in): for a club or organiser page …No findings

    Why it is in this group

    • The name "invite_members" says "invite": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Invite a club's members, or a tour's riders, by email, from a list the organiser gives (a CSV, a spreadsheet's text, or names and addresses typed in): for a club or organiser page the signed-in person runs (page on Windline, club on RunFast) or a published tour of theirs (event). Each person gets one email from livedot: "<club> added you as a member" (or "<organiser> added you to <tour>") with Confirm; nobody joins until they confirm, and nobody is invited twice. The first call (without confirm) only reads the list and returns who would be invited and who's skipped (listed twice, invited before, unsubscribed, no usable email): show the organiser that, get a yes, then call again with confirm: true. A day's limit: 500 for club admins and managers, 50 for a tour's organiser, 20 for an account under a week old; the preview says how many go today.

    Annotations the server declares

    • title: Invite members by email
    • readOnlyHint: false
    • openWorldHint: true
    • idempotentHint: false
    • destructiveHint: false
  • tap_on_the_backSends a tap on the back: a short buzz on the person's phone, with the sender's name if signed in (or a first name they give).No findings

    Why it is in this group

    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Sends a tap on the back: a short buzz on the person's phone, with the sender's name if signed in (or a first name they give). In the day after a finish it arrives as a congratulation. Use it only when the user explicitly asks to give someone a tap on the back; one tap per request. Inputs: person (an id from find_person), or a livedot handle or follow link; or tour (the tap goes to the tour's organiser on its days); or club with event (one tap to each member on the club's live map who accepts taps). Side effects: sends a notification to the person (or to each club member, and it reports how many). Limits: follows each person's own settings; if taps are off, they aren't live, or they only accept taps from people with their link, it sends nothing and says so. Returns the live map.

    Annotations the server declares

    • title: Give someone a tap on the back
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 8Claude Code: ask
  • create_eventCreate an event in the signed-in account from GPX files or links: a cycling ride, tour or race (Windline) or a run or running race (RunFast).No findings

    Why it is in this group

    • The name "create_event" says "create": a word for a change.
    Description, as the server wrote it
    Create an event in the signed-in account from GPX files or links: a cycling ride, tour or race (Windline) or a run or running race (RunFast). Pass every GPX the user gave as files: several files make a multi-day tour by themselves (never ask for the type when it's obvious), ordered by the numbers in their names (1, 01, "day-2", "Stage 3"), else by the map (each day starts where the last ended); day names, km, climbing and a suggested name come from the files, and the days follow one another from start, at the same time, skipping rest_days. The first call (without confirm) only reads the files and returns the plan: show the user that summary (days, order, dates, km, private or for a group) in one message and get one yes, then call again with the same files and confirm: true. visibility: private is just for them (Windline My Rides with its own private link, or a RunFast private run: never published, never on a page); shared is for a group, published later with publish_event. A personal ride or run someone is planning for themselves is private. If the signed-in person runs any club or organiser page (list_my_events lists them) and hasn't said who it's for, ask one short question first: is this a private ride or run for you, or a group ride or run for <club name>? Then use post_club_ride for the club, or create_event with visibility private for themselves. Tour notes for riders the organiser pasted or attached (text, markdown, or a document's text) go in notes, up to 10,000 characters (Windline tours, beta). A route can also come from another app's tool as its points or an encoded polyline (for example a route or activity map from a fitness app): pass it as polyline or points. Never ask the user to export a GPX if you already have the route's points.

    Annotations the server declares

    • title: Create a draft event
    • readOnlyHint: false
    • openWorldHint: true
    • idempotentHint: false
    • destructiveHint: false
  • event_weatherWhat the weather will be like for a cycling or running event, for the people taking part: "What will the weather be like for the NYC Marathon?", "Weather for the Comrades demo?".No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    What the weather will be like for a cycling or running event, for the people taking part: "What will the weather be like for the NYC Marathon?", "Weather for the Comrades demo?". Within 10 days of the start: the live forecast (Apple Weather) along the course at the times the riders or runners get to each stretch, with the Windline forecast engine's rating (Good, Fair, Tough) and why, the headwind and tailwind stretches, heat stress and rain. Further out: 10 years of weather on that date (Copernicus ERA5), clearly labelled as history, not a forecast. With a map of the course coloured by the wind or the heat, and a link to the event's livedot page. If several events match it lists them: ask which one. Only for named events and races. Not for the user's own route or GPX file; for those use plan_route.

    Annotations the server declares

    • title: Race-day weather for an event
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • fly_routeFly over a race course inline: "Fly the Comrades", "Show me the course", "What does the NYC Marathon route look like?".No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Fly over a race course inline: "Fly the Comrades", "Show me the course", "What does the NYC Marathon route look like?". Returns a flyover of the course on a map that plays in the chat, coloured by the weather along it (the live forecast within 10 days of the start, 10 years of weather on that date beyond it, as event_weather), with a "Fly it in 3D" link to the full Fly the route and the event's livedot page. If several events match it lists them: ask which one. For a route the user gave as a GPX file or link (their own route), use plan_route: it flies over that route too.

    Annotations the server declares

    • title: Fly the course
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • plan_routeWeather and a flyover for a GPX file or route the user shares.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Weather and a flyover for a GPX file or route the user shares. If the user attached a GPX or route file, call plan_route and pass the file as gpx_file; if you can read the file's contents yourself, you may instead pass its text as gpx or its points as points. Never treat a file name as an event name. Also a Ride with GPS or GPX link, or another app's route points: the weather along it at the time they'd ride or run it, and a flyover of the route (a flyby, fly over my route) that plays in the chat, coloured by the weather: the forecast within 10 days, 10 years of weather on that date beyond it, rated by Windline's forecast engine, with the headwind and tailwind stretches, heat and rain. No account needed. For "What will the wind be like on this route on Saturday at 6?" or "Show me the weather for this GPX and a flyover". The route stays theirs: nothing is published. For a 3D flight and a route video, offer to save it as a private ride or run with create_event (visibility private). Several GPX files are one multi-day tour: pass them all as files (ordered by the numbers in their names, else by the map; one day after another from start), never one call per file. A route can also come from another app's tool as its points or an encoded polyline (for example a route or activity map from a fitness app): pass it as polyline or points. Never ask the user to export a GPX if you already have the route's points.

    Annotations the server declares

    • title: Weather along your route
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • post_club_ridePost a DRAFT group ride (Windline) or club run (RunFast) on a club or organiser page the signed-in person runs, from a GPX route or link, once or weekly: always for the group, neve…No findings

    Why it is in this group

    • The name "post_club_ride" says "post": a word for a change.
    Description, as the server wrote it
    Post a DRAFT group ride (Windline) or club run (RunFast) on a club or organiser page the signed-in person runs, from a GPX route or link, once or weekly: always for the group, never private. Publish it with publish_event. Confirm the details with the user first. If the signed-in person runs any club or organiser page (list_my_events lists them) and hasn't said who it's for, ask one short question first: is this a private ride or run for you, or a group ride or run for <club name>? Then use post_club_ride for the club, or create_event with visibility private for themselves. A route can also come from another app's tool as its points or an encoded polyline (for example a route or activity map from a fitness app): pass it as polyline or points. Never ask the user to export a GPX if you already have the route's points.

    Annotations the server declares

    • title: Post a club ride or run
    • readOnlyHint: false
    • openWorldHint: true
    • idempotentHint: false
    • destructiveHint: false
  • tour_notesBeta, cycling tours only: the organiser's own notes for riders on a Windline tour (what to pack, how the tour runs, meeting points), for questions like "What should I pack for the …No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Beta, cycling tours only: the organiser's own notes for riders on a Windline tour (what to pack, how the tour runs, meeting points), for questions like "What should I pack for the Durban tour?". Answer only from the notes: quote and summarise them as the organiser's words, never invent anything, and say so when they don't cover the question.

    Annotations the server declares

    • title: A cycling tour's notes for riders (beta)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • tour_routeA Windline cycling tour's route, day by day: "What's the Durban Tour 2027 route?", "Give me the GPX files for Alistair's tour", "Where is Alistair's Durban tour?".No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    A Windline cycling tour's route, day by day: "What's the Durban Tour 2027 route?", "Give me the GPX files for Alistair's tour", "Where is Alistair's Durban tour?". On the tour's days its card offers a tap on the back for the organiser (tap_on_the_back with tour). To fly over day 3 of a tour ("Give me the flyover for day 3 of TSF 2026"), pass day: 3. Finds a published tour by its name, its address or its organiser's or club's name, and returns each day (from and to, distance, climbing, start time), a map of every day, and the weather (the live forecast within 10 days, 10 years of weather on the date beyond). Route files (GPX, Garmin .fit) only when the organiser lets riders download them; otherwise say "The organiser hasn't made the route files available." Never make up a file link. If several tours match, ask which.

    Annotations the server declares

    • title: A cycling tour's route
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • where_isWhere someone is right now, in a live race or on a ride or run of their own (Ride live, Run live), and the weather they're in: km and mile on the course, time against their goal, p…1 finding

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "where_is" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The input takes a statement or command to run (input.code), which can change anything it can reach.

      What this check looks for
    Description, as the server wrote it
    Where someone is right now, in a live race or on a ride or run of their own (Ride live, Run live), and the weather they're in: km and mile on the course, time against their goal, pace, the finish time it points to, the temperature and wind there (headwind, tailwind or side-on) with the Windline forecast engine's rating, the wind and heat over the next few km, and a live map with a Follow live button. Use it with the person id find_person returned, or straight away with a livedot handle or follow link the user gave. It answers only what the public live page shows: if they're paused, stopped, near the start or finish, or not sharing, it says it can't share where they are; say so plainly.

    Annotations the server declares

    • title: Where someone is, live
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
Only reads 7Claude Code: allow
  • club_in_raceShows how a club, team or coach's athletes are doing in a live race.No findings

    Why it is in this group

    • The description's first verb is "show": a word for reading.
    Description, as the server wrote it
    Shows how a club, team or coach's athletes are doing in a live race. Use it when the user asks about a club or team in a race ("How is the UCT team doing in the Comrades?") or a coach's athletes ("How are Coach Nadia's runners doing in the Comrades?"). Inputs: club (its name or page address, windline.tech/c/<club> or runfast.tech/c/<club>) or coach; event if named. Returns: each member's km, time against goal or finish time, and a map with just their dots; each person opens their live card. If several clubs or coaches match, or their people are live in several races, it lists them so the user can choose. Limits: only what the club's public live map shows: members who chose to be findable, never a private run, never a position near the start or finish. Read-only.

    Annotations the server declares

    • title: How a club is doing in a race
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • event_statusShows how a live race on livedot is going.No findings

    Why it is in this group

    • The name "event_status" says "status": a word for reading.
    Description, as the server wrote it
    Shows how a live race on livedot is going. Use it when the user asks how a race is going or who is leading ("How's the Comrades going?", "Who's leading the Coast Classic?"). Inputs: event (the race's name). Returns: whether it's live, how long it has been under way, how many people are on the public map, how many have finished, and the leaders the public race map shows, with a live map. If several races match, it lists them so the user can choose. Limits: public races only; only what the public race map shows. Read-only.

    Annotations the server declares

    • title: How a live race is going
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_clubsFind running and cycling clubs near a place, e.g.No findings

    Why it is in this group

    • The name "find_clubs" says "find": a word for reading.
    Description, as the server wrote it
    Find running and cycling clubs near a place, e.g. best running club to join in Fourways, beginner cycling group near Sandton. Lists approved clubs and organisers on Windline (cycling) and RunFast (running) nearest first, with their weekly sessions, whether beginners are welcome, whether anyone can join (Open to anyone) or it's members only, their pace groups, their next session with its weather, the club's own links page when it has one, and a Join link to the club's page. Set beginners for "beginner friendly", "new to running", "for beginners"; set open for "open to anyone", "anyone can join", "no membership", "don't need to be a member". Only clubs that have added their area show; never a person. Say what each club chose to share, and nothing more. For coaches or personal trainers, use find_coaches.

    Annotations the server declares

    • title: Find a club near a place
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_coachesFind cycling and running coaches and training groups near a place, e.g.No findings

    Why it is in this group

    • The name "find_coaches" says "find": a word for reading.
    Description, as the server wrote it
    Find cycling and running coaches and training groups near a place, e.g. personal cycling trainer in Johannesburg, running coach near Sandton, coaches near Fourways. Use it for any coach, personal trainer, coaching or training group question (never find_clubs, which lists clubs). Lists coaches and training groups on Windline (cycling) and RunFast (running) nearest first, with what they coach (road, MTB, gravel, triathlon, beginners, racing, marathon, ultra), how (1-on-1, small group, online), their next group session with its weather, whether beginners are welcome, the qualifications they state in their own words (livedot doesn't check them), a Book / contact link (their own) and their page. Only coaches who listed themselves and added their area; never anyone else. Say what each coach chose to share, and nothing more.

    Annotations the server declares

    • title: Find a coach near a place
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_eventsFind public cycling and running events near a place and when: races, multi-day tours, club rides and club runs on Windline and RunFast, e.g.No findings

    Why it is in this group

    • The name "find_events" says "find": a word for reading.
    Description, as the server wrote it
    Find public cycling and running events near a place and when: races, multi-day tours, club rides and club runs on Windline and RunFast, e.g. trail runs near Cape Town in November, cycle tours around Johannesburg. Each with its date, where it starts, the weather (the forecast within 10 days, typical weather beyond), its club or organiser and an I'm in link to its page. Only published public events of approved clubs and organisers.

    Annotations the server declares

    • title: Find events near a place
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_personFinds a person who is live on livedot right now (cycling on Windline, running on RunFast) and answers where they are.No findings

    Why it is in this group

    • The name "find_person" says "find": a word for reading.
    Description, as the server wrote it
    Finds a person who is live on livedot right now (cycling on Windline, running on RunFast) and answers where they are. Use it when the user asks where someone is or how they're doing in a race ("Where's Megan in the Comrades?"), or gives a livedot handle (@megan, livedot.me/megan) or a follow link. Inputs: name_or_handle as the user wrote it; event if they named the race; surname, bib, club, place or wave to narrow. Returns: for one clear match, the live answer (position, time against goal, finish estimate, the weather there) with a live map; for several matches, the 5 most likely and the total, so the user can pick (then call where_is with the chosen person id, or call again with what they add). Limits: only people who chose to be findable on public races can be found by name; a ride or run of their own (Ride live, Run live) only by their handle or follow link, never showing where it starts or ends. Read-only.

    Annotations the server declares

    • title: Find someone live
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_my_eventsThe signed-in organiser's own events on Windline (rides, tours, races) or RunFast (runs, races, and their clubs' runs): each with its id, status (draft or published), who it's for …No findings

    Why it is in this group

    • The name "list_my_events" says "list": a word for reading.
    Description, as the server wrote it
    The signed-in organiser's own events on Windline (rides, tours, races) or RunFast (runs, races, and their clubs' runs): each with its id, status (draft or published), who it's for (private or shared), dates, distance, whether it's finished, and its dashboard, public or private links; and the club and organiser pages they run (pages on Windline, clubs on RunFast). Call it before making a new event, to know whether to ask who it's for; and to find an event id before changing one.

    Annotations the server declares

    • title: My events
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http livedot https://livedot.me/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__livedot__find_person",
      "mcp__livedot__event_status",
      "mcp__livedot__club_in_race",
      "mcp__livedot__find_clubs",
      "mcp__livedot__find_events",
      "mcp__livedot__find_coaches",
      "mcp__livedot__list_my_events"
    ],
    "ask": [
      "mcp__livedot__where_is",
      "mcp__livedot__event_weather",
      "mcp__livedot__fly_route",
      "mcp__livedot__tour_route",
      "mcp__livedot__tour_notes",
      "mcp__livedot__tap_on_the_back",
      "mcp__livedot__plan_route",
      "mcp__livedot__create_event",
      "mcp__livedot__post_club_ride",
      "mcp__livedot__invite_members"
    ],
    "deny": [
      "mcp__livedot__update_event",
      "mcp__livedot__add_tour_notes",
      "mcp__livedot__publish_event"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as livedot. Review it before you use it.