Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,541Letters: 14Defects: 1,323counted 1 min ago
teppi

Server definition

Hash
sha256:b44e972cc2b345bf1e6d775f00fb9aa5c6c88b0b7863be6bae42ed93b105ec5c
What it is
What a remote MCP server returned when asked what it offers: 16 tools

The blob, as servednamed by its sha256

{ "instructions": "Focuh — focus timer and task manager. 16 tools.\n\nTOOLS:\n- Tasks: get_tasks, create_tasks, update_tasks, delete_tasks\n- Subtasks: get_subtasks, reorder_subtasks, create_tasks (parent or subtasks)\n- Loops: get_loops, pull_loops\n- Calendar: get_calendar\n- Goals: get_goals, create_goal, update_goal, delete_goal\n- Stats: get_focus_stats\n- Journal: get_journal, write_journal\n\nWORKFLOW: Call get_tasks first — it prints the id and date of every task.\nMutations return per-task confirmations — do NOT call get_tasks after one.\n\nEVERY WRITE TOOL IS BULK. Pass every task in one call, never loop.\n- To move days or change priority: update_tasks {date, priority}.\n To change anything, never delete and recreate — deleting a task loses\n its subtasks, focus time, goal link and position.\n- Create a task with its subtasks in one create_tasks call.\n\nLOOPS: undated recurring intentions in four buckets (pressing/important/\nbacklog/waiting). pull_loops copies one onto a day as a linked task — the\nloop stays. Loops carry no priority and no date; buckets are the triage.\nwaiting = parked; pulling or dating a waiting loop unparks it to backlog.\n\nREFERENCES: 'ref' takes the id shown in the list, #N, or an exact title.\n\nROUTING: Use get_calendar (not get_tasks) for scheduling — it has events.\n\nPOLICY: Only create tasks for actionable work, not events (lunch, gym).\n\nCurrent date: 2026-10-04 (Sunday)", "tools": [ { "description": "Create a goal in a horizon, with optional bottleneck note and lever.", "inputSchema": { "properties": { "bottleneckNote": { "maxLength": 5000, "type": "string" }, "horizon": { "enum": [ "week", "month", "year", "decade" ], "type": "string" }, "lever": { "maxLength": 5000, "type": "string" }, "title": { "maxLength": 500, "type": "string" } }, "required": [ "title", "horizon" ], "type": "object" }, "name": "create_goal", "outputSchema": null }, { "description": "Create tasks, each with optional nested subtasks. Defaults: today, 30 min.", "inputSchema": { "properties": { "tasks": { "description": "Tasks to create", "items": { "properties": { "date": { "description": "Date", "maxLength": 10, "type": "string" }, "estimatedMinutes": { "description": "Minutes", "maximum": 1440, "minimum": 0, "type": "number" }, "goalId": { "description": "Goal", "maxLength": 64, "type": "string" }, "loopBucket": { "description": "Undated loop; excludes date/priority; waiting=parked", "enum": [ "pressing", "important", "backlog", "waiting" ], "type": "string" }, "parent": { "description": "Parent", "maxLength": 500, "type": "string" }, "priority": { "description": "Priority", "enum": [ "critical", "important", "nice-to-have" ], "type": "string" }, "subtasks": { "items": { "properties": { "estimatedMinutes": { "maximum": 1440, "minimum": 0, "type": "number" }, "title": { "maxLength": 500, "type": "string" } }, "required": [ "title" ], "type": "object" }, "maxItems": 100, "type": "array" }, "title": { "description": "Title", "maxLength": 500, "type": "string" } }, "required": [ "title" ], "type": "object" }, "maxItems": 100, "type": "array" } }, "required": [ "tasks" ], "type": "object" }, "name": "create_tasks", "outputSchema": null }, { "description": "Delete a goal by id. Linked tasks are kept and unlinked, never deleted.", "inputSchema": { "additionalProperties": false, "properties": { "id": { "maxLength": 64, "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "delete_goal", "outputSchema": null }, { "description": "Delete tasks by ref, every task on a date, or all completed. Subtasks go too.", "inputSchema": { "properties": { "date": { "maxLength": 10, "type": "string" }, "filter": { "enum": [ "completed" ], "type": "string" }, "tasks": { "items": { "maxLength": 500, "type": "string" }, "maxItems": 100, "type": "array" } }, "type": "object" }, "name": "delete_tasks", "outputSchema": null }, { "description": "Events + scheduled/unscheduled tasks for a date. Check before scheduling.", "inputSchema": { "additionalProperties": false, "properties": { "date": { "maxLength": 10, "type": "string" } }, "type": "object" }, "name": "get_calendar", "outputSchema": null }, { "description": "Today/week focus minutes, streak, task completion rates.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_focus_stats", "outputSchema": null }, { "description": "Goals by horizon (week/month/year/decade) — exactly what the app's Goals view shows.", "inputSchema": { "additionalProperties": false, "properties": { "horizon": { "enum": [ "week", "month", "year", "decade" ], "type": "string" }, "status": { "enum": [ "active", "completed", "all" ], "type": "string" } }, "type": "object" }, "name": "get_goals", "outputSchema": null }, { "description": "Read a daily journal and recent dates. Preserve ^task markers when writing back.", "inputSchema": { "additionalProperties": false, "properties": { "date": { "maxLength": 10, "type": "string" } }, "type": "object" }, "name": "get_journal", "outputSchema": null }, { "description": "Loops — undated intentions in 4 buckets (pressing/important/backlog/waiting=parked). Call before pull_loops.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_loops", "outputSchema": null }, { "description": "List subtasks of a parent. Returns ids usable as refs.", "inputSchema": { "additionalProperties": false, "properties": { "ref": { "description": "Task id, #N, or title", "maxLength": 500, "type": "string" } }, "required": [ "ref" ], "type": "object" }, "name": "get_subtasks", "outputSchema": null }, { "description": "Today/tomorrow tasks with id, date and priority. Call first to get refs.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_tasks", "outputSchema": null }, { "description": "Copy loops onto a date as linked tasks — each loop stays in Loops. Idempotent per loop+date.", "inputSchema": { "properties": { "date": { "maxLength": 10, "type": "string" }, "loops": { "items": { "maxLength": 500, "type": "string" }, "maxItems": 100, "type": "array" } }, "required": [ "loops" ], "type": "object" }, "name": "pull_loops", "outputSchema": null }, { "description": "Reorder a parent's subtasks. Pass the complete new order, every one once.", "inputSchema": { "properties": { "order": { "items": { "maxLength": 64, "type": [ "number", "string" ] }, "maxItems": 100, "type": "array" }, "ref": { "description": "Task id, #N, or title", "maxLength": 500, "type": "string" } }, "required": [ "ref", "order" ], "type": "object" }, "name": "reorder_subtasks", "outputSchema": null }, { "description": "Update goal fields: title, horizon (moves section), status, bottleneckNote, lever.", "inputSchema": { "properties": { "bottleneckNote": { "maxLength": 5000, "type": "string" }, "horizon": { "enum": [ "week", "month", "year", "decade" ], "type": "string" }, "id": { "maxLength": 64, "type": "string" }, "lever": { "maxLength": 5000, "type": "string" }, "status": { "enum": [ "active", "completed", "paused", "dropped" ], "type": "string" }, "title": { "maxLength": 500, "type": "string" } }, "required": [ "id" ], "type": "object" }, "name": "update_goal", "outputSchema": null }, { "description": "Change tasks: date (moves the day), priority, title, estimate, done, time slot.", "inputSchema": { "properties": { "tasks": { "description": "Changes to apply, one entry per task", "items": { "properties": { "completed": { "description": "Done", "type": "boolean" }, "date": { "description": "Date", "maxLength": 10, "type": "string" }, "endTime": { "description": "End", "maxLength": 5, "type": "string" }, "estimatedMinutes": { "description": "Minutes", "maximum": 1440, "minimum": 0, "type": "number" }, "goalId": { "maxLength": 64, "type": "string" }, "loopBucket": { "description": "Into Loops or re-bucket; excl. date; waiting=parked", "enum": [ "pressing", "important", "backlog", "waiting" ], "type": "string" }, "priority": { "description": "Priority", "enum": [ "critical", "important", "nice-to-have" ], "type": "string" }, "ref": { "description": "Task id, #N, or title", "maxLength": 500, "type": "string" }, "startTime": { "description": "Start", "maxLength": 5, "type": "string" }, "title": { "description": "Title", "maxLength": 500, "type": "string" } }, "required": [ "ref" ], "type": "object" }, "maxItems": 100, "type": "array" } }, "required": [ "tasks" ], "type": "object" }, "name": "update_tasks", "outputSchema": null }, { "description": "Append or replace a journal. Read before replacing and preserve ^task markers.", "inputSchema": { "additionalProperties": false, "properties": { "content": { "maxLength": 100000, "type": "string" }, "date": { "maxLength": 10, "type": "string" }, "mode": { "enum": [ "append", "replace" ], "type": "string" } }, "required": [ "content" ], "type": "object" }, "name": "write_journal", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b44e972cc2b345bf1e6d775f00fb9aa5c6c88b0b7863be6bae42ed93b105ec5c | sha256sum