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
変更
search_foods
2026年10月1日2:51
変更
remove_pantry_item
2026年10月1日2:51
変更
add_pantry_item
2026年10月1日2:51
変更
get_pantry
2026年10月1日2:51
変更
delete_meal
2026年10月1日2:51
変更
update_meal
2026年10月1日2:51
変更
log_meal
2026年10月1日2:51
変更
get_preferences
2026年10月1日2:51
変更
get_range
2026年10月1日2:51
変更
get_day
2026年10月1日2:51
変更
whoami
2026年10月1日2:51
変更
search_foods
2026年9月25日3:00
追加
lookup_barcode
2026年9月17日7:56
追加
search_foods
2026年9月17日7:56
追加
remove_pantry_item
2026年9月17日7:56
追加
add_pantry_item
2026年9月17日7:56
追加
get_pantry
2026年9月17日7:56
追加
delete_meal
2026年9月17日7:56
追加
update_meal
2026年9月17日7:56
追加
log_meal
2026年9月17日7:56
追加
get_preferences
2026年9月17日7:56
追加
get_range
2026年9月17日7:56
追加
get_day
2026年9月17日7:56
追加
whoami
2026年9月17日7:56