Reference · 48 tools across 7 areas

Everything your AI can do

You never call these directly — you just talk to Claude, ChatGPT or another MCP client, and it picks the right tool. Here's every tool the Nutrition MCP server exposes for meals and saved meals, calories and macros, water and weight, with what each one does and a phrase that triggers it.

Logging food & meals

The core loop — capture what you ate, however you describe it, and save the meals you eat often to log again in one line.

LogInteractive UI

log_meal

Log what you ate with calories and macros — plus saturated and trans fat, fiber, total and added sugar, alcohol and caffeine when the numbers are there. Describe it in plain language — the AI estimates the numbers, asks about portion size when it's unclear, and can pull label data from a barcode or the web first. It can also take the ingredients one by one, and then the totals are the sum of those ingredients.

Parameters
  • descriptionrequiredWhat was eaten
  • meal_typerequiredbreakfast, lunch, dinner or snack
  • caloriesoptionalTotal calories
  • protein_goptionalProtein in grams
  • carbs_goptionalCarbohydrates in grams
  • fat_goptionalFat in grams
  • saturated_fat_goptionalOptional. Saturated fat in grams, part of fat_g and never more than it. A blank is stored as not measured and leaves that day out of your saturated-fat average and limit; 0 is the right value for a food with none.
  • trans_fat_goptionalOptional. Trans fat in grams, a separate fat type that is not checked against fat_g. It has no limit and is shown only where it was recorded; 0 is the right value for a food with none.
  • fiber_goptionalDietary fiber in grams. The AI is told to fill this in on every meal, estimating from the ingredients when no label figure exists, because a blank is not a zero — it leaves the whole day out of your fiber average
  • sugar_goptionalTotal sugars in grams — the figure a label prints under "Sugars", including the sugar naturally in fruit and milk, not just added sugar. Filled in on every meal on the same terms as fiber
  • added_sugar_goptionalAdded sugars in grams — sugar added during processing or preparation (table sugar, syrups, honey, the sugar in sweetened drinks and foods). Part of total sugars, never more than it. Sugar naturally in whole fruit, vegetables and plain milk is not added, and neither is 100% fruit juice. Filled in on every meal on the same terms as fiber: whole foods are 0, a soft drink's sugar is all added, and a US label's "Includes Xg Added Sugars" line is used when there is one. It accompanies sugar_g: a meal given total sugars without added sugars may not be saved
  • alcohol_goptionalGrams of pure ethanol, not the volume of the drink and not its ABV — the AI works it out from the pour size and strength (a 330 ml 5% beer is 13 g)
  • caffeine_mgoptionalCaffeine in milligrams, not grams — the one field here that isn't in grams, because that is how every label and guideline states it (a brewed coffee is about 95 mg, an espresso 63 mg, a can of cola 34 mg). Caffeine adds no calories. Unlike fiber and sugar it is only sent for things that actually contain caffeine — a recorded 0 would put a caffeine row on your dashboard for a nutrient you never consume
  • logged_atoptionalWhen you ate it, if not now — lets you log something after the fact
  • notesoptionalAdditional notes
  • itemsoptionalIngredients, one row each, with their amounts and nutrients: calories, protein_g, carbs_g and fat_g on every item; fiber_g, sugar_g and added_sugar_g on every item or on none; alcohol_g and caffeine_mg only on the items that contain them, summed over those items. The meal's totals are then the sum of the items, so send items or totals, not both

Try saying “Log a chicken burrito bowl with extra guac for lunch”

…or just snap a photo of your plate — the AI names each dish, sizes portions in everyday measures (a glass, a handful), checks how you've logged it before, and confirms with you before logging.

Look up

lookup_barcode

Fetch a packaged product's label nutrition from Open Food Facts by its barcode (8–14 digit EAN/UPC), plus its Nutri-Score and NOVA processing group when Open Food Facts has them. Added sugar is shown when Open Food Facts lists it, and marked when Open Food Facts estimated it from the ingredients. You can type the digits or read them off a photo of the package; the result can then be logged, scaled to how much you ate.

Try saying “Scan this barcode: 3017620422003”

…or send a photo of the package — the AI reads the barcode digits off it.

Look up

