# Katana MRP MCP connector

The Katana MRP connector brings batches, bin locations, bin transfers, and bills of materials into Claude, ChatGPT, Cursor, and the Elaichi Agent, so each person works with live stock inside their own Katana MRP access.

Source: https://elaichi.ai/connectors/katanamrp/

## Facts

| | |
| --- | --- |
| Application | Katana MRP |
| Category | Ecommerce |
| AI tools | 231 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Katana MRP is connected

- Which batches of steel tubing are in bin A-12?
- Move batch 4471 from receiving to bin B-3
- List additional costs recorded on last week's batches

## Connect Katana MRP in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Katana MRP.
2. Optionally set Share with, then press Connect.
3. Paste a Katana MRP API key. One person generates a token in Katana MRP and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Katana MRP tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Katana MRP MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Katana MRP MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Katana MRP MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Katana MRP to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Katana MRP tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Katana MRP through Elaichi

### Move stock between bins without opening a screen

Warehouse. Ask for a bin transfer from receiving to the pick face, and the transfer is created in Katana MRP with each row filled in. Mark a whole set of transfers done at the end of a shift in one go.

### Check batch stock before the run starts

Production. See which batches of a material are on hand and how much is in each before a shift begins. Adjust a batch stock line when the count on the floor does not match the record.

### Keep bin locations matching the building

Operations. Add, rename, or remove bin locations when racking moves, so Katana MRP describes the warehouse as it stands today.

### Fix a bill of materials line quickly

Engineering. Change a quantity or remove a component on a BOM row after a design change, without clicking through every product.

### Trace additional costs against stock

Finance. List freight, duty, and other additional costs recorded in Katana MRP so landed cost questions are answered from the record rather than a spreadsheet.

### Find where a batch sits right now

Quality. Pull batch stock and bin inventories for a batch number and see exactly which bins hold it before a hold or recall goes out.

## Frequently asked questions

### How do I connect Katana MRP to Claude?

In Elaichi, choose Katana MRP and paste the API key from your Katana MRP settings, then the connection is ready. In Claude, go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate, so the whole thing takes a few minutes.

### Does Katana MRP work with ChatGPT and Cursor as well as Claude?

Yes. Once Katana MRP is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Katana MRP once and every client picks it up.

### What can an AI agent actually do with my Katana MRP data?

An agent connected to Katana MRP can look up batches and batch stock, list what sits in each bin, create and update bin transfers, tidy bin locations, edit rows on a bill of materials, and list additional costs. Short, concrete asks such as "move batch 4471 to bin B-3" work better than long paragraphs. It works with the live Katana MRP records, not a copy you have to export.

### Does connecting Katana MRP give the AI everything in my inventory?

No. Every call into Katana MRP runs as the person who signed in, so an agent sees only the batches, bins, and bills of materials that person can already reach in Katana MRP. Elaichi can narrow that access further with restrictions, and it can never widen it beyond what Katana MRP itself allows.

### Can my team share one Katana MRP connection?

Yes. One person connects Katana MRP with the API key and shares the connection with a team in Elaichi, and nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person behind every Katana MRP change.

### Can I stop an agent from deleting or changing things in Katana MRP?

Yes. Restrictions in Elaichi work per action, so you can allow reading batches and bins while blocking deletion of bin locations or edits to bill of materials rows. A restricted Katana MRP action is never advertised to the AI client at all, so no prompt, however worded, can reach it.

### What happens to a Katana MRP connection when someone leaves?

Offboarding that person in Elaichi ends their access to Katana MRP through every client at once. A shared Katana MRP connection keeps working for everyone else on the team. If you ever want Katana MRP gone entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client.

### Does the Katana MRP MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Katana MRP is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 231 Katana MRP tools

