fatsecret-mcp-server
This server integrates with the FatSecret Platform API to enable comprehensive nutrition tracking, food diary management, meal planning, and weight logging.
Food Search & Nutrition Lookup: Search the FatSecret food database by name and retrieve detailed nutrition info (macros, micronutrients, serving sizes) for any food item.
Food Diary Management: Log, edit, and delete food entries for a specific date and meal type (breakfast, lunch, dinner, other). View all entries for a date with full nutrition breakdown, or get a monthly summary of daily calorie/macro totals.
Saved Meal Templates: Create reusable meal templates, add foods to them, list all templates, and copy a saved meal directly into your diary for a specific date and meal slot.
Weight Tracking: Log weight measurements (with optional notes) for specific dates and view monthly weight history to track trends.
Convenience Tools: View recently eaten foods for quick re-logging, and copy all food entries from one date to another to easily repeat a day's meals.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fatsecret-mcp-serverlog 200g chicken breast for lunch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FatSecret MCP Server
MCP server for managing your food diary, nutrition tracking, meal planning, and weight logging via the FatSecret Platform API.
Tools Available
Tool | Description |
| Search food database by name |
| Get full nutrition details for a food |
| Log food to diary |
| Edit existing diary entry |
| Delete diary entry |
| Get all entries for a date |
| Monthly diary summary |
| Create reusable meal template |
| Add food to a saved meal |
| List saved meal templates |
| Paste saved meal into diary |
| Log weight for a date |
| Monthly weight history |
| Recently logged foods |
| Copy all entries between dates |
Related MCP server: io.github.rwestergren/cronometer-api-mcp
Setup
1. Register for FatSecret API
Create a developer account
Note your IP address and add it to the IP whitelist on the developer dashboard (required for OAuth 2.0 — can take up to 24h to propagate)
2. Get API Credentials
FatSecret uses separate credentials for OAuth 1.0a and OAuth 2.0:
On your developer dashboard, you'll find two credential sections:
Section | Key | Secret | Used for |
REST API OAuth 1.0 Credentials | Consumer Key | Consumer Secret | Food diary, weight, saved meals (user-level access) |
OAuth 2.0 Credentials | Client ID | Client Secret | Food search, food details (app-level access) |
The Consumer Key and Client ID are the same value. The secrets are different — this is a common source of confusion.
3. Get User OAuth Tokens (3-legged OAuth 1.0a)
For diary and weight tools, you need user-level access tokens. Run the included setup script:
FATSECRET_CLIENT_ID=your_consumer_key \
FATSECRET_CLIENT_SECRET=your_consumer_secret \
node scripts/oauth-setup.jsThis will:
Start a local web server at
http://localhost:9876Open your browser to authorize with FatSecret
Complete the OAuth 1.0a 3-legged flow
Display your
FATSECRET_ACCESS_TOKENandFATSECRET_ACCESS_TOKEN_SECRET
Note: The OAuth flow uses authentication.fatsecret.com (not www.fatsecret.com). You must log in with a FatSecret user account (the same one you use in the FatSecret mobile app), not your developer account.
4. Environment Variables
# Required — same value, shown as "Consumer Key" / "Client ID"
export FATSECRET_CLIENT_ID="your_consumer_key"
# OAuth 1.0a Consumer Secret (from "REST API OAuth 1.0 Credentials")
# Used for: diary, weight, saved meals, recently eaten
export FATSECRET_CONSUMER_SECRET="your_consumer_secret"
# OAuth 2.0 Client Secret (from "OAuth 2.0 Credentials")
# Used for: food search, food details
export FATSECRET_OAUTH2_CLIENT_SECRET="your_oauth2_client_secret"
# User tokens from the 3-legged OAuth flow (step 3)
export FATSECRET_ACCESS_TOKEN="your_access_token"
export FATSECRET_ACCESS_TOKEN_SECRET="your_access_token_secret"Legacy fallback: If you set FATSECRET_CLIENT_SECRET instead of the two separate secrets, it will be used for both OAuth flows. This only works if your Consumer Secret and Client Secret happen to be the same value (they aren't on most accounts).
5. Build & Run
npm install
npm run build
npm start6. Configure in Claude Desktop
Add to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"fatsecret": {
"command": "node",
"args": ["/path/to/fatsecret-mcp-server/dist/index.js"],
"env": {
"FATSECRET_CLIENT_ID": "your_consumer_key",
"FATSECRET_CONSUMER_SECRET": "your_oauth1_consumer_secret",
"FATSECRET_OAUTH2_CLIENT_SECRET": "your_oauth2_client_secret",
"FATSECRET_ACCESS_TOKEN": "your_access_token",
"FATSECRET_ACCESS_TOKEN_SECRET": "your_access_token_secret"
}
}
}
}Option B: Directly from GitHub (no local clone)
{
"mcpServers": {
"fatsecret": {
"command": "npx",
"args": ["-y", "github:Yurzs/fatsecret-mcp-server"],
"env": {
"FATSECRET_CLIENT_ID": "your_consumer_key",
"FATSECRET_CONSUMER_SECRET": "your_oauth1_consumer_secret",
"FATSECRET_OAUTH2_CLIENT_SECRET": "your_oauth2_client_secret",
"FATSECRET_ACCESS_TOKEN": "your_access_token",
"FATSECRET_ACCESS_TOKEN_SECRET": "your_access_token_secret"
}
}
}
}This downloads and runs the server directly from the repo — no git clone, npm install, or npm run build needed. npx caches it locally after the first run.
Note: If you've used this before and need to pull updates, clear the npx cache first:
rm -rf ~/.npm/_npxGetting user tokens without cloning
You can run the OAuth setup script directly too:
npx -y github:Yurzs/fatsecret-mcp-server/scripts/oauth-setup.jsOr with a one-liner using curl:
curl -sL https://raw.githubusercontent.com/Yurzs/fatsecret-mcp-server/master/scripts/oauth-setup.js | \
FATSECRET_CLIENT_ID=your_key FATSECRET_CLIENT_SECRET=your_consumer_secret node -This starts a local server at http://localhost:9876, opens your browser, and walks you through the FatSecret authorization. The tokens are printed to the terminal when complete.
Typical Workflow
Search for a food:
fatsecret_search_food("chicken breast")Get details to find serving_id:
fatsecret_get_food(food_id)Log it:
fatsecret_create_food_entry(food_id, "Chicken Breast", serving_id, 2.5, "lunch")Review day:
fatsecret_get_food_entries("2026-05-16")Track weight:
fatsecret_update_weight(77.5, "2026-05-16")
Troubleshooting
"Invalid IP address detected" — Add your public IP to the whitelist at https://platform.fatsecret.com. Propagation can take minutes to hours.
"Invalid signature" on OAuth 1.0a requests — You're likely using the OAuth 2.0 Client Secret instead of the OAuth 1.0a Consumer Secret. These are different values on most accounts. Check the "REST API OAuth 1.0 Credentials" section on your dashboard.
OAuth setup can't log in — The authorization page at authentication.fatsecret.com requires a FatSecret user account (the mobile app account), not your developer account. If you signed up via Apple/Google, do a password reset to set a native password.
API Tier
The free Basic tier (5,000 calls/day) is sufficient for personal use. Apply for Premier Free if you want barcode scanning and autocomplete.
Available Tools
15 toolsfatsecret_add_food_to_saved_mealAdd Food to Saved MealA
Add a food item to an existing saved meal template.
Args:
saved_meal_id: ID of the saved meal
food_id: FatSecret food ID to add
food_entry_name: Display name
serving_id: Serving size ID
number_of_units: Number of servings
Returns: Confirmation with nutrition details.
| Name | Required | Description | Default |
|---|---|---|---|
| saved_meal_id | Yes | Saved meal ID | |
| food_id | Yes | Food ID to add | |
| food_entry_name | Yes | Display name | |
| serving_id | Yes | Serving size ID | |
| number_of_units | Yes | Number of servings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly, non-destructive, non-idempotent, and open-world. The description confirms a write operation (adding an item) and mentions a confirmation return. It does not contradict annotations and adds context about appending to an existing meal template.
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?
The description is succinct: a single sentence for the action, a bullet list of parameters, and a return note. It is front-loaded and efficient, though the parameter list could be integrated more naturally.
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?
Given 5 required parameters, no output schema, and a simple action, the description is adequate but lacks explicit mention of prerequisites (e.g., the saved meal must exist) or error conditions. Minimal completeness for a straightforward tool.
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?
The input schema has 100% description coverage, describing each parameter. The description repeats them without adding significant new meaning (e.g., types or constraints are already in the schema). Baseline score 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?
The description clearly states the action: 'Add a food item to an existing saved meal template.' This uses a specific verb and resource, and distinguishes from sibling tools like `fatsecret_create_saved_meal` (create a new meal) and `fatsecret_get_saved_meals` (list meals).
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?
The description implies usage (adding to an existing meal) but does not explicitly state when to use this tool versus alternatives (e.g., creating a new meal instead). It lacks 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_copy_dayCopy Food Entries Between DatesA
Copy all food entries from one date to another. Useful for repeating a day's meals.
Args:
from_date: Source date YYYY-MM-DD
to_date: Target date YYYY-MM-DD
Returns: Confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| from_date | Yes | Source date | |
| to_date | Yes | Target date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readOnly and non-destructive. The description confirms it is a copy (mutation without destruction) and mentions a return of 'Confirmation'. This adds context beyond annotations, but does not cover all behaviors like error states.
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?
Extremely concise at two sentences plus a clean args list. The purpose is front-loaded in the first sentence, and every word adds value.
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?
For a simple copy tool with two parameters and no output schema, the description covers what it does, parameters, and return value. It is fully adequate for an agent to invoke 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 descriptions are minimal ('Source date', 'Target date'). The description adds format hints ('YYYY-MM-DD'), which improves understanding beyond the schema, even though coverage is 100%.
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?
The description clearly states the action ('Copy all food entries from one date to another') and the resource ('food entries'). It distinguishes from sibling tools like fatsecret_copy_saved_meal_to_diary by specifying it copies entries between dates, not saved meals.
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?
Provides a clear use case ('Useful for repeating a day's meals') that implies when to use. However, it does not explicitly mention when not to use or alternatives, though sibling tools cover other copy operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_copy_saved_meal_to_diaryCopy Saved Meal to DiaryA
Copy all foods from a saved meal template into the food diary for a specific date and meal.
Args:
saved_meal_id: ID of the saved meal to copy
meal: Target meal type
date: Target date YYYY-MM-DD (default: today)
Returns: Confirmation that entries were created.
| Name | Required | Description | Default |
|---|---|---|---|
| saved_meal_id | Yes | Saved meal ID to copy | |
| meal | Yes | Target meal slot | |
| date | No | Target date YYYY-MM-DD (default: today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates the tool creates entries (side effect) and returns confirmation, which aligns with annotations (readOnlyHint: false, destructiveHint: false). It adds a return value description but lacks details on handling duplicates or overwrites. No contradictions with annotations.
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?
The description is concise, using a clear one-sentence summary followed by structured Args and Returns. Every sentence provides essential information without redundancy.
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?
Given no output schema, the description adequately covers behavior (copying foods), parameters, and return type. It lacks preconditions or error cases, but for a straightforward copy action, it is sufficiently complete.
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%, and the description largely restates the schema's parameter descriptions. It adds minimal new meaning, such as referring to 'saved meal template' instead of just 'saved meal', but overall it does not significantly enhance understanding beyond the schema.
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?
The description clearly states the action: copying all foods from a saved meal template into the food diary for a specific date and meal. It uses a specific verb (copy) and resource (saved meal to diary), distinguishing it from sibling tools like create_saved_meal or get_food_entries.
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?
The description provides no guidance on when to use this tool versus alternatives, such as creating food entries directly or copying entire days. It does not mention prerequisites, limitations, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_create_food_entryLog Food to DiaryA
Create a food diary entry for the user. Logs a specific food + serving to a meal on a given date.
You need food_id and serving_id from fatsecret_search_food / fatsecret_get_food.
Args:
food_id: FatSecret food ID
food_entry_name: Display name (e.g., "Chicken Breast")
serving_id: The serving size ID
number_of_units: How many of that serving (e.g., 2.5 for "2.5 cups")
meal: One of "breakfast", "lunch", "dinner", "other"
date: Date as YYYY-MM-DD string (default: today)
Returns: Created food entry with nutrition totals.
| Name | Required | Description | Default |
|---|---|---|---|
| food_id | Yes | FatSecret food ID | |
| food_entry_name | Yes | Display name for the entry | |
| serving_id | Yes | Serving size ID from food details | |
| number_of_units | Yes | Number of servings | |
| meal | Yes | Meal type | |
| date | No | Date YYYY-MM-DD (default: today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-destructive, non-read-only. Description adds that it returns nutrition totals, which is beyond annotations. No contradiction.
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?
Structured with short summary, then dependency, then arg list. Slightly lengthy but no unnecessary information.
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?
Despite no output schema, description mentions return value ('nutrition totals'). Covers prerequisites, parameter meanings, and behavioral intent comprehensively.
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?
All parameters have schema descriptions (100% coverage). Description adds context: e.g., number_of_units example, date default, and dependency on other tool results.
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?
Description clearly states 'Create a food diary entry' and specifies logging food+serving to a meal on a date. It distinguishes from siblings by mentioning prerequisites (fatsecret_search_food/get_food).
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?
Explicitly states prerequisite IDs from other tools. Does not explicitly list when not to use, but sibling tools for editing/deleting provide implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_create_saved_mealCreate Saved Meal TemplateA
Create a reusable meal template (e.g., "Post-Workout Chicken & Rice"). After creating, add foods to it with fatsecret_add_food_to_saved_meal.
Args:
saved_meal_name: Name for the template
saved_meal_description: Optional description
meal_type: Default meal type when copied to diary
Returns: Created saved meal with its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| saved_meal_name | Yes | Name for the meal template | |
| saved_meal_description | No | Optional description | |
| meal_type | No | Default meal type | other |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool modifies data (readOnlyHint=false) and is not destructive. The description adds that it returns the created saved meal with its ID. No additional behavioral context is provided beyond annotations.
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?
The description is extremely concise: two sentences plus a brief parameter list and return statement. Every sentence adds value, with no redundancy.
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?
The description covers purpose, next-step sibling usage, parameters, and return value. It lacks explanation of idempotency or duplicate behavior, but for a simple creation tool this is sufficient.
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 the description adds marginal value. It slightly improves the meal_type description by noting it is used 'when copied to diary,' which is helpful. Baseline 3 is appropriate.
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?
The description clearly states the tool creates a reusable meal template, provides an example, and distinguishes from siblings by directing to the next step (using fatsecret_add_food_to_saved_meal).
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?
The description gives clear context for when to use (creating a template) and mentions the next step, but does not explicitly exclude use cases or compare to other sibling tools like copy or direct food entry. Still, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_delete_food_entryDelete Food Diary EntryADestructiveIdempotent
Delete a food diary entry by its ID.
Args:
food_entry_id: The entry ID to delete
Returns: Confirmation of deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| food_entry_id | Yes | Food entry ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds that it returns a confirmation of deletion, which is useful but not adding significant behavioral context beyond what annotations declare. No contradiction.
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?
The description is short and front-loaded with the purpose. However, it could be slightly more compact by omitting the 'Args:' and 'Returns:' labels, but it is still efficient and clear.
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?
For a simple deletion tool with one parameter and no output schema, the description adequately covers the action, input, and confirmation. The annotations already handle behavioral traits, making the description sufficient.
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?
The input schema already provides 100% coverage for the single parameter with a clear description. The description merely repeats this information without adding extra meaning or constraints.
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?
The description clearly states the action ('Delete'), the resource ('food diary entry'), and the identifier ('by its ID'). It is specific and distinguishes itself from sibling tools like create, edit, and copy.
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, conditions for deletion, or when not to use it. Sibling tools exist for editing and copying, but no comparative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_edit_food_entryEdit Food Diary EntryAIdempotent
Edit an existing food diary entry. Can change serving size, number of units, or meal type.
Args:
food_entry_id: The entry ID to edit (from get_food_entries)
food_entry_name: Updated display name (optional)
serving_id: New serving ID (optional)
number_of_units: New number of servings (optional)
meal: New meal type (optional)
Returns: Updated entry with new nutrition values.
| Name | Required | Description | Default |
|---|---|---|---|
| food_entry_id | Yes | Food entry ID to edit | |
| food_entry_name | No | Updated display name | |
| serving_id | No | New serving ID | |
| number_of_units | No | New number of servings | |
| meal | No | New meal type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is idempotent and not destructive. The description complements by specifying that it returns updated nutrition values, providing useful context beyond annotations. No contradictions.
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?
The description is concise, with a clear opening sentence followed by a parameter list. It front-loads the purpose and avoids redundancy, though the list adds length.
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?
Given the moderate complexity (5 params, no output schema), the description covers the key aspects: purpose, each parameter's role, and the return value. It is sufficient for an agent to use 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. The description adds value by explaining the source of food_entry_id ('from get_food_entries') and that parameters are optional, improving clarity beyond the schema.
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?
The description clearly states the tool's action ('Edit an existing food diary entry') and the specific attributes it can modify (serving size, units, meal type). This distinguishes it from sibling tools like create or delete.
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?
The description does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. The context of editing is implied, but explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_get_foodGet Food Nutrition DetailsARead-onlyIdempotent
Get detailed nutrition information for a specific food by its food_id. Returns all available servings with full macro and micronutrient breakdown.
Use this after fatsecret_search_food to get the serving_id and nutrition data needed for logging.
Args:
food_id: The FatSecret food ID (from search results)
Returns: Food name, servings list with serving_id, serving description, calories, protein, carbs, fat, and available micronutrients.
| Name | Required | Description | Default |
|---|---|---|---|
| food_id | Yes | FatSecret food ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds value by detailing the return structure (servings, macros, micronutrients), which goes beyond annotations and informs the agent about output behavior.
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?
The description is concise and front-loaded: the first sentence states the purpose, followed by usage guidance and a clear list of parameters and returns. Every sentence adds value without redundancy.
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?
Given the simplicity of the tool (one parameter, no output schema, annotations covering safety), the description provides sufficient information: usage context, input source, and expected output structure. No gaps remain for effective agent invocation.
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?
The input schema has 100% coverage with a description for food_id. The description adds minor context by noting the ID 'from search results', linking to the sibling tool. This slight enhancement justifies a score above baseline.
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?
The description clearly states the tool's function: 'Get detailed nutrition information for a specific food by its food_id.' It distinguishes from siblings by specifying it is used after fatsecret_search_food, contrasting with other tools that modify or retrieve different data.
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?
The description explicitly advises to use this tool after fatsecret_search_food to obtain serving_id and nutrition data for logging. While it does not explicitly exclude other scenarios, the context is clear and provides a specific workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_get_food_entriesGet Food Diary EntriesARead-onlyIdempotent
Get all food diary entries for a specific date. Shows what was logged for each meal with full nutrition breakdown.
Args:
date: Date as YYYY-MM-DD (default: today)
Returns: All food entries grouped by meal with calories, protein, carbs, fat per entry and daily totals.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date YYYY-MM-DD (default: today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds context about the return structure (grouped by meal with per-entry nutrients and daily totals), which goes beyond what annotations provide. No contradictions.
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?
The description is extremely concise: a one-sentence purpose statement followed by a compact args/returns section. Every sentence serves a purpose with no redundancy.
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?
Given the tool's simplicity (single parameter, no output schema), the description fully covers what the agent needs: purpose, parameter format, default, and return structure. Annotations cover safety, making this complete for the complexity level.
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?
Since schema description coverage is 100% and the parameter is well-documented in the schema (date format, default), the description adds no additional semantic value beyond restating the schema. Baseline 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?
The description clearly states it retrieves all food diary entries for a specific date with full nutrition breakdown. It effectively distinguishes from siblings like fatsecret_get_food_entries_month (monthly scope) and other CRUD tools by specifying the exact verb and resource.
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?
The description implies usage for a single date with today as default, but does not explicitly state when to use this tool versus alternatives (e.g., monthly entries, specific meal queries) or provide exclusions. No guidance on when not to use it is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_get_food_entries_monthGet Monthly Food Diary SummaryARead-onlyIdempotent
Get daily calorie/macro totals for an entire month. Useful for tracking adherence and trends.
Args:
month: Month (1-12)
year: Year (e.g., 2026)
Returns: Daily totals for each logged day in the month.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | Month number (1-12) | |
| year | Yes | Year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds that it returns daily totals for logged days and focuses on calorie/macro data, providing some behavioral context beyond annotations, though it omits details like handling of missing days.
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?
The description is brief but complete, with a front-loaded purpose sentence, a use-case statement, and bulleted arguments. No wasted words.
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?
Given simplicity and rich annotations, the description covers the return format (daily totals) and purpose. It could mention specific macro fields, but the term 'calorie/macro totals' is sufficient for a read tool without output schema.
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% with clear parameter descriptions for month and year. The description repeats these with minor additions (e.g., '2026' example), not adding significant meaning beyond the schema.
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?
The description clearly states the tool retrieves daily calorie/macro totals for an entire month, specifying the resource (daily totals) and scope (monthly). This distinguishes it from siblings like 'get_food_entries' which likely target single days.
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?
The description includes 'Useful for tracking adherence and trends,' which implies when to use, but it does not explicitly contrast with alternatives like single-day queries or other tools. The context is clear but lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_get_recently_eatenGet Recently Eaten FoodsARead-onlyIdempotent
Get the user's recently eaten foods for quick re-logging. Returns food IDs and serving info ready to use with fatsecret_create_food_entry.
Returns: List of recently logged foods with IDs and serving details.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, not destructive, idempotent. The description adds useful context about return data (food IDs and serving details) for re-logging, complementing annotations without contradiction.
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 concise sentences plus a return description, front-loaded, no wasted words.
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?
For a parameterless tool with no output schema, the description fully covers purpose, return data, and how to use with another tool.
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?
No input parameters; schema coverage is 100%. Description adds no parameter info, which is appropriate.
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?
The description clearly states the tool gets recently eaten foods for quick re-logging, differentiating it from sibling tools like fatsecret_get_food_entries.
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?
Provides a clear use case (quick re-logging) and mentions integration with fatsecret_create_food_entry, but does not explicitly contrast with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_get_saved_mealsList Saved Meal TemplatesARead-onlyIdempotent
Get all saved meal templates for the user. Shows meal names, IDs, and food items within each.
Returns: List of saved meals with their IDs, names, and food contents.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent, open-world hints. The description adds clarity on the return value: 'List of saved meals with their IDs, names, and food contents.' This is sufficient beyond annotations.
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?
The description is two concise sentences, front-loading the core purpose and then listing return details. No unnecessary words.
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?
Given the simplicity (no parameters, no output schema), the description is nearly complete. It covers what the tool does and what it returns. A minor gap: no mention of potential pagination or limits, but likely not needed.
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?
The tool has zero parameters, so the description cannot add parameter meaning beyond the schema. Per guidelines, baseline for 0 parameters is 4.
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?
The description clearly states the purpose: 'Get all saved meal templates for the user.' It specifies the verb ('Get') and the resource ('saved meal templates'), and distinguishes itself from sibling tools like 'create' or 'copy' tools.
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?
The description does not provide explicit guidance on when to use or not use this tool. It simply describes functionality, leaving the agent to infer usage context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_get_weights_monthGet Monthly Weight HistoryARead-onlyIdempotent
Get weight entries for an entire month. Useful for tracking weight trends during bulk/cut phases.
Args:
month: Month (1-12)
year: Year (e.g., 2026)
Returns: All weight entries for the month with dates.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | Month (1-12) | |
| year | Yes | Year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety hints (readOnlyHint=true, destructiveHint=false). The description adds 'Returns: All weight entries for the month with dates,' which clarifies the return value and aligns with annotations. No contradictions.
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?
The description is extremely concise: two lines of purpose and args. Information is front-loaded and every sentence adds value. No unnecessary text.
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?
For a simple read-only tool with two parameters and no output schema, the description is adequate. It covers what the tool does and what it returns, leaving no critical gaps.
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% with clear descriptions for month (1-12) and year (2000-2100). The description merely repeats the args without adding extra meaning beyond what the schema already provides.
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?
The description clearly states 'Get weight entries for an entire month' with a specific verb and resource. It distinguishes itself from sibling tools like fatsecret_get_food_entries_month (food entries) and fatsecret_update_weight (update action).
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?
The description says 'Useful for tracking weight trends during bulk/cut phases,' implying a use case. It does not explicitly state when not to use or provide alternatives, but the context of sibling tools makes the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_search_foodSearch FatSecret Food DatabaseARead-onlyIdempotent
Search the FatSecret food database by name. Returns food items with basic nutrition info per serving. Use this to find food_id and serving_id needed for logging diary entries.
Args:
query: Food name to search (e.g., "chicken breast", "jasmine rice")
page: Page number for pagination (default: 0)
max_results: Results per page, max 50 (default: 20)
Returns: List of foods with id, name, description (brief nutrition summary).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Food name to search for | |
| page | No | Page number (0-indexed) | |
| max_results | No | Results per page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, establishing a safe read operation. The description adds that it returns basic nutrition info per serving and mentions pagination via page and max_results, but this is already in the schema. No new behavioral traits beyond annotations.
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?
The description is concise with three short paragraphs: purpose, args with examples, and return format. No redundant information, well-structured, and easy to parse.
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?
No output schema exists, so the description should explain return structure thoroughly. It states 'List of foods with id, name, description (brief nutrition summary)' but does not specify if serving_id is included or if additional fields exist. Given the openWorldHint, this is minimally acceptable but could be more precise.
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?
The input schema has 100% description coverage, so baseline is 3. The description adds value by providing example queries ('chicken breast', 'jasmine rice'), clarifying pagination defaults, and explaining that the 'description' field contains a brief nutrition summary. This goes beyond the schema.
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?
The description clearly states 'Search the FatSecret food database by name' and indicates it returns food items with basic nutrition info. It effectively distinguishes from sibling tools like fatsecret_create_food_entry or fatsecret_get_food, which are mutation or retrieval of specific items.
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?
The description explicitly says 'Use this to find food_id and serving_id needed for logging diary entries,' providing clear context for when to use this tool. It does not explicitly mention when not to use it, but the sibling tools list makes alternatives obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fatsecret_update_weightLog WeightAIdempotent
Log a weight measurement for a specific date.
Args:
weight_kg: Weight in kilograms
date: Date YYYY-MM-DD (default: today)
comment: Optional note
Returns: Confirmation of logged weight.
| Name | Required | Description | Default |
|---|---|---|---|
| weight_kg | Yes | Weight in kilograms | |
| date | No | Date YYYY-MM-DD (default: today) | |
| comment | No | Optional note |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and readOnlyHint=false, but the description does not clarify critical behavior like whether logging on the same date overwrites or creates a duplicate entry. This gap could lead to misuse despite annotations providing some context.
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?
The description is extremely concise, front-loading the purpose and listing parameters in a clear structure. Every sentence is necessary, with no waste.
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?
While the description covers the basics (purpose, params, return), it omits details on overwrite behavior and the structure of the confirmation. Given no output schema, a bit more context would be beneficial, but the annotations partially compensate.
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%, and the description's 'Args' nearly repeats schema descriptions verbatim. It adds no new meaning beyond what the schema provides, so it meets the baseline but does not enhance understanding.
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?
The description clearly states 'Log a weight measurement for a specific date,' which is a specific verb and resource. It distinguishes from sibling tools like fatsecret_get_weights_month (retrieval) and food-related tools, making the purpose unambiguous.
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?
The description implies usage for logging weight, with a default date, but does not explicitly say when not to use it or compare with alternatives. The context of siblings (e.g., a retrieval tool) provides implicit guidance, but no direct exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct action or resource (food entries, saved meals, weight, search, monthly views). There is no overlap; even the two copy tools copy different things (day vs saved meal to diary). High clarity.
All tool names follow a consistent 'fatsecret_verb_noun' pattern in snake_case (e.g., fatsecret_create_food_entry, fatsecret_get_weights_month). No deviations or mixed conventions.
15 tools cover the domain of nutrition tracking comprehensively without bloat. Each tool serves a clear purpose, and the count is appropriate for the scope (food diary, saved meals, weight, search).
The tool surface covers core CRUD for food entries and weight, saved meal templates, search, and monthly summaries. Minor gaps exist (e.g., no update/delete for saved meals), but the essential workflows are completable.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server exposing supplements database used by iNutriPlan.com
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for USDA nutrition data lookup, meal logging, and daily macro tracking.20MIT
- AlicenseAqualityAmaintenanceMCP server for Cronometer nutrition tracking, enabling food diary management, nutrition data retrieval, food search, and biometric tracking via Cronometer's mobile REST API.1545MIT
- AlicenseAqualityBmaintenanceMCP server for Cronometer nutrition tracking using the mobile API. Enables food logging, nutrition data retrieval, diary management, and fasting tracking.13MIT
- AlicenseNot gradedqualityAmaintenanceMCP server over the YAZIO food diary that lets a model read what you've eaten today, log meals, build recipes from tracked products, track water, weight and exercise, and query nutrition summaries, goals and profiles.2MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Yurzs/fatsecret-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server