search_foods

Searches USDA FoodData Central generic foods (Foundation, SR Legacy and Survey/FNDDS records) by English food name and returns up to 10 candidates, each with its FoodData Central id, USDA description, data type and energy and macros per 100 g. Matches use USDA's English wording (e.g. 'cooked, boiled').

Parameters
  • queryrequiredThe food name in English, up to 200 characters, e.g. banana or lentils, cooked

Try saying “What does USDA list for a raw banana?”

Look up

get_food_macros

Returns USDA FoodData Central values for one generic food by its FoodData Central id: per 100 g, and scaled to amount_g when given, with the portion sizes USDA lists. A nutrient USDA does not record for the food is reported as not recorded, never as zero. Includes the food_ref the meal tools accept for these values.

Parameters
  • fdc_idrequiredThe FoodData Central id of the food, as listed by search_foods
  • amount_goptionalOptional amount in grams, above 0 and up to 5,000, to scale the values to

Try saying “What are the USDA macros for 150 g of that banana?”

ImportInteractive UI

start_meal_import

Open an importer in the chat to bring your history over from another app — pick the CSV you exported from MyFitnessPal, Cronometer, Lose It!, MacroFactor or another tracker, match its columns to calories, macros, fiber, total and added sugar and caffeine — plus alcohol if you've turned alcohol tracking on — and review what will be added before you confirm. The file is read in your browser, nothing is saved until you approve the preview, and importing the same file again won't create duplicates.

Try saying “Import my meal history from MyFitnessPal”

Import

bulk_import_meals

Add a batch of past meals in one go — up to 50 at a time — instead of logging them one by one. The importer above writes through this, and the AI can use it directly for meal data you've pasted into the chat. Every row is checked first and anything that doesn't fit is reported row by row, so re-sending the same rows is safe and won't duplicate what's already logged, as long as your timezone hasn't changed in between.

Parameters
  • mealsrequiredThe rows to import, in source-file order (1–50 per call). Each row can carry a time, meal type, description, notes and the same numbers as a logged meal: calories, protein_g, carbs_g, fat_g, saturated_fat_g, trans_fat_g, fiber_g, sugar_g (total sugars), added_sugar_g (added sugars, part of the total), alcohol_g (grams of pure ethanol) and caffeine_mg (milligrams, not grams)
  • expected_row_countrequiredHow many rows this call carries, counted from the source file, so a dropped row gets caught
  • expected_total_kcaloptionalCalorie total from the source file, reconciled against what arrives
  • dry_runoptionalReport what would happen without writing anything
  • on_erroroptionalImport the valid rows and report the rest, or write nothing if any row fails
  • source_appoptionalWhich app the file came from

Try saying “Here's last week's meals pasted from my old app — add them all”

EditInteractive UI

update_meal

Change the details of a meal you already logged — its description, any macro, fiber, total or added sugar, alcohol or caffeine, the time, or notes. Also how a gap gets backfilled: if a meal went in without its fiber, sugar or added sugar, the server says so and the AI fills it in here once you agree. On a meal logged with ingredients, the totals change through its ingredient list.

Parameters
  • idrequiredUUID of the meal to update
  • descriptionoptional
  • caloriesoptional
  • protein_goptional
  • carbs_goptional
  • fat_goptional
  • saturated_fat_goptionalOptional. Saturated fat in grams, part of fat_g and never more than it. A blank is stored as not measured and leaves that day out of your saturated-fat average and limit; 0 is the right value for a food with none.
  • trans_fat_goptionalOptional. Trans fat in grams, a separate fat type that is not checked against fat_g. It has no limit and is shown only where it was recorded; 0 is the right value for a food with none.
  • fiber_goptional
  • sugar_goptionalTotal sugars, not added sugar
  • added_sugar_goptionalAdded sugars only, never more than total sugars. It accompanies sugar_g: a change to total sugars on a meal with no added sugars recorded may not be saved without it
  • alcohol_goptionalGrams of pure ethanol, not the volume of the drink
  • caffeine_mgoptionalMilligrams, not grams
  • logged_atoptional
  • notesoptional
  • itemsoptionalThe full ingredient list, replacing the existing one. The meal's totals become the sum of this list, so the totals fields can't be sent with it

