Focuh
ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
使うべきか
品質と安全性
検出事項(1)
- LOWreorder_subtasks 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"focuh": {
"url": "https://www.focuh.com/api/mcp"
}
}
}リモートエンドポイント
https://www.focuh.com/api/mcpstreamable-httpできること
ツール一覧
ツール(16)
🟢get_tasks
Today/tomorrow tasks with id, date and priority. Call first to get refs.
入力スキーマ
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡create_tasks(tasks)
Create tasks, each with optional nested subtasks. Defaults: today, 30 min.
入力スキーマ
{
"type": "object",
"properties": {
"tasks": {
"type": "array",
"maxItems": 100,
"description": "Tasks to create",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 500,
"description": "Title"
},
"date": {
"type": "string",
"maxLength": 10,
"description": "Date"
},
"estimatedMinutes": {
"type": "number",
"minimum": 0,
"maximum": 1440,
"description": "Minutes"
},
"priority": {
"type": "string",
"enum": [
"critical",
"important",
"nice-to-have"
],
"description": "Priority"
},
"parent": {
"type": "string",
"maxLength": 500,
"description": "Parent"
},
"goalId": {
"type": "string",
"maxLength": 64,
"description": "Goal"
},
"loopBucket": {
"type": "string",
"enum": [
"pressing",
"important",
"backlog",
"waiting"
],
"description": "Undated loop; excludes date/priority; waiting=parked"
},
"subtasks": {
"type": "array",
"maxItems": 100,
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 500
},
"estimatedMinutes": {
"type": "number",
"minimum": 0,
"maximum": 1440
}
},
"required": [
"title"
]
}
}
},
"required": [
"title"
]
}
}
},
"required": [
"tasks"
]
}🟡update_tasks(tasks)
Change tasks: date (moves the day), priority, title, estimate, done, time slot.
入力スキーマ
{
"type": "object",
"properties": {
"tasks": {
"type": "array",
"maxItems": 100,
"description": "Changes to apply, one entry per task",
"items": {
"type": "object",
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
},
"title": {
"type": "string",
"maxLength": 500,
"description": "Title"
},
"estimatedMinutes": {
"type": "number",
"minimum": 0,
"maximum": 1440,
"description": "Minutes"
},
"completed": {
"type": "boolean",
"description": "Done"
},
"date": {
"type": "string",
"maxLength": 10,
"description": "Date"
},
"priority": {
"type": "string",
"enum": [
"critical",
"important",
"nice-to-have"
],
"description": "Priority"
},
"startTime": {
"type": "string",
"maxLength": 5,
"description": "Start"
},
"endTime": {
"type": "string",
"maxLength": 5,
"description": "End"
},
"goalId": {
"type": "string",
"maxLength": 64
},
"loopBucket": {
"type": "string",
"enum": [
"pressing",
"important",
"backlog",
"waiting"
],
"description": "Into Loops or re-bucket; excl. date; waiting=parked"
}
},
"required": [
"ref"
]
}
}
},
"required": [
"tasks"
]
}🔴delete_tasks(tasks, date, filter)
Delete tasks by ref, every task on a date, or all completed. Subtasks go too.
入力スキーマ
{
"type": "object",
"properties": {
"tasks": {
"type": "array",
"maxItems": 100,
"items": {
"type": "string",
"maxLength": 500
}
},
"date": {
"type": "string",
"maxLength": 10
},
"filter": {
"type": "string",
"enum": [
"completed"
]
}
}
}🟢get_subtasks(ref)
List subtasks of a parent. Returns ids usable as refs.
入力スキーマ
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
}
},
"required": [
"ref"
],
"additionalProperties": false
}⚪reorder_subtasks(ref, order)
Reorder a parent's subtasks. Pass the complete new order, every one once.
入力スキーマ
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
},
"order": {
"type": "array",
"maxItems": 100,
"items": {
"type": [
"number",
"string"
],
"maxLength": 64
}
}
},
"required": [
"ref",
"order"
]
}🟢get_loops
Loops — undated intentions in 4 buckets (pressing/important/backlog/waiting=parked). Call before pull_loops.
入力スキーマ
{
"type": "object",
"properties": {},
"additionalProperties": false
}⚪pull_loops(loops, date)
Copy loops onto a date as linked tasks — each loop stays in Loops. Idempotent per loop+date.
入力スキーマ
{
"type": "object",
"properties": {
"loops": {
"type": "array",
"maxItems": 100,
"items": {
"type": "string",
"maxLength": 500
}
},
"date": {
"type": "string",
"maxLength": 10
}
},
"required": [
"loops"
]
}🟢get_calendar(date)
Events + scheduled/unscheduled tasks for a date. Check before scheduling.
入力スキーマ
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false
}🟢get_goals(horizon, status)
Goals by horizon (week/month/year/decade) — exactly what the app's Goals view shows.
入力スキーマ
{
"type": "object",
"properties": {
"horizon": {
"type": "string",
"enum": [
"week",
"month",
"year",
"decade"
]
},
"status": {
"type": "string",
"enum": [
"active",
"completed",
"all"
]
}
},
"additionalProperties": false
}🟡create_goal(title, horizon, bottleneckNote, lever)
Create a goal in a horizon, with optional bottleneck note and lever.
入力スキーマ
{
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 500
},
"horizon": {
"type": "string",
"enum": [
"week",
"month",
"year",
"decade"
]
},
"bottleneckNote": {
"type": "string",
"maxLength": 5000
},
"lever": {
"type": "string",
"maxLength": 5000
}
},
"required": [
"title",
"horizon"
]
}🟡update_goal(id, title, horizon, status, bottleneckNote, ...)
Update goal fields: title, horizon (moves section), status, bottleneckNote, lever.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64
},
"title": {
"type": "string",
"maxLength": 500
},
"horizon": {
"type": "string",
"enum": [
"week",
"month",
"year",
"decade"
]
},
"status": {
"type": "string",
"enum": [
"active",
"completed",
"paused",
"dropped"
]
},
"bottleneckNote": {
"type": "string",
"maxLength": 5000
},
"lever": {
"type": "string",
"maxLength": 5000
}
},
"required": [
"id"
]
}🔴delete_goal(id)
Delete a goal by id. Linked tasks are kept and unlinked, never deleted.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢get_focus_stats
Today/week focus minutes, streak, task completion rates.
入力スキーマ
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_journal(date)
Read a daily journal and recent dates. Preserve ^task markers when writing back.
入力スキーマ
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false
}🟡write_journal(content, date, mode)
Append or replace a journal. Read before replacing and preserve ^task markers.
入力スキーマ
{
"type": "object",
"properties": {
"content": {
"type": "string",
"maxLength": 100000
},
"date": {
"type": "string",
"maxLength": 10
},
"mode": {
"type": "string",
"enum": [
"append",
"replace"
]
}
},
"required": [
"content"
],
"additionalProperties": false
}コミュニティ
エビデンス