← WebMCP Directory

Tool tree

cal-mcp-psi.vercel.app

Health & EducationTools verified
Website
Track your calories, nutrition, hydration, and body progress. AI-powered meal logging via WebMCP.
Explore capabilities
    search_productsAnswer

    Search the product catalog — returns all available WebMCP tools in the application.

    View tool JSON
    {
      "name": "search_products",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search the product catalog — returns all available WebMCP tools in the application.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Optional search query to filter tools."
          }
        }
      },
      "page": "/"
    }
    get_app_guideAnswer

    Returns workflow instructions and policies for this app. Call this first to understand how to use other tools.

    View tool JSON
    {
      "name": "get_app_guide",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns workflow instructions and policies for this app. Call this first to understand how to use other tools.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "enum": [
              "overview",
              "log_meal",
              "analyze_photo",
              "daily_review",
              "progress_review",
              "correct_meal",
              "privacy"
            ],
            "description": "Which workflow or topic to get guidance for."
          }
        },
        "required": [
          "topic"
        ]
      },
      "page": "/"
    }
    get_workflow_statusAnswer

    Returns the current state of a workflow — pending captures, draft IDs, and the recommended next tool to call.

    View tool JSON
    {
      "name": "get_workflow_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns the current state of a workflow — pending captures, draft IDs, and the recommended next tool to call.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "workflow": {
            "type": "string",
            "enum": [
              "log_meal",
              "daily_review",
              "progress_review"
            ],
            "description": "Which workflow to check."
          }
        },
        "required": [
          "workflow"
        ]
      },
      "page": "/"
    }
    get_user_contextAnswer

    Returns user preferences, locale, timezone, and nutrition targets needed for calculations.

    View tool JSON
    {
      "name": "get_user_context",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns user preferences, locale, timezone, and nutrition targets needed for calculations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeBodyMetrics": {
            "type": "boolean",
            "description": "If true, includes height and weight (sensitive — only request if needed)."
          }
        }
      },
      "page": "/"
    }
    create_meal_draftAction

    Creates and logs a meal directly from your analysis into daily intake.

    View tool JSON
    {
      "name": "create_meal_draft",
      "kind": "act",
      "impl": "imperative",
      "description": "Creates and logs a meal directly from your analysis into daily intake.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "captureId": {
            "type": "string",
            "description": "Optional correlation ID from get_pending_photo_context."
          },
          "eatenAt": {
            "type": "string",
            "description": "ISO timestamp when meal was eaten (UTC)."
          },
          "mealType": {
            "type": "string",
            "enum": [
              "breakfast",
              "lunch",
              "dinner",
              "snack"
            ]
          },
          "title": {
            "type": "string",
            "description": "Meal name, 1-80 characters."
          },
          "items": {
            "type": "array",
            "description": "Food items with nutrition per entered quantity (not per 100g).",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                },
                "unit": {
                  "type": "string",
                  "enum": [
                    "g",
                    "ml",
                    "oz",
                    "piece",
                    "serving",
                    "cup",
                    "tbsp",
                    "tsp"
                  ]
                },
                "grams": {
                  "type": "number",
                  "description": "Weight in grams if known."
                },
                "nutrition": {
                  "type": "object",
                  "properties": {
                    "caloriesKcal": {
                      "type": "number"
                    },
                    "proteinG": {
                      "type": "number"
                    },
                    "carbsG": {
                      "type": "number"
                    },
                    "fatG": {
                      "type": "number"
                    },
                    "fiberG": {
                      "type": "number"
                    }
                  },
                  "required": [
                    "caloriesKcal",
                    "proteinG",
                    "carbsG",
                    "fatG"
                  ]
                },
                "confidence": {
                  "type": "number",
                  "description": "0.0-1.0 confidence in this estimate."
                },
                "estimationNotes": {
                  "type": "string",
                  "description": "Explain how you estimated this item."
                }
              },
              "required": [
                "name",
                "quantity",
                "unit",
                "nutrition"
              ]
            },
            "minItems": 1,
            "maxItems": 30
          },
          "overallConfidence": {
            "type": "number",
            "description": "Overall confidence 0-1."
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List assumptions made in your analysis."
          }
        },
        "required": [
          "eatenAt",
          "mealType",
          "title",
          "items"
        ]
      },
      "page": "/"
    }
    update_meal_draftAction

    Updates or corrects a logged meal entry or draft by ID with updated items or attributes.

    View tool JSON
    {
      "name": "update_meal_draft",
      "kind": "act",
      "impl": "imperative",
      "description": "Updates or corrects a logged meal entry or draft by ID with updated items or attributes.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mealId": {
            "type": "string",
            "description": "ID of the meal entry or draft to update."
          },
          "title": {
            "type": "string"
          },
          "mealType": {
            "type": "string",
            "enum": [
              "breakfast",
              "lunch",
              "dinner",
              "snack"
            ]
          },
          "eatenAt": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "description": "Updated list of food items."
          }
        },
        "required": [
          "mealId"
        ]
      },
      "page": "/"
    }
    get_mealAnswer

    Retrieves one confirmed meal by ID, with its items and nutrition.

    View tool JSON
    {
      "name": "get_meal",
      "kind": "answer",
      "impl": "imperative",
      "description": "Retrieves one confirmed meal by ID, with its items and nutrition.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mealId": {
            "type": "string",
            "description": "ID of the meal."
          }
        },
        "required": [
          "mealId"
        ]
      },
      "page": "/"
    }
    list_mealsAnswer

    Returns a bounded list of confirmed meals in a date range. Maximum 31-day range.

    View tool JSON
    {
      "name": "list_meals",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns a bounded list of confirmed meals in a date range. Maximum 31-day range.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "Start local date (YYYY-MM-DD)."
          },
          "to": {
            "type": "string",
            "description": "End local date (YYYY-MM-DD)."
          },
          "mealType": {
            "type": "string",
            "enum": [
              "breakfast",
              "lunch",
              "dinner",
              "snack"
            ]
          },
          "limit": {
            "type": "number",
            "description": "Max results, default 20, max 50."
          },
          "cursor": {
            "type": "string",
            "description": "Pagination cursor (meal ID)."
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "page": "/"
    }
    delete_mealSensitive Action

    Deletes a confirmed meal. Requires userConfirmed: true.

    View tool JSON
    {
      "name": "delete_meal",
      "kind": "transact",
      "impl": "imperative",
      "description": "Deletes a confirmed meal. Requires userConfirmed: true.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mealId": {
            "type": "string"
          },
          "userConfirmed": {
            "type": "boolean",
            "description": "Must be true after user confirms deletion."
          }
        },
        "required": [
          "mealId",
          "userConfirmed"
        ]
      },
      "page": "/"
    }
    find_frequent_mealsAnswer

    Returns frequently logged meals, ranked by count and recency. Use to suggest meals from memory.

    View tool JSON
    {
      "name": "find_frequent_meals",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns frequently logged meals, ranked by count and recency. Use to suggest meals from memory.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Optional search query to filter by food name."
          },
          "limit": {
            "type": "number",
            "description": "Max results, default 5, max 10."
          }
        }
      },
      "page": "/"
    }
    repeat_mealAction

    Copies a previous confirmed meal to a new timestamp. Requires userConfirmed: true.

    View tool JSON
    {
      "name": "repeat_meal",
      "kind": "act",
      "impl": "imperative",
      "description": "Copies a previous confirmed meal to a new timestamp. Requires userConfirmed: true.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sourceMealId": {
            "type": "string",
            "description": "ID of the meal to copy."
          },
          "eatenAt": {
            "type": "string",
            "description": "UTC ISO timestamp for the new meal."
          },
          "mealType": {
            "type": "string",
            "enum": [
              "breakfast",
              "lunch",
              "dinner",
              "snack"
            ]
          },
          "userConfirmed": {
            "type": "boolean"
          }
        },
        "required": [
          "sourceMealId",
          "eatenAt",
          "userConfirmed"
        ]
      },
      "page": "/"
    }
    get_daily_summaryAnswer

    Returns calories, macros, and hydration consumed vs target for a date. Defaults to today.

    View tool JSON
    {
      "name": "get_daily_summary",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns calories, macros, and hydration consumed vs target for a date. Defaults to today.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Local date YYYY-MM-DD. Defaults to today."
          }
        }
      },
      "page": "/"
    }
    get_progress_reportAnswer

    Returns nutrition and weight trend data with summary facts. Max 366 days. At least 3 data points required for trend statements.

    View tool JSON
    {
      "name": "get_progress_report",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns nutrition and weight trend data with summary facts. Max 366 days. At least 3 data points required for trend statements.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "Start local date YYYY-MM-DD."
          },
          "to": {
            "type": "string",
            "description": "End local date YYYY-MM-DD."
          },
          "metrics": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "calories",
                "protein",
                "carbs",
                "fat",
                "fiber",
                "water",
                "weight"
              ]
            },
            "description": "Which metrics to include."
          },
          "granularity": {
            "type": "string",
            "enum": [
              "day",
              "week"
            ],
            "description": "Data point granularity."
          }
        },
        "required": [
          "from",
          "to",
          "metrics"
        ]
      },
      "page": "/"
    }
    log_weightAction

    Records a weigh-in. Converts to kg internally. Requires userConfirmed: true.

    View tool JSON
    {
      "name": "log_weight",
      "kind": "act",
      "impl": "imperative",
      "description": "Records a weigh-in. Converts to kg internally. Requires userConfirmed: true.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "weight": {
            "type": "number",
            "description": "Weight value."
          },
          "unit": {
            "type": "string",
            "enum": [
              "kg",
              "lb"
            ]
          },
          "recordedAt": {
            "type": "string",
            "description": "UTC ISO timestamp. Defaults to now."
          },
          "note": {
            "type": "string",
            "description": "Optional note."
          },
          "userConfirmed": {
            "type": "boolean"
          }
        },
        "required": [
          "weight",
          "unit",
          "userConfirmed"
        ]
      },
      "page": "/"
    }
    get_weight_progressAnswer

    Returns weigh-ins, 7-day moving average, and weight change for a date range.

    View tool JSON
    {
      "name": "get_weight_progress",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns weigh-ins, 7-day moving average, and weight change for a date range.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "from": {
            "type": "string",
            "description": "Start local date."
          },
          "to": {
            "type": "string",
            "description": "End local date."
          },
          "includeNotes": {
            "type": "boolean",
            "description": "Include notes (untrusted content)."
          }
        },
        "required": [
          "from",
          "to"
        ]
      },
      "page": "/"
    }
    log_waterAction

    Records water consumption. Converts to ml internally. Small amounts committed directly.

    View tool JSON
    {
      "name": "log_water",
      "kind": "act",
      "impl": "imperative",
      "description": "Records water consumption. Converts to ml internally. Small amounts committed directly.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Amount of water consumed."
          },
          "unit": {
            "type": "string",
            "enum": [
              "ml",
              "l",
              "fl_oz",
              "cup"
            ]
          },
          "recordedAt": {
            "type": "string",
            "description": "UTC ISO timestamp. Defaults to now."
          }
        },
        "required": [
          "amount",
          "unit"
        ]
      },
      "page": "/"
    }
    get_hydration_summaryAnswer

    Returns daily water consumed, target, and recent entry times.

    View tool JSON
    {
      "name": "get_hydration_summary",
      "kind": "answer",
      "impl": "imperative",
      "description": "Returns daily water consumed, target, and recent entry times.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Local date YYYY-MM-DD. Defaults to today."
          }
        }
      },
      "page": "/"
    }