# ShipBob MCP connector

The ShipBob connector brings orders, shipments, products, and shipping methods to Claude, ChatGPT, Cursor, and the Elaichi Agent, so your team can check, create, or hold orders in plain language, with every action logged.

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

## Facts

| | |
| --- | --- |
| Application | ShipBob |
| Category | Ecommerce |
| AI tools | 93 |
| 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 ShipBob is connected

- Show me every ShipBob order placed today that is still processing
- Put shipments for order 48213 on hold and add gift note instructions
- Estimate delivery for order 51877 and summarize its shipment timeline

## Connect ShipBob in Elaichi

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

1. Open Connections, choose Add connection, and pick ShipBob.
2. Optionally set Share with, then press Connect.
3. Paste a ShipBob API key. One person generates a token in ShipBob 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 ShipBob tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## ShipBob 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.

## ShipBob 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.

## ShipBob 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 ShipBob 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 ShipBob 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 ShipBob through Elaichi

### Answer where is my order in seconds

Support. Pull up a ShipBob order, read its shipment timeline, and give the customer a delivery estimate without opening another tab.

### Hold shipments before a bad address ships

Operations. Place a batch of shipments on hold while you confirm details with the customer, then release them once everything checks out.

### Create orders that came in outside the store

Ecommerce. Turn a phone order or a wholesale request into a ShipBob order, assigned to the right channel, without retyping it into the dashboard.

### Route shipments to the right fulfillment center

Fulfillment. Move a group of shipments to a closer fulfillment center or switch their shipping service when a carrier runs late.

### Add new products before the launch goes live

Merchandising. Create products in ShipBob from a launch list and check the full product catalog so nothing ships under the wrong name.

### Estimate fulfillment costs before the promotion runs

Finance. Ask for shipping estimates on a sample of orders and review cancelled orders from last month to see where money went back.

## Frequently asked questions

### How do I connect ShipBob to Claude?

First, connect ShipBob in Elaichi by pasting a ShipBob API key from your ShipBob account. There is no OAuth application to register and no client ID or secret to generate. Then in Claude, open Customize, then Connectors, then Add, and paste the Elaichi endpoint https://api.elaichi.ai/mcp. Sign in to Elaichi when Claude asks, and your ShipBob orders and shipments are available.

### Does ShipBob work with ChatGPT and Cursor as well as Claude?

Yes. Once ShipBob 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 ShipBob once and every client picks it up.

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

An agent can look up ShipBob orders and shipments, read a shipment timeline, estimate delivery dates and shipping costs, and list your channels, products, and shipping methods. It can also create orders and products, place shipments on hold or release them, change shipping services or instructions, assign a fulfillment center, update tracking, and cancel orders or shipments if you allow it. Short, specific asks such as show me order 48213 work better than long paragraphs.

### Does connecting ShipBob give the AI access to everything in my account?

No. Access to ShipBob follows the API key that was connected and the person who signed in to Elaichi, so the agent can never reach more than that account already can. Elaichi can narrow that further, for example by leaving out cancellations for the support team, but it never widens what ShipBob itself allows.

### Can my team share one ShipBob connection?

Yes. One person connects ShipBob with the API key, 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 records who placed a hold or created an order, not just that someone did.

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

Yes. Restrictions in Elaichi apply per action, so you can allow reading ShipBob orders and shipments while blocking cancellations, bulk updates, or order creation. A restricted action is never advertised to Claude, ChatGPT, or Cursor at all, so no prompt, however worded, can reach it.

### What happens to a ShipBob connection when someone leaves?

Offboarding a person in Elaichi ends their access to ShipBob at once, across every client they used. A shared ShipBob connection keeps working for everyone else on the team. If you ever want to remove ShipBob entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client together.

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

Yes. ShipBob 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 93 ShipBob tools

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

