Coach AI
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| COACH_DB_PATH | No | The path to the SQLite database file. By default, Coach AI stores data in data/coach.db. | data/coach.db |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| add_todoA | Add todo(s) with enhanced temporal and context fields. SINGLE MODE: Provide title and optional parameters BATCH MODE: Provide todos_batch as JSON string New fields for temporal planning:
Auto-categorization (both modes):
Batch mode example (JSON string): Args: title: Task title (required for single mode) priority: Priority level - 'low', 'medium', or 'high' notes: Additional notes or context quick: Mark as quick win timeframe: When to do this (this_week, next_sprint, this_month, this_quarter, someday) energy_required: Energy level (high, medium, low) theme_tag: Work type (sprint_work, strategic, admin, learning) linked_goal_id: ID of related goal blocked_by: What's blocking this todos_batch: JSON string of todos for batch mode |
| list_todosB | List todos filtered by status. Args: status: Filter by 'active', 'completed', or 'all' (default: 'active') |
| complete_todoB | Mark a todo as complete. Args: todo_id: The ID of the todo to complete |
| delete_todoB | Delete a todo permanently. Args: todo_id: The ID of the todo to delete |
| parse_task_listA | Parse natural language task list into structured todos (does NOT create them). Use this to preview what will be created before committing. Then use add_todo(todos_batch=...) to create them. Or use brain_dump_tasks() for a one-step workflow. Supports multiple formats:
Smart extraction:
Args: text: Natural language task list default_priority: Default priority for tasks default_timeframe: Default timeframe for tasks Returns: JSON string of parsed todos |
| brain_dump_tasksA | ADHD-friendly brain dump: paste a list of tasks and get them into the system. Workflow:
Supports multiple formats:
Smart extraction:
Example: Args: text: Natural language task list auto_create: Create todos immediately (default: True) default_priority: Default priority for unparsed tasks default_timeframe: Default timeframe for unparsed tasks Returns: Summary of created tasks with suggestions |
| set_todo_timeframeB | Assign temporal timeframe to a todo. Args: todo_id: ID of the todo timeframe: One of: this_week, next_sprint, this_month, this_quarter, someday reason: Optional reason for this timeframe Returns: Confirmation message |
| batch_assign_timeframesA | Bulk assign timeframes to multiple todos (for weekly planning). Args: assignments_json: JSON array of {todo_id, timeframe} objects Example: Returns: Summary of updates |
| add_task_contextB | Add context note to task (where left off, why doing it, etc). Args: todo_id: ID of the todo context: Context note to add context_type: Type of context (progress, why, blocker, link) Returns: Confirmation message |
| break_down_taskA | Use LLM to decompose large task into smaller subtasks. This returns a prompt for Claude to generate subtasks. After Claude responds, call this tool again with the response to create the subtasks in the database. Workflow:
Args: todo_id: ID of the task to break down subtask_count: Target number of subtasks (default: 5) Returns: Prompt for Claude to generate subtasks, or confirmation if creating them |
| set_goalB | Set a new goal. Args: goal: The goal description timeframe: When you want to achieve this (e.g., 'this week', 'this month', 'long-term') category: Category of the goal (e.g., 'career', 'health', 'personal', 'general') |
| list_goalsB | List all goals. Args: status: Filter by 'active' or 'all' (default: 'active') |
| add_user_factB | Remember an important fact about the user. Use this to remember preferences, patterns, challenges, strengths, routines, etc. These facts help personalize recommendations and support. Args: fact: The fact to remember (e.g., "Works best in mornings", "Struggles with context switching") category: Category - 'preferences', 'challenges', 'strengths', 'patterns', 'routines', or 'general' |
| get_user_contextB | Get relevant context about the user (facts, patterns, preferences). This retrieves stored facts about the user to help personalize responses. |
| log_accomplishmentB | Log something the user accomplished. This helps track progress and provides positive reinforcement. Args: description: What the user accomplished |
| get_recommendationA | Get a personalized recommendation for what to do next. This analyzes the user's current todos, goals, recent activity, and known facts to suggest the most appropriate next action. This is the core "What should I do now?" feature designed to help with decision paralysis. |
| start_my_dayA | Start your day with smart task selection and daily note creation. ENHANCED - Obsidian-first workflow:
Selection algorithm picks:
Perfect for: "Start my day" or "What should I focus on today?" Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) Returns: Daily briefing with selected tasks, goals, and motivational message |
| sync_daily_noteA | Sync completed tasks from Obsidian daily note to database. NEW TOOL - Bidirectional sync: Reads markdown checkboxes (- [x]) from your daily note and automatically marks matching todos as complete in the database. Uses fuzzy matching to handle partial text matches. This enables an Obsidian-first workflow: work in your daily note, check off tasks there, then sync back to Coach AI's database. Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) Returns: Summary of tasks synced and any warnings about unmatched checkboxes |
| create_daily_noteA | Create today's (or specified) daily note with smart population. Automatically pulls in:
Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) |
| sync_from_daily_noteA | Read today's (or specified) daily note and sync tasks. Extracts tasks from your daily note and ensures they're in the system. Call this to refresh Coach AI's view of your daily note. Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) |
| get_daily_note_pathA | Get the file path to today's (or specified) daily note. Useful for opening the note in Obsidian or checking if it exists. Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) |
| read_daily_note_fullA | Read the entire daily note including all content and sections. This gives you complete access to the note for analysis, summarization, or extracting information from any section. Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) Returns: Full note content with metadata and all sections |
| read_daily_note_sectionA | Read a specific section from the daily note. Use this to read any section by name, such as "Notes", "Tasks", "Focus for Today", etc. Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) section: Name of the section to read (without ## or emoji) Returns: Content of that section |
| write_daily_note_sectionA | Write or append content to a specific section in the daily note. Use this to add summaries, insights, reflections, or any other content to specific sections of your daily note. Args: section: Name of the section to write to (e.g., "Notes", "Coach AI Insights") content: Content to write date_str: Optional date in YYYY-MM-DD format (defaults to today) append: If True, append to existing content. If False, replace it. Returns: Confirmation message |
| add_daily_note_sectionB | Add a new section to the daily note. Creates a new section with a heading and initial content. Args: section_name: Name for the new section content: Initial content for the section date_str: Optional date in YYYY-MM-DD format (defaults to today) emoji: Optional emoji to prefix the section heading (e.g., "📊", "💡") Returns: Confirmation message |
| generate_daily_summaryA | Generate an end-of-day summary based on the daily note. Analyzes the day's tasks, accomplishments, notes, and provides insights. This summary can be added back to the daily note or used to plan tomorrow. Args: date_str: Optional date in YYYY-MM-DD format (defaults to today) Returns: Generated summary with insights and recommendations |
| start_my_weekA | Weekly planning ritual: review last week, plan this week. Provides a structured weekly planning session with:
Perfect for: "Plan my week" or "Weekly review" Args: week_start_date_str: Optional Monday date in YYYY-MM-DD format (defaults to next Monday) Returns: Comprehensive weekly planning summary |
| set_week_themeA | Configure work themes for each day of the week. Sets which type of work to focus on each day (e.g., "Fridays = strategic work"). This influences task selection in start_my_day(). Args: week_start_date_str: Monday date in YYYY-MM-DD format themes_json: JSON object with day themes, e.g.: {"monday": "sprint_work", "friday": "strategic"} focus_todo_ids: Optional comma-separated todo IDs to focus on this week Returns: Confirmation message |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/94aharris/coach-ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server