# Tool catalog

Every tool the Ryde MCP server exposes, with the scope and entitlement each requires.

Generated from the operation registry, so a tool cannot appear here without a real operation behind it. "Confirmation" marks the tools that require a fresh quote the customer was shown, plus an idempotency key.

| Tool | Description | Scope | Ryde One | Status |
| --- | --- | --- | --- | --- |
| `get_membership_status` | Whether this customer holds an active Ryde One membership. Call it before offering to transact, so the agent can explain the requirement rather than hit a 403 mid-sentence. | `profile.read` | no | beta |
| `search_restaurants` | Find open restaurants, grocery stores and shops near a point. | `food.read` | no | beta |
| `get_restaurant_menu` | The public catalogue for one merchant. Cost, stock, barcodes and supplier ids are the merchant's own business and are never returned here. | `food.read` | no | beta |
| `quote_food_order` | Price a basket exactly as checkout would: items, fees, taxes, any member discount, and the total. Returns the quote_id place_food_order requires. | `food.read` | no | beta |
| `place_food_order` | Place the order the customer confirmed, from a quote_id they were shown. | `food.order` | yes | beta |
| `get_food_order` | Live state of one order, including courier progress. Deliberately NOT membership-gated: an order that exists stays trackable whatever happens to the membership. | `food.read` | no | beta |
| `list_food_orders` | The customer's own order history, newest first. | `food.read` | no | beta |
| `cancel_food_order` | Cancel an order, where its current state still allows it. Never membership-gated — getting OUT of a transaction must not require an entitlement. | `food.read` | no | beta |
| `search_ride_options` | The vehicle tiers that can be requested, with each tier's base fare. | `rides.read` | no | beta |
| `quote_ride` | Road distance, driving time and the final fare per vehicle tier, tax included. Returns the quote_id request_ride requires. | `rides.read` | no | beta |
| `request_ride` | Request the ride the customer confirmed, from a quote_id they were shown. | `rides.request` | yes | beta |
| `get_ride` | Live state of one ride: dispatch progress, the assigned driver and vehicle, and the pickup ETA. Never membership-gated — a ride in progress stays trackable. | `rides.read` | no | beta |
| `list_rides` | The customer's own ride history, newest first. | `rides.read` | no | beta |
| `cancel_ride` | Cancel a ride that has not started. Never membership-gated, for the same reason as cancelling an order. | `rides.read` | no | beta |
| `quote_delivery` | Price a courier run between two points. Runs the same pricing path the request does, so the quote is the charge. | `delivery.read` | no | beta |
| `request_delivery` | Dispatch a courier to move a package, from a quote_id the customer was shown. | `delivery.request` | yes | beta |
| `get_delivery` | Live state of one delivery, including courier progress and proof of delivery once collected. | `delivery.read` | no | beta |
| `check_coverage` | Ask whether Ryde delivers to a postcode or a point, and at which service levels. | `coverage.read` | no | beta |
| `quote_rates` | Price one parcel to one address from your contracted rate card, per service level. Creates nothing. | `coverage.read` | no | beta |
| `create_shipment` | Hand Ryde one parcel to deliver. Returns its Ryde tracking number. | `shipments.create` | no | beta |
| `create_shipments_batch` | Hand Ryde a manifest of up to 500 parcels in one request. Every row reports created, duplicate or rejected with a reason. | `shipments.create` | no | beta |
| `get_shipment` | The current state of one parcel, with its scan history and proof of delivery once delivered. | `shipments.read` | no | beta |
| `list_shipments` | Your parcels, newest first, filterable by status and date. | `shipments.read` | no | beta |
| `cancel_shipment` | Cancel a parcel you have given Ryde, at any point before it is delivered or returned. | `shipments.manage` | no | beta |
| `list_shipment_events` | Every recorded event for one parcel, oldest first: where it was scanned, when, and why an attempt failed. | `shipments.read` | no | beta |
| `list_hubs` | The depots your parcels are collected from. | `coverage.read` | no | beta |
| `search_service_providers` | Find providers who travel to the customer, with their live availability. Availability is derived per request and is never cached by the client. | `services.read` | no | beta |
| `get_provider_availability` | Open appointment slots on a date, for a job of a given duration. A long job is only offered a start whose consecutive slots are all free. | `services.read` | no | beta |
| `quote_service` | Price a service booking before committing to a slot. | `services.read` | no | beta |
| `book_service` | Book a provider, optionally into a specific slot. Slot contention is settled by the platform: a losing booking is refused, never double-booked. | `services.book` | yes | beta |
| `get_service_booking` | Live state of one booking, through arrival, start and completion. | `services.read` | no | beta |
| `list_task_types` | The task types this market can actually execute, with the evidence each one collects. Only types Ryde can staff are listed. | `tasks.read` | no | beta |
| `quote_task` | Price a task and confirm a qualified provider could be found for it before committing. | `tasks.read` | no | beta |
| `create_task` | Dispatch real-world work with structured requirements and evidence rules. | `tasks.create` | yes | beta |
| `get_task` | Task state, the assigned provider, and the evidence collected so far. | `tasks.read` | no | beta |
| `get_task_evidence` | The evidence collected against a task: photos with their content hashes, capture GPS and device timestamps, and any checklist answers. | `tasks.read` | no | beta |
| `cancel_task` | Cancel a task that has not started. | `tasks.read` | no | beta |
| `list_business_orders` | List the store's orders, newest first. Filter by status or fulfillment, or ask only for active work. | `orders.read` | no | beta |
| `get_business_order` | Read one of the store's orders in full, including its line items and status history. | `orders.read` | no | beta |
| `accept_business_order` | Accept an incoming order. Refused with 402 if a card or wallet order has not been paid yet. | `orders.manage` | no | beta |
| `reject_business_order` | Reject an order. A paid order is refunded to the customer's Ryde wallet — or, when the store collected it on its own Stripe account, to the customer's card by the store — and any booked slot is released. | `orders.manage` | no | beta |
| `start_business_order_prep` | Mark an accepted order as being prepared, so the customer's tracking reflects the kitchen. | `orders.manage` | no | beta |
| `mark_business_order_ready` | Mark an order ready for collection. For a delivery order this is what dispatches a Ryde courier. | `orders.manage` | no | beta |
| `complete_business_order` | Complete a pickup or dine-in order. Refused with 409 while a table check is still open. | `orders.manage` | no | beta |
| `list_catalog_items` | List the store's catalogue items with their prices, modifiers and availability. | `menu.read` | no | beta |
| `get_catalog_item` | Read one catalogue item by its id: price, SKU, barcode, tax treatment, stock and availability. | `menu.read` | no | beta |
| `create_catalog_item` | Create a catalogue item. It appears immediately in the store's POS and on its Ryde storefront. | `menu.manage` | no | beta |
| `update_catalog_item` | Update a catalogue item's name, description, price, category or modifier groups. | `menu.manage` | no | beta |
| `upsert_catalog_item_by_sku` | Create or update the catalogue item with this SKU. The SKU is unique within the store, so the same call is safe to repeat. | `menu.manage` | no | beta |
| `set_catalog_item_availability` | Take an item off sale or put it back on, without deleting it. The reversible way to 86 something. | `menu.manage` | no | beta |
| `delete_catalog_item` | Remove a catalogue item. There is no undo through the API — to take something off sale temporarily, set its availability instead. | `menu.manage` | no | beta |
| `import_catalog_items` | Add many catalogue items at once, with their categories. Duplicate-safe: an item matched by SKU or barcode is updated (price and description) instead of added twice, a name-only match is skipped unless decided, and mode "replace" retires items missing from the list once confirm_retire equals the count a 409 names. | `menu.manage` | no | beta |
| `export_catalog` | Export the store's sellable catalogue as rows in the fixed template's columns (name, SKU, barcode, category, type, price, tax, cost, stock, warehouse, description). Cost, stock and barcode are filled only for a token with menu.manage. | `menu.read` | no | beta |
| `get_catalog_template` | The template's columns, the values each accepts, an example row, the row limit and the import modes. | `menu.read` | no | beta |
| `preview_catalog_import` | Check rows in the template's columns against the catalogue WITHOUT writing: what is new, updated, unchanged, a possible duplicate or an error, per row. Answers a token for the commit. | `menu.manage` | no | beta |
| `commit_catalog_import` | Apply a previewed import by its token, in mode merge, add_only or replace. Committing the same token again answers the first result and writes nothing. | `menu.manage` | no | beta |
