ADHD system of record for agents: tasks, goals, loops, calendar, focus stats.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer API key from Focuh Settings > MCP
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a goal in a horizon, with optional bottleneck note and lever.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a goal in a horizon, with optional bottleneck note and lever.
| Argument | Type | Description |
|---|---|---|
| lever | string | |
| title* | string | |
| horizon* | string | |
| bottleneckNote | string |
{
"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
}
}
}Create tasks, each with optional nested subtasks. Defaults: today, 30 min.
| Argument | Type | Description |
|---|---|---|
| tasks* | array | Tasks to create |
{
"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"
}
}
}Delete a goal by id. Linked tasks are kept and unlinked, never deleted.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}Delete tasks by ref, every task on a date, or all completed. Subtasks go too.
| Argument | Type | Description |
|---|---|---|
| date | string | |
| tasks | array | |
| filter | string |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
},
"tasks": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 100
},
"filter": {
"enum": [
"completed"
],
"type": "string"
}
}
}Events + scheduled/unscheduled tasks for a date. Check before scheduling.
| Argument | Type | Description |
|---|---|---|
| date | string |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false
}Today/week focus minutes, streak, task completion rates.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Goals by horizon (week/month/year/decade) — exactly what the app's Goals view shows.
| Argument | Type | Description |
|---|---|---|
| status | string | |
| horizon | string |
{
"type": "object",
"properties": {
"status": {
"enum": [
"active",
"completed",
"all"
],
"type": "string"
},
"horizon": {
"enum": [
"week",
"month",
"year",
"decade"
],
"type": "string"
}
},
"additionalProperties": false
}Loops — undated intentions in 4 buckets (pressing/important/backlog/waiting=parked). Call before pull_loops.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Read a day's note and recent dates. Preserve ^task markers when writing back.
| Argument | Type | Description |
|---|---|---|
| date | string |
{
"type": "object",
"properties": {
"date": {
"type": "string",
"maxLength": 10
}
},
"additionalProperties": false
}List subtasks of a parent. Returns ids usable as refs.
| Argument | Type | Description |
|---|---|---|
| ref* | string | Task id, #N, or title |
{
"type": "object",
"required": [
"ref"
],
"properties": {
"ref": {
"type": "string",
"maxLength": 500,
"description": "Task id, #N, or title"
}
},
"additionalProperties": false
}Today/tomorrow tasks with id, date and priority. Call first to get refs.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Copy loops onto a date as linked tasks — each loop stays in Loops. Idempotent per loop+date.
| Argument | Type | Description |
|---|---|---|
| date | string | |
| loops* | array |
{
"type": "object",
"required": [
"loops"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10
},
"loops": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxItems": 100
}
}
}Reorder a parent's subtasks. Pass the complete new order, every one once.
| Argument | Type | Description |
|---|---|---|
| ref* | string | Task id, #N, or title |
| order* | array |
{
"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
}
}
}Update goal fields: title, horizon (moves section), status, bottleneckNote, lever.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| lever | string | |
| title | string | |
| status | string | |
| horizon | string | |
| bottleneckNote | string |
{
"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
}
}
}Change tasks: date (moves the day), priority, title, estimate, done, time slot.
| Argument | Type | Description |
|---|---|---|
| tasks* | array | Changes to apply, one entry per task |
{
"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"
}
}
}Append to or replace a day's note. Read before replacing and preserve ^task markers.
| Argument | Type | Description |
|---|---|---|
| date | string | |
| mode | string | |
| content* | string |
{
"type": "object",
"required": [
"content"
],
"properties": {
"date": {
"type": "string",
"maxLength": 10
},
"mode": {
"enum": [
"append",
"replace"
],
"type": "string"
},
"content": {
"type": "string",
"maxLength": 100000
}
},
"additionalProperties": false
}