Try saying “Actually that lunch was 600 calories, not 500 — fix it”

Remove

delete_meal

Remove a meal entry you logged by mistake.

Parameters
  • idrequiredUUID of the meal to delete

Try saying “Delete the snack I logged this afternoon”

Log

save_meal

Save a meal you eat often under a name, such as your usual breakfast, with its values for one serving and, if you have them, its ingredients. Give the values yourself or copy them from a meal you already logged. Saving adds nothing to your diary; log the saved meal with log_saved_meal when you eat it.

Parameters
  • namerequiredThe name to save it under, unique among your saved meals (1–100 characters)
  • from_meal_idoptionalUUID of a logged meal to copy its values and ingredients from
  • descriptionoptionalWhat the saved meal is. Defaults to its name
  • meal_typeoptionalbreakfast, lunch, dinner or snack — the default when you log it
  • itemsoptionalIngredients, one row each, with their amounts and nutrients. Their sum becomes the saved meal's values, so send items or values, not both
  • caloriesoptionalTotal calories for one serving
  • protein_goptionalProtein in grams for one serving
  • carbs_goptionalCarbohydrates in grams for one serving
  • fat_goptionalFat in grams for one serving
  • saturated_fat_goptionalOptional. Saturated fat in grams, part of fat_g and never more than it. A blank is stored as not measured and leaves that day out of your saturated-fat average and limit; 0 is the right value for a food with none.
  • trans_fat_goptionalOptional. Trans fat in grams, a separate fat type that is not checked against fat_g. It has no limit and is shown only where it was recorded; 0 is the right value for a food with none.
  • fiber_goptionalDietary fiber in grams for one serving
  • sugar_goptionalTotal sugars in grams for one serving
  • added_sugar_goptionalAdded sugars in grams for one serving, never more than total sugars. It accompanies sugar_g
  • alcohol_goptionalGrams of pure ethanol for one serving, not the volume of the drink
  • caffeine_mgoptionalMilligrams of caffeine for one serving, not grams

Try saying “Save this as my usual breakfast”

LogInteractive UI

log_saved_meal

Log a saved meal as a meal entry from now or from a time you give. The entry gets a copy of the saved values and ingredients, scaled by servings, with single ingredients optionally set to the amount actually eaten or left out for this one time. Later changes to the saved meal leave meals already logged from it as they are.

Parameters
  • saved_mealrequiredThe saved meal's name, or its ID from get_saved_meals or search_meals
  • servingsoptionalHow many servings to log: more than 0 and up to 20 (default 1)
  • item_amountsoptionalThe amounts of single ingredients actually eaten in this entry, by name or position. Servings scales the saved meal first, then these set the named ingredients' amounts, and their nutrients scale in proportion
  • leave_outoptionalIngredients to drop from this entry, by name or position
  • meal_typeoptionalbreakfast, lunch, dinner or snack — overrides the saved meal's default
  • descriptionoptionalDescription for this entry. Defaults to the saved meal's description
  • logged_atoptionalWhen you ate it, if not now
  • notesoptionalAdditional notes
  • idempotency_keyoptionalA key that makes a retried call a no-op, so the same entry is not logged twice

Try saying “Log my usual breakfast, half a serving”

Edit

update_saved_meal

Change a saved meal's name, description, default meal type, ingredients or values per serving. Meals already logged from it keep their values.

Parameters
  • idrequiredUUID of the saved meal to update
  • nameoptionalNew name, unique among your saved meals
  • descriptionoptionalNew description
  • meal_typeoptionalNew default meal type: breakfast, lunch, dinner or snack
  • itemsoptionalThe full ingredient list, replacing the existing one. Its sum becomes the saved meal's values, so the values fields can't be sent with it
  • caloriesoptionalTotal calories for one serving
  • protein_goptionalProtein in grams for one serving
  • carbs_goptionalCarbohydrates in grams for one serving
  • fat_goptionalFat in grams for one serving
  • saturated_fat_goptionalOptional. Saturated fat in grams, part of fat_g and never more than it. A blank is stored as not measured and leaves that day out of your saturated-fat average and limit; 0 is the right value for a food with none.
  • trans_fat_goptionalOptional. Trans fat in grams, a separate fat type that is not checked against fat_g. It has no limit and is shown only where it was recorded; 0 is the right value for a food with none.
  • fiber_goptionalDietary fiber in grams for one serving
  • sugar_goptionalTotal sugars in grams for one serving
  • added_sugar_goptionalAdded sugars in grams for one serving, never more than total sugars. It accompanies sugar_g
  • alcohol_goptionalGrams of pure ethanol for one serving, not the volume of the drink
  • caffeine_mgoptionalMilligrams of caffeine for one serving, not grams

