Documentation

Everything IZeat does, in the order you meet it: connect an assistant, say a meal, read your day, and what happens to your data.

By Seb and Laetitia, Cape Town · Updated

Start here

What IZeat is, what you need, and how to tell an IZeat answer from a guess.

What IZeat is

A nutrition tracker with no data entry screen. You talk to the assistant you already use. IZeat records and shows.

IZeat is a nutrition tracker you talk to. There is no data entry screen. You tell the assistant you already use what you ate, in your own words. The assistant writes it to IZeat.

IZeat keeps the record: each meal, what was in it, its calories and macros, and where each number came from. It compares the day to a target you chose. It shows you the day, the week and the month in the web app.

IZeat does not build its own chat. Your assistant is the interface. IZeat is the database behind it, and the rules that turn your words into a day with a total.

“I had 180g of grilled chicken, 150g of rice and a plain yoghurt for lunch.”

What you need

An IZeat account and an assistant that can connect to an MCP server: Claude, ChatGPT, Claude Code or another app.

  • An IZeat account. You sign in with Google, with an email and password, or with a six-digit code sent by email.
  • An assistant that can connect to an MCP server: Claude, ChatGPT, Claude Code, or any other app that accepts one.
  • Your IZeat address: https://izeat.app/api/mcp. Every assistant connects to the same address.

Nothing is installed on your phone or computer. The connection is a web address and a sign-in.

The web app is English only. Your assistant answers you in your own language, and the numbers are the same.

How a reply is signed

An answer that uses IZeat is written to begin with “IZeat ·”, so you can tell its figures from the assistant’s own words.

Every tool call returns a receipt: a sentence that states what was recorded, what the day now totals, and what is left against your target. Your assistant relays that receipt. It never answers from what it believes it sent.

Any visible answer built on an IZeat result is asked to start with the exact prefix IZeat ·, and the assistant keeps it when it translates. It is a convention rather than a seal: a model can drop it on a call that worked, so a missing prefix is not a fault to chase.

IZeat · Recorded for Friday 11 September 2026 (today): lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g (estimated). Total: 455 kcal · P 58g · C 20g · F 15g. Against the target: 1545 kcal remaining · 92g protein remaining.

A refusal is signed the same way and ends with what happened: “Nothing was recorded” or “Nothing was changed”. The assistant relays that sentence and nothing else.

Once per account, a receipt may carry one sentence starting with “New:”. It names a capability added since you connected. It is said once and never repeated.

The two surfaces

The conversation writes. The web app reads. The only thing you change on the web is your account.

SurfaceWhat it does
Your assistantRecords meals, corrects them, sets your target and time zone, reads a day or a period.
The web appShows the day, the week, the month and the trend. Read-only.
The account pageEmail, plan, connected assistants, export, deletion. The one place you change something on the web.

There is no form for a meal on the web, and there will not be one. Everything you record goes through a conversation.

Connect

One address for every assistant. Pick yours, follow the steps, then ask the check question.

Claude

A one-tap button, or the manual path: Settings, Connectors, Add custom connector. The iPhone app adds one by itself.

Connect IZeat to Claude first.

The fast path is the button on your Assistants page in IZeat. Claude opens with the name and address filled in. Review them, then confirm.

Connect manually. On the web and in the desktop app.

  1. Copy your address: https://izeat.app/api/mcp.
  2. In Claude: Settings › Connectors › Add custom connector › paste › Add.
  3. Claude brings you back here. Tap Allow.

On the iPhone app. Walked on an iPhone on 7 September 2026.

  1. Open the sidebar. Tap your initial at the bottom.
  2. Scroll down to App. Tap Connectors.
  3. Open the menu at the top right. Tap Add custom connector.
  4. Name it IZeat. Paste your address as it is: https://izeat.app/api/mcp. That is the whole form. Leave Requires sign-in off, then tap the check.
  5. Sign in, then tap Allow. iOS asks first if Claude may sign you in. Tap Continue.
  6. Open a chat and ask the first question below.

