MCP Server

Framezone

app.framezone/framezone
Finance & Investing Healthcare Productivity Public & reachable MCP 2026-07-28

What this MCP does

Personal life-management dashboard for tasks, projects, habits, goals, notes, finances, books, workouts, nutrition, journaling, and contacts.

add_bookmark
Add bookmark
Save a bookmark URL with optional title, description, category, and tags.
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Bookmark URL'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags'}, 'title': {'type': 'string', 'description': 'Title (auto-detected from domain if omitted)'}, 'category': {'type': 'string', 'description': 'Category'}, 'description': {'type': 'string', 'description': 'Description'}}}
add_trade
Add trade
Record a buy or sell trade for a portfolio holding. Updates shares and average cost.
Input schema
{'type': 'object', 'required': ['holding_id', 'type', 'shares', 'price_per_share'], 'properties': {'type': {'enum': ['buy', 'sell'], 'type': 'string', 'description': 'Trade type'}, 'notes': {'type': 'string', 'description': 'Trade notes'}, 'shares': {'type': 'number', 'description': 'Number of shares'}, 'traded_at': {'type': 'string', 'description': 'Trade date (Y-m-d, defaults to now)'}, 'holding_id': {'type': 'integer', 'description': 'Holding ID'}, 'price_per_share': {'type': 'number', 'description': 'Price per share'}}}
add_transaction
Add transaction
Add a financial transaction (income or expense) to an account with optional category.
Input schema
{'type': 'object', 'required': ['amount', 'type', 'description'], 'properties': {'type': {'enum': ['income', 'expense', 'transfer'], 'type': 'string', 'description': 'Transaction type'}, 'notes': {'type': 'string', 'description': 'Additional notes'}, 'amount': {'type': 'number', 'description': 'Transaction amount (positive number)'}, 'account_id': {'type': 'integer', 'description': "Account ID (see list_accounts). Defaults to the user's main account."}, 'category_id': {'type': 'integer', 'description': 'Category ID'}, 'description': {'type': 'string', 'description': 'What is this transaction for'}, 'transaction_date': {'type': 'string', 'description': 'Date (Y-m-d, defaults to today)'}}}
add_wishlist_item
Add wishlist item
Add an item to the wishlist with price range, priority, and optional URL.
Input schema
{'type': 'object', 'required': ['name'], 'properties': {'url': {'type': 'string', 'description': 'Product URL'}, 'name': {'type': 'string', 'description': 'Item name'}, 'notes': {'type': 'string', 'description': 'Notes'}, 'category': {'type': 'string', 'description': 'Category'}, 'currency': {'type': 'string', 'description': "3-letter currency code, e.g. GBP. Defaults to the user's currency"}, 'priority': {'enum': ['high', 'medium', 'low', 'waiting'], 'type': 'string', 'description': 'Priority'}, 'price_max': {'type': 'number', 'description': 'Maximum price'}, 'price_min': {'type': 'number', 'description': 'Minimum price'}, 'description': {'type': 'string', 'description': 'Description'}}}
complete_task
Complete task
Toggle a task between completed and pending. Cascades to subtasks and handles recurrence.
Input schema
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'integer', 'description': 'ID of the task to complete/uncomplete'}}}
create_book
Create book
Add a book to your library. Set status to "reading", "wishlist", "to_check", etc.
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags'}, 'notes': {'type': 'string', 'description': 'Personal notes about the book'}, 'pages': {'type': 'integer', 'description': 'Total pages'}, 'title': {'type': 'string', 'description': 'Book title'}, 'author': {'type': 'string', 'description': 'Author name'}, 'rating': {'enum': [1, 2, 3, 4, 5], 'type': 'integer', 'description': 'Rating 1-5'}, 'status': {'enum': ['wishlist', 'reading', 'to_check', 'completed', 'abandoned'], 'type': 'string', 'description': 'Reading status'}}}
create_goal
Create goal
Create a new goal. Types: milestone (checklist), numeric (value tracking), habit, vision.
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'unit': {'type': 'string', 'description': 'Unit of measurement (for numeric goals)'}, 'title': {'type': 'string', 'description': 'Goal title'}, 'category': {'type': 'string', 'description': 'Category (e.g., Health, Career, Finance)'}, 'priority': {'enum': [1, 2, 3], 'type': 'integer', 'description': 'Priority: 1=high, 2=medium, 3=low'}, 'goal_type': {'enum': ['milestone', 'numeric', 'habit', 'vision'], 'type': 'string', 'description': 'Type'}, 'milestones': {'type': 'array', 'description': 'Milestones array [{title: "..."}] (for milestone goals)'}, 'description': {'type': 'string', 'description': 'Goal description'}, 'start_value': {'type': 'number', 'description': 'Starting value; defaults to current_value. Lets goals that go down (90 -> 80 kg) show progress'}, 'target_date': {'type': 'string', 'description': 'Target date (Y-m-d)'}, 'current_value': {'type': 'number', 'description': 'Current value (numeric goals, >= 0)'}, 'target_value_num': {'type': 'number', 'description': 'Target value (for numeric goals)'}}}
create_habit
Create habit
Create a new habit. Tracking types: check (daily toggle), count (hit a number), duration (minutes), times_per_week (weekly frequency).
Input schema
{'type': 'object', 'required': ['name'], 'properties': {'icon': {'type': 'string', 'description': 'Lucide icon name (lowercase, dashes), e.g. book-open'}, 'name': {'type': 'string', 'description': 'Habit name'}, 'unit': {'type': 'string', 'description': 'Unit label (e.g., "pages", "glasses")'}, 'color': {'type': 'string', 'description': 'Color as #rrggbb, e.g. #10AC84'}, 'time_of_day': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string', 'description': 'When during the day'}, 'target_value': {'type': 'integer', 'description': 'Target count value (for count type)'}, 'tracking_type': {'enum': ['check', 'count', 'duration', 'times_per_week'], 'type': 'string', 'description': 'Tracking type (default: check)'}, 'times_per_week': {'type': 'integer', 'description': 'Times per week target (for times_per_week type, 1-7)'}, 'target_duration': {'type': 'integer', 'description': 'Target duration in minutes (for duration type, 5-480)'}}}
create_note
Create note
Create a new note with title, body text, and optional tags.
Input schema
{'type': 'object', 'required': ['title', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Note body (plain text)'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags array'}, 'title': {'type': 'string', 'description': 'Note title'}, 'is_pinned': {'type': 'boolean', 'description': 'Pin this note'}, 'project_id': {'type': 'integer', 'description': 'Link to project by ID'}}}
create_project
Create project
Create a new project with tier (A/B/C), optional goal link, and target date.
Input schema
{'type': 'object', 'required': ['name'], 'properties': {'url': {'type': 'string', 'description': 'Project URL'}, 'icon': {'type': 'string', 'description': 'Lucide icon name'}, 'name': {'type': 'string', 'description': 'Project name'}, 'tier': {'enum': ['A', 'B', 'C'], 'type': 'string', 'description': 'Priority tier'}, 'color': {'type': 'string', 'description': 'Color hex code (e.g., #3B82F6)'}, 'status': {'enum': ['active', 'paused'], 'type': 'string', 'description': 'Initial status'}, 'goal_id': {'type': 'integer', 'description': 'Link to a goal by ID'}, 'description': {'type': 'string', 'description': 'Project description'}, 'target_date': {'type': 'string', 'description': 'Target completion date (Y-m-d)'}}}
create_quote
Create quote
Save a quote with author and optional book link.
Input schema
{'type': 'object', 'required': ['body'], 'properties': {'body': {'type': 'string', 'description': 'The quote text'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags'}, 'author': {'type': 'string', 'description': 'Who said/wrote it'}, 'source': {'type': 'string', 'description': 'Source (book title, speech, etc.)'}, 'book_id': {'type': 'integer', 'description': 'Link to a book by ID'}, 'is_favorite': {'type': 'boolean', 'description': 'Mark as favorite'}}}
create_subscription
Create subscription
Add a recurring subscription (monthly, yearly, or weekly).
Input schema
{'type': 'object', 'required': ['name', 'amount'], 'properties': {'url': {'type': 'string', 'description': 'Service URL (http or https)'}, 'name': {'type': 'string', 'description': 'Subscription name (e.g., Netflix, Spotify)'}, 'notes': {'type': 'string', 'description': 'Notes'}, 'amount': {'type': 'number', 'description': 'Amount per billing period'}, 'currency': {'type': 'string', 'description': "ISO 4217 currency code, e.g. USD, EUR, GBP. Defaults to the user's currency."}, 'frequency': {'enum': ['monthly', 'quarterly', 'yearly', 'weekly'], 'type': 'string', 'description': 'Billing frequency'}, 'category_id': {'type': 'integer', 'description': 'Category ID'}, 'next_billing_date': {'type': 'string', 'description': 'Next billing date (Y-m-d)'}}}
create_task
Create task
Create a new task with optional project, priority, due date, and recurrence.
Input schema
{'type': 'object', 'required': ['title'], 'properties': {'title': {'type': 'string', 'description': 'Task title'}, 'status': {'enum': ['pending', 'in_progress'], 'type': 'string', 'description': 'Initial status'}, 'is_top3': {'type': 'boolean', 'description': 'Mark as Top 3 focus task (max 3 allowed)'}, 'due_date': {'type': 'string', 'description': 'Due date (Y-m-d format)'}, 'priority': {'enum': [1, 2, 3], 'type': 'integer', 'description': 'Priority: 1=high, 2=medium, 3=low'}, 'project_id': {'type': 'integer', 'description': 'Assign to project by ID'}, 'recurrence': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string', 'description': 'Recurrence pattern'}, 'description': {'type': 'string', 'description': 'Task description'}}}
delete_body_measurement
Delete body measurement
Delete a body measurement that was logged by mistake. Two entries on one date drag the weight trend and the waist rule, so a bad one is worth removing rather than logging over.
Destructive
Input schema
{'type': 'object', 'properties': {'measured_at': {'type': 'string', 'description': 'Delete every measurement on this date (Y-m-d)'}, 'measurement_id': {'type': 'integer', 'description': 'Id of the measurement to delete'}}}
delete_book
Delete book
Delete a book from the library.
Destructive
Input schema
{'type': 'object', 'required': ['book_id'], 'properties': {'book_id': {'type': 'integer', 'description': 'ID of the book to delete'}}}
delete_bookmark
Delete bookmark
Delete a bookmark permanently.
Destructive
Input schema
{'type': 'object', 'required': ['bookmark_id'], 'properties': {'bookmark_id': {'type': 'integer', 'description': 'ID of the bookmark to delete'}}}
delete_note
Delete note
Soft-delete a note.
Destructive
Input schema
{'type': 'object', 'required': ['note_id'], 'properties': {'note_id': {'type': 'integer', 'description': 'ID of the note to delete'}}}
delete_task
Delete task
Soft-delete a task (can be restored later).
Destructive
Input schema
{'type': 'object', 'required': ['task_id'], 'properties': {'task_id': {'type': 'integer', 'description': 'ID of the task to delete'}}}
delete_workout
Delete workout
Delete a whole training session and every set in it. To remove only part of a session use delete_workout_sets.
Destructive
Input schema
{'type': 'object', 'properties': {'type': {'enum': ['push', 'pull', 'legs', 'upper', 'lower', 'full_body', 'zone2', 'cardio', 'other'], 'type': 'string', 'description': 'Narrow to one session type on that date'}, 'workout_id': {'type': 'integer', 'description': 'Session id — required only when a date carries more than one session'}, 'workout_date': {'type': 'string', 'description': 'Session date (Y-m-d, defaults to today)'}}}
delete_workout_sets
Delete workout sets
Remove sets from a session without touching the session itself. Use duplicates_only to undo a log that was sent twice, or exercise to drop one movement that was entered by mistake.
Destructive
Input schema
{'type': 'object', 'properties': {'exercise': {'type': 'string', 'description': 'Remove every set of this movement from the session, e.g. "leg press"'}, 'workout_id': {'type': 'integer', 'description': 'Session id — required only when a date carries more than one session'}, 'workout_date': {'type': 'string', 'description': 'Session date (Y-m-d, defaults to today)'}, 'duplicates_only': {'type': 'boolean', 'description': 'Remove blocks that repeat an identical earlier block in the same session — the fix for a log sent twice. Keeps the first occurrence.'}}}
get_daily_entry
Get daily entry
Get the daily journal entry for a date: mood, energy, focus, morning/evening notes.
Read only
Input schema
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'Date to get (Y-m-d, defaults to today)'}}}
get_fitness_summary
Get fitness summary
Current fitness state: weight trend vs target rate, waist thresholds, nutrition averages vs macro targets, training frequency and volume, plus which days are missing data.
Read only
Input schema
{'type': 'object', 'properties': {'training_days': {'type': 'integer', 'description': 'Training window in days (default 28)'}, 'nutrition_days': {'type': 'integer', 'description': 'Nutrition averaging window in days (default 7)'}, 'include_training_grid': {'type': 'boolean', 'description': 'Add the movement-by-session grid — what was lifted last time and whether it went up. Use it before advising on a session.'}}}
get_focus_summary
Get focus summary
Get focus time summary: total minutes, sessions, and breakdown by project for a date range.
Read only
Input schema
{'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'End date (Y-m-d, defaults to today)'}, 'from': {'type': 'string', 'description': 'Start date (Y-m-d, defaults to start of current week)'}}}
list_accounts
List accounts
List financial accounts with balances and types.
Read only
Input schema
{'type': 'object', 'properties': {}}
list_books
List books
List books with optional status filter. Returns title, author, status, progress, and rating.
Read only
Input schema
{'type': 'object', 'properties': {'status': {'enum': ['wishlist', 'reading', 'to_check', 'completed', 'abandoned'], 'type': 'string', 'description': 'Filter by status'}}}
list_categories
List categories
List transaction categories with type (income/expense) and monthly budget.
Read only
Input schema
{'type': 'object', 'properties': {'type': {'enum': ['income', 'expense', 'both'], 'type': 'string', 'description': 'Filter by type'}}}
list_contacts
List contacts
List contacts. Filter by relationship type or get contacts needing reach-out.
Read only
Input schema
{'type': 'object', 'properties': {'relationship': {'enum': ['family', 'friend', 'work', 'mentor', 'other'], 'type': 'string', 'description': 'Filter by type'}, 'needs_contact': {'type': 'boolean', 'description': 'Only contacts overdue for check-in'}, 'favorites_only': {'type': 'boolean', 'description': 'Only favorite contacts'}}}
list_exercises
List exercises
The movement catalog: canonical names, muscle groups and the aliases that resolve to them. Check here before logging sets — using the catalog name keeps one lift on one row instead of splitting its history across near-duplicates.
Read only
Input schema
{'type': 'object', 'properties': {'search': {'type': 'string', 'description': 'Match against names and aliases'}, 'muscle_group': {'type': 'string', 'description': 'chest, back, shoulders, biceps, triceps, legs, core, cardio'}, 'trained_only': {'type': 'boolean', 'description': 'Only movements this user has actually logged sets for'}}}
list_goals
List goals
List goals with progress, type, and status. Supports filtering by status or category.
Read only
Input schema
{'type': 'object', 'properties': {'status': {'enum': ['active', 'paused', 'completed', 'abandoned'], 'type': 'string', 'description': 'Filter by status'}, 'category': {'type': 'string', 'description': 'Filter by category'}}}
list_habits
List habits
List active habits with the value logged and done status for a date, plus current streaks. Streaks count from yesterday while today is still open; times_per_week habits have weekly streaks (streak_unit=weeks).
Read only
Input schema
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'Date to check (Y-m-d, defaults to today)'}}}
list_holdings
List holdings
List portfolio holdings with market value, P/L, and allocation. Totals are in the user's currency; holdings without a live price are valued at cost and have null P/L.
Read only
Input schema
{'type': 'object', 'properties': {}}
list_notes
List notes
List notes, optionally filtered by search query or tag. Returns title, tags, and truncated body.
Read only
Input schema
{'type': 'object', 'properties': {'tag': {'type': 'string', 'description': 'Filter by tag name'}, 'limit': {'type': 'integer', 'description': 'Max results (default: 20, max: 50)'}, 'search': {'type': 'string', 'description': 'Search query (matches title and body)'}}}
list_projects
List projects
List projects with task counts, tier, status, and linked goal.
Read only
Input schema
{'type': 'object', 'properties': {'tier': {'enum': ['A', 'B', 'C'], 'type': 'string', 'description': 'Filter by tier'}, 'status': {'enum': ['active', 'paused', 'completed', 'archived'], 'type': 'string', 'description': 'Filter by status. Archived projects are excluded unless you ask for them explicitly.'}, 'include_archived': {'type': 'boolean', 'description': 'Include archived projects in an unfiltered list (default: false)'}}}
list_quotes
List quotes
List saved quotes, optionally filtered by book or favorites only.
Read only
Input schema
{'type': 'object', 'properties': {'book_id': {'type': 'integer', 'description': 'Filter by book ID'}, 'favorites_only': {'type': 'boolean', 'description': 'Only show favorites'}}}
list_subscriptions
List subscriptions
List active subscriptions with amounts, frequency, and next billing date.
Read only
Input schema
{'type': 'object', 'properties': {}}
list_tasks
List tasks
List tasks, optionally filtered by status, priority, project, or top3 flag.
Read only
Input schema
{'type': 'object', 'properties': {'status': {'enum': ['pending', 'in_progress', 'completed'], 'type': 'string', 'description': 'Filter by status'}, 'is_top3': {'type': 'boolean', 'description': 'Only show Top 3 focus tasks'}, 'priority': {'enum': [1, 2, 3], 'type': 'integer', 'description': 'Filter by priority: 1=high, 2=medium, 3=low'}, 'project_id': {'type': 'integer', 'description': 'Filter by project ID'}, 'include_archived': {'type': 'boolean', 'description': 'Include archived tasks (default: false)'}}}
list_wishlist
List wishlist
List wishlist items with price, priority, and purchase status.
Read only
Input schema
{'type': 'object', 'properties': {'status': {'enum': ['pending', 'purchased', 'cancelled'], 'type': 'string', 'description': 'Filter by status (default: pending)'}}}
log_body_measurement
Log body measurement
Log body measurements: weight, body fat %, waist, chest, etc.
Input schema
{'type': 'object', 'properties': {'hips': {'type': 'number', 'description': 'Hips circumference in cm'}, 'neck': {'type': 'number', 'description': 'Neck circumference in cm'}, 'chest': {'type': 'number', 'description': 'Chest circumference in cm'}, 'notes': {'type': 'string', 'description': 'Notes'}, 'waist': {'type': 'number', 'description': 'Natural waist (narrowest point) in cm — the primary trend metric'}, 'vo2max': {'type': 'number', 'description': 'VO2 max'}, 'weight': {'type': 'number', 'description': 'Weight in kg'}, 'body_fat': {'type': 'number', 'description': 'Body fat percentage'}, 'left_arm': {'type': 'number', 'description': 'Left arm circumference in cm'}, 'left_quad': {'type': 'number', 'description': 'Left quad circumference in cm'}, 'right_arm': {'type': 'number', 'description': 'Right arm circumference in cm'}, 'shoulders': {'type': 'number', 'description': 'Shoulders circumference in cm'}, 'right_quad': {'type': 'number', 'description': 'Right quad circumference in cm'}, 'measured_at': {'type': 'string', 'description': 'Measurement date (Y-m-d, defaults to now)'}, 'waist_navel': {'type': 'number', 'description': 'Waist at the navel in cm — secondary'}}}
log_focus_session
Log focus session
Log a completed focus/pomodoro session with duration, project, and task link.
Input schema
{'type': 'object', 'required': ['duration_minutes'], 'properties': {'type': {'enum': ['pomodoro', 'timer'], 'type': 'string', 'description': 'Session type'}, 'label': {'type': 'string', 'description': 'Session label/name'}, 'task_id': {'type': 'integer', 'description': 'Link to task'}, 'project_id': {'type': 'integer', 'description': 'Link to project'}, 'started_at': {'type': 'string', 'description': 'When it started (Y-m-d H:i, defaults to now minus duration)'}, 'duration_minutes': {'type': 'integer', 'description': 'Session duration in minutes'}}}
log_habit
Log habit
Log a habit entry for a date. Sets the value for a day (0 clears it). Without a value the day is marked fully done.
Input schema
{'type': 'object', 'required': ['habit_id'], 'properties': {'date': {'type': 'string', 'description': 'Date to log (Y-m-d, defaults to today, cannot be in the future)'}, 'value': {'type': 'number', 'description': "Value to set for that day (default: the habit's full daily target, i.e. done). 0 clears the day. Count/duration habits are only done when value >= target."}, 'habit_id': {'type': 'integer', 'description': 'ID of the habit'}}}
log_nutrition
Log nutrition
Log a day of nutrition — day totals plus optional food-by-food line items. Re-sending the same date replaces that day.
Input schema
{'type': 'object', 'required': ['log_date'], 'properties': {'fat_g': {'type': 'integer', 'description': 'Total fat in grams'}, 'notes': {'type': 'string', 'description': 'Notes'}, 'carbs_g': {'type': 'integer', 'description': 'Total carbs in grams'}, 'entries': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Food-by-food line items. Each: {name, calories, protein_g, carbs_g, fat_g, fiber_g, sugar_g, sodium_mg, consumed_at "HH:MM"}'}, 'fiber_g': {'type': 'integer', 'description': 'Total fiber in grams'}, 'sugar_g': {'type': 'integer', 'description': 'Total sugar in grams'}, 'calories': {'type': 'integer', 'description': 'Total calories for the day'}, 'log_date': {'type': 'string', 'description': 'Date (Y-m-d)'}, 'protein_g': {'type': 'integer', 'description': 'Total protein in grams'}, 'sodium_mg': {'type': 'integer', 'description': 'Total sodium in mg'}, 'is_complete': {'type': 'boolean', 'description': 'False when the day was only partially logged — excluded from averages'}}}
log_workout
Log workout
Log a workout session with type, duration, calories, and heart rate.
Input schema
{'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['push', 'pull', 'legs', 'upper', 'lower', 'full_body', 'zone2', 'cardio', 'other'], 'type': 'string', 'description': 'Workout type'}, 'notes': {'type': 'string', 'description': 'Notes'}, 'avg_hr': {'type': 'integer', 'description': 'Average heart rate'}, 'max_hr': {'type': 'integer', 'description': 'Max heart rate'}, 'min_hr': {'type': 'integer', 'description': 'Min heart rate'}, 'calories': {'type': 'integer', 'description': 'Total calories burned'}, 'ended_at': {'type': 'string', 'description': 'Session end (Y-m-d H:i:s)'}, 'location': {'type': 'string', 'description': 'Where the session happened'}, 'started_at': {'type': 'string', 'description': 'Session start (Y-m-d H:i:s)'}, 'workout_date': {'type': 'string', 'description': 'Workout date (Y-m-d, defaults to today)'}, 'active_calories': {'type': 'integer', 'description': 'Active calories (Apple Watch)'}, 'duration_minutes': {'type': 'integer', 'description': 'Duration in minutes'}}}
log_workout_sets
Log workout sets
Add exercises and sets to a workout. Accepts gym shorthand ("lateral raise 5kg 4x12", "2min rowing machine") and creates the workout for that date if none exists.
Input schema
{'type': 'object', 'required': ['sets_text'], 'properties': {'type': {'enum': ['push', 'pull', 'legs', 'upper', 'lower', 'full_body', 'zone2', 'cardio', 'other'], 'type': 'string', 'description': 'Workout type. Sets go to the session of this type on that date; a new session is created when there is none.'}, 'notes': {'type': 'string', 'description': 'Notes'}, 'sets_text': {'type': 'string', 'description': 'One movement per line. Understands "4x12", "40kg", "2dk"/"90sn", "3 set". Example: "lateral raise 5kg 4x12\\nincline bench press machine 40kg 4x8"'}, 'workout_id': {'type': 'integer', 'description': 'Add to this session. Needed when the date holds more than one session of the same type.'}, 'workout_date': {'type': 'string', 'description': 'Date (Y-m-d, defaults to today)'}, 'allow_duplicates': {'type': 'boolean', 'description': 'Write blocks that already exist on that date with the same load and set count. Off by default — a repeated call is far more often a re-send than a second round.'}, 'duration_minutes': {'type': 'integer', 'description': 'Session duration in minutes'}}}
update_book
Update book
Update a book: change status, rating, notes, or update reading progress (current page).
Idempotent
Input schema
{'type': 'object', 'required': ['book_id'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags'}, 'notes': {'type': 'string', 'description': 'Personal notes'}, 'title': {'type': 'string', 'description': 'New title'}, 'author': {'type': 'string', 'description': 'New author'}, 'rating': {'enum': [1, 2, 3, 4, 5], 'type': 'integer', 'description': 'Rating 1-5'}, 'status': {'enum': ['wishlist', 'reading', 'to_check', 'completed', 'abandoned'], 'type': 'string', 'description': 'New status'}, 'book_id': {'type': 'integer', 'description': 'Book ID'}, 'current_page': {'type': 'integer', 'description': 'Current page (updates reading progress)'}}}
update_daily_entry
Update daily entry
Update the daily journal: set mood (1-5), energy (1-5), focus text, morning/evening notes.
Idempotent
Input schema
{'type': 'object', 'properties': {'date': {'type': 'string', 'description': 'Date to update (Y-m-d, defaults to today)'}, 'mood': {'enum': [1, 2, 3, 4, 5], 'type': 'integer', 'description': 'Mood rating 1-5'}, 'energy': {'enum': [1, 2, 3, 4, 5], 'type': 'integer', 'description': 'Energy rating 1-5'}, 'focus_text': {'type': 'string', 'description': "Today's focus/intention text (max 255 characters)"}, 'evening_note': {'type': 'string', 'description': 'Evening reflection note'}, 'morning_note': {'type': 'string', 'description': 'Morning journal note'}, 'focus_completed': {'type': 'boolean', 'description': 'Whether the focus was achieved'}}}
update_goal
Update goal
Update a goal: change status, progress, toggle milestones, or add a progress note.
Idempotent
Input schema
{'type': 'object', 'required': ['goal_id'], 'properties': {'note': {'type': 'string', 'description': 'Progress update note (saved in goal timeline)'}, 'title': {'type': 'string', 'description': 'New title'}, 'status': {'enum': ['active', 'paused', 'completed', 'abandoned'], 'type': 'string', 'description': 'New status'}, 'goal_id': {'type': 'integer', 'description': 'Goal ID'}, 'priority': {'enum': [1, 2, 3], 'type': 'integer', 'description': 'Priority: 1=high, 2=medium, 3=low'}, 'description': {'type': 'string', 'description': 'New description'}, 'start_value': {'type': 'number', 'description': 'Value the goal started from; progress is measured from it (use for goals that go down, e.g. 90 -> 80 kg)'}, 'target_date': {'type': 'string', 'description': 'New target date (Y-m-d)'}, 'current_value': {'type': 'number', 'description': 'Current value (for numeric goals, >= 0)'}, 'target_value_num': {'type': 'number', 'description': 'Target value (numeric and habit goals)'}, 'toggle_milestone': {'type': 'integer', 'description': 'Toggle milestone by index (0-based). Ticking the last open one completes the goal; unticking reopens it.'}}}
update_habit
Update habit
Update an existing habit. Only provided fields are changed.
Idempotent
Input schema
{'type': 'object', 'required': ['habit_id'], 'properties': {'icon': {'type': 'string', 'description': 'Lucide icon name (lowercase, dashes), e.g. book-open'}, 'name': {'type': 'string', 'description': 'New habit name'}, 'unit': {'type': 'string', 'description': 'New unit label'}, 'color': {'type': 'string', 'description': 'Color as #rrggbb, e.g. #10AC84'}, 'active': {'type': 'boolean', 'description': 'Enable or disable the habit'}, 'habit_id': {'type': 'integer', 'description': 'ID of the habit to update'}, 'time_of_day': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string', 'description': 'When during the day'}, 'target_value': {'type': 'integer', 'description': 'New target count value'}, 'tracking_type': {'enum': ['check', 'count', 'duration', 'times_per_week'], 'type': 'string', 'description': 'New tracking type'}, 'times_per_week': {'type': 'integer', 'description': 'New times per week target (1-7)'}, 'target_duration': {'type': 'integer', 'description': 'New target duration in minutes (5-480)'}}}
update_project
Update project
Update a project: change name, tier, status, goal link, or target date.
Idempotent
Input schema
{'type': 'object', 'required': ['project_id'], 'properties': {'url': {'type': 'string', 'description': 'Project URL'}, 'icon': {'type': 'string', 'description': 'Lucide icon name'}, 'name': {'type': 'string', 'description': 'New name'}, 'tier': {'enum': ['A', 'B', 'C'], 'type': 'string', 'description': 'New tier'}, 'color': {'type': 'string', 'description': 'Color hex'}, 'status': {'enum': ['active', 'paused', 'completed', 'archived'], 'type': 'string', 'description': 'New status'}, 'goal_id': {'type': 'integer', 'description': 'Link to goal by ID (0 to unlink)'}, 'project_id': {'type': 'integer', 'description': 'Project ID'}, 'description': {'type': 'string', 'description': 'New description'}, 'target_date': {'type': 'string', 'description': 'Target date (Y-m-d)'}}}
update_task
Update task
Update an existing task. Only provided fields are changed.
Idempotent
Input schema
{'type': 'object', 'required': ['task_id'], 'properties': {'title': {'type': 'string', 'description': 'New title'}, 'status': {'enum': ['pending', 'in_progress'], 'type': 'string', 'description': 'New status'}, 'is_top3': {'type': 'boolean', 'description': 'Set Top 3 status'}, 'task_id': {'type': 'integer', 'description': 'ID of the task to update'}, 'due_date': {'type': 'string', 'description': 'New due date (Y-m-d)'}, 'priority': {'enum': [1, 2, 3], 'type': 'integer', 'description': 'Priority: 1=high, 2=medium, 3=low'}, 'project_id': {'type': 'integer', 'description': 'Assign to project by ID'}, 'description': {'type': 'string', 'description': 'New description'}}}
update_wishlist_item
Update wishlist item
Update a wishlist item — mark it purchased or cancelled, change priority, price or notes. Purchased and cancelled items drop out of the active list.
Idempotent
Input schema
{'type': 'object', 'required': ['item_id'], 'properties': {'url': {'type': 'string', 'description': 'Product URL (http or https)'}, 'name': {'type': 'string', 'description': 'New name'}, 'notes': {'type': 'string', 'description': 'Notes — reasoning, alternatives considered, purchase trigger'}, 'status': {'enum': ['pending', 'purchased', 'cancelled'], 'type': 'string', 'description': 'pending = still wanted · purchased = bought · cancelled = no longer wanted'}, 'item_id': {'type': 'integer', 'description': 'Wishlist item ID'}, 'category': {'type': 'string', 'description': 'Category'}, 'currency': {'type': 'string', 'description': '3-letter currency code of the prices, e.g. GBP'}, 'priority': {'enum': ['high', 'medium', 'low', 'waiting'], 'type': 'string', 'description': 'high | medium | low | waiting (waiting = wanted but gated on a trigger)'}, 'price_max': {'type': 'number', 'description': 'Upper price estimate'}, 'price_min': {'type': 'number', 'description': 'Lower price estimate'}, 'purchased_at': {'type': 'string', 'description': 'Purchase date (Y-m-d). Defaults to today when status becomes purchased.'}}}
Added
list_contacts
Sept. 26, 2026, 2:40 a.m.
Added
update_wishlist_item
Sept. 26, 2026, 2:40 a.m.
Added
add_wishlist_item
Sept. 26, 2026, 2:40 a.m.
Added
list_wishlist
Sept. 26, 2026, 2:40 a.m.
Added
delete_body_measurement
Sept. 26, 2026, 2:40 a.m.
Added
delete_workout_sets
Sept. 26, 2026, 2:40 a.m.
Added
delete_workout
Sept. 26, 2026, 2:40 a.m.
Added
get_fitness_summary
Sept. 26, 2026, 2:40 a.m.
Added
list_exercises
Sept. 26, 2026, 2:40 a.m.
Added
log_nutrition
Sept. 26, 2026, 2:40 a.m.
Added
log_body_measurement
Sept. 26, 2026, 2:40 a.m.
Added
log_workout_sets
Sept. 26, 2026, 2:40 a.m.
Added
log_workout
Sept. 26, 2026, 2:40 a.m.
Added
get_focus_summary
Sept. 26, 2026, 2:40 a.m.
Added
log_focus_session
Sept. 26, 2026, 2:40 a.m.
Added
add_trade
Sept. 26, 2026, 2:40 a.m.
Added
list_holdings
Sept. 26, 2026, 2:40 a.m.
Added
create_subscription
Sept. 26, 2026, 2:40 a.m.
Added
list_subscriptions
Sept. 26, 2026, 2:40 a.m.
Added
add_transaction
Sept. 26, 2026, 2:40 a.m.
Added
list_categories
Sept. 26, 2026, 2:40 a.m.
Added
list_accounts
Sept. 26, 2026, 2:40 a.m.
Added
delete_bookmark
Sept. 26, 2026, 2:40 a.m.
Added
add_bookmark
Sept. 26, 2026, 2:40 a.m.
Added
create_quote
Sept. 26, 2026, 2:40 a.m.
Added
list_quotes
Sept. 26, 2026, 2:40 a.m.
Added
delete_book
Sept. 26, 2026, 2:40 a.m.
Added
update_book
Sept. 26, 2026, 2:40 a.m.
Added
create_book
Sept. 26, 2026, 2:40 a.m.
Added
list_books
Sept. 26, 2026, 2:40 a.m.