{"openapi":"3.1.0","info":{"title":"RouteGrade API","version":"0.1.0","description":"Run/hike route difficulty and elevation-profile calculators: Naismith/Langmuir pace estimate, grade percentage, Shenandoah-formula difficulty tiers.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://routegrade.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/routegrade/docs"},"termsOfService":"https://connectorbay.com/routegrade/terms"},"servers":[{"url":"https://routegrade.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/routegrade/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/route_pace_estimate":{"post":{"operationId":"route_pace_estimate","summary":"Hiking/running time estimate from Naismith's Rule (1 h per 5 km + 1 h per 600 m ascent) with the Langmuir","description":"Hiking/running time estimate from Naismith's Rule (1 h per 5 km + 1 h per 600 m ascent) with the Langmuir\n    descent correction, plus the \"effective flat distance\" the climb is worth. Use for \"how long will a 12 km\n    route with 600 m of climbing take\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"distance_km":{"description":"Route distance in kilometres.","exclusiveMinimum":0,"maximum":500,"title":"Distance Km","type":"number"},"elevation_gain_m":{"description":"Total climbing (ascent) in metres.","maximum":15000,"minimum":0,"title":"Elevation Gain M","type":"number"},"elevation_loss_m":{"default":0.0,"description":"Total descent in metres (used for the Langmuir correction).","maximum":15000,"minimum":0,"title":"Elevation Loss M","type":"number"},"flat_speed_kmh":{"default":5.0,"description":"Assumed flat-ground walking/running speed in km/h (default 5, an average hiking pace).","exclusiveMinimum":0.5,"maximum":15,"title":"Flat Speed Kmh","type":"number"}},"required":["distance_km","elevation_gain_m"],"title":"route_pace_estimateArguments","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/climb_grade":{"post":{"operationId":"climb_grade","summary":"Grade percentage (rise ÷ run × 100) and angle in degrees for a climb or descent, with a steepness band.","description":"Grade percentage (rise ÷ run × 100) and angle in degrees for a climb or descent, with a steepness band.\n    Use for \"how steep is a 150 m rise over 1 km\", \"grade of a 10% climb in degrees\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"rise_m":{"description":"Vertical rise in metres (negative for a descent).","maximum":3000,"minimum":-3000,"title":"Rise M","type":"number"},"run_m":{"description":"Horizontal distance in metres over which the rise happens.","exclusiveMinimum":0,"maximum":200000,"title":"Run M","type":"number"}},"required":["rise_m","run_m"],"title":"climb_gradeArguments","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/route_difficulty":{"post":{"operationId":"route_difficulty","summary":"Difficulty score and tier (easy / moderate / hard / strenuous) from the Shenandoah National Park formula:","description":"Difficulty score and tier (easy / moderate / hard / strenuous) from the Shenandoah National Park formula:\n    sqrt(elevation_gain_ft x 2 x round_trip_distance_mi). Use for \"how hard is a 15 km hike with 1000 m of gain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"distance_km":{"description":"Route distance in kilometres.","exclusiveMinimum":0,"maximum":500,"title":"Distance Km","type":"number"},"elevation_gain_m":{"description":"Total elevation gain in metres.","maximum":15000,"minimum":0,"title":"Elevation Gain M","type":"number"},"round_trip":{"default":true,"description":"True if distance_km is already the round-trip (there-and-back) distance; false if it is one-way and should be doubled.","title":"Round Trip","type":"boolean"}},"required":["distance_km","elevation_gain_m"],"title":"route_difficultyArguments","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}}}}