Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

STAS Running Coach for Claude

REMOTE · STAS.RUN · SCANNED OCT 2

Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.

Available components

0 this week 40 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security100
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
  • Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
  • Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified

Unverified: 6 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.

Install

How do I install the STAS Running Coach for Claude MCP server?

STAS Running Coach for Claude is a hosted endpoint at https://stas.run/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · stas.run

# add to Claude Code
claude mcp add --transport http run-stas-stas 'https://stas.run/api/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "run-stas-stas": {
      "url": "https://stas.run/api/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "run-stas-stas": {
      "type": "http",
      "url": "https://stas.run/api/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.run-stas-stas]
url = "https://stas.run/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "run-stas-stas": {
      "type": "remote",
      "url": "https://stas.run/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add run-stas-stas --url 'https://stas.run/api/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  run-stas-stas:
    url: "https://stas.run/api/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "run-stas-stas": {
      "Transport": "http",
      "Url": "https://stas.run/api/mcp"
    }
  }
}
# add to Vellum
assistant mcp add run-stas-stas -t streamable-http -u 'https://stas.run/api/mcp'
// mcp.json
{
  "mcpServers": {
    "run-stas-stas": {
      "type": "http",
      "url": "https://stas.run/api/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 10 Sept 26 −54
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Transport: pass → unverified ▼ security
    • Authorization: The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
  • 7 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_planned_events” rewrote its description, which is the text the model reads security
    • Tool “get_trainings” rewrote its description, which is the text the model reads security
    • “get_trainings” reworded the description of “newest” cosmetic
  • 6 Sept 26 0
    • Tool “get_activity_detail” rewrote its description, which is the text the model reads security
  • 5 Sept 26 +1
    • Authorization: partial → pass ▲ security
    • Tool “get_wellness” rewrote its description, which is the text the model reads security
  • 2 Sept 26 0
    • The server changed its declared name: stas-claude-mcp → stas-mcp security
  • 29 Aug 26 0
    • Stability: fail → pass ▲ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 2 Oct 2026 · Probed https://stas.run/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=stas.run CN=YE1,O=Let's Encrypt,C=US 3 Sept 2026 2 Dec 2026 ECDSA 256 ECDSA-SHA384 6bf31c3f624ce7db61f694255522939ebea
SANs: stas.run
CN=YE1,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 5ddd70dd31f801c85c186a7a04b80afe
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of stas.run. — Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
run. present 37315 8 Verified
stas.run. present 2371 13 Verified
stas.run. Verified address RRset verified with the apex keys
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On connection
HTTP status 401

WWW-Authenticate challenge Bearer error="invalid_token", error_description="Authentication required for this tool", scope="ACTIVITY:WRITE WELLNESS:WRITE CALENDAR:WRITE CHATS:WRITE LIBRARY:WRITE SETTINGS:WRITE", resource_metadata="https://stas.run/.well-known/oauth-protected-resource/api/mcp"

Bearer error="invalid_token", error_description="Authentication required for this tool", scope="ACTIVITY:WRITE WELLNESS:WRITE CALENDAR:WRITE CHATS:WRITE LIBRARY:WRITE SETTINGS:WRITE", resource_metadata="https://stas.run/.well-known/oauth-protected-resource/api/mcp"
Header Value
strict-transport-security max-age=31536000; includeSubDomains
content-security-policy default-src 'self'; script-src 'self' 'unsafe-inline' telegram.org mc.yandex.ru www.googletagmanager.com www.google-analytics.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: telegram.org storage.ko-fi.com mc.yandex.ru www.googletagmanager.com; connect-src 'self' mc.yandex.ru www.google-analytics.com www.googletagmanager.com errors.stas.run; font-src 'self'; frame-src oauth.telegram.org; object-src 'none'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()
www-authenticate Bearer error="invalid_token", error_description="Authentication required for this tool", scope="ACTIVITY:WRITE WELLNESS:WRITE CALENDAR:WRITE CHATS:WRITE LIBRARY:WRITE SETTINGS:WRITE", resource_metadata="https://stas.run/.well-known/oauth-protected-resource/api/mcp"

Protected resource metadata

Document https://stas.run/.well-known/oauth-protected-resource/api/mcp
Retrieved Yes
Resource https://stas.run/api/mcp
Authorisation server https://intervals.stas.run

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://stas.run/api/mcp Auth required 401
http (plaintext) http://stas.run/api/mcp HTTPS enforced 308 https://stas.run/api/mcp
MCP tools · 21 exposed · ~5,105 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
commit_goal_result_change ~80

Commit one previewed goal, start, activity-link, or result change. Call only after the user explicitly confirms the exact preview from preview_goal_result_change. The server rejects stale data and returns the new authoritative editing state.

NameTypeReqDescription
changeIdintegeryesPreview id returned by preview_goal_result_change. Commit only after the user confirms that exact preview.

No output schema declared.

No examples provided.

commit_profile_section_change ~98

Commit a previously previewed rules or profile memory change. Call this only after the user explicitly confirms the exact full text shown for that preview. If preview returned noChange=true, do not call commit. The server updates the profile only if the section hash still matches the preview.

NameTypeReqDescription
changeIdintegeryesPreview change id returned by preview_profile_section_change. Call only after the user explicitly confirms the exact full text shown for this preview.

No output schema declared.

No examples provided.

create_note_event ~159

Create or update NOTE events in Intervals. dry_run is required: false writes the note, true previews only. Send category=NOTE and external_id=note:YYYY-MM-DD:<slug>. Use all-day local times for normal notes, keep description short, and omit type, moving_time, icu_training_load, and workout_doc. For weekly review notes or other notes that apply to the whole week, send for_week=true; omit it or use false for ordinary notes. Do not create a seven-day date range for weekly notes; keep one all-day anchor date and use for_week=true.

NameTypeReqDescription
dry_runbooleanyesRequired. false writes to Intervals.icu; true only previews without writing.
eventsarrayyes–

No output schema declared.

No examples provided.

create_plan_event ~1,162

Create or update planned WORKOUT events in Intervals. For changes to an existing STAS workout, keep the same external_id and call this tool again; do not delete the day/window just to edit time, name, note, load, color, or workout_builder. This tool is self-contained; do not look for SKILL.md or examples in the athlete's calendar. dry_run is required: false writes the event, true previews only. Send activity_type as Run/Ride/Swim/Workout/WeightTraining/Yoga/Pilates/Stretching/Walk/Hike/Elliptical/NordicSki/HighIntensityIntervalTraining/Other, stas_note for the human workout note, and external_id=plan:YYYY-MM-DD:<slug>. Do not send low-level Intervals fields category, type, sport, workoutType, target, description, workout_doc, icu_workout, filename, or file_contents. The server maps activity_type to Intervals type and category=WORKOUT and infers Intervals target=HR/PACE/POWER from Run/Ride workout_builder only. Use local datetimes without a timezone suffix, e.g. 2026-05-13T08:00:00, not 2026-05-13T08:00:00+03:00. workout_builder is mandatory for any interval/key workout save, mainly Run/Ride intervals; never save intervals as prose-only. Omit workout_builder only for easy/simple workouts without structured steps. If validation fails, inspect error.data.issues[].path, fix that exact event field, and retry only after changing the invalid field. If you use workout_builder, do not include ## STAS or ## Workout; the server adds wrappers. Builder headers and repeat headers are plain lines without '-', e.g. 'Warmup', 'Main Set 5x', 'Cooldown'. Actual step lines start flush-left with '- ' and contain duration/distance plus a target, e.g. '- 1km 4:25/km-4:35/km Pace', '- 10m 75%', or '- Recovery 90s Z1 HR'. For swim workouts, distance-led steps such as '- 400m easy' and '- 6 x 50m build' are allowed. For HR-only workouts, every structured step target should use HR syntax like '- 10m Z2 HR' or '- 3m Z4 HR'. Do not write '- Warmup' followed by indented child bullets. Use '1km'…

NameTypeReqDescription
dry_runbooleanyesRequired. false writes to Intervals.icu; true only previews without writing.
eventsarrayyesExample real interval write arguments. Replace the date/time and paces, but keep this exact JSON shape. Use activity_type, stas_note, and mandatory workout_builder for interval/key workout saves. wor…

No output schema declared.

No examples provided.

delete_note_events ~209

Delete STAS note events. For one specific note, pass external_ids with the exact note:YYYY-MM-DD:<slug> id; external_id as one string is accepted as a compatibility alias. Use oldest/newest window deletion only when replacing a whole note set in that date window. Do not delete user-created notes without a note: external_id. dry_run is required: false deletes, true previews only.

NameTypeReqDescription
dry_runbooleanyesRequired. false writes to Intervals.icu; true only previews without writing.
external_id––Compatibility alias for deleting one exact STAS event id. Prefer external_ids for multiple ids.
external_idsarray–Exact STAS event ids to delete. Use this for deleting specific workouts or notes without clearing the whole day/window.
neweststring–End date for full-window replacement deletes. Required unless external_ids is provided.
oldeststring–Start date for full-window replacement deletes. Required unless external_ids is provided.

No output schema declared.

No examples provided.

delete_plan_events ~221

Delete STAS plan events. For one specific workout, pass external_ids with the exact plan:YYYY-MM-DD:<slug> id; external_id as one string is accepted as a compatibility alias. Use oldest/newest window deletion only when the user is replacing the whole STAS plan in that date window. Do not use window deletion for simple edits; update with create_plan_event using the same external_id instead. dry_run is required: false deletes, true previews only.

NameTypeReqDescription
dry_runbooleanyesRequired. false writes to Intervals.icu; true only previews without writing.
external_id––Compatibility alias for deleting one exact STAS event id. Prefer external_ids for multiple ids.
external_idsarray–Exact STAS event ids to delete. Use this for deleting specific workouts or notes without clearing the whole day/window.
neweststring–End date for full-window replacement deletes. Required unless external_ids is provided.
oldeststring–Start date for full-window replacement deletes. Required unless external_ids is provided.

No output schema declared.

No examples provided.

get_activity_detail ~125

Load a compact read-only passport for one completed workout after identifying its training_id with get_trainings. Use for detailed one completed workout questions about intervals, laps, splits, terrain, weather, efforts, segments, and data quality. The response omits source payloads, route coordinates, latlng, and raw stream arrays from JSON; when available, complete second-by-second metrics are embedded as CSV in the MCP result, with a signed link fallback.

NameTypeReqDescription
training_idstringyesTraining id returned by get_trainings. Load get_trainings first to identify the exact workout.

No output schema declared.

No examples provided.

get_editable_goals_results ~56

Read the complete bounded editing state for general goals, calendar-linked starts, race results, standalone results, and legacy results. Stable public IDs and dataVersion are required for every later preview. This tool does not change anything.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_goal_activity_candidates ~70

Read safe nearby activity candidates for one exact start. Use the returned opaque selectionId when previewing result_link_activity. This tool does not change the start, activity, or result.

NameTypeReqDescription
goalPublicIdstringyesStable public ID of one event goal returned by get_editable_goals_results.

No output schema declared.

No examples provided.

get_planned_events ~78

Read only planned or scheduled events from the Intervals calendar in a date window, not completed activities. This must not be the only source when a request may mean today's completed workout: call get_trainings first. Use this before rewriting or replacing an existing STAS plan.

NameTypeReqDescription
neweststringyes–
oldeststringyes–

No output schema declared.

No examples provided.

get_trainings ~413

Use this for completed, finished, recorded, or uploaded activities, including workouts completed today. To load one date D, always set oldest=D and newest=D+1 because newest is exclusive. It returns one bounded, size-safe chronological list of completed workouts plus historical calendar context (NOTE, SICK, INJURED, HOLIDAY). Context is not a workout and does not consume the training limit. Default mode is a rich index for chronology, load, reports, compact summaries, and choosing training_id; use offset to continue beyond the first 50 completed workouts. Set full=true only for analysis-rich comparison across multiple workouts; it adds a bounded compact interval projection. For one selected completed workout, use get_activity_detail for splits and richer detail; kilometre splits are intentionally omitted from get_trainings in every mode. If listDetail.userReportTruncated=true for a workout, its report was shortened only to keep the whole list within the response budget; call get_activity_detail with that training_id for the complete report.

NameTypeReqDescription
fullboolean–Optional analysis-rich list mode for comparing multiple completed workouts in a bounded date window. It adds a size-safe compact interval projection, but is not raw data and is not the detailed view…
limitinteger–Max trainings per page. Server cap is 50.
neweststring–End boundary date in YYYY-MM-DD, exclusive. Never use the last wanted date here; use the next calendar date. For one day D, set oldest=D and newest=D+1, for example oldest=2026-06-21 and newest=2026-…
offsetinteger–Pagination offset for completed trainings. Use the next offset to continue the same bounded date window; calendar context is returned only on the first page.
oldeststring–Start boundary date in YYYY-MM-DD, inclusive.

No output schema declared.

No examples provided.

get_user_summary ~186

Start here for most conversations. Load the athlete's profile, goals, rules, recent load, current fitness context, performance evidence, optional bounded historical signals, planning guidance, and persistent STAS memory opportunities. weeklyHistory.recentKeySessionEvidence is the compact 42-day factual register for current planning. It includes all qualifying key sessions unless truncated=true; each row uses columns for date, saved name/type, sourceTrainingId, confirmed actual WORK, confirmed REST only when recorded, and wholeActivity only when no confirmed interval structure exists. It never invents recovery or interval rows; null recovery means no confirmed REST inside that activity. For older comparisons, use get_trainings with a bounded date range, then get_activity_detail for one exact workout. confirmedStructuredIntervals remains a separate verified structured-session index for its stated period; do not infer unshown measurements.

NameTypeReqDescription
sectionstring––

No output schema declared.

No examples provided.

get_wellness ~529

Read all locally stored Intervals.icu wellness values for any requested date window; there is no fixed day cap and this read makes no live provider request. The response is column-oriented: dates[i] is the date for every series[field][i] and customSeries[field][i]. null means not recorded, never zero. Only fields with at least one value are returned. window=[oldest inclusive,newest exclusive]; missingRanges uses the same boundaries and names dates for which STAS has no stored wellness row. healthCoverage counts locally available weight/restingHr/hrv/sleep/steps days and reports the initial source-sync status; status=partial means the source history may still be incomplete. complete=true means the response is not truncated and includes all meaningful locally stored standard and custom wellness fields; it does not claim the watch/provider supplied every metric. source=intervals_icu_cached_by_stas means values may originate from a watch, another connected source, or manual Intervals.icu entry and are served from STAS cache. Interpret trends against this athlete's own baseline and together with workouts and reports; do not judge readiness or diagnose from one value. CTL is modeled longer-term training load, ATL shorter-term load, and CTL-ATL can be used as Form; higher or lower is not inherently good or bad. HRV is protocol/device dependent and is mainly useful relative to the athlete's own trend. Resting HR is also individual; acute deviation matters more than a universal threshold. sleepSecs is seconds. sleepQuality is 1=Excellent through 4=Poor. soreness/fatigue/stress are 0=None through 4=Extreme, higher is worse. mood/motivation are 1=Excellent through 4=Poor, higher is worse. providerUpdatedAt is the provider record update time, not the measurement time. Preserve custom field names exactly; if a custom field's unit or scale is unclear, do not invent it—describe only its observed trend or ask the user. If the complete response is too large, retry every exact non-o…

NameTypeReqDescription
neweststringyesEnd boundary date in YYYY-MM-DD, exclusive. There is no fixed day limit. If the complete result is too large, retry the exact non-overlapping suggested windows returned by the tool.
oldeststringyesStart boundary date in YYYY-MM-DD, inclusive. There is no fixed day limit.

No output schema declared.

No examples provided.

preview_goal_result_change ~130

Preview one exact change to a general goal, calendar-linked start, activity pairing, race result, standalone result, or legacy result. Always load get_editable_goals_results first and send its exact dataVersion. This never saves. Show the user the exact preview, including calendar/activity effects, and ask for explicit confirmation before commit_goal_result_change.

NameTypeReqDescription
command–yesOne exact goal, start, activity-link, or result change. Broad replace-all writes are not supported.
expectedDataVersionstringyesExact dataVersion returned by get_editable_goals_results. A stale version is rejected.

No output schema declared.

No examples provided.

preview_profile_section_change ~191

Create a controlled preview for rules or profile memory. Goals, starts, activities, and results must use preview_goal_result_change so stable IDs and calendar links are preserved. This does not update the athlete profile. Before commit, show the user the exact full text from the preview and ask for explicit confirmation of that exact text.

NameTypeReqDescription
diffSummarystring–Short internal summary of the factual change. Do not include raw chat transcript.
newTextstring–Legacy fallback full section text for rules or profile only.
previousHashstringyesHash returned by read_profile_sections for the same section. Used to prevent overwriting newer profile data.
sectionstringyesProfile memory section to update. Supports rules and profile when enabled by the server. Goals and results use preview_goal_result_change.
structuredobject–Preferred input. For rules/profile, send only the matching object.

No output schema declared.

No examples provided.

read_profile_change_detail ~62

Load the exact full text and hashes for one profile-memory record selected from read_profile_change_history. This is read-only and should be used only for details or before considering a restore.

NameTypeReqDescription
changeIdintegeryesChange id returned by read_profile_change_history.

No output schema declared.

No examples provided.

read_profile_change_history ~96

Read a compact paginated index of goals, rules, or profile memory changes. Text bodies and hashes are omitted. Use nextCursor for another page and read_profile_change_detail for one exact record.

NameTypeReqDescription
cursorinteger–nextCursor from the previous history page.
limitinteger–Compact records per page. Default 10, maximum 20.
sectionstring––
statusstring––

No output schema declared.

No examples provided.

read_profile_sections ~48

Read controlled rules and profile memory with their hashes. Goals and results are available only through get_editable_goals_results. Use the returned hash as previousHash before previewing a rules/profile change.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

restore_profile_change ~114

Restore a committed profile, goals, or rules profile memory change back to its previous text. First load the exact record with read_profile_change_detail. For goals, restoring old-format labels is blocked; rebuild a canonical goals preview instead. Call this only after the user explicitly confirms the exact full text that will be restored.

NameTypeReqDescription
changeIdintegeryesCommitted change id to restore. Call only after the user explicitly confirms the exact full text that will be restored. Restore only succeeds when the current section still matches that change.

No output schema declared.

No examples provided.

save_strategy ~1,053

Save the athlete preparation map only after explicit user confirmation. The map is the reusable result of long-horizon planning, not a calendar, weekly plan, workout prescription, or full coaching analysis. Target length is about 1800-4000 characters; hard maximum is 5000 characters. Required sections: Goal direction, Current phase, Preparation map, Durable boundaries, Review triggers / unknowns. Build from current goals, rules, profile, lastMetrics, wellness, training history, evidence, reports, and calendar first; treat previous strategy as historical context and contamination risk. Use at least 8 weeks of weekly/load history when available and 12-26 weeks for season direction, combined with exact bounded-list windows and selected detailed workout passports. Treat every dated goal as a real input and infer priority only when explicit. Store the agreed goal relationships, current phase purpose, a broad 3-6 phase route, what each phase develops/preserves/defers, transition conditions, durable boundaries, and causal review triggers. A phase may name its target capacity. Every Durable boundaries line must preserve a route-specific decision and must not repeat universal coaching, measurement, device, load-cost, or athlete rules. Local pain, sleep, recovery, illness, or execution signals change the near-term plan first and become map review triggers only when persistence would change phase feasibility, timing, sequence, or the goal route. Treat phase dates as approximate anchors and Transition when as review evidence, not hard gates; if unmet, consider adaptation, delayed or compressed transition, and remaining runway. Do not store session frequency, easy/hard balance, weekly load targets, number of key workouts, default weekly stimuli, exact progression, workout formats/protocols, fixed taper depth, ready 2-4 week sequences, current Fitness/Fatigue/Form/TL, loaded windows, or live calendar state. Old detailed strategies remain historical context: do not proactively as…

NameTypeReqDescription
strategy_mdstringyesCompact STAS preparation map: a saved result of long-horizon planning, not a calendar, weekly plan, workout prescription, or full coaching analysis. Target length is about 1800-4000 characters; hard…

No output schema declared.

No examples provided.

whoami ~25

Check which STAS user is currently authenticated. Use only for diagnostics or reconnect troubleshooting.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the STAS Running Coach for Claude MCP server?

STAS Running Coach for Claude is an MCP server listed in the public MCP registry as run.stas/stas. Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing. This page covers its hosted endpoint (https://stas.run/api/mcp).

Is the STAS Running Coach for Claude MCP server safe to use?

STAS Running Coach for Claude scores 40 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the STAS Running Coach for Claude MCP server expose?

STAS Running Coach for Claude exposes 21 tools: get_user_summary, get_trainings, get_wellness, get_activity_detail, get_planned_events, and 16 more. Their descriptions and schemas cost roughly 5,105 tokens of context every time the server is loaded.

Does the STAS Running Coach for Claude MCP server require authentication?

Yes. STAS Running Coach for Claude asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the STAS Running Coach for Claude MCP server still maintained?

STAS Running Coach for Claude is still listed as active in the MCP registry. We last reached this channel on 2 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.