{"openapi":"3.1.0","info":{"title":"Cyclewise API","version":"0.1.0","description":"Educational, non-diagnostic menstrual-cycle phase and fertile-window estimates, cycle-variability tracking, and general educational content.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://cyclewise.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/cyclewise/docs"},"termsOfService":"https://connectorbay.com/cyclewise/terms"},"servers":[{"url":"https://cyclewise.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/cyclewise/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/cycle_phase":{"post":{"operationId":"cycle_phase","summary":"Estimated cycle day, phase (menstrual/follicular/ovulatory/luteal), fertile window and next period start, from","description":"Estimated cycle day, phase (menstrual/follicular/ovulatory/luteal), fertile window and next period start, from\n    the last period's start date and usual cycle length. An educational estimate from a standard formula — not a\n    diagnosis, not a fertility or contraception method. Use for \"what phase am I in if my last period was March 3rd,\n    30-day cycles\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"last_period_start":{"description":"First day of the last period, YYYY-MM-DD.","examples":["2026-09-03"],"title":"Last Period Start","type":"string"},"cycle_length_days":{"default":28,"description":"Usual cycle length in days (typical range 21-35; average 28).","maximum":60,"minimum":15,"title":"Cycle Length Days","type":"integer"},"period_length_days":{"default":5,"description":"Usual number of bleeding days.","maximum":14,"minimum":1,"title":"Period Length Days","type":"integer"},"on":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date to estimate for (default today), YYYY-MM-DD.","title":"On"}},"required":["last_period_start"],"title":"cycle_phaseArguments","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/cycle_variability":{"post":{"operationId":"cycle_variability","summary":"Average, standard deviation, shortest/longest and spread across several recent cycle lengths, with a note on","description":"Average, standard deviation, shortest/longest and spread across several recent cycle lengths, with a note on\n    whether that spread and those lengths fall in the commonly cited 'everyday variation' range. Educational only —\n    not a diagnosis of regularity or irregularity. Use for \"are my cycles regular: 27, 31, 29, 35, 28\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cycle_lengths_days":{"description":"Several recent cycle lengths in days, oldest or newest first, at least 2.","examples":[[27,31,29,35,28]],"items":{"type":"number"},"maxItems":24,"minItems":2,"title":"Cycle Lengths Days","type":"array"}},"required":["cycle_lengths_days"],"title":"cycle_variabilityArguments","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/cycle_education":{"post":{"operationId":"cycle_education","summary":"General educational background on cycle phases, typical ranges, and commonly suggested reasons to see a","description":"General educational background on cycle phases, typical ranges, and commonly suggested reasons to see a\n    clinician. Not a checklist for self-diagnosis. Use for \"what's a typical cycle length\", \"what counts as an\n    irregular period\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"phases | typical_ranges | when_to_see_a_clinician — omit to list all.","title":"Topic"}},"title":"cycle_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}}}}