Try saying “My usual breakfast now has 350 calories per serving — update it”

Remove

delete_saved_meal

Delete a saved meal. Meals already logged from it keep their values.

Parameters
  • idrequiredUUID of the saved meal to delete

Try saying “Delete the saved meal called old lunch”

Reviewing your meals

Look back over what you've logged, one day or a whole range at a time.

View

search_meals

Search your past meals by keyword and see them grouped into your recurring variations — how often each was logged, when last, and its typical calories. This is how the AI checks a photo of your plate against how you've actually logged that meal before, and how "log my usual breakfast" works. It also matches the names of a meal's ingredients, and lists your saved meals whose name, description or ingredients match.

Parameters
  • queriesrequiredFood keyword alternatives, in any language you've logged in
  • daysoptionalHow far back to look (default a year)
  • limitoptionalMax entries to analyze

Try saying “Log my usual breakfast”

View

get_meals_today

See every meal you've logged today.

Parameters
  • detailoptionalcompact (default) for one line per meal with its id, or full to include notes and exact times

Try saying “What have I eaten today?”

View

get_meals_by_date

See all the meals you logged on a specific day.

Parameters
  • daterequiredDate in YYYY-MM-DD format
  • detailoptionalcompact (default) for one line per meal with its id, or full to include notes and exact times

Try saying “Show me everything I ate on July 4th”

View

get_meals_by_date_range

Pull all meals between two dates in one go — handy for reviewing a week or a month. One call covers up to 31 days; for longer stretches, trends and summaries give you daily totals.

Parameters
  • start_daterequiredStart date (YYYY-MM-DD)
  • end_daterequiredEnd date (YYYY-MM-DD), up to 31 days including the start
  • detailoptionalcompact (default) for one line per meal with its id, or full to include notes and exact times

Try saying “List my meals from Monday to Friday”

View

get_saved_meals

See your saved meals with their values per serving and their ingredients, optionally only those whose name includes some text.

Parameters
  • name_containsoptionalOnly saved meals whose name includes this text

Try saying “What meals have I saved?”

Export

export_all_data

Export everything the service stores about you as a single ZIP — meals.csv, meal_items.csv (the ingredients of each logged meal), saved_meals.csv and saved_meal_items.csv (your saved meals and their ingredients), water.csv, weight.csv, body_measurements.csv, goals.csv, goals_history.csv (every change to your goals, dated), profile.csv, account.csv (your sign-in account), telemetry.csv (tool-usage records), connections.csv (your connected AI apps and Apple Health sync, without any tokens), health_sync.csv (what Apple Health sync sent over the last 8 days), and a README.txt explaining the columns, the units and what is not included — and hands back a private download link, valid for 60 minutes. Meals are the only part that can be imported back in for now.

Try saying “Export all of my data — meals, water, weight, and goals”

Water tracking

Track hydration alongside your food.

Log

log_water

Log a hydration entry. Give it in any unit — cups, ounces, liters — and it's converted to millilitres for you.

Parameters
  • amount_mlrequiredAmount in milliliters (integer, > 0).

Try saying “I just drank a 500 ml bottle of water”

View

get_water_today

See today's total water intake and each entry.

Try saying “How much water have I had today?”

View

get_water_by_date

See your water total and entries for a specific day.

Parameters
  • daterequiredDate in YYYY-MM-DD format

Try saying “How much did I drink yesterday?”

Remove

delete_water

Remove a water entry you added by mistake.

Parameters
  • idrequiredUUID of the water entry to delete

Try saying “Remove that last water entry”

Weight & body measurements

