AI Calorie Counter by BodyPal
Server Details
Counts calories and macros for any meal you describe (by weight, count or portion, in 19 languages) and returns a nutrition card with calories, protein, carbs, fat, fiber, sugar and salt per food, looked up in the BodyPal food database (USDA data and product labels). Read-only, no auth, no account. Live in the ChatGPT app directory. Publisher: Vancko Systems Ltd, https://bodypalapp.com
- Status
- Healthy
- Uptime
- 99.7% over 20 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
search_food is a lookup/retrieval tool and calculate_meal is a computation tool; their purposes are mutually exclusive and the descriptions even state the intended workflow (search first, then calculate). An agent cannot reasonably confuse the two.
Both names follow the same clean verb_noun snake_case pattern (search_food, calculate_meal). No mixed conventions or stylistic deviations.
Two tools is thin even for a narrow nutrition domain; the search-then-calculate pair is coherent but leaves the surface feeling minimal, sitting right at the borderline of the 1-2 tool range.
Core lookup and calorie/macro calculation are covered, but a 'calorie counter' domain implies logging or persisting meals and tracking intake over time, none of which exists — the daily goal and eaten-so-far values must be supplied by the caller each time. There is also no direct food-by-ID retrieval or barcode-style resolution.
Available Tools
2 toolscalculate_mealCalculate meal caloriesARead-onlyInspect
Calculates calories, protein, carbs, fat, fiber, sugar and salt for a meal from the BodyPal food database (USDA and product labels). Input: the foods in the meal. For each food send what the user actually gave: grams if they stated a weight, otherwise quantity + unit together with your own grams_estimate. The server uses standard weights from the database and falls back to your estimate. Returns per-food and total values and shows a nutrition card. Optional: daily calorie goal and calories already eaten today, to show what is left.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Foods in the meal. | |
| language | No | Two-letter code of the language the user wrote in (en, bg, de, fr, es, it, pt, nl, pl, ja, ko…). Always send it: it selects the food database language and the language of the card labels. | |
| meal_name | No | Short meal label, e.g. "Lunch" or "Chicken bowl" (optional). | |
| daily_goal_kcal | No | Daily calorie goal, if the user mentioned one (optional). | |
| eaten_today_kcal | No | Calories already eaten today before this meal, if known (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | One entry per food that was found. |
| source | No | |
| totals | Yes | |
| language | No | Language of the card labels. |
| meal_name | No | Meal label. |
| not_found | No | Foods that are not in the database. |
| assumed_weight | No | |
| remaining_kcal | No | |
| daily_goal_kcal | No | |
| eaten_today_kcal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe, closed-world, non-destructive read. The description adds real behavioral context beyond that: the server prefers database standard weights and falls back to the caller's estimate, and the goal/eaten inputs change the response to show remaining calories. Return format is left to the output schema, which is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then input contract, then optional inputs. Dense but every sentence carries operative information; slightly long, though nothing is clearly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, input contract, data source, fallback behavior, and optional goal features, while the output schema handles return values and annotations handle safety. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds cross-field meaning the schema does not: the mutually exclusive/fallback relationship between grams, quantity+unit, and grams_estimate, and the instruction to send what the user actually gave rather than converting counts. That is genuine added semantics for a nested array of foods.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: calculating calories and six other nutrients for a meal from the BodyPal food database (USDA and product labels). The 'meal' scope and multi-nutrient output clearly separate it from the sibling search_food, which only finds foods.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong input-selection rules ('send grams if the user stated a weight, otherwise quantity + unit together with your own grams_estimate') and states that goal/eaten-today are optional. It never explicitly says when to prefer this over search_food, so it stops short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_foodSearch the food databaseARead-onlyInspect
Searches the BodyPal food database (USDA and product labels, 19 languages) and returns matching foods with calories and macros per 100 g. Use it to check a food or to pick the right entry before calculate_meal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 5). | |
| query | Yes | Food name to search. | |
| language | No | Two-letter language of the query (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful context the annotations don't: the data sources (USDA plus product labels), the 19-language coverage, and the per-100 g normalization of the returned nutrition values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The data scope and return shape are front-loaded before the usage instruction, so the most decision-relevant facts come first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full schema coverage, the description need not explain return values or parameters, and it correctly covers purpose, provenance and usage. It omits any note on result ordering or how to broaden a query when nothing matches, which would round out an otherwise complete definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, limit and language are fully documented in the schema itself. The description reinforces the language dimension and the per-100 g basis of results but adds no per-parameter syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Searches), a named resource (BodyPal food database), its provenance (USDA and product labels, 19 languages), and what comes back (calories and macros per 100 g). An agent can distinguish this lookup tool from the sibling calculate_meal without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the sibling tool explicitly and gives the context for using this one: check a food or pick the right entry before calling calculate_meal. This is clear routing guidance, though it gives no negative condition (e.g. when not to search, or when to skip straight to an entry).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
calculate_meal - First observed
search_food
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityCmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs112 npm29 PyPIMIT
- AlicenseAqualityDmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.