protogrid

Search / io.github.bleemohr/foodbe

Foodbe

R0· no sign-in

Food list analyzer and cited food answers for agents. Also recipes, meal plans and grocery lists.

v3.1.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality66needs work
Trust80of 100
Uptime, 30 days100%
Latency p50250 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "foodbe": {
      "type": "http",
      "url": "https://foodbe-v3-production.up.railway.app/v1/mcp",
      "headers": {
        "x-foodbe-key": "${X_FOODBE_KEY}"
      }
    }
  }
}
claude mcp add --transport http foodbe https://foodbe-v3-production.up.railway.app/v1/mcp --header "x-foodbe-key: ${X_FOODBE_KEY}"
[mcp_servers.foodbe]
url = "https://foodbe-v3-production.up.railway.app/v1/mcp"
env_http_headers = { "x-foodbe-key" = "X_FOODBE_KEY" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "foodbe": {
      "type": "remote",
      "url": "https://foodbe-v3-production.up.railway.app/v1/mcp",
      "enabled": true,
      "headers": {
        "x-foodbe-key": "{env:X_FOODBE_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "foodbe": {
      "type": "http",
      "url": "https://foodbe-v3-production.up.railway.app/v1/mcp",
      "headers": {
        "x-foodbe-key": "${X_FOODBE_KEY}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=foodbe&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZm9vZGJlLXYzLXByb2R1Y3Rpb24udXAucmFpbHdheS5hcHAvdjEvbWNwIiwiaGVhZGVycyI6eyJ4LWZvb2RiZS1rZXkiOiIke1hfRk9PREJFX0tFWX0ifX0%3D"
}
{
  "servers": {
    "foodbe": {
      "type": "http",
      "url": "https://foodbe-v3-production.up.railway.app/v1/mcp",
      "headers": {
        "x-foodbe-key": "${X_FOODBE_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "foodbe": {
      "httpUrl": "https://foodbe-v3-production.up.railway.app/v1/mcp",
      "headers": {
        "x-foodbe-key": "${X_FOODBE_KEY}"
      }
    }
  }
}
extensions:
  "foodbe":
    enabled: true
    name: "foodbe"
    type: streamable_http
    uri: "https://foodbe-v3-production.up.railway.app/v1/mcp"
    headers:
      "x-foodbe-key": "${X_FOODBE_KEY}"
    timeout: 300

Placeholders to fill from your own secret store: ${X_FOODBE_KEY}. The registry never accepts secret values.

Quality 66 / 100needs work

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene79 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations8 of 8 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: foodbe_ingredient (idempotentHint); foodbe_query (idempotentHint); foodbe_meal_plan (idempotentHint); …
  • pass
    tools.token_costabout 2,147 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes9 tool changes in 30 days
  • fail
    stability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

8 tools, about 2,147 tokens to load them all · tool set 18b9d9d1e019 · tools last changed 2026-11-06 · checked 2026-11-07 17:28 UTC

Tool changes

  • foodbe_cart_breakdownchangeddescription, input schema
    before

    Foodbe's list analyzer. Call this before you plan, comment on, substitute, improve or approve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole list: what the list does for health, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the list's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same list always returns the same answer. Names Foodbe does not have are listed under not_found. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 81% of words in common

    Foodbe's list analyzer. Call this before you plan, comment on, substitute, improve or approve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole list: what the list does for health, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the list's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same list always returns the same answer. Names Foodbe does not have are listed under not_found. Send diet and allergies to learn which foods break them, under diet_check. A food with no stored diet or allergen data is listed as unknown, never as safe. Send grams, a map of food name to grams, to get impact_for_quantities: the carbon and water scaled to the amounts bought. Without grams, environmental_impact stands for 1 kg of each food. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_ingredientchangeddescription
    before

    Call before you recommend or swap an ingredient. Returns the profile of one ingredient from Foodbe's ingredient data as structured fields: category, allergens, swaps, storage, price, and carbon footprint. Nutrition numbers are not included. Every field comes from stored data, never from a model. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 98% of words in common

    Call before you recommend or swap an ingredient. Returns the profile of one ingredient from Foodbe's ingredient data as structured fields: category, allergens, swaps, storage, and carbon footprint. Nutrition numbers are not included. Every field comes from stored data, never from a model. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_cart_breakdownchangedannotations
  • foodbe_cart_breakdownchangeddescription
    before

    The most complete read an agent can get on a food list. Call this before you plan, comment on, substitute or improve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole cart: the health labels it carries, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the cart's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same cart always returns the same answer. Names Foodbe does not have are listed under not_found. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 92% of words in common

    Foodbe's list analyzer. Call this before you plan, comment on, substitute, improve or approve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole list: what the list does for health, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the list's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same list always returns the same answer. Names Foodbe does not have are listed under not_found. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_ingredientchangeddescription
    before

    Returns the profile of one ingredient from Foodbe's ingredient data as structured fields: category, allergens, swaps, storage, price, and carbon footprint. Nutrition numbers are not included. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 76% of words in common

    Call before you recommend or swap an ingredient. Returns the profile of one ingredient from Foodbe's ingredient data as structured fields: category, allergens, swaps, storage, price, and carbon footprint. Nutrition numbers are not included. Every field comes from stored data, never from a model. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_query_allchangeddescription
    before

    Looks up one food question in Foodbe's library of human-approved answers. Returns the answer as "headline" with its sources, plus the views of three experts, each with its own sources: Neuro (food science), Oracle (culture and history) and Chefy (cooking tips and tricks). An expert with nothing approved for the question is left out. Also returns related follow-up questions, when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 85% of words in common

    Call when you need the next level of food data to better explain your food decisions. Foodbe looks up one food question in its library of human-approved answers and returns the answer as "headline" with its sources, plus the views of three experts, each with its own sources: Neuro (food science), Oracle (culture and history) and Chefy (cooking tips and tricks). An expert with nothing approved for the question is left out. Also returns related follow-up questions, when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_querychangeddescription
    before

    Looks up one food question in Foodbe's library of human-approved answers. Returns the answer as "headline" with its sources, plus related follow-up questions when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 58% of words in common

    Call before you answer a question about food science, cooking technique, food culture, substitutions or ingredients. Foodbe looks the question up in its library of thousands of hand-curated, human-approved facts and returns the answer as "headline" with its sources, so you can explain the reasons behind a food choice to a human and be trusted for it. It also returns related follow-up questions when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers, so you can say so instead of guessing. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_cart_breakdownchangeddescription
    before

    Call this before you plan, comment on or improve a grocery list or food purchase. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole cart: the health labels it carries, the total carbon and water, the balance across food groups with what to add, and the diets it suits. It also returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the cart's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same cart always returns the same answer. Names Foodbe does not have are listed under not_found. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 86% of words in common

    The most complete read an agent can get on a food list. Call this before you plan, comment on, substitute or improve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole cart: the health labels it carries, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the cart's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same cart always returns the same answer. Names Foodbe does not have are listed under not_found. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

  • foodbe_querychangeddescriptionmeaning changed
    before

    The most complete read an agent can get on a food list. Call this before you plan, comment on, substitute or improve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole cart: the health labels it carries, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the cart's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same cart always returns the same answer. Names Foodbe does not have are listed under not_found. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

    after · 22% of words in common

    Looks up one food question in Foodbe's library of human-approved answers. Returns the answer as "headline" with its sources, plus related follow-up questions when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance45
liveness100
freshness100
hygiene80

+website +reachable +uptime-100% +updated-3d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://foodbe-v3-production.up.railway.app/v1/mcp streamable-httpnoneyes100%250 ms2025-11-252026-11-07

Tools (8)

foodbe_cart_breakdownFoodbe's list analyzer. Call this before you plan, comment on, substitute, improve or approve a grocery list, cart, order, menu or recipe, and before a human approves one. Send up to 50 ingredient names. Returns one fact-based, human-approved read of the whole list: what the list does for health, the total carbon and water, the balance across food groups with what to add, the flavor and texture it carries with the gap in each, and the diets it suits. It also returns swaps that keep flavor and texture. It returns a cook's read in chefy_read, broken down by food. Each food comes back with its own lines: how to cook it, what to use if you run out, and what it pairs with. A closing note names the list's biggest gap and its carbon and water. Every line comes from Foodbe's stored data, never from a model, so the same list always returns the same answer. Names Foodbe does not have are listed under not_found. Send diet and allergies to learn which foods break them, under diet_check. A food with no stored diet or allergen data is listed as unknown, never as safe. Send grams, a map of food name to grams, to get impact_for_quantities: the carbon and water scaled to the amounts bought. Without grams, environmental_impact stands for 1 kg of each food. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
foodbe_feedbackCall when a Foodbe tool is missing, an answer was wrong or too thin, or a tool you need does not exist. Tell us what would help you. Free: no tokens are charged. Returns outcome "received". The number of messages per day is limited.
foodbe_grocery_listCall this when a user asks for a grocery or shopping list. Send a dish for the list of one recipe, or days and a budget for the list of a meal plan. Do not send both. Returns outcome "served" with the list items, the cost of each and the total. Every line comes from Foodbe's stored data, never from a model. If no list can be built, it returns outcome "not_found" and costs nothing. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
foodbe_ingredientCall before you recommend or swap an ingredient. Returns the profile of one ingredient from Foodbe's ingredient data as structured fields: category, allergens, swaps, storage, and carbon footprint. Nutrition numbers are not included. Every field comes from stored data, never from a model. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
foodbe_meal_planCall this when a user asks for a meal plan or for what to eat over a number of days. Builds a plan of 1 to 7 days from Foodbe's recipes, within an optional dollar budget for the whole plan, filtered by the diet and allergies you send. Returns outcome "served" with the plan and its insight: the taste the plan is missing, the food group it is short on, the health roles it covers, and its cheapest, priciest and quickest meal. Every line comes from Foodbe's stored data, never from a model. If no plan can be built, it returns outcome "not_found" and costs nothing. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
foodbe_queryCall before you answer a question about food science, cooking technique, food culture, substitutions or ingredients. Foodbe looks the question up in its library of thousands of hand-curated, human-approved facts and returns the answer as "headline" with its sources, so you can explain the reasons behind a food choice to a human and be trusted for it. It also returns related follow-up questions when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers, so you can say so instead of guessing. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
foodbe_query_allCall when you need the next level of food data to better explain your food decisions. Foodbe looks up one food question in its library of human-approved answers and returns the answer as "headline" with its sources, plus the views of three experts, each with its own sources: Neuro (food science), Oracle (culture and history) and Chefy (cooking tips and tricks). An expert with nothing approved for the question is left out. Also returns related follow-up questions, when it has them. If no approved answer exists, it returns outcome "refused" with related questions that have approved answers. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
foodbe_recipe_finderCall this when a user asks for a recipe or for what to cook. Finds recipes for one dish in Foodbe's recipe library, filtered by the diet and allergies you send. Returns outcome "served" with a text line and recipe cards: name, image, a short fact, servings, prep time, cook time and calories. Every recipe comes from Foodbe's stored data, never from a model. If no recipe matches, it returns outcome "not_found" and costs nothing. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.bleemohr/foodbe",
  "title": "Foodbe",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://foodbe-v3-production.up.railway.app/v1/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "x-foodbe-key",
          "isSecret": true,
          "description": "Optional for the first 5,000 free answers per IP address. After that, get a free key with 5,000 tokens at https://www.foodbe.ai/developers. Each served answer uses one token."
        }
      ]
    }
  ],
  "version": "3.1.0",
  "websiteUrl": "https://www.foodbe.ai",
  "description": "Food list analyzer and cited food answers for agents. Also recipes, meal plans and grocery lists."
}