Focuh

ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.

使うべきか

品質と安全性

A
説明の品質
98%
スキーマの完全性
73%
命名の品質
98%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(1)

  • LOWTool 'reorder_subtasks' description lacks action verbreorder_subtasks 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~1,965トークン数(ツール定義)
~804 B一般的なレスポンスサイズ
注意への影響は中程度(128k コンテキストの 1.54%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `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
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 16 件
検証済みバージョンは記録されていませんツール 16 件