Framezone
Your life dashboard for AI: tasks, habits, goals, budgets, workouts, nutrition, journal, notes.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"framezone": {
"url": "https://framezone.app/mcp"
}
}
}Puntos de conexión remotos
https://framezone.app/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (50)
🟢list_tasks(status, priority, project_id, is_top3, include_archived)
List tasks, optionally filtered by status, priority, project, or top3 flag.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Filter by status",
"enum": [
"pending",
"in_progress",
"completed"
],
"type": "string"
},
"priority": {
"description": "Filter by priority: 1=high, 2=medium, 3=low",
"enum": [
1,
2,
3
],
"type": "integer"
},
"project_id": {
"description": "Filter by project ID",
"type": "integer"
},
"is_top3": {
"description": "Only show Top 3 focus tasks",
"type": "boolean"
},
"include_archived": {
"description": "Include archived tasks (default: false)",
"type": "boolean"
}
}
}🟡create_task(title, description, priority, status, due_date, ...)
Create a new task with optional project, priority, due date, and recurrence.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"description": "Task title",
"type": "string"
},
"description": {
"description": "Task description",
"type": "string"
},
"priority": {
"description": "Priority: 1=high, 2=medium, 3=low",
"enum": [
1,
2,
3
],
"type": "integer"
},
"status": {
"description": "Initial status",
"enum": [
"pending",
"in_progress"
],
"type": "string"
},
"due_date": {
"description": "Due date (Y-m-d format)",
"type": "string"
},
"is_top3": {
"description": "Mark as Top 3 focus task (max 3 allowed)",
"type": "boolean"
},
"project_id": {
"description": "Assign to project by ID",
"type": "integer"
},
"recurrence": {
"description": "Recurrence pattern",
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string"
}
},
"required": [
"title"
]
}🟡update_task(task_id, title, description, priority, status, ...)
Update an existing task. Only provided fields are changed.
Esquema de entrada
{
"type": "object",
"properties": {
"task_id": {
"description": "ID of the task to update",
"type": "integer"
},
"title": {
"description": "New title",
"type": "string"
},
"description": {
"description": "New description",
"type": "string"
},
"priority": {
"description": "Priority: 1=high, 2=medium, 3=low",
"enum": [
1,
2,
3
],
"type": "integer"
},
"status": {
"description": "New status",
"enum": [
"pending",
"in_progress"
],
"type": "string"
},
"due_date": {
"description": "New due date (Y-m-d)",
"type": "string"
},
"is_top3": {
"description": "Set Top 3 status",
"type": "boolean"
},
"project_id": {
"description": "Assign to project by ID",
"type": "integer"
}
},
"required": [
"task_id"
]
}⚪complete_task(task_id)
Toggle a task between completed and pending. Cascades to subtasks and handles recurrence.
Esquema de entrada
{
"type": "object",
"properties": {
"task_id": {
"description": "ID of the task to complete/uncomplete",
"type": "integer"
}
},
"required": [
"task_id"
]
}🔴delete_task(task_id)
Soft-delete a task (can be restored later).
Esquema de entrada
{
"type": "object",
"properties": {
"task_id": {
"description": "ID of the task to delete",
"type": "integer"
}
},
"required": [
"task_id"
]
}🟢list_habits(date)
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).
Esquema de entrada
{
"type": "object",
"properties": {
"date": {
"description": "Date to check (Y-m-d, defaults to today)",
"type": "string"
}
}
}🟡create_habit(name, tracking_type, target_value, unit, target_duration, ...)
Create a new habit. Tracking types: check (daily toggle), count (hit a number), duration (minutes), times_per_week (weekly frequency).
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Habit name",
"type": "string"
},
"tracking_type": {
"description": "Tracking type (default: check)",
"enum": [
"check",
"count",
"duration",
"times_per_week"
],
"type": "string"
},
"target_value": {
"description": "Target count value (for count type)",
"type": "integer"
},
"unit": {
"description": "Unit label (e.g., \"pages\", \"glasses\")",
"type": "string"
},
"target_duration": {
"description": "Target duration in minutes (for duration type, 5-480)",
"type": "integer"
},
"times_per_week": {
"description": "Times per week target (for times_per_week type, 1-7)",
"type": "integer"
},
"time_of_day": {
"description": "When during the day",
"enum": [
"morning",
"afternoon",
"evening"
],
"type": "string"
},
"icon": {
"description": "Lucide icon name (lowercase, dashes), e.g. book-open",
"type": "string"
},
"color": {
"description": "Color as #rrggbb, e.g. #10AC84",
"type": "string"
}
},
"required": [
"name"
]
}🟡update_habit(habit_id, name, tracking_type, target_value, unit, ...)
Update an existing habit. Only provided fields are changed.
Esquema de entrada
{
"type": "object",
"properties": {
"habit_id": {
"description": "ID of the habit to update",
"type": "integer"
},
"name": {
"description": "New habit name",
"type": "string"
},
"tracking_type": {
"description": "New tracking type",
"enum": [
"check",
"count",
"duration",
"times_per_week"
],
"type": "string"
},
"target_value": {
"description": "New target count value",
"type": "integer"
},
"unit": {
"description": "New unit label",
"type": "string"
},
"target_duration": {
"description": "New target duration in minutes (5-480)",
"type": "integer"
},
"times_per_week": {
"description": "New times per week target (1-7)",
"type": "integer"
},
"time_of_day": {
"description": "When during the day",
"enum": [
"morning",
"afternoon",
"evening"
],
"type": "string"
},
"icon": {
"description": "Lucide icon name (lowercase, dashes), e.g. book-open",
"type": "string"
},
"color": {
"description": "Color as #rrggbb, e.g. #10AC84",
"type": "string"
},
"active": {
"description": "Enable or disable the habit",
"type": "boolean"
}
},
"required": [
"habit_id"
]
}⚪log_habit(habit_id, date, value)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"habit_id": {
"description": "ID of the habit",
"type": "integer"
},
"date": {
"description": "Date to log (Y-m-d, defaults to today, cannot be in the future)",
"type": "string"
},
"value": {
"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.",
"type": "number"
}
},
"required": [
"habit_id"
]
}🟢list_goals(status, category)
List goals with progress, type, and status. Supports filtering by status or category.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Filter by status",
"enum": [
"active",
"paused",
"completed",
"abandoned"
],
"type": "string"
},
"category": {
"description": "Filter by category",
"type": "string"
}
}
}🟡create_goal(title, description, category, goal_type, target_date, ...)
Create a new goal. Types: milestone (checklist), numeric (value tracking), habit, vision.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"description": "Goal title",
"type": "string"
},
"description": {
"description": "Goal description",
"type": "string"
},
"category": {
"description": "Category (e.g., Health, Career, Finance)",
"type": "string"
},
"goal_type": {
"description": "Type",
"enum": [
"milestone",
"numeric",
"habit",
"vision"
],
"type": "string"
},
"target_date": {
"description": "Target date (Y-m-d)",
"type": "string"
},
"target_value_num": {
"description": "Target value (for numeric goals)",
"type": "number"
},
"unit": {
"description": "Unit of measurement (for numeric goals)",
"type": "string"
},
"current_value": {
"description": "Current value (numeric goals, >= 0)",
"type": "number"
},
"start_value": {
"description": "Starting value; defaults to current_value. Lets goals that go down (90 -> 80 kg) show progress",
"type": "number"
},
"milestones": {
"description": "Milestones array [{title: \"...\"}] (for milestone goals)",
"type": "array"
},
"priority": {
"description": "Priority: 1=high, 2=medium, 3=low",
"enum": [
1,
2,
3
],
"type": "integer"
}
},
"required": [
"title"
]
}🟡update_goal(goal_id, title, description, status, current_value, ...)
Update a goal: change status, progress, toggle milestones, or add a progress note.
Esquema de entrada
{
"type": "object",
"properties": {
"goal_id": {
"description": "Goal ID",
"type": "integer"
},
"title": {
"description": "New title",
"type": "string"
},
"description": {
"description": "New description",
"type": "string"
},
"status": {
"description": "New status",
"enum": [
"active",
"paused",
"completed",
"abandoned"
],
"type": "string"
},
"current_value": {
"description": "Current value (for numeric goals, >= 0)",
"type": "number"
},
"start_value": {
"description": "Value the goal started from; progress is measured from it (use for goals that go down, e.g. 90 -> 80 kg)",
"type": "number"
},
"target_value_num": {
"description": "Target value (numeric and habit goals)",
"type": "number"
},
"toggle_milestone": {
"description": "Toggle milestone by index (0-based). Ticking the last open one completes the goal; unticking reopens it.",
"type": "integer"
},
"note": {
"description": "Progress update note (saved in goal timeline)",
"type": "string"
},
"target_date": {
"description": "New target date (Y-m-d)",
"type": "string"
},
"priority": {
"description": "Priority: 1=high, 2=medium, 3=low",
"enum": [
1,
2,
3
],
"type": "integer"
}
},
"required": [
"goal_id"
]
}🟢list_projects(status, tier, include_archived)
List projects with task counts, tier, status, and linked goal.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Filter by status. Archived projects are excluded unless you ask for them explicitly.",
"enum": [
"active",
"paused",
"completed",
"archived"
],
"type": "string"
},
"tier": {
"description": "Filter by tier",
"enum": [
"A",
"B",
"C"
],
"type": "string"
},
"include_archived": {
"description": "Include archived projects in an unfiltered list (default: false)",
"type": "boolean"
}
}
}🟡create_project(name, description, tier, status, url, ...)
Create a new project with tier (A/B/C), optional goal link, and target date.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Project name",
"type": "string"
},
"description": {
"description": "Project description",
"type": "string"
},
"tier": {
"description": "Priority tier",
"enum": [
"A",
"B",
"C"
],
"type": "string"
},
"status": {
"description": "Initial status",
"enum": [
"active",
"paused"
],
"type": "string"
},
"url": {
"description": "Project URL",
"type": "string"
},
"goal_id": {
"description": "Link to a goal by ID",
"type": "integer"
},
"target_date": {
"description": "Target completion date (Y-m-d)",
"type": "string"
},
"color": {
"description": "Color hex code (e.g., #3B82F6)",
"type": "string"
},
"icon": {
"description": "Lucide icon name",
"type": "string"
}
},
"required": [
"name"
]
}🟡update_project(project_id, name, description, tier, status, ...)
Update a project: change name, tier, status, goal link, or target date.
Esquema de entrada
{
"type": "object",
"properties": {
"project_id": {
"description": "Project ID",
"type": "integer"
},
"name": {
"description": "New name",
"type": "string"
},
"description": {
"description": "New description",
"type": "string"
},
"tier": {
"description": "New tier",
"enum": [
"A",
"B",
"C"
],
"type": "string"
},
"status": {
"description": "New status",
"enum": [
"active",
"paused",
"completed",
"archived"
],
"type": "string"
},
"url": {
"description": "Project URL",
"type": "string"
},
"goal_id": {
"description": "Link to goal by ID (0 to unlink)",
"type": "integer"
},
"target_date": {
"description": "Target date (Y-m-d)",
"type": "string"
},
"color": {
"description": "Color hex",
"type": "string"
},
"icon": {
"description": "Lucide icon name",
"type": "string"
}
},
"required": [
"project_id"
]
}🟢get_daily_entry(date)
Get the daily journal entry for a date: mood, energy, focus, morning/evening notes.
Esquema de entrada
{
"type": "object",
"properties": {
"date": {
"description": "Date to get (Y-m-d, defaults to today)",
"type": "string"
}
}
}🟡update_daily_entry(date, mood, energy, focus_text, focus_completed, ...)
Update the daily journal: set mood (1-5), energy (1-5), focus text, morning/evening notes.
Esquema de entrada
{
"type": "object",
"properties": {
"date": {
"description": "Date to update (Y-m-d, defaults to today)",
"type": "string"
},
"mood": {
"description": "Mood rating 1-5",
"enum": [
1,
2,
3,
4,
5
],
"type": "integer"
},
"energy": {
"description": "Energy rating 1-5",
"enum": [
1,
2,
3,
4,
5
],
"type": "integer"
},
"focus_text": {
"description": "Today's focus/intention text (max 255 characters)",
"type": "string"
},
"focus_completed": {
"description": "Whether the focus was achieved",
"type": "boolean"
},
"morning_note": {
"description": "Morning journal note",
"type": "string"
},
"evening_note": {
"description": "Evening reflection note",
"type": "string"
}
}
}🟢list_notes(search, tag, limit)
List notes, optionally filtered by search query or tag. Returns title, tags, and truncated body.
Esquema de entrada
{
"type": "object",
"properties": {
"search": {
"description": "Search query (matches title and body)",
"type": "string"
},
"tag": {
"description": "Filter by tag name",
"type": "string"
},
"limit": {
"description": "Max results (default: 20, max: 50)",
"type": "integer"
}
}
}🟡create_note(title, body, tags, project_id, is_pinned)
Create a new note with title, body text, and optional tags.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"description": "Note title",
"type": "string"
},
"body": {
"description": "Note body (plain text)",
"type": "string"
},
"tags": {
"description": "Tags array",
"items": {
"type": "string"
},
"type": "array"
},
"project_id": {
"description": "Link to project by ID",
"type": "integer"
},
"is_pinned": {
"description": "Pin this note",
"type": "boolean"
}
},
"required": [
"title",
"body"
]
}🔴delete_note(note_id)
Soft-delete a note.
Esquema de entrada
{
"type": "object",
"properties": {
"note_id": {
"description": "ID of the note to delete",
"type": "integer"
}
},
"required": [
"note_id"
]
}🟢list_books(status)
List books with optional status filter. Returns title, author, status, progress, and rating.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Filter by status",
"enum": [
"wishlist",
"reading",
"to_check",
"completed",
"abandoned"
],
"type": "string"
}
}
}🟡create_book(title, author, pages, status, rating, ...)
Add a book to your library. Set status to "reading", "wishlist", "to_check", etc.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"description": "Book title",
"type": "string"
},
"author": {
"description": "Author name",
"type": "string"
},
"pages": {
"description": "Total pages",
"type": "integer"
},
"status": {
"description": "Reading status",
"enum": [
"wishlist",
"reading",
"to_check",
"completed",
"abandoned"
],
"type": "string"
},
"rating": {
"description": "Rating 1-5",
"enum": [
1,
2,
3,
4,
5
],
"type": "integer"
},
"notes": {
"description": "Personal notes about the book",
"type": "string"
},
"tags": {
"description": "Tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"title"
]
}🟡update_book(book_id, title, author, status, rating, ...)
Update a book: change status, rating, notes, or update reading progress (current page).
Esquema de entrada
{
"type": "object",
"properties": {
"book_id": {
"description": "Book ID",
"type": "integer"
},
"title": {
"description": "New title",
"type": "string"
},
"author": {
"description": "New author",
"type": "string"
},
"status": {
"description": "New status",
"enum": [
"wishlist",
"reading",
"to_check",
"completed",
"abandoned"
],
"type": "string"
},
"rating": {
"description": "Rating 1-5",
"enum": [
1,
2,
3,
4,
5
],
"type": "integer"
},
"current_page": {
"description": "Current page (updates reading progress)",
"type": "integer"
},
"notes": {
"description": "Personal notes",
"type": "string"
},
"tags": {
"description": "Tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"book_id"
]
}🔴delete_book(book_id)
Delete a book from the library.
Esquema de entrada
{
"type": "object",
"properties": {
"book_id": {
"description": "ID of the book to delete",
"type": "integer"
}
},
"required": [
"book_id"
]
}🟢list_quotes(book_id, favorites_only)
List saved quotes, optionally filtered by book or favorites only.
Esquema de entrada
{
"type": "object",
"properties": {
"book_id": {
"description": "Filter by book ID",
"type": "integer"
},
"favorites_only": {
"description": "Only show favorites",
"type": "boolean"
}
}
}🟡create_quote(body, author, source, book_id, is_favorite, ...)
Save a quote with author and optional book link.
Esquema de entrada
{
"type": "object",
"properties": {
"body": {
"description": "The quote text",
"type": "string"
},
"author": {
"description": "Who said/wrote it",
"type": "string"
},
"source": {
"description": "Source (book title, speech, etc.)",
"type": "string"
},
"book_id": {
"description": "Link to a book by ID",
"type": "integer"
},
"is_favorite": {
"description": "Mark as favorite",
"type": "boolean"
},
"tags": {
"description": "Tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"body"
]
}🟡add_bookmark(url, title, description, category, tags)
Save a bookmark URL with optional title, description, category, and tags.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"description": "Bookmark URL",
"type": "string"
},
"title": {
"description": "Title (auto-detected from domain if omitted)",
"type": "string"
},
"description": {
"description": "Description",
"type": "string"
},
"category": {
"description": "Category",
"type": "string"
},
"tags": {
"description": "Tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"url"
]
}🔴delete_bookmark(bookmark_id)
Delete a bookmark permanently.
Esquema de entrada
{
"type": "object",
"properties": {
"bookmark_id": {
"description": "ID of the bookmark to delete",
"type": "integer"
}
},
"required": [
"bookmark_id"
]
}🟢list_accounts
List financial accounts with balances and types.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟢list_categories(type)
List transaction categories with type (income/expense) and monthly budget.
Esquema de entrada
{
"type": "object",
"properties": {
"type": {
"description": "Filter by type",
"enum": [
"income",
"expense",
"both"
],
"type": "string"
}
}
}🟡add_transaction(amount, type, description, transaction_date, account_id, ...)
Add a financial transaction (income or expense) to an account with optional category.
Esquema de entrada
{
"type": "object",
"properties": {
"amount": {
"description": "Transaction amount (positive number)",
"type": "number"
},
"type": {
"description": "Transaction type",
"enum": [
"income",
"expense",
"transfer"
],
"type": "string"
},
"description": {
"description": "What is this transaction for",
"type": "string"
},
"transaction_date": {
"description": "Date (Y-m-d, defaults to today)",
"type": "string"
},
"account_id": {
"description": "Account ID (see list_accounts). Defaults to the user's main account.",
"type": "integer"
},
"category_id": {
"description": "Category ID",
"type": "integer"
},
"notes": {
"description": "Additional notes",
"type": "string"
}
},
"required": [
"amount",
"type",
"description"
]
}🟢list_subscriptions
List active subscriptions with amounts, frequency, and next billing date.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡create_subscription(name, amount, currency, frequency, category_id, ...)
Add a recurring subscription (monthly, yearly, or weekly).
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Subscription name (e.g., Netflix, Spotify)",
"type": "string"
},
"amount": {
"description": "Amount per billing period",
"type": "number"
},
"currency": {
"description": "ISO 4217 currency code, e.g. USD, EUR, GBP. Defaults to the user's currency.",
"type": "string"
},
"frequency": {
"description": "Billing frequency",
"enum": [
"monthly",
"quarterly",
"yearly",
"weekly"
],
"type": "string"
},
"category_id": {
"description": "Category ID",
"type": "integer"
},
"next_billing_date": {
"description": "Next billing date (Y-m-d)",
"type": "string"
},
"url": {
"description": "Service URL (http or https)",
"type": "string"
},
"notes": {
"description": "Notes",
"type": "string"
}
},
"required": [
"name",
"amount"
]
}🟢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.
Esquema de entrada
{
"type": "object",
"properties": {}
}🟡add_trade(holding_id, type, shares, price_per_share, traded_at, ...)
Record a buy or sell trade for a portfolio holding. Updates shares and average cost.
Esquema de entrada
{
"type": "object",
"properties": {
"holding_id": {
"description": "Holding ID",
"type": "integer"
},
"type": {
"description": "Trade type",
"enum": [
"buy",
"sell"
],
"type": "string"
},
"shares": {
"description": "Number of shares",
"type": "number"
},
"price_per_share": {
"description": "Price per share",
"type": "number"
},
"traded_at": {
"description": "Trade date (Y-m-d, defaults to now)",
"type": "string"
},
"notes": {
"description": "Trade notes",
"type": "string"
}
},
"required": [
"holding_id",
"type",
"shares",
"price_per_share"
]
}⚪log_focus_session(duration_minutes, project_id, task_id, type, label, ...)
Log a completed focus/pomodoro session with duration, project, and task link.
Esquema de entrada
{
"type": "object",
"properties": {
"duration_minutes": {
"description": "Session duration in minutes",
"type": "integer"
},
"project_id": {
"description": "Link to project",
"type": "integer"
},
"task_id": {
"description": "Link to task",
"type": "integer"
},
"type": {
"description": "Session type",
"enum": [
"pomodoro",
"timer"
],
"type": "string"
},
"label": {
"description": "Session label/name",
"type": "string"
},
"started_at": {
"description": "When it started (Y-m-d H:i, defaults to now minus duration)",
"type": "string"
}
},
"required": [
"duration_minutes"
]
}🟢get_focus_summary(from, to)
Get focus time summary: total minutes, sessions, and breakdown by project for a date range.
Esquema de entrada
{
"type": "object",
"properties": {
"from": {
"description": "Start date (Y-m-d, defaults to start of current week)",
"type": "string"
},
"to": {
"description": "End date (Y-m-d, defaults to today)",
"type": "string"
}
}
}⚪log_workout(type, duration_minutes, calories, active_calories, avg_hr, ...)
Log a workout session with type, duration, calories, and heart rate.
Esquema de entrada
{
"type": "object",
"properties": {
"type": {
"description": "Workout type",
"enum": [
"push",
"pull",
"legs",
"upper",
"lower",
"full_body",
"zone2",
"cardio",
"other"
],
"type": "string"
},
"duration_minutes": {
"description": "Duration in minutes",
"type": "integer"
},
"calories": {
"description": "Total calories burned",
"type": "integer"
},
"active_calories": {
"description": "Active calories (Apple Watch)",
"type": "integer"
},
"avg_hr": {
"description": "Average heart rate",
"type": "integer"
},
"max_hr": {
"description": "Max heart rate",
"type": "integer"
},
"min_hr": {
"description": "Min heart rate",
"type": "integer"
},
"started_at": {
"description": "Session start (Y-m-d H:i:s)",
"type": "string"
},
"ended_at": {
"description": "Session end (Y-m-d H:i:s)",
"type": "string"
},
"location": {
"description": "Where the session happened",
"type": "string"
},
"workout_date": {
"description": "Workout date (Y-m-d, defaults to today)",
"type": "string"
},
"notes": {
"description": "Notes",
"type": "string"
}
},
"required": [
"type"
]
}🟡log_workout_sets(sets_text, workout_id, workout_date, type, duration_minutes, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"sets_text": {
"description": "One movement per line. Understands \"4x12\", \"40kg\", \"2dk\"/\"90sn\", \"3 set\". Example: \"lateral raise 5kg 4x12\\nincline bench press machine 40kg 4x8\"",
"type": "string"
},
"workout_id": {
"description": "Add to this session. Needed when the date holds more than one session of the same type.",
"type": "integer"
},
"workout_date": {
"description": "Date (Y-m-d, defaults to today)",
"type": "string"
},
"type": {
"description": "Workout type. Sets go to the session of this type on that date; a new session is created when there is none.",
"enum": [
"push",
"pull",
"legs",
"upper",
"lower",
"full_body",
"zone2",
"cardio",
"other"
],
"type": "string"
},
"duration_minutes": {
"description": "Session duration in minutes",
"type": "integer"
},
"notes": {
"description": "Notes",
"type": "string"
},
"allow_duplicates": {
"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.",
"type": "boolean"
}
},
"required": [
"sets_text"
]
}⚪log_body_measurement(weight, body_fat, waist, waist_navel, chest, ...)
Log body measurements: weight, body fat %, waist, chest, etc.
Esquema de entrada
{
"type": "object",
"properties": {
"weight": {
"description": "Weight in kg",
"type": "number"
},
"body_fat": {
"description": "Body fat percentage",
"type": "number"
},
"waist": {
"description": "Natural waist (narrowest point) in cm — the primary trend metric",
"type": "number"
},
"waist_navel": {
"description": "Waist at the navel in cm — secondary",
"type": "number"
},
"chest": {
"description": "Chest circumference in cm",
"type": "number"
},
"hips": {
"description": "Hips circumference in cm",
"type": "number"
},
"left_arm": {
"description": "Left arm circumference in cm",
"type": "number"
},
"right_arm": {
"description": "Right arm circumference in cm",
"type": "number"
},
"shoulders": {
"description": "Shoulders circumference in cm",
"type": "number"
},
"neck": {
"description": "Neck circumference in cm",
"type": "number"
},
"left_quad": {
"description": "Left quad circumference in cm",
"type": "number"
},
"right_quad": {
"description": "Right quad circumference in cm",
"type": "number"
},
"vo2max": {
"description": "VO2 max",
"type": "number"
},
"measured_at": {
"description": "Measurement date (Y-m-d, defaults to now)",
"type": "string"
},
"notes": {
"description": "Notes",
"type": "string"
}
}
}⚪log_nutrition(log_date, calories, protein_g, carbs_g, fat_g, ...)
Log a day of nutrition — day totals plus optional food-by-food line items. Re-sending the same date replaces that day.
Esquema de entrada
{
"type": "object",
"properties": {
"log_date": {
"description": "Date (Y-m-d)",
"type": "string"
},
"calories": {
"description": "Total calories for the day",
"type": "integer"
},
"protein_g": {
"description": "Total protein in grams",
"type": "integer"
},
"carbs_g": {
"description": "Total carbs in grams",
"type": "integer"
},
"fat_g": {
"description": "Total fat in grams",
"type": "integer"
},
"fiber_g": {
"description": "Total fiber in grams",
"type": "integer"
},
"sugar_g": {
"description": "Total sugar in grams",
"type": "integer"
},
"sodium_mg": {
"description": "Total sodium in mg",
"type": "integer"
},
"is_complete": {
"description": "False when the day was only partially logged — excluded from averages",
"type": "boolean"
},
"notes": {
"description": "Notes",
"type": "string"
},
"entries": {
"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\"}",
"items": {
"type": "object"
},
"type": "array"
}
},
"required": [
"log_date"
]
}🟢list_exercises(search, muscle_group, trained_only)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"search": {
"description": "Match against names and aliases",
"type": "string"
},
"muscle_group": {
"description": "chest, back, shoulders, biceps, triceps, legs, core, cardio",
"type": "string"
},
"trained_only": {
"description": "Only movements this user has actually logged sets for",
"type": "boolean"
}
}
}🟢get_fitness_summary(nutrition_days, training_days, include_training_grid)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"nutrition_days": {
"description": "Nutrition averaging window in days (default 7)",
"type": "integer"
},
"training_days": {
"description": "Training window in days (default 28)",
"type": "integer"
},
"include_training_grid": {
"description": "Add the movement-by-session grid — what was lifted last time and whether it went up. Use it before advising on a session.",
"type": "boolean"
}
}
}🔴delete_workout(workout_date, workout_id, type)
Delete a whole training session and every set in it. To remove only part of a session use delete_workout_sets.
Esquema de entrada
{
"type": "object",
"properties": {
"workout_date": {
"description": "Session date (Y-m-d, defaults to today)",
"type": "string"
},
"workout_id": {
"description": "Session id — required only when a date carries more than one session",
"type": "integer"
},
"type": {
"description": "Narrow to one session type on that date",
"enum": [
"push",
"pull",
"legs",
"upper",
"lower",
"full_body",
"zone2",
"cardio",
"other"
],
"type": "string"
}
}
}🔴delete_workout_sets(workout_date, workout_id, exercise, duplicates_only)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"workout_date": {
"description": "Session date (Y-m-d, defaults to today)",
"type": "string"
},
"workout_id": {
"description": "Session id — required only when a date carries more than one session",
"type": "integer"
},
"exercise": {
"description": "Remove every set of this movement from the session, e.g. \"leg press\"",
"type": "string"
},
"duplicates_only": {
"description": "Remove blocks that repeat an identical earlier block in the same session — the fix for a log sent twice. Keeps the first occurrence.",
"type": "boolean"
}
}
}🔴delete_body_measurement(measurement_id, measured_at)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"measurement_id": {
"description": "Id of the measurement to delete",
"type": "integer"
},
"measured_at": {
"description": "Delete every measurement on this date (Y-m-d)",
"type": "string"
}
}
}🟢list_wishlist(status)
List wishlist items with price, priority, and purchase status.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Filter by status (default: pending)",
"enum": [
"pending",
"purchased",
"cancelled"
],
"type": "string"
}
}
}🟡add_wishlist_item(name, description, url, price_min, price_max, ...)
Add an item to the wishlist with price range, priority, and optional URL.
Esquema de entrada
{
"type": "object",
"properties": {
"name": {
"description": "Item name",
"type": "string"
},
"description": {
"description": "Description",
"type": "string"
},
"url": {
"description": "Product URL",
"type": "string"
},
"price_min": {
"description": "Minimum price",
"type": "number"
},
"price_max": {
"description": "Maximum price",
"type": "number"
},
"currency": {
"description": "3-letter currency code, e.g. GBP. Defaults to the user's currency",
"type": "string"
},
"priority": {
"description": "Priority",
"enum": [
"high",
"medium",
"low",
"waiting"
],
"type": "string"
},
"category": {
"description": "Category",
"type": "string"
},
"notes": {
"description": "Notes",
"type": "string"
}
},
"required": [
"name"
]
}🔴update_wishlist_item(item_id, status, purchased_at, name, priority, ...)
Update a wishlist item — mark it purchased or cancelled, change priority, price or notes. Purchased and cancelled items drop out of the active list.
Esquema de entrada
{
"type": "object",
"properties": {
"item_id": {
"description": "Wishlist item ID",
"type": "integer"
},
"status": {
"description": "pending = still wanted · purchased = bought · cancelled = no longer wanted",
"enum": [
"pending",
"purchased",
"cancelled"
],
"type": "string"
},
"purchased_at": {
"description": "Purchase date (Y-m-d). Defaults to today when status becomes purchased.",
"type": "string"
},
"name": {
"description": "New name",
"type": "string"
},
"priority": {
"description": "high | medium | low | waiting (waiting = wanted but gated on a trigger)",
"enum": [
"high",
"medium",
"low",
"waiting"
],
"type": "string"
},
"category": {
"description": "Category",
"type": "string"
},
"price_min": {
"description": "Lower price estimate",
"type": "number"
},
"price_max": {
"description": "Upper price estimate",
"type": "number"
},
"url": {
"description": "Product URL (http or https)",
"type": "string"
},
"currency": {
"description": "3-letter currency code of the prices, e.g. GBP",
"type": "string"
},
"notes": {
"description": "Notes — reasoning, alternatives considered, purchase trigger",
"type": "string"
}
},
"required": [
"item_id"
]
}🟢list_contacts(relationship, needs_contact, favorites_only)
List contacts. Filter by relationship type or get contacts needing reach-out.
Esquema de entrada
{
"type": "object",
"properties": {
"relationship": {
"description": "Filter by type",
"enum": [
"family",
"friend",
"work",
"mentor",
"other"
],
"type": "string"
},
"needs_contact": {
"description": "Only contacts overdue for check-in",
"type": "boolean"
},
"favorites_only": {
"description": "Only favorite contacts",
"type": "boolean"
}
}
}Comunidad
Evidencia