Focuh
ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin reorder_subtasks
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"focuh": {
"url": "https://www.focuh.com/api/mcp"
}
}
}Remote-Endpunkte
https://www.focuh.com/api/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (16)
🟢get_tasks
Today/tomorrow tasks with id, date and priority. Call first to get refs.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡create_tasks(tasks)
Create tasks, each with optional nested subtasks. Defaults: today, 30 min.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢get_focus_stats
Today/week focus minutes, streak, task completion rates.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_journal(date)
Read a daily journal and recent dates. Preserve ^task markers when writing back.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"type": "object",
"properties": {
"content": {
"type": "string",
"maxLength": 100000
},
"date": {
"type": "string",
"maxLength": 10
},
"mode": {
"type": "string",
"enum": [
"append",
"replace"
]
}
},
"required": [
"content"
],
"additionalProperties": false
}Community
Nachweis