Guest API for meni.ge restaurants: browse menus, place orders, reserve tables. No auth needed.
Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.
https://api.meni.ge/llm/mcp13 tools · 194msget_menuGet the full menu of a meni.ge location: categories, items with prices, variant groups and addons, currency and ordering capabilities. domain = uppercase location code from the QR/menu URL.Get the full menu of a meni.ge location: categories, items with prices, variant groups and addons, currency and ordering capabilities. domain = uppercase location code from the QR/menu URL.
| Parameter | Type | Description |
|---|---|---|
| domain* | string | Location domain code, e.g. MYCAFE |
| language | string | ISO 639-1 menu language, default en |
get_itemGet one menu item with its variant groups and addons, or several at once: pass itemIds (up to 10) instead of itemId to look items up in bulk — the bulk answer is {items, notFound}.Get one menu item with its variant groups and addons, or several at once: pass itemIds (up to 10) instead of itemId to look items up in bulk — the bulk answer is {items, notFound}.
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| itemId | string | One item; mutually exclusive with itemIds |
| itemIds | array | Bulk lookup, up to 10 ids; mutually exclusive with itemId |
| language | string | — |
search_productsSemantic search over the location's catalog: product/dish names, descriptions, specifications, brand, SKU/barcodes and attached docs. Use for "do you have…" / "recommend…" / "how much is…" questions instead of paging through get_menu. Returns matching items with prices and a relevance score; falls…Semantic search over the location's catalog: product/dish names, descriptions, specifications, brand, SKU/barcodes and attached docs. Use for "do you have…" / "recommend…" / "how much is…" questions instead of paging through get_menu. Returns matching items with prices and a relevance score; falls…
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| query* | string | What the guest is looking for, in any language |
| language | string | ISO 639-1 menu language, default en |
| limit | integer | How many items to return (1–10, default 6) |
update_cartBuild the guest order step by step in a server-side cart, the way a human uses the web cart. Without cartId a new cart is created (keep the returned cartId — it is the access token). Each entry of updates: {itemId, quantity, variants?, addons?, comment?} adds a line; {lineId, quantity} changes one;…Build the guest order step by step in a server-side cart, the way a human uses the web cart. Without cartId a new cart is created (keep the returned cartId — it is the access token). Each entry of updates: {itemId, quantity, variants?, addons?, comment?} adds a line; {lineId, quantity} changes one;…
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| cartId | string | Omit to create a new cart |
| updates* | array | — |
| language | string | — |
get_cartRead a cart created with update_cart: lines with live unit prices, subtotal, item count, the checkoutUrl for a human hand-off and the expiry date (carts live 7 days). Lines whose item left the menu are flagged unavailable and excluded from the subtotal.Read a cart created with update_cart: lines with live unit prices, subtotal, item count, the checkoutUrl for a human hand-off and the expiry date (carts live 7 days). Lines whose item left the menu are flagged unavailable and excluded from the subtotal.
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| cartId* | string | — |
| language | string | — |
get_store_infoFacts about the location that are not on the menu: address, contacts, coordinates, working hours with openNow computed in the venue timezone, delivery and pickup terms (fees, minimum order, zones, ETA), accepted payment methods and currency, shipping/return terms and links to the published legal do…Facts about the location that are not on the menu: address, contacts, coordinates, working hours with openNow computed in the venue timezone, delivery and pickup terms (fees, minimum order, zones, ETA), accepted payment methods and currency, shipping/return terms and links to the published legal do…
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| language | string | ISO 639-1; falls back to the location default |
search_policies_and_faqsSearch the location's own published policies, FAQ entries and info pages (privacy, terms, returns, delivery, cookies, help articles) plus, when the owner allows it, their internal knowledge base. Returns short snippets with a link to the source. Use it for policy/help questions instead of guessing;…Search the location's own published policies, FAQ entries and info pages (privacy, terms, returns, delivery, cookies, help articles) plus, when the owner allows it, their internal knowledge base. Returns short snippets with a link to the source. Use it for policy/help questions instead of guessing;…
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| query* | string | The guest question, in any language |
| language | string | — |
| limit | integer | How many snippets to return (1–10, default 5) |
create_orderValidate and place an order at a meni.ge location. Returns orderId (keep it — it is the access token for status checks) and the computed total. customer.name/phone are required for pickup and delivery; delivery.address is required for delivery. Pass either items (inline) or cartId (the cart built w…Validate and place an order at a meni.ge location. Returns orderId (keep it — it is the access token for status checks) and the computed total. customer.name/phone are required for pickup and delivery; delivery.address is required for delivery. Pass either items (inline) or cartId (the cart built w…
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| cartId | string | Order this cart; mutually exclusive with items |
| idempotencyKey | string | Retry guard, e.g. a UUID you keep for this order attempt |
| items | array | — |
| orderType | string | — |
| customer | object | — |
| delivery | object | — |
| pickup | object | — |
| paymentMethod | string | — |
| notes | string | — |
| qrCode | string | — |
| language | string | — |
get_order_statusCheck the status of an order previously created with create_order.Check the status of an order previously created with create_order.
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| orderId* | string | — |
check_table_availabilityWhich tables of the location are free or busy in a given time window (uses the floor plan published by the restaurant). Pass the chosen table id to create_reservation as tableId.Which tables of the location are free or busy in a given time window (uses the floor plan published by the restaurant). Pass the chosen table id to create_reservation as tableId.
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| start* | string | ISO 8601 datetime |
| durationMinutes | integer | — |
create_reservationRequest a table reservation. Starts as "pending" until the restaurant confirms — check with get_reservation_status. Returns reservationId (keep it: it is the token for status and cancellation). Optionally bind a specific table via tableId (from check_table_availability).Request a table reservation. Starts as "pending" until the restaurant confirms — check with get_reservation_status. Returns reservationId (keep it: it is the token for status and cancellation). Optionally bind a specific table via tableId (from check_table_availability).
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| start* | string | ISO 8601 datetime |
| durationMinutes | integer | — |
| partySize | integer | — |
| name* | string | Guest name |
| phone | string | — |
| comment | string | — |
| tableId | string | — |
| codeId | string | — |
| idempotencyKey | string | Retry guard: repeating the same key returns the original reservation instead of booking twice. |
get_reservation_statusStatus of a reservation created with create_reservation (pending/confirmed/seated).Status of a reservation created with create_reservation (pending/confirmed/seated).
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| reservationId* | string | — |
cancel_reservationCancel a reservation previously created with create_reservation.Cancel a reservation previously created with create_reservation.
| Parameter | Type | Description |
|---|---|---|
| domain* | string | — |
| reservationId* | string | — |
13 of 13 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Guest API for meni.ge restaurants: browse menus, place orders, reserve tables. No auth needed.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.