Skip to main content
Glama
Yurzs

fatsecret-mcp-server

by Yurzs

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

fatsecret_search_food

Search food database by name

fatsecret_get_food

Get full nutrition details for a food

fatsecret_create_food_entry

Log food to diary

fatsecret_edit_food_entry

Edit existing diary entry

fatsecret_delete_food_entry

Delete diary entry

fatsecret_get_food_entries

Get all entries for a date

fatsecret_get_food_entries_month

Monthly diary summary

fatsecret_create_saved_meal

Create reusable meal template

fatsecret_add_food_to_saved_meal

Add food to a saved meal

fatsecret_get_saved_meals

List saved meal templates

fatsecret_copy_saved_meal_to_diary

Paste saved meal into diary

fatsecret_update_weight

Log weight for a date

fatsecret_get_weights_month

Monthly weight history

fatsecret_get_recently_eaten

Recently logged foods

fatsecret_copy_day

Copy all entries between dates

Related MCP server: io.github.rwestergren/cronometer-api-mcp

Setup

1. Register for FatSecret API

  1. Go to https://platform.fatsecret.com/register

  2. Create a developer account

  3. 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.js

This will:

  1. Start a local web server at http://localhost:9876

  2. Open your browser to authorize with FatSecret

  3. Complete the OAuth 1.0a 3-legged flow

  4. Display your FATSECRET_ACCESS_TOKEN and FATSECRET_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 start

6. 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/_npx

Getting user tokens without cloning

You can run the OAuth setup script directly too:

npx -y github:Yurzs/fatsecret-mcp-server/scripts/oauth-setup.js

Or 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

  1. Search for a food: fatsecret_search_food("chicken breast")

  2. Get details to find serving_id: fatsecret_get_food(food_id)

  3. Log it: fatsecret_create_food_entry(food_id, "Chicken Breast", serving_id, 2.5, "lunch")

  4. Review day: fatsecret_get_food_entries("2026-05-16")

  5. 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 tools
fatsecret_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
saved_meal_idYesSaved meal ID
food_idYesFood ID to add
food_entry_nameYesDisplay name
serving_idYesServing size ID
number_of_unitsYesNumber of servings

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
from_dateYesSource date
to_dateYesTarget date

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
saved_meal_idYesSaved meal ID to copy
mealYesTarget meal slot
dateNoTarget date YYYY-MM-DD (default: today)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
food_idYesFatSecret food ID
food_entry_nameYesDisplay name for the entry
serving_idYesServing size ID from food details
number_of_unitsYesNumber of servings
mealYesMeal type
dateNoDate YYYY-MM-DD (default: today)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
saved_meal_nameYesName for the meal template
saved_meal_descriptionNoOptional description
meal_typeNoDefault meal typeother

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EntryA
DestructiveIdempotent

Delete a food diary entry by its ID.

Args:

  • food_entry_id: The entry ID to delete

Returns: Confirmation of deletion.

ParametersJSON Schema
NameRequiredDescriptionDefault
food_entry_idYesFood entry ID to delete

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 EntryA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
food_entry_idYesFood entry ID to edit
food_entry_nameNoUpdated display name
serving_idNoNew serving ID
number_of_unitsNoNew number of servings
mealNoNew meal type

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 DetailsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
food_idYesFatSecret food ID

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 EntriesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate YYYY-MM-DD (default: today)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 SummaryA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth number (1-12)
yearYesYear

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 FoodsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 TemplatesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 HistoryA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesMonth (1-12)
yearYesYear

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 DatabaseA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFood name to search for
pageNoPage number (0-indexed)
max_resultsNoResults per page

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 WeightA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
weight_kgYesWeight in kilograms
dateNoDate YYYY-MM-DD (default: today)
commentNoOptional note

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A4.2/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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).

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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