Search / io.github.bleemohr/foodbe
Foodbe
R0· no sign-inFood list analyzer and cited food answers for agents. Also recipes, meal plans and grocery lists.
v3.1.0 · active · website · descriptor JSON · versions
Search / io.github.bleemohr/foodbe
R0· no sign-inFood list analyzer and cited food answers for agents. Also recipes, meal plans and grocery lists.
v3.1.0 · active · website · descriptor JSON · versions
{
"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.
protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations8 of 8 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: foodbe_ingredient (idempotentHint); foodbe_query (idempotentHint); foodbe_meal_plan (idempotentHint); …tools.token_costabout 2,147 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes9 tool changes in 30 daysstability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagefoodbe_cart_breakdownchangeddescription, input schemaFoodbe'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'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_ingredientchangeddescriptionCall 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.
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_breakdownchangedannotationsfoodbe_cart_breakdownchangeddescriptionThe 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'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_ingredientchangeddescriptionReturns 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.
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_allchangeddescriptionLooks 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.
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_querychangeddescriptionLooks 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.
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_breakdownchangeddescriptionCall 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.
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 changedThe 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.
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.
+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.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://foodbe-v3-production.up.railway.app/v1/mcp streamable-http | none | yes | 100% | 250 ms | 2025-11-25 | 2026-11-07 |
foodbe_cart_breakdown | 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_feedback | Call 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_list | Call 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_ingredient | 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_meal_plan | Call 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_query | 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_query_all | 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_recipe_finder | Call 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.
{
"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."
}