Log weigh-ins and tape measurements, review them, and watch your weight trend toward your target.

Log

log_weight

Record a body-weight measurement in kg or lb. Multiple weigh-ins per day are fine, and the server stores it canonically so your unit preference never distorts the number.

Parameters
  • weightrequiredBody weight value, in unit (> 0).

Try saying “Log my weight — 74.2 kg this morning”

Edit

update_weight

Correct an existing weigh-in — the value, the timestamp, or its notes.

Parameters
  • idrequiredUUID of the weight entry to update
  • weightoptionalNew weight value, in unit.
  • logged_atoptionalISO 8601 timestamp
  • notesoptional

Try saying “Fix this morning's weigh-in to 73.8 kg”

Remove

delete_weight

Remove a weight entry.

Parameters
  • idrequiredUUID of the weight entry to delete

Try saying “Delete today's weight entry”

View

get_weight_today

See today's weigh-ins, shown in your preferred unit.

Try saying “What did I weigh today?”

View

get_weight_by_date

See your weigh-ins for a specific day.

Parameters
  • daterequiredDate in YYYY-MM-DD format

Try saying “What was my weight on the 1st?”

View

get_weight_by_date_range

Get every weigh-in between two dates, grouped by day with each day's average.

Parameters
  • start_daterequiredStart date (YYYY-MM-DD)
  • end_daterequiredEnd date (YYYY-MM-DD)

Try saying “Show my weigh-ins for the last two weeks”

Setting

set_weight_unit

Choose whether weights show and are entered in kg or lb. Stored values are unaffected — only display and default parsing change.

Try saying “Use pounds for my weight from now on”

Log

log_body_measurement

Record a tape measurement of one body site — waist, hips, neck, chest, shoulders, upper arm, forearm, thigh or calf — in cm or inches. Stored exactly as entered alongside a canonical value, so switching units never shifts a number. Numbers far outside a realistic range for the site are refused as likely typos.

Parameters
  • kindrequiredWhich site: waist, hips, neck, chest, shoulders, upper_arm, forearm, thigh or calf. One value per site; a side (left/right) can go in notes.
  • valuerequiredThe measurement, in unit (> 0).
  • unitoptionalcm or in; defaults to your saved length unit.
  • logged_atoptionalWhen it was measured, if not now
  • notesoptionalAdditional notes

Try saying “Log my waist — 82 cm this morning”

View

get_body_measurements

List your body measurements by day, oldest first, optionally for one site only. Covers the last 30 days unless you give dates, up to 366 days per call.

Parameters
  • kindoptionalOnly this site (e.g. waist)
  • start_dateoptionalStart date (YYYY-MM-DD)
  • end_dateoptionalEnd date (YYYY-MM-DD), up to 366 days including the start

Try saying “Show my waist measurements from the last three months”

Edit

update_body_measurement

Correct an existing measurement — the value, its unit, the time, or notes. The site itself is fixed; a different site is a new entry.

Parameters
  • idrequiredUUID of the measurement to update
  • valueoptionalNew value, in unit.
  • unitoptionalDefaults to the unit the entry was recorded in.
  • logged_atoptionalISO 8601 timestamp
  • notesoptionalReplacement notes

Try saying “That hip measurement was 98 cm, not 89”

Remove

delete_body_measurement

Remove a body measurement entry.

Parameters
  • idrequiredUUID of the measurement to delete

Try saying “Delete today's neck measurement”

Setting

set_length_unit

Choose whether body measurements are shown and entered in centimetres or inches. Separate from your weight unit. Stored values are unaffected — only display and default parsing change.

Try saying “Use inches for my measurements”

Goals & progress

Set targets and see how each day measures up.

Setting

set_nutrition_goals

Set your daily calorie, macro, saturated fat, fiber, sugar, added sugar, alcohol, caffeine and water goals, plus an optional target body weight. Calories, protein, carbs, fat, fiber and water are targets to reach; saturated fat, total sugar, added sugar, alcohol and caffeine are limits to stay under, and progress is worded accordingly. Update only the fields you name; the rest stay put.