ChatGPT

On the ChatGPT desktop app: Settings, Plugins, Add, MCP server, then Authenticate.

These steps connect IZeat in the ChatGPT desktop app on your computer.

In the desktop app. Walked in the ChatGPT desktop app on a computer, 9 September 2026.

  1. Copy your address: https://izeat.app/api/mcp.
  2. Open Settings › Plugins › Add › MCP server.
  3. Choose Streamable HTTP. Name it IZeat. Paste your address into URL, then save. If you see Command to launch, switch from STDIO to Streamable HTTP first.
  4. Open Settings › Plugins › MCPs. Find IZeat and click Authenticate.
  5. Sign in to IZeat, then click Allow. Return to ChatGPT and open a chat. Ask the first question below before recording a meal.

Claude Code

One command in your terminal, then sign in.

In the terminal. One command, then a sign-in in your browser.

  1. Copy the command: claude mcp add --transport http --scope user izeat https://izeat.app/api/mcp.
  2. Run it in your terminal.
  3. Sign in when it asks. If it does not, type /mcp.

Other apps

Any app that reads a list of MCP servers: paste one JSON block.

In a list of servers. The shape most file-based clients read. Cursor and Windsurf are named as examples, not as clients we have tested.

  1. Copy the config.
  2. Paste it where your app reads its servers. Cursor, Windsurf and the others.
  3. Sign in when it asks.

{ "mcpServers": { "izeat": { "type": "http", "url": "https://izeat.app/api/mcp" } } }

Check it works

One question that reads your account and records nothing.

Ask this first. It proves the connection answers before you trust it with a meal. It reads your account and changes nothing.

“Who am I in IZeat?”

IZeat · Connected account: Sam Lee (sam@example.com). Today is Friday 11 September 2026 in Europe/Paris.

The answer names the account and the email the connection belongs to, and today’s date in your time zone. That is the proof. The “IZeat ·” prefix is not: it is a convention the model is asked to keep, and it can be missing on a call that worked. If IZeat does not know your time zone yet, the assistant asks which city you live in and stores it.

The first time, the assistant may also start a short setup: your first and last name, then the daily target you want to use. You can say “later” at any step. A missing name or target never blocks a meal.

Your first meal

Say what you ate with weights. The answer is the receipt: what was recorded, the totals, and what is left.

“I had 180g of grilled chicken, 150g of rice and a plain yoghurt for lunch.”

The reply is written to begin with “IZeat ·” and lists each food with its quantity in grams, the meal’s calories and macros, and where the numbers came from. Then the day’s total, and what is left against your target if you set one.

The yoghurt has no weight in that sentence. The assistant converts “a plain yoghurt” to grams, keeps your words next to the converted amount, and says in the reply that it converted. If a detail would change the figure by more than a third, it asks one short question first.

Then open the web app. The day is a list with a total.

What to say

Plain sentences. Weights and brands when you have them. The assistant asks when a detail matters.

Logging a meal

Say the foods and their quantities. Cups and ounces are converted to grams or millilitres and your words are kept.

Name the meal, the foods, and how much of each. A weight in grams or a volume in millilitres is best. A brand helps.

“For lunch I had 180g of grilled chicken breast, 80g of steamed sweet potato and about 40g of my homemade sauce.”

IZeat · Recorded for Friday 11 September 2026 (today): lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g (estimated). Total: 455 kcal · P 58g · C 20g · F 15g. Against the target: 1545 kcal remaining · 92g protein remaining.

IZeat stores quantities in grams or millilitres only. If you say “one cup”, “4 oz” or “a banana”, the assistant converts it and keeps your measure next to the amount, as in “milk 240 ml (1 cup)”. The reply says that it converted.

One meal is one call. The whole list goes in together, in the order you said it. Each item keeps its own source, so a weighed steak next to an estimated sauce stays a weighed steak.

