MCP 서버

Forkmate

ai.forkmate/forkmate
헬스케어 공개 · 연결 가능 MCP 2026-07-28

이 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.
파괴적 작업 멱등성
입력 스키마
{'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}
출력 스키마
{'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.
파괴적 작업 멱등성
입력 스키마
{'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.'}}}
출력 스키마
{'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.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {'local_date': {'type': 'string', 'description': 'YYYY-MM-DD; defaults to today.'}}}
출력 스키마
{'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.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'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.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'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.
읽기 전용
입력 스키마
{'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': 'string', 'description': 'YYYY-MM-DD (inclusive).'}, 'start': {'type': 'string', 'description': 'YYYY-MM-DD (inclusive).'}}}
출력 스키마
{'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.
입력 스키마
{'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)."}}}
출력 스키마
{'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.
읽기 전용 외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['upc'], 'properties': {'upc': {'type': 'string', 'description': 'UPC/EAN barcode, digits only (8–14 digits).'}}, 'additionalProperties': False}
출력 스키마
{'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.
파괴적 작업 멱등성
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': 'The food to remove from the pantry (any casing).'}}, 'additionalProperties': False}
출력 스키마
{'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.
읽기 전용 외부 접근 가능
입력 스키마
{'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}
출력 스키마
{'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.
파괴적 작업 멱등성
입력 스키마
{'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.'}}}
출력 스키마
{'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.
읽기 전용
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['user_id', 'scopes'], 'properties': {'scopes': {'type': 'array', 'items': {'type': 'string'}}, 'user_id': {'type': 'string'}}}
변경됨
lookup_barcode
2026년 10월 1일 2:51 AM
변경됨
search_foods
2026년 10월 1일 2:51 AM
변경됨
remove_pantry_item
2026년 10월 1일 2:51 AM
변경됨
add_pantry_item
2026년 10월 1일 2:51 AM
변경됨
get_pantry
2026년 10월 1일 2:51 AM
변경됨
delete_meal
2026년 10월 1일 2:51 AM
변경됨
update_meal
2026년 10월 1일 2:51 AM
변경됨
log_meal
2026년 10월 1일 2:51 AM
변경됨
get_preferences
2026년 10월 1일 2:51 AM
변경됨
get_range
2026년 10월 1일 2:51 AM
변경됨
get_day
2026년 10월 1일 2:51 AM
변경됨
whoami
2026년 10월 1일 2:51 AM
변경됨
search_foods
2026년 9월 25일 3:00 AM
추가됨
lookup_barcode
2026년 9월 17일 7:56 AM
추가됨
search_foods
2026년 9월 17일 7:56 AM
추가됨
remove_pantry_item
2026년 9월 17일 7:56 AM
추가됨
add_pantry_item
2026년 9월 17일 7:56 AM
추가됨
get_pantry
2026년 9월 17일 7:56 AM
추가됨
delete_meal
2026년 9월 17일 7:56 AM
추가됨
update_meal
2026년 9월 17일 7:56 AM
추가됨
log_meal
2026년 9월 17일 7:56 AM
추가됨
get_preferences
2026년 9월 17일 7:56 AM
추가됨
get_range
2026년 9월 17일 7:56 AM
추가됨
get_day
2026년 9월 17일 7:56 AM
추가됨
whoami
2026년 9월 17일 7:56 AM