Foodbe MCP server
Foodbe is a service of food facts for agents. Its list analyzer checks up to 50 foods and returns health labels, carbon and water totals, food group balance, diets, flavor and texture gaps, swaps, and a cook's read for each food. It also returns cited food answers, recipes, meal plans and grocery lists, all from stored, human-approved data.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://www.foodbe.ai/api/mcpWhat its tools do
8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Owner proved control of this listing's domain
- Passed Endpoint answered the live check ·
- Passed Endpoint and vendor documentation share a domain
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Check a grocery list for health labels, carbon and water totals, food group balance and diets
- Get a cited answer to a food science, food history or cooking technique question
- Find swaps that keep a food's flavor and texture
- Build a meal plan or a grocery list within a budget
- Find a recipe filtered by diet and allergies
Protocol and capabilities
- Server
- foodbe 3.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {}
}Tools
8 advertised
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.
{
"type": "object",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "The food question to ask."
}
}
}{
"title": "Ask a food question",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "The food question to ask."
}
}
}{
"title": "Ask all three experts",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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, 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.
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The ingredient name, for example apple."
}
}
}{
"title": "Get an ingredient profile",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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. A limited number of calls work without a key. After that, a key is needed in the x-foodbe-key header.
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "string"
},
"description": "The ingredient names in the cart, up to 50."
}
}
}{
"title": "Break down a grocery list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"required": [
"dish"
],
"properties": {
"diet": {
"type": "string",
"description": "Optional diet to filter by, for example Vegan."
},
"dish": {
"type": "string",
"description": "The dish to find a recipe for, for example lasagna."
},
"allergies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional allergens to leave out, for example Peanuts."
}
}
}{
"title": "Find a recipe",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"description": "Optional number of days, from 1 to 7."
},
"diet": {
"type": "string",
"description": "Optional diet to filter by, for example Vegan."
},
"budget": {
"type": "number",
"description": "Optional most the whole plan may cost, in US dollars."
},
"allergies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional allergens to leave out, for example Peanuts."
}
}
}{
"title": "Build a meal plan",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"description": "Optional number of days, from 1 to 7."
},
"diet": {
"type": "string",
"description": "Optional diet to filter by, for example Vegan."
},
"dish": {
"type": "string",
"description": "The dish to list the groceries for. Leave out when sending days or budget."
},
"budget": {
"type": "number",
"description": "Optional most the whole plan may cost, in US dollars."
},
"allergies": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional allergens to leave out, for example Peanuts."
}
}
}{
"title": "Build a grocery list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"required": [
"message"
],
"properties": {
"kind": {
"enum": [
"missing_tool",
"wrong_answer",
"other"
],
"type": "string",
"description": "Optional: missing_tool, wrong_answer or other."
},
"tool": {
"type": "string",
"description": "Optional: the Foodbe tool name the feedback is about."
},
"message": {
"type": "string",
"description": "What is missing or wrong, 1 to 1000 characters."
}
}
}{
"title": "Send feedback to Foodbe",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-05: 4 of 4 checks answered
- 2026-11-06: 4 of 4 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1219 ms
- 95th percentile latency
- 1219 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1219 ms · metadata changed · 8 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http foodbe https://www.foodbe.ai/api/mcpCodex
codex mcp add foodbe --url https://www.foodbe.ai/api/mcpCursor
{
"mcpServers": {
"foodbe": {
"url": "https://www.foodbe.ai/api/mcp"
}
}
}Cline
{
"mcpServers": {
"foodbe": {
"type": "streamableHttp",
"url": "https://www.foodbe.ai/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"foodbe": {
"type": "http",
"url": "https://www.foodbe.ai/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http foodbe https://www.foodbe.ai/api/mcpClaude Desktop
https://www.foodbe.ai/api/mcpWindsurf
{
"mcpServers": {
"foodbe": {
"serverUrl": "https://www.foodbe.ai/api/mcp"
}
}
}Let your agent find its tools
Find servers like Foodbe from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Foodbe?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.