Parameters
  • daily_caloriesoptionalDaily calorie target (kcal). Null to clear.
  • daily_protein_goptionalDaily protein target (grams). Null to clear.
  • daily_carbs_goptionalDaily carbs target (grams). Null to clear.
  • daily_fat_goptionalDaily fat target (grams). Null to clear.
  • daily_saturated_fat_goptionalDaily saturated fat limit (grams). Null to clear.
  • daily_fiber_goptionalDaily fiber target (grams), a minimum to reach. Null to clear.
  • daily_sugar_goptionalDaily limit for total sugars (grams), a maximum to stay under. Total sugars include the sugar naturally in fruit and milk, so public added-sugar guidance is a much lower number. Null to clear.
  • daily_added_sugar_goptionalDaily limit for added sugars (grams), a maximum to stay under. Counts only added sugars, not the sugar naturally in fruit and milk; public guidance figures for sugar usually refer to this measure (the American Heart Association suggests at most 25 g a day for women and 36 g for men). 0 is a real limit meaning none at all. Null to clear.
  • daily_alcohol_goptionalDaily alcohol limit in grams of pure ethanol, a maximum to stay under. One US standard drink is 14 g, one UK unit 7.9 g. Null to clear.
  • daily_caffeine_mgoptionalDaily caffeine limit in milligrams, a maximum to stay under. EFSA and the FDA put the ceiling for healthy adults at 400 mg a day (roughly four brewed coffees); EFSA's figure for pregnancy is 200 mg. 0 is a real limit meaning none at all. Null to clear.
  • daily_water_mloptional
  • target_weightoptional

Try saying “Set my goals to 2,200 calories, 160 g protein, and a 75 kg target weight”

View

get_nutrition_goals

See your current daily calorie and macro targets, any fiber target and sugar or caffeine limit, and — if you track alcohol — your alcohol limit.

Try saying “What are my daily targets?”

ViewInteractive UI

get_goal_progress

See how today's intake stacks up against your goals — intake-vs-goal rings plus body-weight progress. Tap a macro ring to see which meals contributed.

Try saying “How am I doing against my goals today?”

ViewInteractive UI

get_nutrition_summary

Get daily nutrition totals across a date range as an interactive dashboard: macro tiles vs. goals and a per-day breakdown. One call covers up to 92 days; for longer stretches, trends give you rolling averages.

Parameters
  • start_daterequiredStart date (YYYY-MM-DD)
  • end_daterequiredEnd date (YYYY-MM-DD), up to 92 days including the start

Try saying “Give me a summary of this past week”

Settings & account

Preferences that keep everything accurate, plus full control of your data.

View

get_profile

See your current settings in one go: timezone (plus local date and time), widget language, preferred weight and length units, whether in-chat widgets are shown, and whether alcohol tracking is on.

Try saying “What are my current settings?”

Setting

set_timezone

Set your IANA timezone so days roll over at your local midnight — a meal logged at 11pm counts on that day, not the next UTC one.

Try saying “I'm in Berlin — set my timezone”

Setting

set_language

Set the UI language for in-chat widgets — the dashboards and charts, not what the AI writes back to you.

Parameters
  • localerequiredISO 639-1 code, e.g. de, ja. Supported: English, German, Spanish, French, Dutch, Polish, Italian, Ukrainian, Japanese, Turkish.

Try saying “Show my widgets in German”

View

get_current_time

Check the date and time right now in your timezone, plus the UTC instant. Some apps don't tell the assistant what time it is, so this is how it works out what "this morning" or "today" means without asking you (defaults to UTC if no timezone is set).

Try saying “What time is it for me right now?”

Setting

set_widget_display

Turn the in-chat visual widgets on or off — the dashboards, goal rings, and trend charts. When off, the same tools reply with text and data only. Enabled by default; the change applies to new conversations.

Parameters
  • enabledrequiredtrue to show widgets, false for text-only responses

Try saying “Turn off the widgets”

Setting

set_alcohol_tracking

Turn alcohol tracking on or off, and choose whether drinks are counted in US standard drinks or UK units. It's off by default, so you have to ask for it. Turning it off again hides alcohol from meals, goals and progress and stops the file importer reading a file's alcohol column — nothing already logged is deleted, your CSV export still includes it, and it reappears if you switch it back on. The change applies from your next message, with nothing to restart.

