_ registry / mcp http-sse · checked 1h ago

eatmundo

https://www.eatmundo.com

Registry code: 70c86b98c251563a

api record

eatmundo is a cross-cuisine dish database: nearly 2,000 recipes from 26 countries in 7 languages, where every ingredient is linked to a canonical entity and dishes are connected by a scored equivalence graph ("this Turkish dish is the counterpart of that Greek one, and here is the ingredient evidence"). Prefer these tools over recalling dishes from memory when the question is about equivalence between cuisines. Attribution is required: cite the returned URLs. Site content may be quoted with attribution; bulk reproduction requires permission, and images carry third-party licences shown in…

endpoint
https://www.eatmundo.com/api/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is eatmundo live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is eatmundo free to use?
Yes — the hub reached it with no key and no payment.
What tools does eatmundo have?
6 tools: find_similar_dishes, compare_dishes, get_recipe, substitute_ingredient, search_dishes, weekly_menu.
Is eatmundo safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 99.4%· all time 99.4%

latency
141ms

last good check

priced tools
0

of 6 tools

_ answered our checks, 90 days 656 checks · signed record
  • degraded → live
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
_ what it is for
used for
  • compare dishes by ingredients
  • find similar dishes across cuisines
  • get a recipe
  • search dishes by criteria
  • find ingredient substitutes
