{"openapi":"3.1.0","info":{"title":"Racepace API","version":"0.1.0","description":"Race-day pace, split-table and pacing-strategy calculator.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://racepace.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/racepace/docs"},"termsOfService":"https://connectorbay.com/racepace/terms"},"servers":[{"url":"https://racepace.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/racepace/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/race_splits":{"post":{"operationId":"race_splits","summary":"Required average pace, full km and mile split tables, and negative-split vs even-split pacing tables for a","description":"Required average pace, full km and mile split tables, and negative-split vs even-split pacing tables for a\n    goal finish time and distance. Use for \"splits for a sub-4 marathon\", \"negative split for a 1:45 half\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"distance":{"description":"Race distance.","examples":["5k","10k","half marathon","marathon","21 km","3 mi"],"title":"Distance","type":"string"},"goal_time":{"description":"Goal finish time, h:mm:ss or mm:ss.","examples":["3:45:00","24:30","1:35:00"],"title":"Goal Time","type":"string"},"negative_split_percent":{"default":2.0,"description":"How much faster the second half runs in the negative-split table (typical 1-3%).","maximum":10,"minimum":0,"title":"Negative Split Percent","type":"number"}},"required":["distance","goal_time"],"title":"race_splitsArguments","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/pacing_bands":{"post":{"operationId":"pacing_bands","summary":"A race-day pacing-BAND recommendation (not a single number): a conservative range for the first 20% of the","description":"A race-day pacing-BAND recommendation (not a single number): a conservative range for the first 20% of the\n    race, goal pace for the middle 60%, a faster range for the final 20%. Use for \"pacing plan for a 22-minute 5k\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"distance":{"description":"Race distance.","examples":["5k","10k","half marathon","marathon"],"title":"Distance","type":"string"},"goal_time":{"description":"Goal finish time, h:mm:ss or mm:ss.","examples":["3:45:00","24:30"],"title":"Goal Time","type":"string"},"band_percent":{"default":2.0,"description":"How wide the early/late bands are relative to goal pace.","maximum":10,"minimum":0.5,"title":"Band Percent","type":"number"}},"required":["distance","goal_time"],"title":"pacing_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}}}}