{"ok":true,"site":{"host":"agentbridge-delta.vercel.app","url":"https://agentbridge-delta.vercel.app/","type":"live","desc":"AgentBridge exposes 12 in-page WebMCP tools so capable browser agents can search meals, build a cart, and open checkout while the user watches.","tools":[{"name":"list-categories","kind":"answer","impl":"imperative","description":"Discover available food categories such as burgers, pizza, sushi, Indian, and breakfast. Use when the user wants ideas or has not named a cuisine; otherwise call search-restaurants directly.","title":"List food categories","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"search-restaurants","kind":"answer","impl":"imperative","description":"Find restaurants matching a food, cuisine, or category. Start here for requests like 'find me a burger for one person under $20' by using category 'burgers' or query 'burger'. Returns restaurant ids, ratings, price level, ETA, delivery fee, and offers. Next call get-restaurant-menu. Price level is not the final order total.","title":"Search restaurants","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search (e.g. 'spicy ramen', 'vegan')"},"category":{"type":"string","enum":["breakfast","burgers","pizza","sushi","indian","mediterranean","healthy","italian","ramen","grill","dessert","coffee"],"description":"Category id to filter by"},"cuisine":{"type":"string","description":"Cuisine name (e.g. italian, indian, sushi)"},"priceLevel":{"type":"string","enum":["$","$$","$$$","$$$$"],"description":"Price level filter"},"sortBy":{"type":"string","enum":["recommended","rating","eta","deliveryFee"],"description":"Sort order"},"freeDelivery":{"type":"boolean","description":"Only show restaurants with free delivery"},"offers":{"type":"boolean","description":"Only show restaurants running an offer/promo"},"topRated":{"type":"boolean","description":"Only show top-rated restaurants (4.6+)"},"under30":{"type":"boolean","description":"Only show restaurants delivering in 30 min or less"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get-restaurant-menu","kind":"answer","impl":"imperative","description":"Get the full menu for a restaurant returned by search-restaurants. Returns item ids, prices, descriptions, sections, and dietary tags. Select suitable items from this result, then use get-cart to verify a total budget because fees and tax are added at checkout.","title":"Get restaurant menu","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","description":"The restaurant id from search results (name also works)"}},"required":["restaurantId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"filter-menu-items","kind":"act","impl":"imperative","description":"Narrow the current menu by food name, dietary needs, section, or maximum item price. maxPrice applies per item, not to the full order. To satisfy a total budget, add a candidate and check the final total with get-cart.","title":"Filter menu items","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"restaurantId":{"type":"string","description":"Restaurant id (defaults to the open restaurant)"},"dietaryTags":{"type":"array","items":{"type":"string"},"description":"Dietary filters: vegetarian, vegan, gluten-free, dairy-free, nut-free, spicy, halal, kosher"},"maxPrice":{"type":"number","description":"Maximum price per item"},"section":{"type":"string","description":"Menu section (e.g. Popular, Sides, Drinks, Desserts)"},"query":{"type":"string","description":"Text to match in item name/description"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find-meals","kind":"act","impl":"imperative","description":"Search individual dishes ACROSS ALL restaurants in one call by intent, budget, and meal time — the fastest way to answer requests like 'a healthy lunch under $15' or 'something spicy for dinner'. Returns matching dishes with their restaurant, price, and image, ranked by relevance, and updates the storefront the user is watching. Prefer this over opening menus one at a time. Then call add-to-cart with an item id. Intent words understood in query include: healthy, light, hearty, spicy, sweet, protein, comfort — plus any dish or cuisine name. maxPrice applies per dish; confirm the full order total with get-cart because fees and tax are added at checkout.","title":"Find meals across restaurants","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Dish, cuisine, or intent keywords (e.g. 'healthy bowl', 'spicy', 'comfort')"},"mealType":{"type":"string","enum":["breakfast","lunch","dinner","dessert","drink","side"],"description":"Filter by meal time or course"},"maxPrice":{"type":"number","description":"Maximum price per dish in USD"},"dietaryTags":{"type":"array","items":{"type":"string"},"description":"Dietary filters: vegetarian, vegan, gluten-free, dairy-free, nut-free, spicy, halal, kosher"},"limit":{"type":"number","description":"Maximum number of dishes to return (default 12)"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add-to-cart","kind":"act","impl":"imperative","description":"Add a menu item using its item id, quantity, and optional size or extra option ids. Returns the updated cart and complete totals. For budget requests, inspect the returned total and adjust the cart if it exceeds the user's limit.","title":"Add item to cart","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"The menu item id (an item name is also accepted)"},"quantity":{"type":"number","description":"Quantity (default 1)"},"optionIds":{"type":"array","items":{"type":"string"},"description":"Optional option ids (e.g. 'large') from the item's option groups"}},"required":["itemId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove-from-cart","kind":"act","impl":"imperative","description":"Remove an item from the cart by item id or name. Use to correct a selection or bring an order within budget. Returns the updated cart and totals.","title":"Remove item from cart","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"The menu item id or name"}},"required":["itemId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update-cart-item","kind":"act","impl":"imperative","description":"Set the quantity of an item already in the cart using its item id or name. Quantity 0 removes it. Returns recalculated totals for portion or budget adjustments.","title":"Update cart quantity","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"itemId":{"type":"string","description":"The menu item id or name"},"quantity":{"type":"number","description":"New quantity"}},"required":["itemId","quantity"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get-cart","kind":"answer","impl":"imperative","description":"Get the current cart and authoritative checkout price, including subtotal, delivery fee, service fee, tax, and final total in USD. Always use this to verify a total budget; menu prices alone exclude fees and tax.","title":"Review cart and total","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"start-checkout","kind":"transact","impl":"imperative","description":"Prepare the current cart for human review without placing it. Returns an absolute checkoutUrl that must be shown to the user. Opening it restores the items and recalculates prices so a human can review, edit the delivery address, and choose whether to press Place Order.","title":"Prepare checkout for review","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"place-order","kind":"transact","impl":"imperative","description":"Place the current simulated order, clear the cart, and begin tracking. This changes state and must only be called after explicit user approval. For external-agent handoff or review-only requests, call start-checkout and return its checkoutUrl instead.","title":"Place approved order","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get-order-status","kind":"answer","impl":"imperative","description":"Check the latest status and ETA of the current placed order. Use after place-order; this does not inspect an unplaced checkout cart.","title":"Get order status","annotations":{"readOnlyHint":true,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Commerce","favicon":"/favicons/agentbridge-delta.vercel.app.ico","apiSurface":"spec","toolCount":12}}