{"openapi":"3.1.0","info":{"title":"Vo2calc API","version":"0.1.0","description":"Educational VO2max field-test estimators and age/sex fitness-level categorization.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://vo2calc.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/vo2calc/docs"},"termsOfService":"https://connectorbay.com/vo2calc/terms"},"servers":[{"url":"https://vo2calc.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/vo2calc/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/vo2max_cooper":{"post":{"operationId":"vo2max_cooper","summary":"Estimated VO2max (ml/kg/min) from the Cooper 12-minute run test — a near-maximal running field test. Give age","description":"Estimated VO2max (ml/kg/min) from the Cooper 12-minute run test — a near-maximal running field test. Give age\n    and sex to also get a fitness-level category. Use for \"I ran 2600m in 12 minutes, what's my VO2max\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"distance_m":{"description":"Total metres covered during a maximal 12-minute run.","exclusiveMinimum":800,"maximum":5000,"title":"Distance M","type":"number"},"age":{"anyOf":[{"maximum":100,"minimum":13,"type":"integer"},{"type":"null"}],"default":null,"description":"Age, to also categorize the result.","title":"Age"},"sex":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"male | female, to also categorize the result.","title":"Sex"}},"required":["distance_m"],"title":"vo2max_cooperArguments","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/vo2max_resting_hr":{"post":{"operationId":"vo2max_resting_hr","summary":"Estimated VO2max (ml/kg/min) from the Uth-Sorensen-Overgaard-Pedersen heart-rate-ratio formula — no maximal","description":"Estimated VO2max (ml/kg/min) from the Uth-Sorensen-Overgaard-Pedersen heart-rate-ratio formula — no maximal\n    effort needed, but a rougher estimate than a field test. Use for \"VO2max from resting HR 55, age 34, male\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"hr_rest":{"description":"Resting heart rate, bpm.","exclusiveMinimum":30,"maximum":120,"title":"Hr Rest","type":"number"},"age":{"anyOf":[{"maximum":100,"minimum":13,"type":"integer"},{"type":"null"}],"default":null,"description":"Age, used to estimate max HR if not given, and to categorize the result.","title":"Age"},"sex":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"male | female, to also categorize the result.","title":"Sex"},"hr_max":{"anyOf":[{"maximum":230,"minimum":100,"type":"number"},{"type":"null"}],"default":null,"description":"Measured max heart rate, if known (otherwise estimated from age).","title":"Hr Max"}},"required":["hr_rest"],"title":"vo2max_resting_hrArguments","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/fitness_level":{"post":{"operationId":"fitness_level","summary":"Categorizes a VO2max value into poor/fair/good/excellent/superior for the given age and sex, using a commonly","description":"Categorizes a VO2max value into poor/fair/good/excellent/superior for the given age and sex, using a commonly\n    published style of normative table. Use for \"is a VO2max of 42 good for a 35-year-old woman\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vo2max":{"description":"A VO2max value in ml/kg/min, from either formula here, a lab test, or elsewhere.","exclusiveMinimum":10,"maximum":95,"title":"Vo2Max","type":"number"},"age":{"maximum":100,"minimum":13,"title":"Age","type":"integer"},"sex":{"description":"male | female","title":"Sex","type":"string"}},"required":["vo2max","age","sex"],"title":"fitness_levelArguments","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/vo2max_education":{"post":{"operationId":"vo2max_education","summary":"What VO2max is, how a field-test estimate differs from a laboratory test, and safety notes for the Cooper","description":"What VO2max is, how a field-test estimate differs from a laboratory test, and safety notes for the Cooper\n    test. Use for \"what's the difference between a VO2max field test and a lab test\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"what_is_vo2max | field_test_vs_lab_test | safety — omit to list all.","title":"Topic"}},"title":"vo2max_educationArguments","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}}}}