Dashboard
demo workspace
O1
Launch MVP and get first 10 paying customers
35%
KR2
Get 50 signups from Product Hunt launch
0/50
2 tasks
KR3
Convert 20% of signups to paid ($29/mo)
0/10
1 task
Next: Post-signup onboarding flow
Work on it
What your AI tools see via MCP
get_context
Claude Code / Cursor / Codex
{
"objective": "Launch MVP and get first 10 paying customers",
"cycle": "Q2 2026",
"days_left": 24,
"progress": 0.35,
"key_results": [
{
"title": "Ship signup flow with Stripe checkout",
"progress": 0.8,
"status": "on_track"
},
{
"title": "Get 50 signups from Product Hunt launch",
"current": 0,
"target": 50,
"status": "not_started"
},
{
"title": "Convert 20% of signups to paid ($29/mo)",
"current": 0,
"target": 10,
"status": "at_risk" // flagged because blocked on KR1
}
],
"next_task": {
"title": "Post-signup onboarding flow",
"key_result": "Ship signup flow with Stripe checkout"
},
"instructions": "Focus on KR1 tasks. KR3 is at risk but blocked until signup ships."
}
Same prompt, different outcome
โ Without okr.io
> "Help me improve the product"
Claude Code: *builds analytics dashboard*
(you never asked for this)
โ With okr.io
> "Help me improve the product"
Claude Code: *checks MCP context*
โ KR1 is 80%, next task is onboarding
โ *builds post-signup onboarding flow*
The redirect moment (why BACKLOG.md isn't enough)
1
Claude Code starts session
"User said 'work on the product'. I'll build that analytics dashboard I was thinking about..."
2
MCP get_context returns
objective: "Launch MVP and get 10 paying customers"
KR1: Ship signup flow (80% done, 1 task left)
KR3: Convert to paid (at_risk, blocked on KR1)
next_task: "Post-signup onboarding flow"
instructions: "Focus on KR1. KR3 is blocked until signup ships."
KR1: Ship signup flow (80% done, 1 task left)
KR3: Convert to paid (at_risk, blocked on KR1)
next_task: "Post-signup onboarding flow"
instructions: "Focus on KR1. KR3 is blocked until signup ships."
3
Claude Code redirects
"Analytics dashboard isn't in any KR. The objective is getting paying customers. KR1 needs onboarding done before KR3 can unblock. Building onboarding instead."
โ
Result
Task completed: Post-signup onboarding flow
KR1: 80% โ 100%
KR3: unblocked, ready to work
KR1: 80% โ 100%
KR3: unblocked, ready to work
A BACKLOG.md can't tell Claude Code that KR3 is blocked on KR1. okr.io can.
MCP Activity Log (real data from production)
Claude Code
May 9, 2026 ยท 3:28am
session_7b8c...
03:28:12
get_context
200
Received: 3 objectives, 6 key results, 9 tasks. Primary objective: "Validate the wedge with paying customers this quarter"
03:28:15
get_tasks
200
Filtered to KR "Test KR for email notifications" (10% โ target 100%). Task available: "Test KR for email notifications"
03:28:45
complete_task
200
Task completed: Created /home/kit/mcp-feedback-test/receipt.txt as artifact
KR progress: 10% โ updated
Cursor
May 5, 2026 ยท 10:19am
session_2fd3...
10:14:18
create_task
200
Created: "Build MCP server" under KR "Test KR for email notifications"
10:14:25
pick_task
200
10:15:20
create_task
200
Created: "Test MCP complete flow"
10:19:20
complete_task
200
Summary: Tested MCP complete flow successfully
Codex
May 3, 2026 ยท 11:01am
session_c99d...
10:50:34
create_task
200
Created: "Find the top 5 AI agent frameworks and compare them" under KR "Research AI agent market landscape"
11:01:02
create_task
200
Created: "Write a haiku about AI agents"
11:01:16
complete_task
200
11:01:39
create_task
200
Created: "Find current LangGraph version"
11:02:33
complete_task
200