{"openapi":"3.1.0","info":{"title":"Cadence180 API","version":"0.1.0","description":"Running cadence/stride/pace inverse math, the '180 spm' figure explained with real caveats, running-form cues, and a metronome-based cadence-training progression.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://cadence180.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/cadence180/docs"},"termsOfService":"https://connectorbay.com/cadence180/terms"},"servers":[{"url":"https://cadence180.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/cadence180/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/cadence_from_pace":{"post":{"operationId":"cadence_from_pace","summary":"Cadence (steps/min) required by a pace/speed and stride length: cadence = speed_m_per_min ÷ stride_length_m.","description":"Cadence (steps/min) required by a pace/speed and stride length: cadence = speed_m_per_min ÷ stride_length_m.\n    Give either pace_min_km or speed_kmh. Use for \"what cadence do I need for a 5:00/km pace with a 100cm\n    stride\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"stride_cm":{"description":"Stride length in cm.","exclusiveMinimum":30,"maximum":250,"title":"Stride Cm","type":"number"},"pace_min_km":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Pace per km, mm:ss.","examples":["5:00","4:30"],"title":"Pace Min Km"},"speed_kmh":{"anyOf":[{"exclusiveMinimum":0,"maximum":40,"type":"number"},{"type":"null"}],"default":null,"description":"Speed in km/h, instead of pace.","title":"Speed Kmh"}},"required":["stride_cm"],"title":"cadence_from_paceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/stride_from_pace":{"post":{"operationId":"stride_from_pace","summary":"Stride length required by a pace/speed and a target cadence — the exact inverse of cadence_from_pace:","description":"Stride length required by a pace/speed and a target cadence — the exact inverse of cadence_from_pace:\n    stride_length_m = speed_m_per_min ÷ cadence_spm. Use for \"what stride do I need to hit 180 spm at 12 km/h\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cadence_spm":{"description":"Target cadence in steps per minute.","exclusiveMinimum":30,"maximum":300,"title":"Cadence Spm","type":"number"},"pace_min_km":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Pace per km, mm:ss.","examples":["5:00","4:30"],"title":"Pace Min Km"},"speed_kmh":{"anyOf":[{"exclusiveMinimum":0,"maximum":40,"type":"number"},{"type":"null"}],"default":null,"description":"Speed in km/h, instead of pace.","title":"Speed Kmh"}},"required":["cadence_spm"],"title":"stride_from_paceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cadence_180_reference":{"post":{"operationId":"cadence_180_reference","summary":"Explains the commonly cited \"180 steps per minute\" figure: where it comes from, why people target it, and","description":"Explains the commonly cited \"180 steps per minute\" figure: where it comes from, why people target it, and\n    its real caveats (pace-dependence, height-dependence, individual variation) — a critical reference, not an\n    unqualified rule. Use for \"is 180 steps per minute a real target\", \"where does the 180 cadence number come\n    from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"current_cadence_spm":{"anyOf":[{"exclusiveMinimum":0,"maximum":300,"type":"number"},{"type":"null"}],"default":null,"description":"Your current cadence, for a concrete comparison.","title":"Current Cadence Spm"},"height_cm":{"anyOf":[{"exclusiveMinimum":100,"maximum":230,"type":"number"},{"type":"null"}],"default":null,"description":"Your height, for the height caveat.","title":"Height Cm"}},"title":"cadence_180_referenceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/running_form_cues":{"post":{"operationId":"running_form_cues","summary":"General, documented running-form cues: forward lean, foot landing under the hips, midfoot strike","description":"General, documented running-form cues: forward lean, foot landing under the hips, midfoot strike\n    awareness, relaxed shoulders, arm drive, quick ground contact, steady head, relaxed jaw. Use for \"running\n    form tips\", \"how do I avoid overstriding\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"running_form_cuesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cadence_drill_progression":{"post":{"operationId":"cadence_drill_progression","summary":"A metronome-based cadence-training progression: gradual ~5% increases per stage rather than jumping to","description":"A metronome-based cadence-training progression: gradual ~5% increases per stage rather than jumping to\n    the target, mirroring controlled step-rate-retraining research. Use for \"how do I safely raise my cadence\n    from 160 to 180\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"current_cadence_spm":{"description":"Your current, measured cadence in steps per minute.","exclusiveMinimum":0,"maximum":300,"title":"Current Cadence Spm","type":"number"},"target_cadence_spm":{"default":180,"description":"Target cadence in steps per minute.","exclusiveMinimum":0,"maximum":300,"title":"Target Cadence Spm","type":"number"},"step_percent":{"default":5.0,"description":"Percent increase per step (commonly 3-10%).","exclusiveMinimum":0,"maximum":20,"title":"Step Percent","type":"number"}},"required":["current_cadence_spm"],"title":"cadence_drill_progressionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}