The assistant asks only what would change a figure by more than a third, in one short question: the fat something was cooked in, raw or cooked weight for pasta, rice, grains and pulses, or which variant when the family spans a factor of two, such as whole or skimmed milk. Everything else it assumes and says, so you can correct it in a word.

The meal types and their order

Six meal types. One of each per day. The day always lists them in the same order.

OrderMeal type
1Breakfast
2Morning snack
3Lunch
4Afternoon snack
5Dinner
6Evening

The day shows meals in this order whatever the hour they were recorded. A breakfast corrected in the afternoon still comes first.

There is one meal of each type per day. If lunch is already recorded and you say “for lunch I also had a yoghurt”, the assistant adds it to that lunch. Something eaten at another time goes under another meal type. If none fits, the assistant picks the nearest and says so.

IZeat · Lunch is already recorded for 2026-09-11: grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g (455 kcal). If this is part of it, add it to that lunch; if it was eaten at another time, record it under another meal type. Nothing was recorded.

Corrections: add and revise

Add something you forgot, or correct what was recorded. The earlier version stays in your history.

Two kinds of change. Add when you ate something more with a meal already recorded. Revise when a quantity was wrong, a food should be replaced or removed, or several things change at once.

“Add a plain yoghurt to my lunch, one pot, 125g. The label says 90 kcal, 8g protein, 7g carbs, 3g fat.”

IZeat · Updated: added plain yoghurt to the lunch of Friday 11 September 2026 (today). Lunch now contains: grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g, plain yoghurt 125 g (one pot) (estimated: homemade sauce). Its recorded totals are 545 kcal · P 66g · C 27g · F 18g; they were 455 kcal · P 58g · C 20g · F 15g. The complete meal includes estimated nutrition values. Total: 545 kcal · P 66g · C 27g · F 18g. Against the target: 1455 kcal remaining · 84g protein remaining.

“Actually I did not have the sauce with lunch. Take it out.”

IZeat · Corrected: the lunch of Friday 11 September 2026 (today) — Removed the homemade sauce. Lunch now contains: grilled chicken breast 180 g, steamed sweet potato 80 g. Its recorded totals are 365 kcal · P 57g · C 16g · F 7g; they were 455 kcal · P 58g · C 20g · F 15g. The nutrition values are reference values for weighed foods. Total: 365 kcal · P 57g · C 16g · F 7g. Against the target: 1635 kcal remaining · 93g protein remaining.

A correction never edits the meal in place. It creates a new version and keeps the previous one. The reply states the concrete change, the new totals, the old totals, and the day so far.

IZeat sums the rows itself. The assistant sends the list of foods; it never recomputes a total.

Undo and restore

Take back the latest write, or put it back. Two steps: a preview, then your confirmation within ten minutes.

Undo takes back the latest meal write: a meal just recorded, or a change just made to a meal. It is for “no, not that”, right after it happened.

It always takes two steps. The first shows you what would be undone and changes nothing. The second, after you say yes, does it. The confirmation must come within ten minutes of the preview.

“Undo what you just logged.”

IZeat · This would remove the last recorded meal: 2026-09-11 lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. Nothing was changed yet. Shall I go ahead?

“Yes.”

IZeat · Undone: the last recorded meal, 2026-09-11 lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g, was removed from the active day. No meal is recorded for this date. Available against the target: 2000 kcal remaining · 150g protein remaining.

Restore puts back what the last undo removed, with the same two steps.

“That undo was a mistake. Put it back.”

IZeat · Restored: 2026-09-11 lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. Total: 455 kcal · P 58g · C 20g · F 15g. Against the target: 1545 kcal remaining · 92g protein remaining.

Deleting a meal

Delete one meal by its day and type, however old. Preview first, then confirm within ten minutes.

Delete removes one specific meal, named by its day and meal type. It works on any meal, not only the latest one, and it has no age limit.

“Delete yesterday’s lunch.”

