{"serverInfo":{"name":"Focuh","version":"2.4.0","websiteUrl":"https://www.focuh.com/mcp"},"transport":{"type":"streamable-http","endpoint":"https://www.focuh.com/api/mcp"},"authentication":{"required":true,"schemes":["bearer","oauth2"]},"tools":[{"name":"get_tasks","description":"Today/tomorrow tasks with id, date and priority. Call first to get refs.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"create_tasks","description":"Create tasks, each with optional nested subtasks. Defaults: today, 30 min.","inputSchema":{"type":"object","properties":{"tasks":{"type":"array","description":"Tasks to create","items":{"type":"object","properties":{"title":{"type":"string","description":"Task title; an embedded URL becomes a link attachment"},"date":{"type":"string","description":"YYYY-MM-DD (default today)"},"estimatedMinutes":{"type":"number","description":"Minutes (default 30)"},"priority":{"type":"string","enum":["critical","important","nice-to-have"],"description":"Priority tier (default important)"},"parent":{"type":"string","description":"Parent task ref — makes this a subtask"},"goalId":{"type":"string","description":"Goal id to link to"},"loopBucket":{"type":"string","enum":["pressing","important","backlog","waiting"],"description":"Undated loop; excludes date/priority; waiting=parked"},"subtasks":{"type":"array","description":"Subtasks to create under this task","items":{"type":"object","properties":{"title":{"type":"string","description":"Subtask title"},"estimatedMinutes":{"type":"number","description":"Minutes (default 15)"}},"required":["title"]}}},"required":["title"]}}},"required":["tasks"]}},{"name":"update_tasks","description":"Change tasks: date (moves the day), priority, title, estimate, done, time slot.","inputSchema":{"type":"object","properties":{"tasks":{"type":"array","description":"Changes to apply, one entry per task","items":{"type":"object","properties":{"ref":{"type":"string","description":"Task ref: id from the list, #N, or title"},"title":{"type":"string","description":"New title; an embedded URL becomes a link attachment"},"estimatedMinutes":{"type":"number","description":"New estimate in minutes"},"completed":{"type":"boolean","description":"Mark complete or incomplete"},"date":{"type":"string","description":"YYYY-MM-DD — moves the task to this day"},"priority":{"type":"string","enum":["critical","important","nice-to-have"],"description":"New priority tier"},"startTime":{"type":"string","description":"HH:MM slot start"},"endTime":{"type":"string","description":"HH:MM slot end"},"goalId":{"type":"string","description":"Goal id to link to"},"loopBucket":{"type":"string","enum":["pressing","important","backlog","waiting"],"description":"Into Loops or re-bucket; excl. date; waiting=parked"}},"required":["ref"]}}},"required":["tasks"]}},{"name":"delete_tasks","description":"Delete tasks by ref, every task on a date, or all completed. Subtasks go too.","inputSchema":{"type":"object","properties":{"tasks":{"type":"array","items":{"type":"string"},"description":"Task refs to delete"},"date":{"type":"string","description":"YYYY-MM-DD — delete every task that day"},"filter":{"type":"string","enum":["completed"],"description":"Delete all completed tasks"}}}},{"name":"get_subtasks","description":"List subtasks of a parent. Returns ids usable as refs.","inputSchema":{"type":"object","properties":{"ref":{"type":"string","description":"Task ref: id from the list, #N, or title"}},"required":["ref"],"additionalProperties":false}},{"name":"reorder_subtasks","description":"Reorder a parent's subtasks. Pass the complete new order, every one once.","inputSchema":{"type":"object","properties":{"ref":{"type":"string","description":"Task ref: id from the list, #N, or title"},"order":{"type":"array","description":"New order: positions (e.g. [3,1,2]) or subtask ids","items":{"type":["number","string"]}}},"required":["ref","order"]}},{"name":"get_loops","description":"Loops — undated intentions in 4 buckets (pressing/important/backlog/waiting=parked). Call before pull_loops.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"pull_loops","description":"Copy loops onto a date as linked tasks — each loop stays in Loops. Idempotent per loop+date.","inputSchema":{"type":"object","properties":{"loops":{"type":"array","items":{"type":"string"},"description":"Loop refs from get_loops: #N, id, or title"},"date":{"type":"string","description":"YYYY-MM-DD (default today)"}},"required":["loops"]}},{"name":"get_calendar","description":"Events + scheduled/unscheduled tasks for a date. Check before scheduling.","inputSchema":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD (default: today)"}},"additionalProperties":false}},{"name":"get_goals","description":"Goals by horizon (week/month/year/decade) — exactly what the app's Goals view shows.","inputSchema":{"type":"object","properties":{"horizon":{"type":"string","enum":["week","month","year","decade"],"description":"Horizon filter"},"status":{"type":"string","enum":["active","completed","all"],"description":"Status filter (default active)"}},"additionalProperties":false}},{"name":"create_goal","description":"Create a goal in a horizon, with optional bottleneck note and lever.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Goal title"},"horizon":{"type":"string","enum":["week","month","year","decade"],"description":"Goal horizon (the section it appears under)"},"bottleneckNote":{"type":"string","description":"Current constraint limiting progress"},"lever":{"type":"string","description":"Highest-leverage action right now"}},"required":["title","horizon"]}},{"name":"update_goal","description":"Update goal fields: title, horizon (moves section), status, bottleneckNote, lever.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Goal ID"},"title":{"type":"string","description":"New title"},"horizon":{"type":"string","enum":["week","month","year","decade"],"description":"Move to this horizon (lands at the end of the section)"},"status":{"type":"string","enum":["active","completed","paused","dropped"],"description":"Goal status"},"bottleneckNote":{"type":"string","description":"Updated bottleneck constraint"},"lever":{"type":"string","description":"Updated lever action"}},"required":["id"]}},{"name":"delete_goal","description":"Delete a goal by id. Linked tasks are kept and unlinked, never deleted.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Goal ID"}},"required":["id"],"additionalProperties":false}},{"name":"get_focus_stats","description":"Today/week focus minutes, streak, task completion rates.","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"get_journal","description":"Read the user's daily journal note (markdown). Also lists recent days.","inputSchema":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD. Default: today"}},"additionalProperties":false}},{"name":"write_journal","description":"Write the user's daily journal note. Prefer mode=append; replace overwrites the whole day.","inputSchema":{"type":"object","properties":{"content":{"type":"string","description":"Markdown to write"},"date":{"type":"string","description":"YYYY-MM-DD. Default: today"},"mode":{"type":"string","enum":["append","replace"],"description":"Default: append"}},"required":["content"],"additionalProperties":false}}]}