# GrabFood Partner MCP

> GrabFood Partner MCP automates your entire restaurant delivery operation directly from your AI agent. Manage incoming orders, update prices instantly, control store visibility, and launch marketing campaigns without ever logging into a separate dashboard again.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** delivery-management, restaurant-operations, order-lifecycle, menu-updates, food-delivery

## Description

Connecting your GrabFood account lets you take full control of your restaurant operations using natural conversation with any compatible AI client. Forget jumping between portals during the lunch rush. Your agent handles everything from order intake to menu changes. You can tell it to check if an incoming order is acceptable or even reject it outright, flagging the reason for the record.

It’s not just about accepting orders; you control the entire lifecycle. Tell your AI client to run a batch update on your menu prices or mark several items as sold out immediately. Need to pause the store because the kitchen is overwhelmed? You can do that too. The ability to manage these complex, multi-step tasks makes this MCP an essential piece of infrastructure. By connecting through Vinkius, you get one catalog access point that lets your agent handle all facets of your delivery business.

## Tools

### accept_order
Accepts or rejects a specific GrabFood order ID, committing the restaurant to prepare it or notifying the customer of rejection.

### batch_update_menu
Updates prices, availability, and descriptions for multiple selected menu items at once.

### cancel_order
Cancels an already accepted order, requiring a specific reason that impacts the merchant's performance score.

### check_order_cancelable
Verifies if an incoming order can still be cancelled by checking its current status in the fulfillment pipeline.

### create_campaign
Creates a new promotional campaign, defining details like discounts or free delivery offers for increased visibility.

### get_store_status
Retrieves the current operational state of the store, showing if it's open, paused, or closed to customers.

### list_campaigns
Displays all active and past marketing campaigns associated with the merchant ID for review.

### list_orders
Fetches a list of incoming orders for a specific date, including details about items and customer information.

### mark_order_ready
Notifies the platform that an order has been fully prepared and is ready for the driver to pick up immediately.

### pause_store
Temporarily suspends receiving new orders, making the store invisible until it's unpaused again.

### update_menu
Replaces or modifies the entire menu structure, including categories and item details, requiring a complete data payload.

### update_ready_time
Adjusts the estimated time the order will be ready for collection to manage driver dispatch timing accurately.

## Prompt Examples

**Prompt:** 
```
Show me all my GrabFood orders for today.
```

**Response:** 
```
I've fetched your GrabFood orders for today. You currently have 8 active orders, with 3 pending acceptance and 5 being prepared. The most recent order (#GF-48921) includes 2x Nasi Goreng and 1x Es Teh Manis. Would you like to accept all pending orders?
```

**Prompt:** 
```
Accept order GF-48921 and mark order GF-48915 as ready.
```

**Response:** 
```
Done! Order GF-48921 has been accepted and the kitchen can now start preparing it. Order GF-48915 has been marked as ready for pickup — the Grab driver will be notified to arrive shortly.
```

**Prompt:** 
```
Check my store status and pause it if it's currently open.
```

**Response:** 
```
Your GrabFood store is currently **open** and accepting orders. I've paused it for you — the store is now hidden from customers and no new orders will come through. Existing active orders are unaffected.
```

**Prompt:** 
```
Update the price of my Nasi Goreng to 25000 IDR and mark Fried Rice as unavailable.
```

**Response:** 
```
I've batch-updated your menu: Nasi Goreng price is now 25,000 IDR and Fried Rice has been marked as unavailable. Customers will see these changes reflected on the GrabFood app within a few minutes.
```

## Capabilities

### Manage incoming orders
Accept, reject, or mark received orders as ready for pickup using simple commands.

### Update menu inventory and pricing
Make targeted changes to your offerings by updating specific item prices or marking entire groups of items unavailable.

### Control store operational status
Instantly pause, unpause, or check the current open/closed status of your physical location on the platform.

### Plan and launch promotions
Create new marketing campaigns, like discounts or free delivery offers, to boost visibility and orders.

### Manage order timing estimates
Adjust the estimated time an order will be ready for pickup if kitchen prep falls behind schedule.

## Use Cases

### Handling the Lunch Rush Spike
The restaurant owner sees a sudden spike of 20 new orders. Instead of manually clicking 'Accept' on each one, they tell their agent to process all pending orders and confirm readiness for the first batch using `list_orders`, followed by accepting them via `accept_order`.

### Inventory Crisis Management
The Operations Manager realizes three signature dishes are out of stock. They don't want to update the whole menu, so they use `batch_update_menu` to mark only those specific items as unavailable immediately.

### Seasonal Menu Overhaul
The Marketing Coordinator is launching a summer promotion and needs to add 15 new seasonal dishes. They use the comprehensive `update_menu` tool, replacing the old menu structure with the full new catalog data.

### Mid-Day Operational Break
The Manager notices staff are exhausted and wants a temporary break without losing visibility. They check their status using `get_store_status` and then tell the agent to `pause_store`, stopping new orders immediately.

## Benefits

- Stop logging into the portal during peak hours. Your AI client handles accepting and rejecting incoming orders instantly, giving you uninterrupted focus on the kitchen.
- Never worry about outdated pricing again. Use `batch_update_menu` or `update_menu` to change prices or mark items as unavailable across dozens of dishes in seconds.
- Instantly control visibility by using `pause_store`. Need a quick break? Pause your store with a single prompt, letting you reset without losing track of the platform.
- Boost sales with precision. Use `create_campaign` to launch time-limited discounts or free delivery offers exactly when you need them most.
- Keep drivers happy and avoid delays. When prep takes longer than expected, use `update_ready_time` to proactively manage expectations without manual calls.

## How It Works

The bottom line is you get real-time operational control over your entire restaurant flow without manual dashboard interaction.

1. First, subscribe to this MCP and connect your GrabFood Partner OAuth2 access token.
2. Next, tell your AI client what you need. For example: "Check if my store is open." or "Batch-update the prices for these three dishes."
3. The agent sends the request to the platform, executes the action (like accepting an order or pausing the store), and returns a confirmation of the status change.

## Frequently Asked Questions

**How do I get my GrabFood Merchant ID?**
Your Merchant ID is provided when you register as a GrabFood Partner. You can find it in the GrabFood Partner Portal under your restaurant settings, or in the welcome email you received when your restaurant was onboarded to GrabFood.

**Can I use this integration in production, not just sandbox?**
Yes! The integration defaults to the GrabFood sandbox environment for safe testing. To switch to production, you'll need to update the base URL in the engine configuration to the production endpoint. Contact GrabFood Partner support for production API credentials.

**What happens if I reject an order? Does it affect my merchant rating?**
Rejecting orders may impact your merchant performance metrics on GrabFood. Frequent rejections can lead to lower visibility in search results. It's recommended to only reject orders when absolutely necessary (e.g., item out of stock, kitchen closure). Always verify order details before making a decision.

**Can I update menu items individually without replacing the entire menu?**
Yes! Use the `batch_update_menu` tool for targeted updates to specific items, prices, or availability. This is safer than a full menu replacement since it only touches the items you specify. Use `update_menu` only when you need to replace the entire menu structure.

**How do I get my OAuth2 access token for the GrabFood Partner API?**
You can obtain your OAuth2 access token through the GrabFood Partner Portal. Log in to your partner account and navigate to API Settings or Developer section to generate or retrieve your token. If you don't have access, contact your GrabFood Partner account manager.