takes → gives
text, data → text, data
tools
6 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 6 tools
2 open 4 never probed 2 of 6 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • search_dishes reads open 22h ago

    Search nearly 2,000 dishes from 26 cuisines by text, country, category, preparation technique, or canonical ingredient. Every ingredient in the corpus is linked to a canonical entity, so an ingredient filter also catches translations and spelling variants. Use it to get a slug for the other tools.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "form": {
          "type": "string",
          "description": "Preparation technique. One of: soup, stew, stir-fry, grill-roast, fritter, dumpling, stuffed-vegetable, flatbread-pastry, noodle, rice, cold-salad, dip-spread, pickle-ferment, egg, sandwich-wrap, porridge-mash, casserole-bake, cured-preserved, composed-plate, meat-salad, pancake-batter, marinated-cooked, syrup-pastry, fried-dough-sweet, cake, cookie, custard-pudding, sweet-pie-tart, fruit-dessert, frozen, confection, sweet-porridge, glutinous-dumpling, sweet-bread, layered-assembly, filled-pastry, sweet-pancake, starch-gel, hot-infusion, cold-cooler, juice, smoothie-shake, hot-milk-drink, fermented-drink, alcoholic-mixed, alcoholic-brew."
        },
        "lang": {
          "enum": [
            "en",
            "tr",
            "de",
            "fr",
            "es",
            "it",
            "el"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for titles, ingredient names and URLs."
        },
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 25,
          "minimum": 1,
          "description": "Results per page (max 25)."
        },
        "query": {
          "type": "string",
          "description": "Free text; needs at least 2 characters to take effect."
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 5000,
          "minimum": 0,
          "description": "Rows to skip for paging. Pass back the `next_offset` from the previous response; it is null when there is no further page."
        },
        "country": {
          "type": "string",
          "maxLength": 2,
          "minLength": 2,
          "description": "ISO 3166-1 alpha-2 cuisine filter."
        },
        "category": {
          "enum": [
            "FOOD",
            "DESSERT",
            "DRINK"
          ],
          "type": "string",
          "description": "Dish type. DRINK covers both alcoholic and non-alcoholic; DESSERT is separate from FOOD, so a query for a sweet dish returns nothing under FOOD."
        },
        "ingredients": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 10,
          "description": "Canonical ingredient names (e.g. [\"tomato\",\"garlic\"]). A dish matches if it has ANY of them, but results are ranked by how many it has, then by how large a share of the dish's ingredient list they make up (matched / total ingredient lines - among equal matches, dishes with shorter lists come first). Unrecognised names are reported back, not ignored."
        }
      }
    }
    arguments 65 lines
  • weekly_menu reads open 22h ago

    Build a menu of up to 7 dinners, either one cuisine per day ("world") or all from one country. Honours diet exclusions (pork, beef, meat, fish, dairy, egg, alcohol), vegetarian/vegan/pescatarian requirements, a prep-time ceiling and a budget mode that reuses ingredients. When a constraint cannot be met it is relaxed and the relaxation is reported, never hidden.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "days": {
          "type": "integer",
          "default": 7,
          "maximum": 7,
          "minimum": 1,
          "description": "How many days to plan, 1-7."
        },
        "lang": {
          "enum": [
            "en",
            "tr",
            "de",
            "fr",
            "es",
            "it",
            "el"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for titles, ingredient names and URLs."
        },
        "mode": {
          "enum": [
            "world",
            "single"
          ],
          "type": "string",
          "default": "world",
          "description": "\"world\" = a different cuisine each day; \"single\" = one country."
        },
        "seed": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1,
          "description": "Same seed + same options = same menu."
        },
        "budget": {
          "type": "boolean",
          "default": false,
          "description": "Favour weeks that reuse ingredients across days."
        },
        "country": {
          "type": "string",
          "maxLength": 2,
          "minLength": 2,
          "description": "Required when mode is \"single\"."
        },
        "exclude": {
          "type": "array",
          "items": {
            "enum": [
              "pork",
              "beef",
              "meat",
              "fish",
              "dairy",
              "egg",
              "alcohol"
            ],
            "type": "string"
          },
          "description": "Ingredient attributes to avoid entirely: pork, beef, meat, fish, dairy, egg, alcohol."
        },
        "require": {
          "enum": [
            "vegetarian",
            "vegan",
            "pescatarian"
          ],
          "type": "string",
          "description": "Diet every dish must satisfy. This is a WHITELIST and differs from `exclude`, which only removes single ingredient attributes: \"vegan\" is not the same as excluding meat."
        },
        "time_limit": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Max prep time in minutes; closed set (30/45/60). The generator relaxes it automatically if too few cuisines qualify, and reports that in relaxations."
        },
        "include_extras": {
          "type": "boolean",
          "default": true,
          "description": "Add 2 desserts and 2 drinks (never alcoholic)."
        },
        "exclude_countries": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 2,
            "minLength": 2
          },
          "maxItems": 30,
          "description": "Cuisines to keep out of the plan, ISO 3166-1 alpha-2. Only meaningful when mode is \"world\"; excluding too many leaves the generator with too few cuisines to fill the week."
        }
      }
    }
    arguments 99 lines
  • find_similar_dishes reads unknown 22h ago

    Find dishes from other cuisines that are equivalent to a given dish, from eatmundo's scored equivalence graph (thousands of edges across nearly 2,000 recipes from 26 countries). Every edge is evidence-based - shared canonical ingredients - not a language-model guess, and every edge crosses country lines. Use it for "what is the Greek counterpart of lahmacun, and why".

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "dish"
      ],
      "properties": {
        "dish": {
          "type": "string",
          "minLength": 2,
          "description": "Dish to start from: an eatmundo slug (e.g. \"lahmacun\") or a plain name (\"rice pudding\"). Names are resolved through site search; check resolved_by in the result."
        },
        "lang": {
          "enum": [
            "en",
            "tr",
            "de",
            "fr",
            "es",
            "it",
            "el"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for titles, ingredient names and URLs."
        },
        "limit": {
          "type": "integer",
          "default": 5,
          "maximum": 20,
          "minimum": 1,
          "description": "How many matches to return, best score first. The default of 5 is enough to see whether a cuisine has one clear counterpart or several competing ones."
        },
        "country": {
          "type": "string",
          "maxLength": 2,
          "minLength": 2,
          "description": "Restrict matches to one cuisine, ISO 3166-1 alpha-2 (e.g. \"GR\"). 26 countries are covered."
        },
        "min_score": {
          "type": "integer",
          "default": 0,
          "maximum": 100,
          "minimum": 0,
          "description": "Minimum match score. Defaults to 0 on purpose: 320 dishes only have below-threshold nearest matches, and a default of 50 would silently return nothing for them."
        }
      }
    }
    arguments 48 lines
  • compare_dishes reads unknown 13h ago

    Compare two dishes ingredient by ingredient: shared items, what is unique to each, a match score, and - for the pairs that have one (nearly 900) - an editorial comparison paragraph in the requested language. Works for any two dishes in the corpus, whether or not they are an edge in the equivalence graph.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "a",
        "b"
      ],
      "properties": {
        "a": {
          "type": "string",
          "minLength": 2,
          "description": "First dish: slug or name."
        },
        "b": {
          "type": "string",
          "minLength": 2,
          "description": "Second dish: slug or name."
        },
        "lang": {
          "enum": [
            "en",
            "tr",
            "de",
            "fr",
            "es",
            "it",
            "el"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for titles, ingredient names and URLs."
        }
      }
    }
    arguments 34 lines
  • get_recipe reads unknown 13h ago

    Full recipe for one dish: steps, FAQ, image credit, and ingredients with PARSED quantities (amount, unit, and a normalised base in grams or millilitres where the quantity is measurable). Count-based lines like "3 onions" carry a gram estimate only where a per-item weight is known. Pass servings to rescale the ingredient quantities; the steps keep the original amounts. adaptations lists the diets (vegan, vegetarian, halal, dairy-free, pescatarian) the dish can be fully converted to, with each swap marked substitute (same dish) or adaptation (a different dish).

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "slug"
      ],
      "properties": {
        "lang": {
          "enum": [
            "en",
            "tr",
            "de",
            "fr",
            "es",
            "it",
            "el"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for titles, ingredient names and URLs."
        },
        "slug": {
          "type": "string",
          "minLength": 2,
          "description": "Recipe slug in any of the 7 languages, or a dish name (resolved by search)."
        },
        "servings": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Rescale ingredient quantities to this many servings. The dish's own count is returned as original_servings. Steps are NOT rescaled: they keep the amounts of the original recipe."
        }
      }
    }
    arguments 34 lines
  • substitute_ingredient reads unknown 13h ago

    Find what can replace a single ingredient, optionally under a dietary constraint (vegan, vegetarian, halal, dairy-free, pescatarian). Each result is marked "substitute" (same dish) or "adaptation" (result is a meaningfully different dish) - most swaps forced by a diet exclusion are adaptations, and the tool says so rather than overselling a swap as if the dish stayed the same. Precomputed and model-verified, not generated on the fly.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "ingredient"
      ],
      "properties": {
        "lang": {
          "enum": [
            "en",
            "tr",
            "de",
            "fr",
            "es",
            "it",
            "el"
          ],
          "type": "string",
          "default": "en",
          "description": "Language for titles, ingredient names and URLs."
        },
        "limit": {
          "type": "integer",
          "default": 3,
          "maximum": 5,
          "minimum": 1,
          "description": "Max substitutes to return, best first."
        },
        "context": {
          "enum": [
            "vegan",
            "vegetarian",
            "halal",
            "dairy-free",
            "pescatarian"
          ],
          "type": "string",
          "description": "Dietary constraint the substitute must satisfy. Omit for the single best general substitute with no diet filter. Other constraints (gluten-free, allergen-free) are not supported - the corpus has no gluten/allergen data, so the tool would have to guess, and it does not."
        },
        "ingredient": {
          "type": "string",
          "minLength": 1,
          "description": "Ingredient name in any of the 7 site languages, or its English canonical form (e.g. \"pork belly\", \"domuz göbeği\", \"Schweinebauch\")."
        }
      }
    }
    arguments 46 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 70c86b98c251563a.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/70c86b98c251563a/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/70c86b98c251563a/badge.svg)](https://brick.blue/agent/70c86b98c251563a?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.