IZeat · This would delete Thursday 10 September 2026 (yesterday) lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. Nothing was changed yet. Do you confirm?

“Yes, delete it.”

IZeat · Deleted: Thursday 10 September 2026 (yesterday) lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. No meal is recorded for this date. Available against the target: 2000 kcal remaining · 150g protein remaining.

A deleted meal no longer counts in the day. It stays in your private history. If more than ten minutes pass, or the meal changed since the preview, the assistant shows it again and asks again.

Reading a day

Ask what you ate, where you stand, or what is left. One day, every meal, the total, the target.

“What have I had today, and how much is left?”

IZeat · Friday 11 September 2026 (today): lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g (estimated: homemade sauce). Total: 455 kcal · P 58g · C 20g · F 15g. Against the target: 1545 kcal remaining · 92g protein remaining.

The answer lists every meal of the day in day order, with each meal’s calories and macros. Then the day’s total. Then what is left against the target in force that day, per nutrient that has a target.

Over and under are both facts and are said the same way: “120 kcal over target” next to “30g protein remaining”. No nutrient without a target gets a number.

In an assistant that can show interactive reports, a request for a balance or a chart draws the day as a visual. The text stays to the signed line and one or two sentences.

Reading a period

A week, the last four weeks, a month, day by day. Averages are per recorded day; a day with nothing recorded stays empty.

“Show me the last seven days.”

IZeat · Period from 5 Sep to 11 Sep. 1 of 7 days has an entry. Average across that 1 recorded day: 455 kcal (P 58g · C 20g · F 15g). Calorie target at the end of the period: 2 000 kcal.

A period answer says how many days have entries, the average per recorded day, and the target in force at the end. If the target changed during the period, it says so.

Ask “day by day” for one line per day, through 31 days. Ask for every meal through 31 days. A longer range is grouped by week through one year, and by month after that. Each bar is an average per recorded day.

A day with nothing recorded is a gap, never a zero. It does not pull the average down.

Targets and profile

Your name, your daily target and your time zone are set by conversation. A new target starts on a day; earlier days keep theirs.

There is no settings page. You tell the assistant the daily target you want: calories, and protein, carbohydrate and fat in grams. At least one of them. The assistant stores only the figures you chose.

“Set my target to 2000 kcal and 150g of protein from 3 September.”

IZeat · Stored: new target from 2026-09-03. Target since 2026-09-03: 2000 kcal · P 150g.

A target is never overwritten. A new one starts on the day you name, or today, and the days before keep the target they had. Your history stays comparable to what you were aiming at then.

“What is my current target?”

IZeat · Seb: Target since 2026-09-03: 2000 kcal · P 150g.

IZeat does not calculate or recommend a target. If you ask your assistant, as your general assistant, to help you estimate one, that advice is its own and stays outside IZeat. IZeat stores the figures you then choose.

Time zone

IZeat asks once which city you live in. From then on every day is counted in your time zone.

A day belongs to the place you ate it in. A dinner at 23:40 belongs to that evening, not to the server’s clock.

When IZeat does not know your time zone, the first reply says so and the assistant asks which city you live in. It stores the matching time zone. It does not ask again unless you say you moved.

IZeat · Stored: days are now counted in Europe/Paris. Target since 2026-09-03: 2000 kcal · P 150g.

The assistant never computes a date itself. It passes your word, “yesterday”, “3 days ago”, “Tuesday”, and IZeat resolves it in your time zone. Every reply names the day in words so you can see which day it meant.

Photos

A label photo is read and echoed back. A plate photo gets questions first. Never a number from a picture alone.

You send photos in the chat. Your assistant reads them. IZeat has no camera and no scanner of its own.

A nutrition label. The assistant reads the values and repeats them back before recording, so a misread is caught in the same breath. Say how much you ate. The numbers are stored with the source “label”.

“Here is a photo of the nutrition label. I ate 125g.”