Parameters
  • enabledrequiredtrue to show alcohol in meals, goals and progress, false to hide it
  • drink_unitoptionalWhich standard drink to show alongside the grams: us (14 g per drink) or uk (7.9 g per unit). Defaults to us; grams of pure ethanol are what's actually stored.

Try saying “Start tracking my drinking, in UK units”

Remove

delete_account

Permanently delete your Nutrition MCP account and all the data it stores about you. This is irreversible, so the tool does nothing without an explicit confirmation, and the AI is asked to check with you before sending it.

Try saying “Delete my account and all my data”

Troubleshooting

Something not working? Most problems have a quick fix.

Still stuck? anton@nutrition-mcp.com

01The connector won't connect, or keeps asking me to sign in

Remove the connector and add it again with exactly https://nutrition-mcp.com/mcp — the /mcp part is required. In Claude, open Customize → Connectors, disconnect Nutrition and connect it again; in ChatGPT, use Settings → Apps. Sign in with the same email and password, or the same Google account, you used before: your data belongs to your account, not to the connection, so reconnecting loses nothing. Once connected, it stays connected as long as you use it at least every 90 days; if it stops working, reconnecting the same way fixes it.

02The sign-in page shows {"error":"session_expired"}

The sign-in page is only valid for 10 minutes, and it also resets whenever the server restarts for an update. Go back to the sign-in page and reload it, or start connecting again from your AI app, then sign in without a long pause. If it shows session_mismatch instead, the sign-in was finished in a different browser from the one that opened it: start again from your AI app and finish in that same browser.

03I can't sign in, or I forgot my password

Use Sign in for an account you already have: a wrong email or password there shows "Wrong email or password" and never creates a new account. Create account is only for your first visit. Check the email for typos. If you created your account with Continue with Google, use that button again. There is no self-service password reset yet: email anton@nutrition-mcp.com from the address on your account and I will reset it.

04I reconnected and my history is gone

Each email address is a separate account, so signing in with a different email starts an empty one — nothing was deleted. Disconnect and sign in again with the address you used originally. If you are not sure which one that was, email anton@nutrition-mcp.com.

05The AI answers but doesn't log anything

Make sure the connector is switched on for this conversation — in Claude, check the tools menu in the message box — and ask directly, for example "log my breakfast in Nutrition". If your app asks for permission to use a tool, approve it.

06My meals show up on the wrong day

Days are counted in your timezone, and if you have never set one, UTC is used. Ask "what timezone do I have set?" (get_profile) and, if it is wrong, "set my timezone to Europe/Berlin" (set_timezone). Everything you have logged is then grouped by your local day, past entries included. The one exception is an entry you gave a specific time of day while the timezone was wrong: it keeps the moment it was saved as, so it can still sit an hour or a day off — ask the AI to move it to the right date and time (update_meal). Set your timezone before importing history, too: imported meals keep the moment they were placed at, and importing another app's file again after changing the timezone adds them a second time. A Nutrition MCP export is recognized and not duplicated.

07I only see text, no charts or cards

The visual cards need an app that supports interactive MCP Apps panels, such as Claude or ChatGPT; other clients get the same information as text. If you turned widgets off, ask to turn them back on (set_widget_display) and start a new conversation — an open chat keeps its old setting until it reconnects. The small card after logging a meal only appears once you have set daily goals (set_nutrition_goals).

08The importer won't open, or says it can't save

The importer panel needs an app that shows interactive panels and has widgets turned on. If it says This host does not let this view write to your log, or it does not appear at all, ask the AI to import the file itself: attach or paste the CSV and it will use bulk_import_meals, which checks every row and skips duplicates, so re-sending is safe as long as your timezone has not changed in between. Set your timezone before the first import: re-importing another app's file after a change adds the rows again. If you use the importer panel and want an alcohol column kept, turn alcohol tracking on first — the panel skips that column while tracking is off, and re-importing later will not fill it in.

09I see "Rate limit exceeded" or "Too many failed authentication attempts"

