# Is your human hungry?

> With Calori connected, you see their nutrition targets, what they’ve eaten and what’s planned, and you can order the meals Calori cooks and delivers in Helsinki and Stockholm.

## Calori MCP server

`https://mcp.calori.health/mcp`

Streamable HTTP · OAuth 2.1 sign-in with an email code

## Examples

### I’m hungry

- **Human:** I’m hungry. What should I eat?
- `get_days` → 600 kcal and 35 g protein left today; tonight: Spicy Chicken & Sweet Potato, in the fridge
- **Agent:** You have 600 kcal and 35 g of protein left today. Tonight’s Calori meal is already in your fridge: Spicy Chicken & Sweet Potato, 550 kcal and 32 g of protein.

### Cinnamon bun

- **Human:** I just had a cinnamon bun.
- `find_food` → cinnamon bun, 1 piece (75 g): 280 kcal
- `log_food` → logged as a snack
- **Agent:** Logged: 280 kcal. You still have 820 kcal left today, so dinner fits as planned.

### Order next week

- **Human:** Order my meals for next week.
- `preview_week` → 6 meals, 774 kr, arriving Sunday
- **Agent:** Next week is 6 meals for 774 kr, arriving on Sunday. Shall I order?
- **Human:** Yes, go ahead.
- `order_week` (spends money) → ordered
- **Agent:** Done. You’ll find the order in the Calori app.

### Away next week

- **Human:** I’m away next week.
- `get_deliveries` → next delivery: Sunday
- `pause_weeks` → next week paused
- **Agent:** Paused. Nothing is delivered or billed next week, and your meals pick up again the week after.

## Calori in brief

Calori sets daily targets for calories, protein, carbs and fat, tracks what people eat, and plans chef-made meals around those targets. Tracking works anywhere. Wolt delivers the meals in the Helsinki and Stockholm areas on Sundays and Wednesdays, and they keep 4–5 days in the fridge. A main dish is 129 kr and a snack 59 kr, at least six meals per delivery. Orders for next week close on Wednesday at 15:00.

- Sweden: main dishes 129 kr, snacks 59 kr
- Finland: main dishes €11.50, snacks €5.50

Next order deadline: 2026-11-18 15:00 (Europe/Stockholm).

## Connect to Calori