A plate. A picture shows what the food is. It does not show how much is on the plate, nor what it was cooked in. So the assistant asks first, for one easy portion cue suited to the food: a weight, or spoonfuls or ladles, a fraction of the plate or batch, or a known container size. If you have no cue, it asks for a top and a side photo with a ruler, a utensil of known length, or your hand beside the food.

“Here is a photo of my plate. Guide me through the portions and preparation details you need before estimating it.”

If you accept an estimate, the assistant states a range and records its midpoint as an estimate. It never says “exactly”. It never guesses a bowl’s capacity from its look, and it never silently assumes normal portions.

Estimates and sources

Every number carries where it came from: a label, you, a reference table, or an estimate. Each is shown as what it is.

SourceWhat it meansHow it reads in a reply
labelRead from packaging or a nutrition label, in a photo or in text.(label)
userYou gave the numbers yourself.(user)
referenceA plain, unmixed food you weighed, valued from a standard composition table.(reference values)
llm_estimateThe assistant deduced something: a mixed or homemade dish, or a portion it had to guess.(estimated)

Each item in a meal keeps its own source. A meal is as certain as its least certain item: one estimated sauce makes the meal “estimated”, and the reply names the estimated items when only some are.

A label read beats a figure you said or a reference value, which beat an estimate. The web app shows an estimated number as an estimate, never as a weighed one.

The assistant never invents a number. Every figure it relays comes from a tool reply, and every tool reply says which source each item has.

Tools

The eleven tools your assistant can call. You never name them; you say what you want and the assistant picks one.

get_connected_account

Verifies which IZeat account is connected and reports its setup state and today’s date in your time zone.

Verifies the IZeat account connected to this conversation and reports its onboarding state. It never changes the account. It names today’s date in the account’s time zone, so the assistant uses that date and not its own sense of the day.

When. Once, before the first IZeat operation in a conversation. Not before every meal. The assistant briefly says which account is connected on that first reply.

Returns. The email, the first and last name, whether a target exists, the onboarding status, the missing fields, the time zone and today’s date. If no time zone is known, the reply says to ask which city you live in.

“Who am I in IZeat?”

IZeat · Connected account: Sam Lee (sam@example.com). Today is Friday 11 September 2026 in Europe/Paris.

get_setup_step

Reads the account and tells the assistant the next setup step. It records nothing.

Reads the connected account and tells the assistant the next onboarding step. It never records or changes anything. Setup is two short steps: your first and last name, then the daily target you already use.

When. After get_connected_account, when setup is not complete, or when you ask to resume it. If you said “later”, setup stays paused and is not raised again unless you ask, or ask for personalised advice without a target.

Returns. The onboarding status, the next step and the fields it needs, whether a target exists, and, once setup is complete, a short list of things you can ask for.

“Let’s finish my IZeat setup.”

IZeat · Welcome. There are no forms to fill in: tell me what you eat and I keep your journal in IZeat. Your profile needs two short setup steps first. How would you like me to address you in IZeat? Please give me your first name and last name. You can also say “later”.

get_profile

Returns your name and the target in force on a date.

Returns your name and the target in force on a date: the latest target set on or before it. Without a date, the latest target.

When. When you ask directly about your profile or target. A day summary already includes that day’s target, so the assistant does not call both for a day comparison.

Returns. First name, last name, the target with the day it started, and how many targets you have set over time.

“What is my current target?”

IZeat · Seb: Target since 2026-09-03: 2000 kcal · P 150g.

update_profile

Stores your name, a new target, your time zone, or setup progress. The only tool that changes the profile.

Stores your name, a new daily target, the time zone your days are counted in, and setup progress. It is the only way anything about the profile changes. Every field is optional; only what is passed changes.

When. When you choose a target, give your name, name the city you live in, or say you moved. The assistant sets only what you actually chose. It never fills in a nutrient you did not mention and never calculates a target for you.