Every tool below is callable through https://api.elaichi.ai/mcp once Katana MRP is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Katana MRP additional costs** (List). List additional costs in katanamrp, filterable by ids, name, date range, and deleted status. Returns: id, name, created_at, updated_at. Max 250 records per page.
- **Update a Katana MRP batch stock by ID** (Update). Update a batch stock record in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **List all Katana MRP batch stocks** (List). List batch stock records in katanamrp, filterable by batch, location, variant, barcode, and batch creation-date range. Returns: id, batch_id, batch_number, batch_barcode, location_id, variant_id, batch_created_at, created_at, updated_at.
- **Create a Katana MRP batch** (Create). Create a new batch in katanamrp. Requires a CreateBatchDto JSON request body. Returns the created batch object on 200, including its id; the upstream docs reference the DTO and return value by $ref without enumerating fields. Required: batch_number, variant_id.
- **List all Katana MRP bin inventories** (List). List bin inventory in Katana. Returns paginated bin inventory records exposing each record's id and granularity-specific attributes; the attribute shape varies with the requested granularity (VARIANT, BATCH, or SERIAL_NUMBER).
- **Update a Katana MRP bin location by ID** (Update). Update an existing bin location in katanamrp by id. Returns: id, created_at, updated_at. A JSON request body is required. Required: id, bin_name.
- **Delete a Katana MRP bin location by ID** (Delete). Delete a bin location in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **List all Katana MRP bin locations** (List). List bin locations in katanamrp. Returns each bin location's id, bin_name, location_id, created_at, and updated_at.
- **Create a Katana MRP bin location** (Create). Create a bin location in katanamrp. Returns: id, created_at, updated_at. A JSON request body is required. Required: bin_name, location_id.
- **Get single Katana MRP bin transfer row by ID** (Get). Get a single bin transfer row in Katana by id. Returns: id, created_at, updated_at. Required: id.
- **Update a Katana MRP bin transfer row by ID** (Update). Update a bin transfer row in Katana by id. Returns the updated row: id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, updated_at. Required: id.
- **Delete a Katana MRP bin transfer row by ID** (Delete). Delete a bin transfer row in Katana by id. Returns the deleted row: id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, updated_at. Required: id.
- **List all Katana MRP bin transfer rows** (List). List bin transfer rows in Katana. Returns each row's id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, and updated_at.
- **Create a Katana MRP bin transfer row** (Create). Create a bin transfer row in Katana. Returns the created row: id, bin_transfer_id, variant_id, source_bin_location_id, target_bin_location_id, created_at, updated_at. Requires a JSON request body. Required: variant_id, quantity, bin_transfer_id.
- **Katana MRP bin transfer status bulk update** (Update). Update the status of a bin transfer in Katana MRP by its id. Returns: id, created_at, updated_at. Required: id, status.
- **Get single Katana MRP bin transfer by ID** (Get). Get a single bin transfer in katanamrp by id. Returns: id, created_at, updated_at. Required: id.
- **Update a Katana MRP bin transfer by ID** (Update). Update a bin transfer in katanamrp by id. Returns the updated bin transfer with id, bin_transfer_number, location_id, status, and created_at. Required: id.
- **Delete a Katana MRP bin transfer by ID** (Delete). Delete a bin transfer in katanamrp by id. Returns the deleted bin transfer with id, bin_transfer_number, location_id, status, and created_at. Required: id.
- **List all Katana MRP bin transfers** (List). List bin transfers in katanamrp, filterable by ids, bin_transfer_number, location_id, status (CREATED, IN_TRANSIT, DONE), include_deleted, and a date range. Returns: id, bin_transfer_number, location_id, status, created_at, updated_at.
- **Create a Katana MRP bin transfer** (Create). Create a bin transfer in katanamrp. Returns the created bin transfer with id, bin_transfer_number, location_id, status, and created_at. Requires a JSON body. Required: location_id.
- **Create a Katana MRP batch create** (Create). Create multiple BOM rows in a single batch call in katanamrp. Returns: id, created_at, updated_at. Requires a JSON request body matching Katana's CreateBomRowsBatchDto schema; the upstream docs do not enumerate its field names. Required: data.
- **Update a Katana MRP bom row by ID** (Update). Update a BOM row in katanamrp by id. Returns the updated BOM row with its id, created_at, and updated_at. Requires a JSON request body; its field set follows the upstream BomRowUpdateDto schema. Required: id.
- **Delete a Katana MRP bom row by ID** (Delete). Delete a BOM row in katanamrp by id. Returns the deleted BOM row with its id, product_variant_id, product_item_id, ingredient_variant_id, created_at, and updated_at. Required: id.
- **List all Katana MRP bom rows** (List). List BOM rows in katanamrp. Returns each BOM row with its id, product_variant_id, product_item_id, ingredient_variant_id, created_at, and updated_at.
- **Create a Katana MRP bom row** (Create). Create a BOM row in katanamrp. Returns the created BOM row with its id, created_at, and updated_at. Requires a JSON request body; its field set follows the upstream BomRowCreateDto schema. Required: product_item_id, product_variant_id, ingredient_variant_id.
- **Get single Katana MRP custom field definition by ID** (Get). Get a custom field definition by id in katanamrp. Returns the definition including id, label, field_type, entity_type, created_at, and updated_at. Required: id.
- **Update a Katana MRP custom field definition by ID** (Update). Update a custom field definition by id in katanamrp. Returns the updated definition including id, created_at, and updated_at. Required: id.
- **Delete a Katana MRP custom field definition by ID** (Delete). Delete a custom field definition by id in katanamrp. Returns the deleted definition including id, label, field_type, entity_type, created_at, and updated_at. Required: id.
- **List all Katana MRP custom field definitions** (List). List custom field definitions in katanamrp. Returns definitions including id, label, field_type, entity_type, created_at, and updated_at.
- **Create a Katana MRP custom field definition** (Create). Create a custom field definition in katanamrp. Returns the created definition including id, created_at, and updated_at. A JSON request body (CreateCustomFieldDefinitionDto) is required. Required: label, field_type, entity_type, source.
- **List all Katana MRP custom fields collections** (List). List all custom fields collections configured in Katana. Returns each collection's id, created_at, and updated_at.
- **Update a Katana MRP customer address by ID** (Update). Update a customer address in katanamrp by id. Returns the updated address record including its id, created_at, and updated_at. Requires a JSON request body per Katana's CustomerAddressUpdateDto schema. Required: id.
- **Delete a Katana MRP customer address by ID** (Delete). Delete a customer address in Katana by id. Returns the deleted address record including id, customer_id, entity_type, first_name, line_1, city, country, and updated_at. Required: id.
- **List all Katana MRP customer addresses** (List). List customer addresses in Katana. Returns address records including id, customer_id, entity_type, first_name, last_name, company, line_1, city, and zip.
- **Create a Katana MRP customer address** (Create). Create a customer address in katanamrp. Returns the created address record including its id, created_at, and updated_at. Requires a JSON request body following Katana's CustomerAddressCreateDto schema. Required: entity_type, customer_id.
- **Update a Katana MRP customer by ID** (Update). Update a customer in katanamrp by id. Returns the updated customer record identified by its integer id. Requires id and a required JSON body of customer attributes to change. Required: id.
- **Delete a Katana MRP customer by ID** (Delete). Delete a customer in katanamrp by id. Returns the deleted customer record identified by its integer id. Requires id. Required: id.
- **List all Katana MRP customers** (List). List customers in katanamrp. Returns customer records identified by their integer id, with optional attribute filters such as email, company, and name.
- **Create a Katana MRP customer** (Create). Create a customer in katanamrp. Returns the created customer record identified by its integer id. Requires a JSON body with the new customer's attributes. Required: name.
- **List all Katana MRP demand forecasts** (List). List demand forecasts in Katana MRP for a specific product variant at a specific location. Returns: id, variant_id, location_id, created_at, updated_at. Required: variant_id, location_id.
- **Create a Katana MRP demand forecast** (Create). Create or update the demand forecast for a product variant at a location in Katana MRP. Returns: id, created_at, updated_at. Requires a JSON request body. Required: variant_id, location_id, periods.
- **Katana MRP demand forecasts bulk delete** (Delete). Clear the demand forecast for a product variant at a location in Katana MRP. Returns: id, created_at, updated_at. Requires a JSON request body. Required: variant_id, location_id, periods.
- **List all Katana MRP factories** (List). List factory records in Katana. Returns each record's id, created_at, and updated_at.
- **List all Katana MRP inventories** (List). List all current inventory records across Katana MRP locations. Returns an array of inventory entries, optionally extended with their related variant and location objects via the extend parameter.
- **List all Katana MRP inventory movements** (List). List inventory movements in Katana. Returns: id, location_id, variant_id, resource_type, resource_id, caused_by_order_no, caused_by_resource_id, created_at, updated_at.
- **Create a Katana MRP inventory reorder point** (Create). Create an inventory reorder point in Katana for a product variant at a specific location. Returns the created reorder point including its id, location_id, variant_id, value, and created_at. Required: location_id, variant_id, value.
- **Create a Katana MRP inventory safety stock level** (Create). Create an inventory safety stock level in katanamrp for a specific variant at a specific location. Returns the created level including its id, location_id, variant_id, value, created_at, and updated_at. Requires location_id, variant_id, and value. Required: location_id, variant_id, value.
- **List all Katana MRP inventory signals** (List). List inventory signals in Katana, optionally filtered by variant_id and stock_risk (0-3). Returns each signal record with its id and the signal attributes defined by Katana.
- **Get single Katana MRP location by ID** (Get). Get a single Katana MRP location by id. Returns the location object including id, name, legal_name, is_primary, and its sales_allowed, manufacturing_allowed, and purchases_allowed flags. Required: id.
- **List all Katana MRP locations** (List). List all locations in Katana MRP. Returns location objects including id, name, legal_name, is_primary, and the sales_allowed, manufacturing_allowed, and purchases_allowed flags. Supports filtering by ids, name, legal_name, address_id, is_primary, and include_deleted.
- ...and 181 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
