{"openapi":"3.1.0","info":{"title":"Stepcount API","version":"0.1.0","description":"Pedometer math: distance from steps, steps-to-calories, and pace/cadence conversion, from documented formulas.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://stepcount.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/stepcount/docs"},"termsOfService":"https://connectorbay.com/stepcount/terms"},"servers":[{"url":"https://stepcount.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/stepcount/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/stride_length":{"post":{"operationId":"stride_length","summary":"Estimated stride length from height using a documented multiplier. A measured stride (walk 10 steps,","description":"Estimated stride length from height using a documented multiplier. A measured stride (walk 10 steps,\n    measure the distance, divide by 10) is always more accurate — use it directly in distance_from_steps or\n    steps_to_calories via stride_cm instead of height_cm. Use for \"stride length for someone 170cm tall\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"height_cm":{"description":"Height in cm.","exclusiveMinimum":100,"maximum":230,"title":"Height Cm","type":"number"},"formula":{"default":"walking","description":"walking (height × 0.414, default) | general (height × 0.413)","title":"Formula","type":"string"}},"required":["height_cm"],"title":"stride_lengthArguments","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/distance_from_steps":{"post":{"operationId":"distance_from_steps","summary":"Distance walked from a step count: distance = steps × stride_length. Give height_cm for a formula","description":"Distance walked from a step count: distance = steps × stride_length. Give height_cm for a formula\n    estimate, or stride_cm for a measured, more accurate stride. Use for \"how far is 8000 steps if I'm 170cm\n    tall\", \"distance for 5000 steps with a 72cm stride\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steps":{"description":"Step count.","exclusiveMinimum":0,"maximum":200000,"title":"Steps","type":"integer"},"height_cm":{"anyOf":[{"exclusiveMinimum":100,"maximum":230,"type":"number"},{"type":"null"}],"default":null,"description":"Height in cm, to estimate stride (used if stride_cm is not given).","title":"Height Cm"},"stride_cm":{"anyOf":[{"exclusiveMinimum":20,"maximum":150,"type":"number"},{"type":"null"}],"default":null,"description":"Measured stride length in cm — more accurate than a height estimate; overrides height_cm.","title":"Stride Cm"},"formula":{"default":"walking","description":"walking | general — which height-based stride formula to use if stride_cm is not given.","title":"Formula","type":"string"}},"required":["steps"],"title":"distance_from_stepsArguments","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/steps_to_calories":{"post":{"operationId":"steps_to_calories","summary":"Calories burned for a step count, MET-based (kcal = MET × 3.5 × kg ÷ 200 × minutes, Compendium of","description":"Calories burned for a step count, MET-based (kcal = MET × 3.5 × kg ÷ 200 × minutes, Compendium of\n    Physical Activities) with the MET picked from the walking speed those steps imply. Give minutes for an exact\n    figure; without it, an average cadence is assumed and noted. Use for \"calories burned from 6000 steps at\n    65kg in 50 minutes\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steps":{"description":"Step count.","exclusiveMinimum":0,"maximum":200000,"title":"Steps","type":"integer"},"weight_kg":{"description":"Body weight in kg.","exclusiveMinimum":20,"maximum":300,"title":"Weight Kg","type":"number"},"height_cm":{"anyOf":[{"exclusiveMinimum":100,"maximum":230,"type":"number"},{"type":"null"}],"default":null,"description":"Height in cm, to estimate stride (used if stride_cm is not given).","title":"Height Cm"},"stride_cm":{"anyOf":[{"exclusiveMinimum":20,"maximum":150,"type":"number"},{"type":"null"}],"default":null,"description":"Measured stride length in cm — overrides height_cm.","title":"Stride Cm"},"minutes":{"anyOf":[{"exclusiveMinimum":0,"maximum":1440,"type":"number"},{"type":"null"}],"default":null,"description":"Time the steps took. Omit to assume an average ~100 steps/min cadence for the MET estimate.","title":"Minutes"},"formula":{"default":"walking","description":"walking | general — stride formula if stride_cm is not given.","title":"Formula","type":"string"}},"required":["steps","weight_kg"],"title":"steps_to_caloriesArguments","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_to_speed":{"post":{"operationId":"cadence_to_speed","summary":"Walking speed and pace from cadence (steps/min) and stride length: speed = cadence × stride_length. Use","description":"Walking speed and pace from cadence (steps/min) and stride length: speed = cadence × stride_length. Use\n    for \"what speed is 120 steps per minute with a 75cm stride\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"steps_per_minute":{"description":"Cadence in steps per minute.","exclusiveMinimum":0,"maximum":250,"title":"Steps Per Minute","type":"number"},"stride_cm":{"description":"Stride length in cm.","exclusiveMinimum":20,"maximum":150,"title":"Stride Cm","type":"number"}},"required":["steps_per_minute","stride_cm"],"title":"cadence_to_speedArguments","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/speed_to_cadence":{"post":{"operationId":"speed_to_cadence","summary":"Cadence (steps/min) needed to hit a target speed with a given stride length — the inverse of","description":"Cadence (steps/min) needed to hit a target speed with a given stride length — the inverse of\n    cadence_to_speed. Use for \"what cadence do I need for 5.5 km/h with a 70cm stride\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"speed_kmh":{"description":"Walking/running speed in km/h.","exclusiveMinimum":0,"maximum":25,"title":"Speed Kmh","type":"number"},"stride_cm":{"description":"Stride length in cm.","exclusiveMinimum":20,"maximum":150,"title":"Stride Cm","type":"number"}},"required":["speed_kmh","stride_cm"],"title":"speed_to_cadenceArguments","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/pace_bands":{"post":{"operationId":"pace_bands","summary":"Rough speed and cadence bands from strolling to running, for calibrating what a given pace or cadence","description":"Rough speed and cadence bands from strolling to running, for calibrating what a given pace or cadence\n    feels like. Use for \"what cadence counts as a brisk walk\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"pace_bandsArguments","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}}}}