{"openapi":"3.1.0","info":{"title":"Okrframe API","version":"0.1.0","description":"OKR template generation, computed heuristic quality checks (measurability, time-boundedness, SMART criteria), and hand-curated cascading/scoring/glossary reference plus computed review-cadence date math.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://okrframe.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/okrframe/docs"},"termsOfService":"https://connectorbay.com/okrframe/terms"},"servers":[{"url":"https://okrframe.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/okrframe/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/list_goal_areas":{"post":{"operationId":"list_goal_areas","summary":"List every supported goal area. Use for \"what goal areas do you support\".","description":"List every supported goal area. Use for \"what goal areas do you support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_goal_areasArguments","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/generate_okr_template":{"post":{"operationId":"generate_okr_template","summary":"Generate a structured Objective + Key Result template for a goal area, with guidance on what makes each","description":"Generate a structured Objective + Key Result template for a goal area, with guidance on what makes each\n    part good. Use for \"give me an OKR template for engineering\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"goal_area":{"description":"A goal area — see list_goal_areas.","examples":["engineering","sales"],"title":"Goal Area","type":"string"},"objective_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A draft objective to use instead of a placeholder.","title":"Objective Hint"},"key_result_count":{"default":3,"maximum":6,"minimum":1,"title":"Key Result Count","type":"integer"}},"required":["goal_area"],"title":"generate_okr_templateArguments","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/okr_quality_check":{"post":{"operationId":"okr_quality_check","summary":"Computed check on a draft Key Result: does it have a number, a deadline, and does it read like an outcome","description":"Computed check on a draft Key Result: does it have a number, a deadline, and does it read like an outcome\n    rather than a task? Use for \"is this a good key result\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key_result_text":{"description":"A draft Key Result to check.","minLength":1,"title":"Key Result Text","type":"string"}},"required":["key_result_text"],"title":"okr_quality_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/objective_quality_check":{"post":{"operationId":"objective_quality_check","summary":"Computed check on a draft Objective: flags numbers (usually belong in a Key Result instead) and length","description":"Computed check on a draft Objective: flags numbers (usually belong in a Key Result instead) and length\n    issues. Use for \"is this a good objective\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"objective_text":{"description":"A draft Objective to check.","minLength":1,"title":"Objective Text","type":"string"}},"required":["objective_text"],"title":"objective_quality_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/smart_score":{"post":{"operationId":"smart_score","summary":"Score a Key Result against SMART criteria — Specific/Measurable/Time-bound are computed from the text;","description":"Score a Key Result against SMART criteria — Specific/Measurable/Time-bound are computed from the text;\n    Achievable/Relevant are flagged as needing your own judgment. Use for \"score this KR against SMART criteria\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key_result_text":{"description":"A draft Key Result to score.","minLength":1,"title":"Key Result Text","type":"string"}},"required":["key_result_text"],"title":"smart_scoreArguments","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/okr_examples":{"post":{"operationId":"okr_examples","summary":"A full original example Objective and 3 Key Results for a goal area. Use for \"show me an example OKR for","description":"A full original example Objective and 3 Key Results for a goal area. Use for \"show me an example OKR for\n    marketing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"goal_area":{"description":"A goal area — see list_goal_areas.","title":"Goal Area","type":"string"}},"required":["goal_area"],"title":"okr_examplesArguments","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/cascade_guidance":{"post":{"operationId":"cascade_guidance","summary":"Explain how OKRs should (and shouldn't) cascade at a given level. Use for \"how should OKRs cascade from","description":"Explain how OKRs should (and shouldn't) cascade at a given level. Use for \"how should OKRs cascade from\n    company to team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"level":{"description":"company | team | individual","title":"Level","type":"string"}},"required":["level"],"title":"cascade_guidanceArguments","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/okr_glossary":{"post":{"operationId":"okr_glossary","summary":"Definitions of OKR terms — Objective, Key Result, Initiative, cadence, stretch goal, committed goal,","description":"Definitions of OKR terms — Objective, Key Result, Initiative, cadence, stretch goal, committed goal,\n    check-in, confidence score. Use for \"what's a stretch goal in OKR terms\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"okr_glossaryArguments","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/scoring_scale_explainer":{"post":{"operationId":"scoring_scale_explainer","summary":"Explain the 0.0-1.0 OKR scoring convention and stretch-vs-committed grading. Use for \"what does a 0.7 OKR","description":"Explain the 0.0-1.0 OKR scoring convention and stretch-vs-committed grading. Use for \"what does a 0.7 OKR\n    score mean\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"scoring_scale_explainerArguments","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/review_cadence_plan":{"post":{"operationId":"review_cadence_plan","summary":"Compute checkpoint weeks (kickoff, weekly check-ins, mid-cycle review, final review) across an OKR cycle,","description":"Compute checkpoint weeks (kickoff, weekly check-ins, mid-cycle review, final review) across an OKR cycle,\n    with calendar dates if you give a start date. Use for \"plan my quarterly OKR review schedule\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cycle_length_weeks":{"default":12,"description":"Length of the OKR cycle in weeks (12 is a common quarterly cycle).","maximum":26,"minimum":2,"title":"Cycle Length Weeks","type":"integer"},"start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"YYYY-MM-DD to get calendar dates instead of just week numbers.","title":"Start Date"}},"title":"review_cadence_planArguments","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}}}}