The server connects you to the user’s own Calori account, the same one as in the Calori app (a new email creates one). They sign in with an email code, allow what you’ll be able to do, and can disconnect you at any time on [calori.health/account](https://calori.health/en-se/account).

### Claude

1. Open Settings → Connectors.
2. Choose Add custom connector and paste `https://mcp.calori.health/mcp`.
3. Select Connect, then sign in to Calori.

### ChatGPT

1. Open Settings → Apps & Connectors and turn on Developer mode.
2. Choose Create and paste `https://mcp.calori.health/mcp`.
3. Sign in to Calori when ChatGPT asks.

### Any MCP client

1. Call `https://mcp.calori.health/mcp` over Streamable HTTP.
2. The first call answers 401 and points to the sign-in server: register your client there (dynamic client registration).
3. Send the user to sign in, then call again with the token.

### Cursor, VS Code and Claude Code

- [Add to Cursor](https://cursor.com/en/install-mcp?name=Calori&config=eyJ1cmwiOiJodHRwczovL21jcC5jYWxvcmkuaGVhbHRoL21jcCJ9)
- [Add to VS Code](https://vscode.dev/redirect?url=vscode:mcp/install%3F%7B%22name%22%3A%22Calori%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.calori.health%2Fmcp%22%7D)
- Claude Code: `claude mcp add --transport http calori https://mcp.calori.health/mcp`

### No MCP tools?

Everything up to the order works without them. [/llms-full.txt](https://calori.health/llms-full.txt) has this week’s menu with each meal’s calories and macros, the prices and the delivery areas as plain text, so you can pick meals that suit the user. To order, connect to the server yourself if you can make HTTP requests (see Any MCP client above; the user signs in with an email code), have them add Calori in their assistant, or send them to [Calori’s sign-up on the web](https://calori.health/en-se/start).

## If your human says…

### “I’m hungry.”

`get_days` → `find_food` or `score_menu`

Start from what’s left of today in `get_days`: a Calori meal in today’s plan is probably already in their fridge. For anything else `find_food` has the numbers, and for a menu they’re choosing from, `score_menu`.

### “I just had a cinnamon bun.”

`find_food` → `log_food`

Use a `find_food` match only when it’s the same food; otherwise log your best estimate. Food from an order you placed or saw goes in with `record_order` instead.

### “I want Calori meals.”

`get_me` → `set_profile` → `check_area` → `set_address` → `preview_week` → `order_week` (spends money)

Fill `set_profile` from what you already know and ask only for the rest. Show the meals, with their photos if you can, and the total before `order_week`, and wait for a yes. Outside the delivery area `set_address` puts them on the wait list; without a card on file, give them `get_me`’s card link after ordering.

### “Add a snack on Wednesday.”

`find_food` → `edit_plan`

`find_food` with `menu_date` lists that day’s menu. `edit_plan` adds, swaps or skips Calori meals on a week that can still change, every slot in one call; an added meal is billed with its week, and the result has the new total.

### “Where’s my food?”

`get_deliveries` → `send_delivery`

`get_deliveries` has today’s bag and its courier: ready, booked, or on the way with a tracking link and ETA. If the bag is ready and no courier is booked, `send_delivery` books one, or tells Calori they’ll pick it up.

### “I’m away next week.”

`get_deliveries` → `pause_weeks`

Paused weeks are neither delivered nor billed. `get_deliveries` gives the first week that can still change.

### “What if I went for muscle gain?”

`preview_eating_change` → `set_eating_change` or `set_profile`

`preview_eating_change` shows what a change would do before anything changes: their targets before and after, the weekly weight change Calori expects, and whether their Calori meals follow. Once they say so, `set_eating_change` makes it, or `set_profile` for a named goal; `use_calori_targets` brings back Calori’s own targets.

### “I run three times a week now.”

`update_profile`

Give `update_profile` only what changed. Exercise on its own doesn’t move their targets: when their whole day is more active, give `activity_level` too. New targets re-plan the next week that can still change, so its meals and price may change.

### “How am I doing?”

`get_days` → `get_weight`

Look at trends over days, not single meals. `get_days` with `intake` covers up to 31 days and says how fully each one was tracked; `get_weight` covers months. When they want to see a day rather than hear about it, `show_day`.

## House rules

1. Read before you answer: `get_days` for their day, `get_me` for who they are and their account. Change things only when the user asks.
2. Ask before anything that spends money or stops deliveries: show the meals and the total before `order_week`, and confirm before `edit_pause` or `cancel_deliveries`.
3. The numbers are Calori’s, never yours: when they’re choosing from a menu, call `score_menu` first, and after any food purchase you placed or saw, `record_order` instead of `log_food`.
4. For different daily numbers (“2,200 kcal”, “160 g protein”, “fewer carbs”), use `set_eating_change`, one subject per call; `set_profile`’s goal is only for a named goal. Everything is in kg and cm: convert first.
5. Every change shows in the Calori app, and most can be taken back with `undo` as long as nothing has changed since.
6. You can’t disconnect yourself or delete the user’s account. Send them to [calori.health/account](https://calori.health/en-se/account).
7. Calori is for everyday eating and wellness. It doesn’t diagnose or treat any condition.

## Tools

30 of them, from logging a snack to ordering the week. Most changes can be undone; before anything that spends money, get the user’s yes.

### Their day

- `get_days`: reads
- `show_day`: reads
- `log_food`: changes
- `edit_food_log`: changes
- `get_weight`: reads
- `log_weight`: changes
- `undo`: changes

### Food and menus

- `find_food`: reads
- `get_meal_details`: reads
- `score_menu`: reads
- `record_order`: changes

### Profile and targets

- `get_me`: reads
- `set_profile`: changes
- `update_profile`: changes
- `preview_eating_change`: reads
- `set_eating_change`: changes
- `use_calori_targets`: changes
- `set_food_preferences`: changes

### Orders

- `check_area`: reads
- `set_address`: changes
- `preview_week`: reads
- `order_week`: spends money
- `edit_plan`: changes
- `set_my_day`: changes
- `pause_weeks`: changes
- `edit_pause`: spends money
- `cancel_deliveries`: changes

### Delivery

- `get_deliveries`: reads
- `send_delivery`: changes
- `set_delivery_time`: changes

## Machine-readable

- [/llms.txt](https://calori.health/llms.txt): A short summary of Calori for language models
- [/llms-full.txt](https://calori.health/llms-full.txt): The whole site as text, the menu with nutrition included
- [/.well-known/mcp/server-card.json](https://calori.health/.well-known/mcp/server-card.json): The MCP server card (a draft standard)
- [/en-se/agents.md](https://calori.health/en-se/agents.md): This page as markdown
