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.

S-Bike Training Hub

MCPB · S-BIKE-HUB-MCP-1.12.2.MCPB · 2 COMPONENTS

Local training hub for cycling, running, swimming and lifting, with AI-led setup and planning.

+4 this week 51 Trust /100

Last scanned (41 minutes ago)

Scores higher than 86% of MCPB servers

Category Health and Science

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 10 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 17513 tokens (~141/item across 124 items; 124 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
  • Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 77% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_transfer" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 125 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

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.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 22 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 20 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Oct 26 +37
    • Injection markers: unverified → pass ▲ security
    • Tool coverage: 89% → 77% ▼ functional
    • Schema quality: 6202 → 17513 ▼ functional
    • Stability: unverified → 0.47 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: unverified → 100 ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • Security disclosure: fail → pass ▲ functional
    • Schema quality: excellent → good functional
    • Package version: 1.12.0 → 1.12.2 functional
    • Package version: 1.1.0 → 1.12.2 functional
  • 12 Oct 26 0
    • Package version: 1.1.0 → 1.12.0 functional
    • Package version: 1.9.0 → 1.11.0 functional
  • 10 Oct 26 0
    • Package version: 1.8.0 → 1.9.0 functional
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 24 Oct 2026 · Analysed mcpb/https://github.com/JHarp199345/S-Bike-Training-Hub/releases/download/mcp-v1.12.2/s-bike-hub-mcp-1.12.2.mcpb@1.12.2

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 124 exposed · ~16,952 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
save_completed_workout_to_library ~112

Save an approved completed workout of any recorded sport to the workout library. Preview save=false, then save=true. Watch readings and reports stay linked to the original activity. Changes to weights or reps keep the same movement history; changed movements create a separate routine. No new activity or calendar prescription.

NameTypeReqDescription
activity_idstringyesImported activity ID
library_idstring–Optional selected existing movement routine ID
namestring–Optional library name
saveboolean––

No output schema declared.

No examples provided.

save_library_workout ~265

Keep a reviewed prescription without scheduling it. Provide the same sport, name, minutes, typed_workout and lifts/swim_recipe/ride_blocks used by workout creation. favorite true hearts it. This does not resolve a dated goal brief or add activity load.

NameTypeReqDescription
favoriteboolean––
goal_difference_reviewedboolean––
library_idstring–Reuse or update this existing movement routine when movements match
liftsarray––
minutesnumber––
namestringyesWorkout name
ride_blocksarray––
run_recipeobject––
source_reviewedboolean––
sportstringyesSport
stepsarray––
swim_recipeobject––
typed_workoutobject––
workout_goalsobject–Requested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…
workout_import_idstring–Reviewed local source

No output schema declared.

No examples provided.

save_planned_route ~88

Save a route from plan_area_route (by its cid) so it's in the rider's list; ride_now starts it on the bike at once (only when the rider asks, e.g. they're on the bike).

NameTypeReqDescription
cidinteger–The route's cid from plan_area_route
namestring–A name for it
ride_nowboolean––

No output schema declared.

No examples provided.

save_race_prediction ~224

Save a race prediction you made from the hub's numbers: {event: race id or date, likely, low, high (seconds or h:mm:ss), legs: {swim, t1, bike, t2, run}, basis: the numbers and assumptions used, levers: what would move it most}. Or the race result: {event, result: finishing time, legs}, which grades every prediction.

NameTypeReqDescription
basisstring–The numbers and assumptions the prediction used
eventstring–The race's id or date
highstring–Slowest plausible time
legsobject–Per-leg times: swim, t1, bike, t2, run
leversarray–What would move the time most
likelystring–Most likely time (seconds or h:mm:ss)
lowstring–Fastest plausible time
notestring–About the result (conditions, course)
resultstring–The actual finishing time, once raced

No output schema declared.

No examples provided.

save_run_workout ~199

Save a reviewed running recipe to one calendar session, within the existing running gate. Completed records are preserved. Preview first, then review the whole calendar and current tissue/readiness constraints.

NameTypeReqDescription
datestringyesDay as YYYY-MM-DD (default: today)
favoriteboolean––
goal_difference_reviewedboolean––
indexinteger–Existing running session index
minutesnumberyes–
namestringyesWorkout name
run_recipeobjectyes–
typed_workoutobject––
workout_goalsobject–Requested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…

No output schema declared.

No examples provided.

save_swim_workout ~309

Save an athlete-approved swim prescription after preview and current load/readiness review. Preserve completed sessions. With an import, visually compare the source, explain uncertainty, obtain approval, and set source_reviewed true. index edits one existing uncompleted swim instead of adding a duplicate. This is planned work, not activity logging.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
favoriteboolean––
fieldsobjectyes–
goal_difference_reviewedboolean––
goal_request_idstring–Dated brief ID being resolved
indexinteger–Existing swim session index to edit
minutesnumberyesFull planned session duration
namestringyesWorkout name
notestring–Purpose or coaching rationale
pool_lengthnumber––
repeatsinteger–Whole main-section repeats
source_reviewedboolean–Source transcription reviewed and athlete approved the prescription
unitstringyesDistance unit
workout_goalsobject–Requested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…
workout_import_idstring–Source draft ID, if used

No output schema declared.

No examples provided.

save_workout_goal ~161

Save an athlete-requested dated workout brief with quantifiable sport goals. No workout, calorie burn or biological load is recorded until actual work is prescribed or completed.

NameTypeReqDescription
datestringyesDay as YYYY-MM-DD (default: today)
goalsobjectyesRequested work, not activity or clearance. Strength uses weight_moved with unit lb/kg; swimming distance with unit yd/m; cycling minutes, distance_km, energy_kcal or power_low/power_high with power_s…
namestringyesBrief name
notestring–Athlete preferences and phase constraints
sportstringyesSport

No output schema declared.

No examples provided.

schedule_route_workout ~85

Add an existing saved route to one day as a cycling prescription. Read its profile, current phase and projected whole-calendar load first. This schedules planned work, never starts the bike or fabricates completed activity.

NameTypeReqDescription
datestringyesDay as YYYY-MM-DD (default: today)
minutesnumberyes–
route_idstringyesSaved route ID

No output schema declared.

No examples provided.

schedule_test ~110

Put a test on the calendar (a plan item, not a button): ftp, diagnostic, big_gear, css, benchmark_run. Sets the day's marker, time, how-to note, and for big_gear the focus that runs it; the bike tests start from the Coach page's Ride it row. Keep the two days before an FTP or big-gear test easy.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
teststring–Which test

No output schema declared.

No examples provided.

schedule_test_week ~122

Plan a test week - the rider's way (from their high-school lifting program): it's also the recovery week. Easy, reduced sessions Mon-Wed so they peak on test day; swim CSS test Thu if due; morning diagnostic Fri then rest; TEST DAY Sat (FTP ramp test, or the big-gear test - one leg test a day); Sun off; training resumes Monday. Every 6 weeks; no monday = the next one due. Overwrites that week's plan.

NameTypeReqDescription
mondaystring–Day as YYYY-MM-DD (default: today)

No output schema declared.

No examples provided.

set_body_weight ~76

Record the athlete's current body weight (from today, or 'from' YYYY-MM-DD). Earlier weights are kept as dated history, so past sessions' energy keeps the weight the athlete had then.

NameTypeReqDescription
fromstring–Optional start date YYYY-MM-DD
unitstring––
weightnumberyes–

No output schema declared.

No examples provided.

set_capacity ~133

Tune a body system's usual week (engine, impact or muscle, in load points) from how the rider's body actually responded - e.g. they handled 416 engine points like easy work (raise engine), or their feet feel overdone at 79 impact (lower impact so 79 reads 'caution'). The zones, ratio and weekly budget then use it. Say why in the note. usual_week null clears it back to the model.

NameTypeReqDescription
notestring–Why: what the rider reported
systemstringyesengine, impact or muscle
usual_weeknumber|nullyes–

No output schema declared.

No examples provided.

set_event ~235

Add a date to plan backward from - an FTP test, a race, a goal ({date, name, kind: test|race|goal, sport: bike|run|swim|tri|other, note}) - or {remove: id}. get_today lists upcoming ones with days to go and notes (easy days before a test, taper before a race, and for running events whether the load model will have running cleared by then). Plan the days before each one around it.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
distancestring–Triathlon: sprint, olympic, 70.3, ironman; run race: km
event_typestring–What kind of race (sets the programming)
kindstring–test, race or goal
namestring–What it is
notestring–Anything else
removestring–An event id to remove
sportstring–bike, run, swim, tri or other
strokesarray–Swim meet events

No output schema declared.

No examples provided.

set_lift_rule ~122

Add one of the rider's lifting rules, in their words ("No squats", "Favorite lift: incline dumbbell press", "Nothing heavy overhead - left shoulder"), or remove one (remove = the rule's text, or the exercise it excludes). 'No ...' / 'never ...' rules are enforced: plans with those exercises are refused. Every AI the rider uses reads these rules.

NameTypeReqDescription
notestring–Why, if they said
removestring–A rule to remove
textstring–The rule

No output schema declared.

No examples provided.

set_plan ~417

Write today's plan onto the Coach page: the verdict (go/easy/rest), your coaching note to them (plain, specific: what to ride, how it should feel, when to stop), and optionally the workout to ride (workout_id from list_workouts or a create tool).

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
focus––What the ride is coaching for - a cadence range plus a watt range that auto-shift steers toward: 'cadence' (65-80 rpm, zone 2: builds the cadence habit), 'grit' (50-65 rpm, 76-90% FTP: force; loads t…
minutesinteger–The time goal for the day's session
notestring–Your note to them
sessionsarray–Optional ordered sessions for this day, each {sport, minutes, name, steps: [set or interval descriptions], note, workout, swim_profile, swim_plan: {stroke_mix, work_mix, purpose, why} (swim sessions)…
sportstring–The day's marker on the Coach page's week: ride, swim, run, walk, gym, test, rest, other (swims can't go on the COROS calendar - this is where they live)
verdictstring–go, easy or rest
workout_idstring–Workout to ride today (empty string clears it)

No output schema declared.

No examples provided.

set_route_session ~243

Attach training to places on a route for a day (default today): when the rider starts that route the bridge runs it, steering auto-shift and shifting for the efforts. Segments (use climb numbers from get_route_climbs, or metres along the route): {type:'climb_time', climb:2, seconds:600, rpm?:[lo,hi]} - get up it in that time: the pace becomes a watt target, re-worked every second from what's left; {type:'efforts', climb:1 or at_m, count:3, on_s:15, off_s:180, watts:200, rpm?:[55,70]} - efforts in a big gear, shifted into at the start of each; {type:'focus', climb:3 or start_m+end_m, focus:'grit'} - a different focus for part of the route. Empty segments clear it. Results land in get_ride_story and get_climb_history.

NameTypeReqDescription
datestring–Day as YYYY-MM-DD (default: today)
route_idstring–Route id
segmentsarray––

No output schema declared.

No examples provided.

set_skill_level ~69

Move a skill ladder by hand (the coach's call): skill cadence/speed/grit/climbing/running, level 1..N, and why.

NameTypeReqDescription
levelinteger–Step, from 1
skillstring–Skill
whystring–Why

No output schema declared.

No examples provided.

set_sport_baseline ~162

Save the athlete's own calibration for a sport when there's little recorded history: their current routine (now) and their past best (best, with when). Use the athlete's words; it is provisional until recorded weeks and reports confirm it. Ask during setup or whenever a plan looks far too easy or too hard.

NameTypeReqDescription
bestobject–Past best: the same fields plus when (e.g. '2019' or 'college')
notestring–The athlete's own words about it
nowobject–Current routine: sessions_per_week, weekly_km, weekly_minutes, longest_km, longest_minutes, session_km, session_minutes
sportstring–bike, run, swim or lift

No output schema declared.

No examples provided.

set_swim_settings ~134

The rider's swim dials: the stroke mix (free, back, breast, fly out of 100), the drill share (15-30%), and whether the mix follows their race (follow_event, default true) or their dials.

NameTypeReqDescription
drill_shareinteger–Percent of the session that is drill-then-swim
follow_eventboolean––
mixobject–{free, back, breast, fly} - normalised to 100
profile_idstring–Preferred reusable swim profile; auto chooses by phase, load, recent work and Sunday response

No output schema declared.

No examples provided.

set_wearable_estimates ~91

Record the athlete's wearable starting estimates (VO2max, resting and maximum heart rate) for starting capacities before there is training history. Say where they came from (e.g. 'COROS fitness assessment').

NameTypeReqDescription
hr_maxinteger––
hr_restinteger––
sourcestring–Where the numbers came from
vo2maxnumber––

No output schema declared.

No examples provided.

settle_journal_flag ~124

Settle a flag the journal raised (get_checkins shows each day's flags: bone, muscle, illness, better). ONLY on their say-so in chat - never decide it for them. confirm = it's real, count it (bone/muscle read as 6/10 on their slider that day; illness makes heart & lungs easy); dismiss = it's fine; reopen = undo.

NameTypeReqDescription
actionstring–What they said
datestring–Day as YYYY-MM-DD (default: today)
idstring–The flag id

No output schema declared.

No examples provided.

start_diagnostic ~31

Start the 6-minute morning diagnostic on the bike NOW (only when he asks and is on the bike).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

start_workout ~43

Start a workout on the bike NOW in ERG (only when he asks, e.g. he's on the bike).

NameTypeReqDescription
workout_idstringyesWorkout id

No output schema declared.

No examples provided.

update_session_explanation ~147

Update only a saved workout's plain-language reason for being in the plan. Read its explanation.context_token from get_today or get_training_calendar first. Preserve doses, steps, phase, dates and recovery gates. At check-ins review stale or misleading explanations against the actual phase, neighboring workouts and forecasts. Leave accurate text unchanged. Do not invent a heavy session, physiological benefit, or clearance.

NameTypeReqDescription
context_tokenstringyesCurrent explanation context token
datestringyesDay as YYYY-MM-DD (default: today)
session_indexintegeryesSaved session index
textstringyesShort, clear reason this workout fits the plan (maximum 600 characters)

No output schema declared.

No examples provided.

Install

How do I install the S-Bike Training Hub MCP server?

S-Bike Training Hub ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. Before opening it, check the file's SHA-256 matches the one the MCP registry declares for it, ca8750478e2a96b5084f493ea16a908619ceb0f08bc099461709d4696dc1388e; the commands to do that are on this page. If it does not match, do not open it.

mcpb · s-bike-hub-mcp-1.12.2.mcpb

Download bundle

Check the download matches the SHA-256 the MCP registry declares before you open it. If it does not match, do not open the file.

SHA-256

ca8750478e2a96b5084f493ea16a908619ceb0f08bc099461709d4696dc1388e

macOS / Linux

echo "ca8750478e2a96b5084f493ea16a908619ceb0f08bc099461709d4696dc1388e  s-bike-hub-mcp-1.12.2.mcpb" | shasum -a 256 -c

Windows (PowerShell)

(Get-FileHash -Algorithm SHA256 .\s-bike-hub-mcp-1.12.2.mcpb).Hash -eq "ca8750478e2a96b5084f493ea16a908619ceb0f08bc099461709d4696dc1388e"

Run it in the folder you saved the bundle to, then open the file with an MCPB-capable host such as Claude Desktop.

Common questions

What is the S-Bike Training Hub MCP server?

S-Bike Training Hub is an MCP server listed in the public MCP registry as io.github.JHarp199345/s-bike-hub. Local training hub for cycling, running, swimming and lifting, with AI-led setup and planning. This page covers its MCPB bundle (https://github.com/JHarp199345/S-Bike-Training-Hub/releases/download/mcp-v1.12.2/s-bike-hub-mcp-1.12.2.mcpb).

Is the S-Bike Training Hub MCP server safe to use?

S-Bike Training Hub scores 51 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 S-Bike Training Hub MCP server expose?

S-Bike Training Hub exposes 124 tools: get_activity_report, record_activity_report, get_recorded_swim_draft, record_completed_swim_details, preview_strength_workout, and 119 more. Their descriptions and schemas cost roughly 16,952 tokens of context every time the server is loaded.

What licence is the S-Bike Training Hub MCP server under?

S-Bike Training Hub declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.