Focuh MCP
An MCP server for the Focuh ADHD task management app, enabling AI agents to interact with tasks, loops, goals, calendar events, and focus statistics via tools like get_tasks, create_tasks, and get_calendar.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.focuh.com/api/mcpWhat its tools do
14 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Warning Advertises resources/templates/list but does not implement it
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- View today and tomorrow's tasks
- Create tasks in bulk with nested subtasks
- Retrieve calendar events and scheduled tasks
- Get focus minutes and completion stats
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- Focuh 3.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 14 advertised
- Resources
- 2 advertised
- Resource templates
- Not advertised
- Prompts
- 2 advertised
{
"tools": {},
"prompts": {},
"resources": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
14 advertised
get_tasks — View Tasks
Today/tomorrow tasks with id, date and priority. Call first to get refs.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_tasks — Create Tasks
Create tasks, each with optional nested subtasks. Defaults: today, 30 min.
{
"type": "object",
"required": [
"tasks"
],
"properties": {
"tasks": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10,
"description": "Date"
},
"title": {
"type": "string",
"maxLength": 500,
"description": "Title"
},
"goalId": {
"type": "string",
"maxLength": 64,
"description": "Goal"
},
"parent": {
"type": "string",
"maxLength": 500,
"description": "Parent"
},
"priority": {
"enum": [
"critical",
"important",
"nice-to-have"
],
"type": "string",
"description": "Priority"
},
"subtasks": {
"type": "array",
"items": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"maxLength": 500
},
"estimatedMinutes": {
"type": "number",
"maximum": 1440,
"minimum": 0
}
}
},
"maxItems": 100
},
"loopBucket": {
"enum": [
"pressing",
"important",
"backlog",
"waiting"
],
"type": "string",
"description": "Undated loop; excludes date/priority; waiting=parked"
},
"estimatedMinutes": {
"type": "number",
"maximum": 1440,
"minimum": 0,
"description": "Minutes"
}
}
},
"maxItems": 100,
"description": "Tasks to create"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}update_tasks — Update Tasks
Change tasks: date (moves the day), priority, title, estimate, done, time slot.
{
"type": "object",
"required": [
"tasks"
],
"properties": {
"tasks": {
"type": "array",
"items": {
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
},
"date": {
"type": "string",
"maxLength": 10,
"description": "Date"
},
"title": {
"type": "string",
"maxLength": 500,
"description": "Title"
},
"goalId": {
"type": "string",
"maxLength": 64
},
"endTime": {
"type": "string",
"maxLength": 5,
"description": "End"
},
"priority": {
"enum": [
"critical",
"important",
"nice-to-have"
],
"type": "string",
"description": "Priority"
},
"completed": {
"type": "boolean",
"description": "Done"
},
"startTime": {
"type": "string",
"maxLength": 5,
"description": "Start"
},
"loopBucket": {
"enum": [
"pressing",
"important",
"backlog",
"waiting"
],
"type": "string",
"description": "Into Loops or re-bucket; excl. date; waiting=parked"
},
"estimatedMinutes": {
"type": "number",
"maximum": 1440,
"minimum": 0,
"description": "Minutes"
}
}
},
"maxItems": 100,
"description": "Changes to apply, one entry per task"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}delete_tasks — Delete Tasks
Delete tasks by ref, every task on a date, or all completed. Subtasks go too.
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
},
"tasks": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 100
},
"filter": {
"enum": [
"completed"
],
"type": "string"
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}get_subtasks — View Subtasks
List subtasks of a parent. Returns ids usable as refs.
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}reorder_subtasks — Reorder Subtasks
Reorder a parent's subtasks. Pass the complete new order, every one once.
{
"type": "object",
"required": [
"ref",
"order"
],
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
},
"order": {
"type": "array",
"items": {
"type": [
"number",
"string"
],
"maxLength": 64
},
"maxItems": 100
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_loops — View Loops
Loops — undated intentions in 4 buckets (pressing/important/backlog/waiting=parked). Call before pull_loops.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}pull_loops — Pull Loops
Copy loops onto a date as linked tasks — each loop stays in Loops. Idempotent per loop+date.
{
"type": "object",
"required": [
"loops"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10
},
"loops": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 100
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_calendar — View Calendar
Events + scheduled/unscheduled tasks for a date. Check before scheduling.
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_goals — View Goals
Goals by horizon (week/month/year/decade) — exactly what the app's Goals view shows.
{
"type": "object",
"properties": {
"status": {
"enum": [
"active",
"completed",
"all"
],
"type": "string"
},
"horizon": {
"enum": [
"week",
"month",
"year",
"decade"
],
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_goal — Create Goal
Create a goal in a horizon, with optional bottleneck note and lever.
{
"type": "object",
"required": [
"title",
"horizon"
],
"properties": {
"lever": {
"type": "string",
"maxLength": 5000
},
"title": {
"type": "string",
"maxLength": 500
},
"horizon": {
"enum": [
"week",
"month",
"year",
"decade"
],
"type": "string"
},
"bottleneckNote": {
"type": "string",
"maxLength": 5000
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}update_goal — Update Goal
Update goal fields: title, horizon (moves section), status, bottleneckNote, lever.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64
},
"lever": {
"type": "string",
"maxLength": 5000
},
"title": {
"type": "string",
"maxLength": 500
},
"status": {
"enum": [
"active",
"completed",
"paused",
"dropped"
],
"type": "string"
},
"horizon": {
"enum": [
"week",
"month",
"year",
"decade"
],
"type": "string"
},
"bottleneckNote": {
"type": "string",
"maxLength": 5000
}
}
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}delete_goal — Delete Goal
Delete a goal by id. Linked tasks are kept and unlinked, never deleted.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}get_focus_stats — Focus Statistics
Today/week focus minutes, streak, task completion rates.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
2 advertised
plan-my-day
Plan your day by reviewing tasks, calendar, and suggesting an optimized schedule
- date
- YYYY-MM-DD date to plan (default: today)
weekly-review
Review the week's progress, bottlenecks, and plan next week's priorities
Resources
2 advertised
Today's Tasks
Current tasks for today and tomorrow with status, time estimates, and schedule
todos://todayAgent Guide
Complete guide to Focuh MCP tools, workflows, and capabilities including subtask support
focuh://guide90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 985 ms
- 95th percentile latency
- 985 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 985 ms · metadata changed · 14 tool(s), 2 resource(s), 2 prompt(s); warnings: Advertises resources/templates/list but does not implement it
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http focuh-mcp https://www.focuh.com/api/mcpCodex
codex mcp add focuh-mcp --url https://www.focuh.com/api/mcpCursor
{
"mcpServers": {
"focuh-mcp": {
"url": "https://www.focuh.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"focuh-mcp": {
"type": "streamableHttp",
"url": "https://www.focuh.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"focuh-mcp": {
"type": "http",
"url": "https://www.focuh.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http focuh-mcp https://www.focuh.com/api/mcpClaude Desktop
https://www.focuh.com/api/mcpWindsurf
{
"mcpServers": {
"focuh-mcp": {
"serverUrl": "https://www.focuh.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like Focuh MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.