# Odoo Purchase MCP

> Odoo Purchase MCP Server manages your entire procurement workflow through natural language commands. Search for vendors, track pending Requests for Quotation (RFQs), create draft purchase orders, and confirm finalized POs. This tool lets you manage vendor relationships and inventory replenishment—all without leaving your chat window.

## Overview
- **Category:** erp-operations
- **Price:** Free
- **Tags:** purchase-orders, vendor-management, procurement, rfq-management, supplier-relations, inventory-replenishment

## Description

**The Odoo Purchase MCP Server lets you manage your entire procurement flow right from your chat window.** You don't have to jump into a full ERP just to handle ordering stuff; this tool handles everything—from finding who you wanna buy from to getting that order confirmed and tracked. 

You can find any existing vendor or supplier by name using their contact info like email or phone number, keeping your partner records current.

Need to start an order? You can generate a new purchase order draft for any vendor, specifying product lines, the quantities you need, and what they cost. If you're still figuring out pricing, you can pull up all Requests for Quotation (RFQs) that are sitting in draft status waiting for either a price quote or internal sign-off.

To keep tabs on your current spending, you get a list of every purchase order number and its vendor name; this summary shows the PO's current state—whether it's still a draft, sent out, or done—the total amount, and when you expect to receive it. You can also pull up all core details for one specific purchase order just by giving it its unique ID, which includes amounts and who the vendor is.

When you need to check what exactly went into an existing PO, you don't have to guess; you retrieve a detailed breakdown of every product line on that PO. This view shows the name, how many units you ordered, the unit cost, and the expected delivery date for each item.

If things are ready to go, confirming an order is simple: approving a draft RFQ or changing a purchase order into a confirmed state notifies the vendor immediately and creates incoming stock receipt records right in your warehouse system. The server manages this whole lifecycle—vendor search, drafting orders, tracking status, getting specific item details, and finalizing everything—without you leaving your chat.

## Tools

### odoo_confirm_purchase_order
Approves a draft RFQ, changing its status to confirmed. This action notifies the vendor and creates an incoming stock receipt record.

### odoo_create_purchase_order
Generates a new purchase order in 'draft' state for a specific vendor, including product lines, quantities, and prices.

### odoo_get_po_lines
Retrieves the detailed breakdown of products within a PO, showing name, quantity, unit cost, and expected delivery dates.

### odoo_get_purchase_order
Pulls all core details for one specific purchase order by its ID, including amounts and vendor information.

### odoo_list_purchase_orders
Lists summaries of all POs in Odoo. You get the PO number, vendor name, current state (draft/sent/done), total amount, and expected receipt date.

### odoo_list_rfqs
Retrieves a list of Requests for Quotation (RFQs) that are still in draft status and awaiting vendor pricing or internal approval.

### odoo_search_vendors
Searches Odoo's partner records to find existing vendors by name, returning their contact details and location.

## Prompt Examples

**Prompt:** 
```
Search for leads from the website
```

**Response:** 
```
👥 **CRM Leads — Website**
| Name | Email | Stage | Revenue |
|---|---|---|---|
| Acme Corp | info@acme.com | Qualification | $15,000 |
| Beta Inc | hello@beta.io | Proposition | $8,500 |
```

**Prompt:** 
```
Show recent sales orders
```

**Response:** 
```
📋 **Sales Orders**
| SO# | Customer | Amount | Status |
|---|---|---|---|
| S00042 | Acme Corp | $12,500 | Confirmed |
| S00041 | Beta Inc | $3,200 | Draft |
```

## Capabilities

### Search for Vendor Details
Find existing vendors and suppliers by name using contact information like email or phone.

### Create Draft Purchase Requests (RFQs)
Generate a new purchase order draft, specifying the vendor, product lines, quantities, and unit costs.

### Track All Purchase Orders
List all your current purchase orders—including status, total amounts, responsible buyer, and expected delivery dates.

### Get Specific PO Details
Retrieve the full record details for a single purchase order using its unique ID number.

### Inspect Line Items
View every product line within a specific PO, checking costs, quantities, and planned delivery dates per item.

### Confirm and Finalize Orders
Change an RFQ or draft purchase order into a confirmed state. This action notifies the vendor and creates incoming stock receipts for your warehouse.

## Use Cases

### Vendor Price Check
A procurement analyst needs to see if three different items are quoted by Vendor A. They first use `odoo_list_purchase_orders` to find the relevant PO ID, then call `odoo_get_po_lines` with that ID. The agent returns a clear list of products and their current unit costs for immediate comparison.

