{"openapi":"3.1.0","info":{"title":"RecoveryScore API","version":"0.1.0","description":"An informal, non-diagnostic subjective-recovery/readiness self-assessment with a documented weighting scheme, multi-day trend tracking, and full methodology reference — all local.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://recoveryscore.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/recoveryscore/docs"},"termsOfService":"https://connectorbay.com/recoveryscore/terms"},"servers":[{"url":"https://recoveryscore.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/recoveryscore/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/readiness_check":{"post":{"operationId":"readiness_check","summary":"A composite 0-100 readiness score from sleep quality, muscle soreness, mood/motivation and an optional","description":"A composite 0-100 readiness score from sleep quality, muscle soreness, mood/motivation and an optional\n    resting-HR trend, with a tier and a training-adjustment suggestion. Call with no arguments first to get\n    the questionnaire and scale anchors. Use for \"how ready am I to train today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sleep_quality":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Sleep quality last night, 1 (very poor) to 5 (excellent).","title":"Sleep Quality"},"muscle_soreness":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Muscle soreness right now, 1 (very sore) to 5 (no soreness).","title":"Muscle Soreness"},"mood_motivation":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Mood and motivation to train, 1 (low) to 5 (high).","title":"Mood Motivation"},"resting_hr_trend":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional: much_lower | lower_than_usual | normal | slightly_elevated | much_elevated, versus your own baseline.","title":"Resting Hr Trend"}},"title":"readiness_checkArguments","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/readiness_trend":{"post":{"operationId":"readiness_trend","summary":"Average readiness, a real trend (least-squares slope, improving/steady/declining), and a flag for a","description":"Average readiness, a real trend (least-squares slope, improving/steady/declining), and a flag for a\n    sharp single-day drop that may signal overreaching. Use for \"check my readiness trend over the last 5\n    days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"daily_scores":{"description":"Composite readiness scores (0-100) for the last several days, oldest first.","examples":[[75,70,68,72,50]],"items":{"type":"number"},"title":"Daily Scores","type":"array"}},"required":["daily_scores"],"title":"readiness_trendArguments","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/methodology_reference":{"post":{"operationId":"methodology_reference","summary":"The full readiness-score weighting scheme, the resting-HR-trend point mapping, and the tier","description":"The full readiness-score weighting scheme, the resting-HR-trend point mapping, and the tier\n    thresholds, for transparency. Use for \"how is the readiness score actually calculated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"methodology_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}}}}