{"openapi":"3.1.0","info":{"title":"Warmupbuilder API","version":"0.1.0","description":"Sport-specific RAMP-protocol warm-up generation for running, weightlifting, basketball, swimming and general activity, with real timing and rep-count guidance.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://warmupbuilder.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/warmupbuilder/docs"},"termsOfService":"https://connectorbay.com/warmupbuilder/terms"},"servers":[{"url":"https://warmupbuilder.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/warmupbuilder/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/generate_warmup":{"post":{"operationId":"generate_warmup","summary":"A full structured warm-up (RAMP: Raise, Activate & Mobilize, Potentiate) for a sport, with real","description":"A full structured warm-up (RAMP: Raise, Activate & Mobilize, Potentiate) for a sport, with real\n    hand-curated movements, rep counts and timing that differ meaningfully by sport. Use for \"warm-up for a\n    basketball game\", \"5-minute warm-up before squats\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"running | weightlifting | basketball | swimming | general (aliases like 'jog', 'lifting', 'hoops', 'swim' also work).","title":"Sport","type":"string"},"available_minutes":{"anyOf":[{"exclusiveMinimum":0,"maximum":60,"type":"number"},{"type":"null"}],"default":null,"description":"Time available, to scale phase durations down if less than the default total.","title":"Available Minutes"}},"required":["sport"],"title":"generate_warmupArguments","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/warmup_as_text":{"post":{"operationId":"warmup_as_text","summary":"The same warm-up as generate_warmup, formatted as a single readable, printable block of text. Use for","description":"The same warm-up as generate_warmup, formatted as a single readable, printable block of text. Use for\n    \"print me a warm-up for a run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport":{"description":"running | weightlifting | basketball | swimming | general","title":"Sport","type":"string"},"available_minutes":{"anyOf":[{"exclusiveMinimum":0,"maximum":60,"type":"number"},{"type":"null"}],"default":null,"description":"Time available, to scale phase durations down.","title":"Available Minutes"}},"required":["sport"],"title":"warmup_as_textArguments","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/ramp_framework":{"post":{"operationId":"ramp_framework","summary":"Explains the RAMP protocol itself (Raise, Activate & Mobilize, Potentiate) — what each phase is for and","description":"Explains the RAMP protocol itself (Raise, Activate & Mobilize, Potentiate) — what each phase is for and\n    why dynamic movement, not static stretching, is used before intense effort. Use for \"what is the RAMP\n    protocol\", \"why dynamic warm-up instead of static stretching\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"ramp_frameworkArguments","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/list_sports":{"post":{"operationId":"list_sports","summary":"Lists the sports/activities this generator covers: running, weightlifting, basketball, swimming, general.","description":"Lists the sports/activities this generator covers: running, weightlifting, basketball, swimming, general.\n    Use for \"what warm-ups do you cover\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_sportsArguments","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/compare_warmups":{"post":{"operationId":"compare_warmups","summary":"Highlights how two sports' warm-ups differ in movement selection and total duration — concrete evidence a","description":"Highlights how two sports' warm-ups differ in movement selection and total duration — concrete evidence a\n    runner's warm-up and a lifter's warm-up are not the same routine. Use for \"how is a swimmer's warm-up\n    different from a runner's\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport_a":{"description":"First sport.","title":"Sport A","type":"string"},"sport_b":{"description":"Second sport.","title":"Sport B","type":"string"}},"required":["sport_a","sport_b"],"title":"compare_warmupsArguments","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}}}}