Returns. What was stored and the target now in force. A target is added, never overwritten: it starts on the day you name, or today, and earlier days keep theirs.

“Call me Seb, and set my target to 2000 kcal with 150g of protein from 3 September.”

IZeat · Stored: new target from 2026-09-03; name → Seb. Target since 2026-09-03: 2000 kcal · P 150g.

log_meal

Records one meal, the whole list of foods in one call, each with its quantity, calories, macros and source.

Records one meal, the whole meal in one call, as the list of what was eaten: one item per food with its quantity in grams or millilitres, its calories, its macros and its source. IZeat rounds once and sums the rows itself.

When. When you say what you ate. If the day or the meal type is unclear, the assistant asks; it never assumes either. If a quantity or a homemade or restaurant dish is too vague, it asks one short bundled question before recording. One meal of each type per day: a second dinner is refused, and the assistant adds to the existing one instead.

Returns. Every item with both measures, the meal’s totals and source, and the day so far against that day’s target. No internal identifiers, no timestamps. The same request retried never creates a second meal.

“For lunch I had 180g of grilled chicken breast, 80g of steamed sweet potato and about 40g of my homemade sauce.”

IZeat · Recorded for Friday 11 September 2026 (today): lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g (estimated). Total: 455 kcal · P 58g · C 20g · F 15g. Against the target: 1545 kcal remaining · 92g protein remaining.

update_meal

Changes a meal already recorded: add what you forgot, or revise what was wrong. Only the rows that differ are touched; a replaced row is kept in your history.

Changes one meal that is already recorded, identified by its meal type and day. It never creates a missing meal. Action add appends the foods you also ate. Action revise takes the corrected list and changes only the rows that differ, stating each change in words.

When. When you say “I also had”, “it was 180g not 200g”, “take out the sauce”, or several of those at once. For a revision the assistant reads the meal first with get_meal, then sends the complete corrected list. It never recomputes totals; IZeat sums the rows.

Returns. The concrete change, the meal as it now is with its rows, the new and the previous totals, the source sentence, and the day so far. A replaced row stays in your history, pointing at what replaced it. A repeated identical request is not applied twice.

“Add a plain yoghurt to my lunch, one pot, 125g. The label says 90 kcal, 8g protein, 7g carbs, 3g fat.”

IZeat · Updated: added plain yoghurt to the lunch of Friday 11 September 2026 (today). Lunch now contains: grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g, plain yoghurt 125 g (one pot) (estimated: homemade sauce). Its recorded totals are 545 kcal · P 66g · C 27g · F 18g; they were 455 kcal · P 58g · C 20g · F 15g. The complete meal includes estimated nutrition values. Total: 545 kcal · P 66g · C 27g · F 18g. Against the target: 1455 kcal remaining · 84g protein remaining.

get_meal

One recorded meal, exactly as stored: its rows in order, its totals, and whether it was already corrected. Draws nothing.

Returns one meal as it is recorded: each row with its position, description, quantity, calories, macros and source, the meal’s totals, and whether this version replaced an earlier one. It shows no card.

When. Before a revision, so the assistant copies the untouched rows exactly; and when you ask what one meal contains. Today needs no date. For the whole day with its card, the assistant uses day_summary instead.

Returns. The meal’s rows and totals, with no storage identifiers. When no meal of that type is recorded that day, the reply says so and names the meals that day does have, so the assistant asks you which one you mean.

“What did I record for lunch?”

IZeat · Lunch of Friday 11 September 2026 (today). Rows as stored: 1 grilled chicken breast 180 g — 297 kcal · P 56g · C 0g · F 6g, reference values · 2 steamed sweet potato 80 g — 69 kcal · P 1g · C 16g · F 0g, reference values · 3 homemade sauce 40 g — 89 kcal · P 1g · C 4g · F 9g, estimated. Meal totals: 455 kcal · P 58g · C 20g · F 15g (estimated).

day_summary

Everything recorded for one day: each meal and its items, the totals, the target, and what is left.