- **List all ShipBob channels** (List). List the ShipBob channels the authenticated user has access to. Returns channel objects with id, name, application_name, and scopes. Cursor pagination handled automatically.
- **List all ShipBob orders** (List). List ShipBob orders as a paginated result with optional filters that combine with AND logic. Returns: channel, created_date, financials, gift_message, id, order_number, products, purchase_date, recipient, reference_id, retailer_program_data, shipments, shipping_method, shipping_terms, status, tags, type.
- **Create a ShipBob order** (Create). Create a ShipBob order that is queued for fulfillment, specifying products by product reference ID (SKU — the recommended approach) or ShipBob product ID. Returns: channel, created_date, financials, gift_message, id, order_number, products, purchase_date, recipient, reference_id, retailer_program_data, shipments, shipping_method, shipping_terms, status, tags, type. The JSON body takes…. Required: products, recipient, reference_id, shipping_method, type.
- **Get single ShipBob order by ID** (Get). Get a single ShipBob order by id, including order status, shipments, products, and recipient details. Returns: channel, created_date, financials, gift_message, id, order_number, products, purchase_date, recipient, reference_id, retailer_program_data, shipments, shipping_method, shipping_terms, status, tags, type. Required: id.
- **ShipBob orders estimate** (Action). Estimate fulfillment cost and fulfillment center assignment for a potential standard (direct-to-consumer) ShipBob order. Returns an estimate where possible; no estimate is produced for items that are unknown, out of stock, or too large for standard box sizes, and add-on services such as insurance and signature are excluded. Required: address, products.
- **ShipBob orders cancel** (Cancel). Cancel an order in ShipBob, including all of its associated shipments; the order must be in a cancellable state to proceed. Returns an opaque cancellation result object whose fields the API reference does not document.
- **ShipBob orders estimate delivery** (Action). Estimate a ShipBob delivery date for a destination and set of line items; the destination address must always include zip_code and country, and the Product Details Page vs Checkout flow is auto-detected from the request shape. Returns: destination_time_zone, errors, estimates, reference_id. Required: destination_address, line_items.
- **Get single ShipBob shipment by ID** (Get). Get a single ShipBob shipment by id. Returns: actual_fulfillment_date, created_date, delivery_date, estimated_fulfillment_date, estimated_fulfillment_date_status, gift_message, id, insurance_value, invoice_amount, invoice_currency_code, is_tracking_uploaded, last_tracking_update_at, last_update_at, location, measurements, order_id, package_material_type, parent_cartons, products, recipient,…. Required: id.
- **ShipBob shipments bulk update shipping service** (Update). Update the shipping service for multiple ShipBob shipments in one request; requested_shipping_service_id must be a service_level.id from the Get Shipping Methods endpoint. Returns: results, summary. Required: reason, requested_shipping_service_id, shipment_ids.
- **ShipBob shipments bulk place on hold** (Action). Place a Manual hold on multiple ShipBob shipments in one request; committed inventory stays reserved by default unless reserve_inventory is false. Returns per-shipment outcomes in results (each shipment's own success or failure, so one failure never fails the request). Empty shipment_ids or a batch over the cap returns 400. Required: shipment_ids.
- **ShipBob shipments bulk release hold** (Action). Release merchant-initiated holds (Manual and Auto Processing Pause) from multiple ShipBob shipments in one request; operational holds such as invalid address are never removed. Returns per-shipment outcomes in results, flagging is_still_on_hold_due_to_other_reasons when operational holds remain. Empty shipment_ids or a batch over the cap returns 400. Required: shipment_ids.
- **ShipBob shipments bulk update instructions** (Update). Set packing and special SKU instructions on multiple ShipBob shipments in one request; omit or send null to leave an instruction unchanged, or send an empty string to clear it. Returns per-shipment outcomes in results, one per unique id in request order. Required: shipment_ids.
- **ShipBob shipments assign fulfillment center** (Assign). Assign a specific ShipBob fulfillment center to a shipment, overriding the automatically selected one. Returns is_success and, when the assignment fails, an error object with the code and message. Inventory re-evaluates asynchronously and the endpoint returns HTTP 200 for both successful and failed operations. Required: fulfillment_center_id.
- **ShipBob shipments cancel** (Cancel). Cancel a ShipBob shipment by id. Returns the shipment view model including id, status, tracking details, fulfillment center location, and products. The shipment must not yet be picked, packed, or shipped.
- **ShipBob shipments bulk update** (Update). Update the shipping address of a ShipBob shipment. Returns: error, id, is_success. Required: city, street_address1.
- **ShipBob shipments bulk cancel** (Cancel). Cancel multiple ShipBob shipments in a single request. Returns the affected shipments with id and tracking details (carrier, tracking_number, carrier_service, tracking_url). Only shipments not yet picked, packed, or shipped can be cancelled.
- **ShipBob shipments bulk update tracking** (Update). Mark tracking information as synced to your external system for multiple ShipBob shipments so they stop appearing in order queries filtered by IsTrackingUploaded=false. Returns: results, summary.
- **Get single ShipBob shipment timeline by ID** (Get). Get the status timeline for a ShipBob shipment by id. Returns a chronological array of shipment log entries showing when each shipment status change occurred, for visibility into fulfillment progress. Required: id.
- **ShipBob shipment timelines get by order** (Get). Get the status timeline for a shipment within a ShipBob order. Returns a chronological array of shipment log entries showing when each status change occurred, for visibility into fulfillment progress. Required: order_id, shipment_id.
- **List all ShipBob shipping methods** (List). List all shipping methods configured for your ShipBob merchant account. Returns: active, id, name, service_level.
- **Get single ShipBob order store JSON by ID** (Get). Get the original store order data stored for a ShipBob order, preserving custom fields and metadata from the order source. Returns the stored data as a JSON string with order-source-specific fields. Required: id.
- **List all ShipBob cancelled orders** (List). List ShipBob orders that have been completely cancelled, meaning all shipments within each order are in a cancelled state. Returns each cancelled order's id, reference_id, and shipments with their ids.
- **List all ShipBob products** (List). List ShipBob products with optional filters for search term, barcode, SKU, name, category, channel, variant status, and more. Returns a paginated items array of product records with id, name, type_id, and variants. Max 250 per page (PageSize accepts 1-250).
- **Create a ShipBob product** (Create). Create a ShipBob product with one or more variants. Returns the created product record including id, name, type_id, and variants. Requires name and at least one variant with a unique sku.
- **Get single ShipBob product by ID** (Get). Get a single ShipBob product by id, including all its variants and details. Returns: created_on, id, name, taxonomy, type, updated_on, user_id, variants, type_id. Required: id.
- **Update a ShipBob product by ID** (Update). Update a ShipBob product by id. Supports partial updates - only the fields provided will be updated; when updating variants, each must include its variant id. Returns: created_on, id, name, taxonomy, type, updated_on, user_id, variants, type_id. Required: id.
- **Delete a ShipBob product by ID** (Delete). Delete a bundle product by id in ShipBob. Returns an opaque success payload (the upstream response body is not field-enumerated in the available source). Only bundle products can be deleted - the operation is not allowed for non-bundles. Required: id.
- **ShipBob products move variants** (Move). Move existing variants into a new ShipBob product — creates the product and reassigns the supplied variants to it. Returns the created product record: id, name, type_id, and variants.
- **ShipBob products move variants to product** (Move). Move variants from their current products into an existing ShipBob product. Returns the updated product record: id, name, type_id, and variants.
- **List all ShipBob product variants** (List). List all variants of a ShipBob product. Returns an array of variant objects including id, name, sku, packaging_requirement_id, and packaging_material_type_id. Required: product_id.
- **Create a ShipBob product variant** (Create). Add new variants to an existing ShipBob product. Returns the created product including id, name, type_id, and its variants (each with name, sku, packaging_requirement_id, and packaging_material_type_id). Required: product_id.
- **ShipBob product variants bulk update** (Update). Update one or more variants of a ShipBob product. Returns an array of updated variant objects including id, name, sku, packaging_requirement_id, and packaging_material_type_id. Required: product_id.
- **ShipBob variants convert to bundle** (Convert). Convert an existing product variant into a bundle product in ShipBob, specifying which variants and quantities make up the bundle. Returns the converted product with its id, name, type_id, and variants.
- **ShipBob variants merge** (Merge). Merge multiple product variants into a target variant in ShipBob, consolidating the merged variants' inventory into the target. Returns the updated product with its id, name, type_id, and variants.
- **List all ShipBob packaging requirements** (List). List all packaging requirements available in ShipBob that can be assigned to a product. Returns packaging requirement records identified by id; pass an id as packaging_requirement_id when creating or updating a product variant.
- **List all ShipBob taxonomies** (List). List all ShipBob product taxonomies available for categorizing products. Returns taxonomy nodes with their id and name.
- **Get single ShipBob taxonomy by ID** (Get). Get a single ShipBob product taxonomy node and its details by taxonomy ID. Returns: id, name, path, children, parent. Required: id.
- **Get single ShipBob taxonomy parent by ID** (Get). Get the parent taxonomy node for a product taxonomy in ShipBob by id. Returns the parent taxonomy record including its id and taxonomy-specific attributes. Required: id.
- **List all ShipBob allergens** (List). List the allergens ShipBob supports for product variants. Returns: id, key, name.
- **List all ShipBob inventory levels** (List). List current inventory levels across all ShipBob locations, filterable by inventory IDs and product attributes. Returns: first, items, last, next, prev.
- **Get single ShipBob inventory level by ID** (Get). Get an inventory item's current stock levels aggregated across all ShipBob fulfillment centers. Returns: inventory_id, name, sku, total_awaiting_quantity, total_backordered_quantity, total_committed_quantity, total_damaged_quantity, total_exception_quantity, total_fulfillable_quantity, total_in_fulfillment_quantity, total_internal_transfer_quantity, total_on_hand_quantity,…. Required: id.
- **Get single ShipBob inventory by ID** (Get). Get a single ShipBob inventory item by id. Returns the item record's id and attributes — product details, variant information, and configuration from the item catalog, not stock quantities; for on-hand, committed, and fulfillable counts use the inventory levels endpoint. Required: id.
- **List all ShipBob inventory** (List). List all inventory items in ShipBob's paginated item catalog. Returns: first, items, last, next, prev. All filters are optional: SearchBy, FilterOperations, InventoryIds, IsActive, IsDigital, SortBy.
- **ShipBob inventory history search** (Search). Query ShipBob inventory history events — the inventory movements that change on-hand quantities (receiving/stow, order picks, adjustments, restocks, attribute updates) — filterable by inventory IDs, event category, date range, and facility. Returns each event with its id and content-type-specific attributes; pagination is cursor-based.
- **List all ShipBob inventory level locations** (List). List all inventory levels grouped by fulfillment center in shipbob, with inventory quantities broken down per location for every inventory item. Returns: first, items, last, next, prev. Does not return the list of fulfillment centers — use the Locations API for that. All filters are optional.
- **List all ShipBob inventory level lots** (List). List inventory levels for all ShipBob inventory items grouped by lot number. Returns per-lot records including lot_number, lot_date, and inventory quantity breakdowns. All query filters are optional.
- **List all ShipBob lot exclusions** (List). List lot exclusions for a ShipBob inventory item to see which lot numbers are excluded from fulfillment, filtered by sku or inventory_id. Returns: inventory_name, inventory_sku, lot_exclusions. Requires at least one of sku or inventory_id.
- **Create a ShipBob lot exclusion** (Create). Create a lot exclusion in ShipBob that prevents a lot number from being fulfilled for an inventory item. Returns: created_timestamp, deleted_timestamp, id, inventory_id, is_deleted, lot_date, lot_number, attributes. Also supply sku or inventory_id to identify the item; requests with neither are rejected, as are duplicates for the same item and lot number. Required: lot_number.
- **Delete a ShipBob lot exclusion by ID** (Delete). Soft-delete a lot exclusion in ShipBob for an inventory item; the exclusion can be restored later via the restore endpoint. Returns: deleted_timestamp, inventory_id, is_deleted, lot_date, lot_number. Also supply sku or inventory_id to identify the item; requests with neither are rejected. Required: lot_number.
- **Create a ShipBob lot exclusion restore** (Create). Restore a previously deleted lot exclusion for a specific inventory item in ShipBob, reversing a soft-delete. Returns the restored exclusion record (id, attributes). Required: lot_number.
- ...and 43 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
