Servidor MCP

Forkmate

ai.forkmate/forkmate
Salud Público y accesible MCP 2026-07-28

Qué hace este MCP

Logs meals through conversational input and provides calorie and macronutrient tracking.

add_pantry_item
Add a food to the user's pantry, or replace its details if a food with the same name (any casing) is already there. Only `name` is required; macros for one serving, a serving label, a `source` and a note are optional. An unrecognized `source` is recorded as 'client' (the user's own estimate). Does not log a meal. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Destructivo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': "The food to keep on hand, e.g. 'rolled oats'."}, 'note': {'type': 'string', 'description': "Optional short note, e.g. 'the Costco tub'."}, 'macros': {'type': 'object', 'properties': {'kcal': {'type': 'number', 'description': 'Energy for one serving, in kilocalories.'}, 'fat_g': {'type': 'number', 'description': 'Total fat for one serving, in grams.'}, 'carb_g': {'type': 'number', 'description': 'Total carbohydrate for one serving, in grams.'}, 'protein_g': {'type': 'number', 'description': 'Protein for one serving, in grams.'}}, 'description': 'Macros for ONE serving of this food, when known.'}, 'source': {'enum': ['client', 'usda', 'off', 'usda-index', 'mfp-import', 'manual', 'chain-menu'], 'type': 'string', 'description': "Where the macros came from, e.g. 'usda' for a food-database result. Defaults to 'client' (an estimate); unrecognized values are recorded as 'client'."}, 'serving': {'type': 'string', 'description': "Serving label the macros are for, e.g. '1 cup' or 'per 100 g'."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['item'], 'properties': {'item': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'note': {'type': 'string'}, 'macros': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': "The user's own claim about the macros' origin, not verified."}, 'serving': {'type': 'string'}}}}}
delete_meal
Delete one food from a diary entry (by `item_index`), or the whole entry (without it). The entry is identified by `id` and `local_date`. Deletion is permanent, with no undo; deleting the last food removes the entry, and deleting something already gone succeeds as a no-op. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Destructivo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['id', 'local_date'], 'properties': {'id': {'type': 'string', 'description': 'The entry id, as returned when reading a day.'}, 'item_index': {'type': 'number', 'description': 'Which food to remove (0-based). Omit to delete the whole entry.'}, 'local_date': {'type': 'string', 'description': 'YYYY-MM-DD diary date of the entry.'}}}
Esquema de salida
{'type': 'object', 'required': ['removed', 'entry', 'day_totals'], 'properties': {'entry': {'anyOf': [{'type': 'object', 'required': ['id', 'at', 'local_date', 'items'], 'properties': {'at': {'type': 'string', 'description': 'ISO-8601 UTC instant the food was eaten.'}, 'id': {'type': 'string'}, 'meal': {'type': 'string', 'description': 'breakfast, lunch, dinner or snack, when set.'}, 'note': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': [], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': 'Where the macros came from (e.g. usda, off, client).'}, 'fluid_ml': {'type': 'number'}, 'quantity': {'type': 'string'}, 'caffeine_mg': {'type': 'number'}}}}, 'created_at': {'type': 'string'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}}, 'description': 'One diary entry: a meal with its foods.'}, {'type': 'null'}], 'description': 'What remains of the entry, or null.'}, 'removed': {'type': 'boolean'}, 'day_totals': {'type': 'object', 'required': ['local_date', 'entry_count', 'totals'], 'properties': {'totals': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'fluid_ml': {'type': 'number'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'caffeine_mg': {'type': 'number'}, 'entry_count': {'type': 'integer'}}}}}
get_day
Read the user's food diary for one day: its entries and calorie/macro totals. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {'local_date': {'type': 'string', 'description': 'YYYY-MM-DD; defaults to today.'}}}
Esquema de salida
{'type': 'object', 'required': ['local_date', 'entries', 'totals'], 'properties': {'totals': {'type': 'object', 'required': ['local_date', 'entry_count', 'totals'], 'properties': {'totals': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'fluid_ml': {'type': 'number'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'caffeine_mg': {'type': 'number'}, 'entry_count': {'type': 'integer'}}}, 'entries': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'at', 'local_date', 'items'], 'properties': {'at': {'type': 'string', 'description': 'ISO-8601 UTC instant the food was eaten.'}, 'id': {'type': 'string'}, 'meal': {'type': 'string', 'description': 'breakfast, lunch, dinner or snack, when set.'}, 'note': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': [], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': 'Where the macros came from (e.g. usda, off, client).'}, 'fluid_ml': {'type': 'number'}, 'quantity': {'type': 'string'}, 'caffeine_mg': {'type': 'number'}}}}, 'created_at': {'type': 'string'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}}, 'description': 'One diary entry: a meal with its foods.'}}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}}}
get_pantry
Read the user's pantry: the staple foods they keep on hand, separate from their diary. Each item has a name and, when saved, macros for one serving, a serving label, a `source` and a short note. A `source` is the user's own claim about where the macros came from, not a server-verified guarantee. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'note': {'type': 'string'}, 'macros': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': "The user's own claim about the macros' origin, not verified."}, 'serving': {'type': 'string'}}}}}}
get_preferences
Read the user's saved dietary preferences: diet style, allergies (a structured list of the major US allergens), disliked foods, and a typical-portion note. Allergies are self-reported and not a safety guarantee; the response includes an allergy_disclaimer. Dislikes are taste preferences, not allergies.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['diet_style', 'allergies', 'dislikes', 'portion_note', 'allergy_disclaimer'], 'properties': {'dislikes': {'type': 'array', 'items': {'type': 'string'}}, 'allergies': {'type': 'array', 'items': {'type': 'string'}}, 'diet_style': {'type': ['string', 'null']}, 'portion_note': {'type': ['string', 'null']}, 'allergy_disclaimer': {'type': 'string'}}}
get_range
Read the user's food diary across a date range, with per-day calorie/macro totals. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Solo lectura
Esquema de entrada
{'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'description': 'YYYY-MM-DD (inclusive).'}, 'start': {'type': 'string', 'description': 'YYYY-MM-DD (inclusive).'}}}
Esquema de salida
{'type': 'object', 'required': ['start', 'end', 'days', 'entries'], 'properties': {'end': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'days': {'type': 'array', 'items': {'type': 'object', 'required': ['local_date', 'entry_count', 'totals'], 'properties': {'totals': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'fluid_ml': {'type': 'number'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'caffeine_mg': {'type': 'number'}, 'entry_count': {'type': 'integer'}}}}, 'start': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'entries': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'at', 'local_date', 'items'], 'properties': {'at': {'type': 'string', 'description': 'ISO-8601 UTC instant the food was eaten.'}, 'id': {'type': 'string'}, 'meal': {'type': 'string', 'description': 'breakfast, lunch, dinner or snack, when set.'}, 'note': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': [], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': 'Where the macros came from (e.g. usda, off, client).'}, 'fluid_ml': {'type': 'number'}, 'quantity': {'type': 'string'}, 'caffeine_mg': {'type': 'number'}}}}, 'created_at': {'type': 'string'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}}, 'description': 'One diary entry: a meal with its foods.'}}}}
log_meal
Add a meal to the user's food diary: one or more food items, each with an optional quantity and macros, plus an optional meal label, date, note and provenance `source`. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Esquema de entrada
{'type': 'object', 'required': ['items'], 'properties': {'at': {'type': 'string', 'description': 'ISO-8601 instant the meal was eaten; defaults to now.'}, 'meal': {'enum': ['breakfast', 'lunch', 'dinner', 'snack', 'other'], 'type': 'string', 'description': 'Which meal of the day this was.'}, 'note': {'type': 'string', 'description': "Optional free-text note stored with the meal, e.g. 'post-run'."}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': "What the food is, e.g. 'scrambled eggs' or 'Greek yogurt, plain'."}, 'macros': {'type': 'object', 'properties': {'kcal': {'type': 'number', 'description': 'Energy for the whole portion eaten, in kilocalories (not per 100 g).'}, 'fat_g': {'type': 'number', 'description': 'Total fat for the whole portion eaten, in grams.'}, 'carb_g': {'type': 'number', 'description': 'Total carbohydrate for the whole portion eaten, in grams.'}, 'protein_g': {'type': 'number', 'description': 'Protein for the whole portion eaten, in grams.'}}, 'description': 'Estimated nutrition for the portion eaten. Omitted fields are looked up from the food databases.'}, 'barcode': {'type': 'string', 'description': "The package's UPC/EAN barcode, when the food came from a barcode lookup."}, 'fluid_ml': {'type': 'number', 'description': 'Optional fluid/hydration volume of this item, in millilitres (e.g. 240 for an 8 oz cup).'}, 'quantity': {'type': 'string', 'description': "Portion as a display label, e.g. '3', '1 cup' or '2 × 1 frank (96 g)'. Display only: the server stores macros exactly as sent and does not re-scale them."}, 'caffeine_mg': {'type': 'number', 'description': 'Optional caffeine content of this item, in milligrams (e.g. ~95 for a mug of brewed coffee).'}}}, 'minItems': 1, 'description': 'The foods in this meal, one entry per food.'}, 'source': {'enum': ['client', 'usda', 'off', 'usda-index', 'mfp-import', 'manual', 'chain-menu'], 'type': 'string', 'description': "Optional provenance for these items, e.g. 'usda' or 'off' for a food-database result. Defaults to 'client' (an estimate); unrecognized values are recorded as 'client'."}, 'local_date': {'type': 'string', 'description': "YYYY-MM-DD diary date; defaults to the user's local date (from their timezone)."}}}
Esquema de salida
{'type': 'object', 'required': ['entry', 'day_totals'], 'properties': {'entry': {'type': 'object', 'required': ['id', 'at', 'local_date', 'items'], 'properties': {'at': {'type': 'string', 'description': 'ISO-8601 UTC instant the food was eaten.'}, 'id': {'type': 'string'}, 'meal': {'type': 'string', 'description': 'breakfast, lunch, dinner or snack, when set.'}, 'note': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': [], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': 'Where the macros came from (e.g. usda, off, client).'}, 'fluid_ml': {'type': 'number'}, 'quantity': {'type': 'string'}, 'caffeine_mg': {'type': 'number'}}}}, 'created_at': {'type': 'string'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}}, 'description': 'One diary entry: a meal with its foods.'}, 'day_totals': {'type': 'object', 'required': ['local_date', 'entry_count', 'totals'], 'properties': {'totals': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'fluid_ml': {'type': 'number'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'caffeine_mg': {'type': 'number'}, 'entry_count': {'type': 'integer'}}}}}
lookup_barcode
Look up a packaged food by its UPC/EAN barcode in Open Food Facts. Returns macros per 100 g, a `source`, and, when known, `serving_grams`/`serving_label` for one household serving. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', 'required': ['upc'], 'properties': {'upc': {'type': 'string', 'description': 'UPC/EAN barcode, digits only (8–14 digits).'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['candidates'], 'properties': {'candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'macros', 'source'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string'}, 'serving': {'type': 'string'}, 'serving_grams': {'type': 'number'}, 'serving_label': {'type': 'string'}}, 'description': 'A food match. Macros are PER 100 g — scale to the portion before logging.'}}}}
remove_pantry_item
Remove a food from the user's pantry by name. Affects the pantry only, not the food diary; removing a food that is not there succeeds as a no-op.
Destructivo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The food to remove from the pantry (any casing).'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['removed'], 'properties': {'removed': {'type': 'boolean'}}}
search_foods
Search USDA FoodData Central and Open Food Facts for foods matching a query. Returns candidates with macros per 100 g, a `source`, and, when known, `serving_grams`/`serving_label` for one household serving. Curated chain-menu candidates include a `provenance` object that may carry a portion caveat. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Solo lectura Acceso externo
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'description': 'Max candidates to return (default 5, clamped to 1–10).'}, 'query': {'type': 'string', 'description': "Food to search, e.g. 'greek yogurt' or 'Chipotle chicken'."}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['candidates'], 'properties': {'candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'macros', 'source'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string'}, 'serving': {'type': 'string'}, 'serving_grams': {'type': 'number'}, 'serving_label': {'type': 'string'}}, 'description': 'A food match. Macros are PER 100 g — scale to the portion before logging.'}}}}
update_meal
Correct a food already in the user's diary — its name, quantity, macros, caffeine or fluid — or change an entry's meal label or note. The entry is identified by `id` and `local_date`, and a food by its `item_index`. Only the fields sent change; macros are merged onto the existing values and overwritten in place, with no history kept. An entry cannot be moved to another day. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.
Destructivo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['id', 'local_date'], 'properties': {'id': {'type': 'string', 'description': 'The entry id, as returned when reading a day.'}, 'meal': {'enum': ['breakfast', 'lunch', 'dinner', 'snack', 'other'], 'type': 'string', 'description': 'Move the entry to a different meal label.'}, 'name': {'type': 'string', 'description': 'Corrected name of the food.'}, 'note': {'type': 'string', 'description': 'Replacement note for the entry.'}, 'macros': {'type': 'object', 'properties': {'kcal': {'type': 'number', 'description': 'Corrected energy for the whole portion, in kilocalories.'}, 'fat_g': {'type': 'number', 'description': 'Corrected total fat for the whole portion, in grams.'}, 'carb_g': {'type': 'number', 'description': 'Corrected total carbohydrate for the whole portion, in grams.'}, 'protein_g': {'type': 'number', 'description': 'Corrected protein for the whole portion, in grams.'}}, 'description': 'Corrected macros. Only the components included are changed.'}, 'fluid_ml': {'type': 'number', 'description': 'Corrected fluid/hydration volume, in millilitres.'}, 'quantity': {'type': 'string', 'description': "Portion as stated, e.g. '2' or '1 cup'."}, 'item_index': {'type': 'number', 'description': "Which food in the entry's items[] to edit (0-based). Required when changing a food's name/quantity/macros/caffeine/fluid; omit for an entry-level change (meal/note)."}, 'local_date': {'type': 'string', 'description': 'YYYY-MM-DD diary date of the entry.'}, 'caffeine_mg': {'type': 'number', 'description': 'Corrected caffeine content, in milligrams.'}}}
Esquema de salida
{'type': 'object', 'required': ['entry', 'day_totals'], 'properties': {'entry': {'type': 'object', 'required': ['id', 'at', 'local_date', 'items'], 'properties': {'at': {'type': 'string', 'description': 'ISO-8601 UTC instant the food was eaten.'}, 'id': {'type': 'string'}, 'meal': {'type': 'string', 'description': 'breakfast, lunch, dinner or snack, when set.'}, 'note': {'type': 'string'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string'}, 'macros': {'type': 'object', 'required': [], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'source': {'type': 'string', 'description': 'Where the macros came from (e.g. usda, off, client).'}, 'fluid_ml': {'type': 'number'}, 'quantity': {'type': 'string'}, 'caffeine_mg': {'type': 'number'}}}}, 'created_at': {'type': 'string'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}}, 'description': 'One diary entry: a meal with its foods.'}, 'day_totals': {'type': 'object', 'required': ['local_date', 'entry_count', 'totals'], 'properties': {'totals': {'type': 'object', 'required': ['kcal', 'protein_g', 'carb_g', 'fat_g'], 'properties': {'kcal': {'type': 'number'}, 'fat_g': {'type': 'number'}, 'carb_g': {'type': 'number'}, 'protein_g': {'type': 'number'}}, 'description': 'Calories and macros. Estimates, not lab-measured; not for insulin dosing.'}, 'fluid_ml': {'type': 'number'}, 'local_date': {'type': 'string', 'description': 'A local date, YYYY-MM-DD.'}, 'caffeine_mg': {'type': 'number'}, 'entry_count': {'type': 'integer'}}}}}
whoami
Diagnostic: returns the authenticated user id and scopes.
Solo lectura
Esquema de entrada
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'required': ['user_id', 'scopes'], 'properties': {'scopes': {'type': 'array', 'items': {'type': 'string'}}, 'user_id': {'type': 'string'}}}
Modificado
lookup_barcode
1 de October de 2026 a las 02:51
Modificado
search_foods
1 de October de 2026 a las 02:51
Modificado
remove_pantry_item
1 de October de 2026 a las 02:51
Modificado
add_pantry_item
1 de October de 2026 a las 02:51
Modificado
get_pantry
1 de October de 2026 a las 02:51
Modificado
delete_meal
1 de October de 2026 a las 02:51
Modificado
update_meal
1 de October de 2026 a las 02:51
Modificado
log_meal
1 de October de 2026 a las 02:51
Modificado
get_preferences
1 de October de 2026 a las 02:51
Modificado
get_range
1 de October de 2026 a las 02:51
Modificado
get_day
1 de October de 2026 a las 02:51
Modificado
whoami
1 de October de 2026 a las 02:51
Modificado
search_foods
25 de September de 2026 a las 03:00
Añadido
lookup_barcode
17 de September de 2026 a las 07:56
Añadido
search_foods
17 de September de 2026 a las 07:56
Añadido
remove_pantry_item
17 de September de 2026 a las 07:56
Añadido
add_pantry_item
17 de September de 2026 a las 07:56
Añadido
get_pantry
17 de September de 2026 a las 07:56
Añadido
delete_meal
17 de September de 2026 a las 07:56
Añadido
update_meal
17 de September de 2026 a las 07:56
Añadido
log_meal
17 de September de 2026 a las 07:56
Añadido
get_preferences
17 de September de 2026 a las 07:56
Añadido
get_range
17 de September de 2026 a las 07:56
Añadido
get_day
17 de September de 2026 a las 07:56
Añadido
whoami
17 de September de 2026 a las 07:56