Returns everything recorded for one date: each meal with its items, quantity, calories, macros and source per item, the day’s totals, the target in force that day, and the signed difference per nutrient.

When. When you ask what you ate, where you stand, or how much is left. Today needs no date. It reads one day only; several days go to period_summary. When you ask what to eat, the assistant reads the day first and composes from what is left.

Returns. A typed day report with no storage identifiers, plus silent rendering data. In an assistant that shows interactive reports, a request for a balance or chart draws the day and the text stays to the signed line and one or two sentences. Over and under are relayed neutrally.

“Where am I today?”

IZeat · Friday 11 September 2026 (today): lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g (estimated: homemade sauce). Total: 455 kcal · P 58g · C 20g · F 15g. Against the target: 1545 kcal remaining · 92g protein remaining.

period_summary

What was recorded between two dates: coverage, totals, average per recorded day, and day, week, month or meal rows.

Returns what was recorded between two dates, inclusive: how many days have entries, the totals, the average per recorded day, the target timeline, and rows by day, week, month or meal. Missing days have no value, never zero.

When. When you ask about more than one day: a week, a month, “the last four weeks”, “day by day”, “what did I eat last week”. It needs two different dates: a single day is day_summary’s, which also returns each meal and its items. Daily rows run through 31 days, weekly averages through one year, monthly averages after that.

Returns. A typed period report with no storage identifiers, plus silent rendering data for a visual. At most the latest two years in one answer; the reply names the range it covers and when your history starts. The assistant does not rank days unless you ask.

“Show me the last seven days.”

IZeat · Period from 5 Sep to 11 Sep. 1 of 7 days has an entry. Average across that 1 recorded day: 455 kcal (P 58g · C 20g · F 15g). Calorie target at the end of the period: 2 000 kcal.

undo_last_change

Takes back the latest meal write, after a preview and your confirmation within ten minutes.

Undoes only the latest meal write, when you immediately ask to take that write back. The write may be a newly recorded meal or an update to a meal. A recorded meal is removed from the active day; an update returns the meal to its previous version.

When. “Undo what you just logged.” Not for reaching a corrected meal by unwinding several steps; a correction goes through update_meal. Always two steps: a preview that changes nothing, then, after you agree, a confirmation within ten minutes. IZeat remembers what it showed.

Returns. On preview, the exact change that would be undone. On confirmation, what was undone, the meal now active if any, and the recomputed day. Only a change made in the last 48 hours can be undone.

“Undo what you just logged.”

IZeat · This would remove the last recorded meal: 2026-09-11 lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. Nothing was changed yet. Shall I go ahead?

restore_last_change

Puts back what the last undo removed, after a preview and your confirmation within ten minutes.

Restores the latest meal change undone with undo_last_change, when you say the undo was a mistake. A meal returns to the day, or an update returns to its meal. Nothing is removed by this tool.

When. “That undo was a mistake.” Always two steps: a preview that changes nothing, then a confirmation within ten minutes after you agree.

Returns. On preview, what would return. On confirmation, the restored meal and the recomputed day. Only something undone in the last 48 hours can be restored; older, you record it again.

“That undo was a mistake. Put it back.”

IZeat · This would restore: 2026-09-11 lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. Nothing was changed yet. Shall I go ahead?

delete_meal

Deletes one specific meal by day and type, however old, after a preview and your confirmation.

Deletes one specific recorded meal, identified by your local date and meal type, even when it was not the latest change. There is no age limit. The meal stays in your private history but no longer counts in the day.

When. “Delete yesterday’s dinner.” When you simply want the latest action taken back, the assistant uses undo_last_change instead. Always two steps: a preview, then a confirmation within ten minutes after you explicitly agree.

Returns. On preview, the exact meal that would be deleted. On confirmation, the deleted meal and the recomputed day. If no such meal exists, the reply says so and nothing is deleted.

“Delete yesterday’s lunch.”

