{"apiVersion":"v1","directorySlug":"xn-btel-0ra-mcp-704dc28f9f","title":"Bütel","description":"Revolutionieren Sie Ihr Restaurant mit Bütel: WhatsApp-Bestellsystem mit nur 6% Gebühr. Keine App, keine Warteschlangen, keine Fixkosten. Fehlerfrei, effizient, profitabel. Jetzt testen!","pageUrl":"https://www.mcpbundles.com/skills/xn-btel-0ra-mcp-704dc28f9f","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://api.xn--btel-0ra.ch/mcp","hostedMcpUrl":null,"toolCount":7,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"ch.xn--btel-0ra/xn-btel-0ra-mcp-704dc28f9f","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"find_restaurants","description":"List Bütel restaurants. Optionally filter by a free-text query that matches restaurant name, address, or slug. Empty / whitespace-only / omitted query returns the full list — safe to pass any of those when you want all restaurants. Returns id, name, slug, address, opening hours, and isOpen status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"query":{"type":"string","maxLength":100}}},"title":"Find Bütel restaurants","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"find_restaurants","displayName":"Find Bütel restaurants"},{"name":"get_menu","description":"Return the currently-available menu for a restaurant: dishes, drinks, and category definitions. Items the kitchen has marked unavailable are pre-filtered server-side, so every dish/drink you see can actually be ordered right now. Each item exposes its id, name, price (CHF), description, and customisation: `mandatoryOptions` (groups the user MUST pick from — e.g. size, sauce) and `options` (optional extras — e.g. extra cheese, no onions). Read these arrays and ASK THE USER which choices they want","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["restaurantId"],"properties":{"restaurantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"title":"Get restaurant menu","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_menu","displayName":"Get restaurant menu"},{"name":"get_pickup_slots","description":"Return today and tomorrow pickup-time slots for a restaurant. Slots are 5-minute intervals that already respect the restaurant's opening hours and minimum lead time. Booking horizon is capped at 48 hours, so this tool only ever exposes today and tomorrow. Use one of these slots as the pickupTime in place_order.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["restaurantId"],"properties":{"restaurantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"title":"Get available pickup slots","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_pickup_slots","displayName":"Get available pickup slots"},{"name":"place_order","description":"Place an order at the given restaurant for the given items and pickup time. The pickupTime must be within the next 48 hours, 5-minute aligned, and inside the restaurant's opening hours; otherwise the order is rejected. For every dish that has mandatoryOptions groups (size, sauce, …) you MUST pass selectedMandatoryOptions covering each group — the order is rejected otherwise. Ask the user before guessing. Returns a Payrexx paymentLink the user must open to pay — the ONLY manual step. After paymen","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["restaurantId","items","pickupTime"],"properties":{"items":{"type":"array","items":{"type":"object","required":["dishId","quantity"],"properties":{"dishId":{"type":"string","minLength":1},"quantity":{"type":"integer","maximum":100,"minimum":1},"selectedOptionIds":{"type":"array","items":{"type":"string"}},"selectedMandatoryOptions":{"type":"array","items":{"type":"object","required":["groupId","optionId"],"properties":{"groupId":{"type":"string"},"optionId":{"type":"string"}}}}}},"maxItems":50,"minItems":1},"pickupTime":{"type":"string"},"restaurantId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"customerEmail":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","maxLength":254},"idempotencyKey":{"type":"string","maxLength":128}}},"title":"Place an anonymous order","logicalName":"place_order","displayName":"Place an anonymous order","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_order_status","description":"Return the current status of an order: payment status, pickupCode (once the payment is authorised), pickupTime, and any time-conflict suggestions. Use this to poll for payment completion and to read the pickupCode back to the user.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orderId"],"properties":{"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"title":"Get order status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_order_status","displayName":"Get order status"},{"name":"cancel_order","description":"Cancel an order that has not been paid yet (status AWAITING_PAYMENT). Paid or pre-authorised orders cannot be cancelled here — the user must contact the restaurant directly.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orderId"],"properties":{"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"title":"Cancel an unpaid order","logicalName":"cancel_order","displayName":"Cancel an unpaid order","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wait_for_order_decision","description":"Long-poll an order (server-side) until the kitchen makes a decision. Returns when the order moves out of AUTHORIZED — accepted, rejected (auto-refund), or time-conflict (customer needs to pick a new time) — or after maxWaitSeconds (default 300, matches the 5-minute auto-decline window). Call once after the user has paid via Payrexx; if `timedOut` is true, call again.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["orderId"],"properties":{"orderId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maxWaitSeconds":{"type":"integer","maximum":300,"minimum":1}}},"title":"Wait for the kitchen to accept or reject","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"wait_for_order_decision","displayName":"Wait for the kitchen to accept or reject"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=B-tel&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkueG4tLWJ0ZWwtMHJhLmNoL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22B-tel%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.xn--btel-0ra.ch%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22B-tel%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.xn--btel-0ra.ch%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=B%C3%BCtel&connectorUrl=https%3A%2F%2Fapi.xn--btel-0ra.ch%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"B-tel\" --url \"https://api.xn--btel-0ra.ch/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/xn-btel-0ra-mcp-704dc28f9f","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/xn-btel-0ra-mcp-704dc28f9f/tools/{tool}","mcpServerUrl":"https://api.xn--btel-0ra.ch/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/xn-btel-0ra-mcp-704dc28f9f?live=1"}