### Closing Out an RFQ
The purchasing manager has negotiated the final price for several items. They use `odoo_create_purchase_order` to build the draft, then review it using `odoo_get_purchase_order`. Once signed off, they execute `odoo_confirm_purchase_order` to finalize everything.

### Finding a Supplier's Contact Info
A sales rep needs the phone number for 'Global Parts Inc.' They don't know the ID. They simply run `odoo_search_vendors`, and the agent pulls back the name, email, and phone number directly to send off an initial inquiry.

### Checking Pending Inventory Needs
An operations lead asks: 'What POs are pending confirmation for Q3?' The agent runs `odoo_list_rfqs`, providing a list of all draft quotes that require immediate attention before the physical goods can be ordered.

## Benefits

- See all pending RFQs immediately with `odoo_list_rfqs`. Instead of navigating to the 'Requests' tab and sifting through dozens of records, you ask for a list, and the agent returns only what needs pricing or approval.
- Confirm orders instantly. When an order is ready to go, calling `odoo_confirm_purchase_order` executes the state change, notifies the vendor, and creates the incoming receipt in one step. No manual status updates required.
- Get granular product data with `odoo_get_po_lines`. If you need to verify if a PO includes 50 units of Product X at $12/unit, this tool gives you that line-by-line breakdown without opening the full order record.
- Build orders faster using `odoo_create_purchase_order`. You just give the agent the vendor ID and product list; it builds a perfectly structured draft RFQ that's ready for review.
- Track everything with `odoo_list_purchase_orders`. This tool gives you a high-level dashboard view—showing PO number, total amount, status, and expected receipt date—all in one response.

## How It Works

The bottom line is that you use the agent to guide a specific, stateful transaction through Odoo's backend logic, rather than just reading data from it.

1. First, use `odoo_search_vendors` to find the necessary vendor ID or name.
2. Next, use `odoo_list_purchase_orders` to identify a specific PO number and its current status (e.g., 'draft').
3. Finally, if you're ready to proceed, call `odoo_confirm_purchase_order` with the correct ID to lock the order and trigger receipt creation.

## Frequently Asked Questions

**How do I check if an RFQ needs approval using odoo_list_rfqs?**
The `odoo_list_rfqs` tool shows all records currently in 'draft' status. This list tells you exactly which requests are waiting for pricing or internal sign-off before they can be confirmed.

**What is the difference between odoo_create_purchase_order and odoo_get_purchase_order?**
Creating a PO uses `odoo_create_purchase_order` to build an entirely new record as a draft. Getting details uses `odoo_get_purchase_order` when you already have the ID and just need to view what's inside.

**Does odoo_confirm_purchase_order affect inventory?**
Yes, it does. Confirming the order triggers two things: it locks the PO status for vendor notification, and critically, it creates an incoming receipt record (`stock.picking`) in your warehouse system.

**Can I find a vendor using odoo_search_vendors?**
Yes. You provide the vendor's name or contact details, and `odoo_search_vendors` returns their validated Odoo partner ID along with their phone number and address.

**When using odoo_get_po_lines, what details do I get for each item on a purchase order?**
It returns every line item with specifics: product name, ordered quantity, unit cost, subtotal, and the planned delivery date. This lets you check pricing or verify expected delivery dates per single product.

**How do I use odoo_list_purchase_orders to see a broad overview of all my procurement activity?**
You can list purchase orders using filters for state, date range, or buyer. The result shows the PO number, vendor name, current status (draft/sent/done), and both total and untaxed amounts.

**Before running odoo_create_purchase_order, how do I make sure I have the correct vendor ID using odoo_search_vendors?**
Running odoo_search_vendors returns the supplier's name, email, phone, and location. Crucially, it provides the partner IDs you need to reference when creating a new purchase order.

**If I have listed many PO numbers using odoo_list_purchase_orders, which tool do I use to get all the deep details for one specific order?**
You run odoo_get_purchase_order. This gives you every key field about that single PO—including vendor info, final amounts, and expected receipt dates—so you don't have to jump between screens.

**Which Odoo versions are supported?**
This server uses the JSON-RPC protocol, which is compatible with Odoo 14, 15, 16, 17, and 18. Both Odoo Community and Enterprise editions are supported.

**Does it work with Odoo.com (SaaS)?**
Yes! Works with both Odoo.com hosted instances and self-hosted Odoo servers. Just provide your instance URL and API key.

**How do I generate an API Key?**
Go to Settings → Users → select your user → API Keys tab → New API Key. Give it a descriptive name and copy the generated key.