IZeat · This would delete Thursday 10 September 2026 (yesterday) lunch — grilled chicken breast 180 g, steamed sweet potato 80 g, homemade sauce 40 g — 455 kcal · P 58g · C 20g · F 15g. Nothing was changed yet. Do you confirm?

Your data

Where it lives, who sees it, how you take it with you, and how you make it go away.

Where it lives

Your account and nutrition data sit in a Supabase database in London. The site and the server run on Vercel, also in London.

Your account and nutrition data sit in a database run by Supabase in London, region eu-west-2. The website and the MCP server run on Vercel, also in London.

IZeat stores your email, your first and last name if you gave them, your meals as your assistant recorded them with the source of each number, your daily targets with the date each started, the assistants you connected and the technical tokens that keep each connection working, and your time zone.

IZeat is operated by Soltea (Pty) Ltd, registered in South Africa. The service providers involved receive only what they need for their part: Supabase for the database and sign-in, Vercel for hosting, Resend for the emails IZeat sends, Google only if you sign in with Google, PostHog EU for anonymous and cookieless page counts on the public website, Sentry for error reports, Polar for payment records.

What the assistant sees

IZeat receives only the tool request your assistant sends, and returns only the account data needed to answer it.

The assistant is yours: Claude, ChatGPT, or another. What you say to it is governed by that provider’s own policy. IZeat never receives the rest of your conversation.

IZeat receives only the tool request the assistant sends: a meal to record, a target to set, a day or a period to read. It returns only the account data needed to answer that request. Your assistant provider receives that reply so it can show it to you.

When you connect an assistant, IZeat may share your verified email address through the standard OpenID UserInfo endpoint, so the provider can confirm which IZeat account is connected. You approve this on the authorization screen.

A connection is signed in as one account. Every tool reads and writes that account only. You can revoke any connection from the Assistants page in the web app; the assistant loses access on the spot.

Export

The whole record as CSV or JSON, with one download for each format, from the account page.

Open the account page in the web app. Under “Your data”, choose CSV or JSON. The file contains your whole record.

A tracker that holds your food history hostage is a tracker you are right to distrust. Yours leaves with you, whole.

Deletion

Delete the account yourself from the account page, at any time. Thirty days to change your mind.

Open the account page and choose “Delete account”. Your assistants are disconnected on the spot and you are signed out.

You then have 30 days to change your mind: signing in again keeps the account. After that, your email, name, sign-in and connections are removed for good. Your meals and targets are kept with no link to you, so they no longer point at anyone.

For a correction, a question or a complaint about your data, write to hello@izeat.app. A person answers.

If a card looks wrong on your screen — cut on one side, too large, too small — tap the IZeat mark at the top right of the card. A line of display details appears under the date. For any problem, izeat.app/report is one form, signed in: what it is about, what happened, a screenshot. Under a card, "Report it" opens the same form with the measurements the card took, so a display problem is understood from the first message. Nothing in those measurements is about your food or your account.

What IZeat never does

No selling, no advertising, no analytics on your food, no model training on your data.

  • Sell your data, or share it with anyone for advertising.
  • Show you advertising.
  • Send what you ate or what you weigh to any analytics service. PostHog counts anonymous visits to public pages, never food, never weight, never an account or a target.
  • Use your data to train a model.

Two cookies: the one that keeps you signed in, and the one that remembers your time zone. No tracking cookies, and no consent banner, because there is nothing to consent to.

IZeat is not for people under 16.

Support

Use the report form, with or without an account. A person answers.

Whether a meal looks wrong, an assistant will not connect, or you have a question about your account, use the [report form](/support) and tell us what happened. It works with or without an account: signed in, we know where to answer; otherwise it asks for an email address. A person reads it and answers, usually within a day.

For a connection problem, send the exact reply you received, prefix included. For a meal that looks wrong, ask your assistant what was recorded and when; the answer names the day, the foods, the quantities and the sources.