{"language":"en","purpose":"Return only a JSON object conforming to the Workout Relay schema. Do not add Markdown, comments, or unknown fields.","rules":["Use schema_version 1 and sport running.","Each workout id is stable and unique for this account: 2–160 lowercase letters, digits, _ or -, starting with a letter or digit. Keep the same id when changing its date.","time durations are seconds and distance durations are metres.","Pace targets use slow and fast in M:SS per kilometre; slow must be the slower pace.","Heart-rate targets use low and high bpm with low strictly below high.","A workout may have no more than 50 steps after repeat expansion.","Validate the JSON with the validation endpoint before submitting it.","A valid submission returns HTTP 202. Poll its status URL until it is completed or failed."],"connector":{"url":"https://relay.numerate.tech/mcp/","preferred":"When connected through this MCP connector, call its tools instead of raw HTTP: get_plan_format, validate_plan_tool, submit_plan, get_plan_status, list_recent_plans and get_garmin_status. They act for the account that approved the connection, so no key is needed.","setup":["Claude: Settings, then Connectors, then Add custom connector, and paste this address.","ChatGPT (paid plans): Settings, then Security and login, turn on Developer mode, then add this address as a custom connector.","ChatGPT (free plans): custom connectors are unavailable; upload the plan on the website instead.","The person signs in to Workout Relay once and approves; their Garmin password is never shared."]},"authentication":"Authorization: Bearer <Workout Relay API key> (HTTP route only; the connector needs no key)","schema_url":"https://relay.numerate.tech/api/v1/plan-schema","example_url":"https://relay.numerate.tech/api/v1/plan-example","validate_url":"https://relay.numerate.tech/api/v1/plans/validate","submit_url":"https://relay.numerate.tech/api/v1/plans","status_url_template":"https://relay.numerate.tech/api/v1/plans/{submission_id}"}