Each account can make 60 requests a minute, and each tool call counts as at least one. Wait for the number of seconds the message gives, then carry on. For backfilling many meals, use the importer rather than logging them one by one. Sign-in pages allow 30 requests a minute per network. After 20 rejected connection attempts in a row from one network — usually an old, disconnected connector still retrying — connections from that network are paused for 5 minutes, and repeat pauses grow to at most an hour. Removing the old connector and adding it again stops the retries.

10A barcode isn't found, or its numbers look wrong

Barcode data comes from Open Food Facts, a community database, so some products are missing and some entries are out of date. Make sure all 8–14 digits under the barcode were read correctly. If the product is not there, the AI can estimate from the name or from a photo of the nutrition label, and you can correct any figure afterwards. Adding the product on openfoodfacts.org helps everyone. Open Food Facts has no caffeine data, so caffeine comes from the label or typical amounts.

11The AI says "USDA data is unavailable until …"

Generic-food lookups go to USDA FoodData Central with one API key shared by every user of this server, and USDA caps how many requests that key may make each hour. The server stops calling USDA in three cases: after USDA reports its limit is reached, which pauses calls for 60 minutes; while the key's remaining hourly allowance is nearly used up; and once you have made 30 USDA lookups in the last hour. The message gives the time USDA opens again, in your profile timezone (UTC when none is set). Search results are not stored, so searches wait until then. A food looked up in the last 30 days is kept on the server, so it still works during a pause, and fetching a stored food does not count toward your 30 an hour. USDA names are English only, so search in English. Packaged products are not affected: look them up by barcode instead.

12Yesterday isn't in Apple Health yet

Apple Health sync sends only finished days. A day counts as finished at 05:00 the next morning in your timezone, so yesterday arrives with the first sync after 05:00 today, and today never shows in Health until tomorrow. A sync runs when one of the shortcut's automations fires (opening the Health app, stopping your alarm) or when you run Nutrition MCP Health in the Shortcuts app and choose Sync now. A missed morning catches up on its own: every sync looks back over the last 7 days. Days follow the timezone on your profile (get_profile), or the one your iPhone reported when you connected if you never set one (meals on the wrong day). Days before you connected are only sent if you chose to bring back up to 7 earlier days while connecting.

13Apple Health shows more than my chat

Apple Health can add to a value but can never lower one it already holds. A meal you add to a day that was already sent follows as a small extra entry at 12:01, 12:02 and so on, as long as the day is within the last 7 days. A meal you delete or make smaller after its day was sent leaves Health higher, and the shortcut shows a notice saying by how much. To fix it, open the Health app, go to Browse → Nutrition, open the type (for example Dietary Energy), tap Show All Data, delete that day's entries from Shortcuts and enter the right total by hand. Never use Delete All Data from Shortcuts: it also removes what your other shortcuts logged. If every day looks doubled, another app writes the same types too and Health adds the two together: switch one of them off under Sharing → Apps in the Health app.

14Apple Health sync stopped

Open the Shortcuts app and run Nutrition MCP Health by hand: it says what went wrong. If it asks you to connect again, the connection has ended (after 90 days without a sync, 365 days after connecting, or after Disconnect): run it, sign in on the page it opens with the same account as in your AI app, and finish within 30 minutes. If it syncs when you run it but not on its own, check that its automations in the Shortcuts app's Automation tab are on and set to Run Immediately. If a notice says a day did not reach Apple Health, let Shortcuts write every nutrition type under Sharing → Apps → Shortcuts in the Health app, then run it again. Connecting a new iPhone replaces the old one's connection.

16How do I delete my account?

Ask the AI to delete your Nutrition MCP account (delete_account). It will ask you to confirm, then permanently delete your meals, saved meals, water, weight, body measurements, goals, settings, the record of which tools your AI app used, any export file, your sign-in and the account itself. This cannot be undone, so export your data first if you want a copy. Then remove the connector from your app. Signing in again with the same email later creates a new, empty account.

17How do I report a bug or a security issue?

Report bugs on GitHub Issues: say which app you use (Claude, ChatGPT, …), what you asked, what happened and roughly when. Never include your password. Please do not report security problems publicly: report them privately through GitHub private vulnerability reporting or by email, as the security policy describes. For anything else, email anton@nutrition-mcp.com.