Fulfilment API · MCP connector · REST

A fulfilment API for Claude, Cursor and your own scripts

Create an API key, plug in our MCP connector and ask about orders, stock, balance and live shipping quotes — including packing and EU duty. Orders return the billed USD split. Read-only by default, scoped per key and free. The API does not create store orders.

MCPClaude, Cursor and more
8 toolsorders, stock, balance, rates
Read-onlyby default, scoped keys
Freefor every account
What you can ask

Ask the fulfilment API in plain English

The assistant picks the right MCP tool, calls our REST API with your key and answers with live data from our China warehouse — not from a Shopify export.

“Which SKUs have fewer than 10 units left in the warehouse?”

list_inventory

“Break down order 10293 in USD: product, shipping, packing, duty.”

get_order

“Is my balance enough to pay order 10293?”

get_balance + get_order

“What does it cost to ship 2 × SKU-123 to Germany, including packing and EU duty?”

list_shipping_rates

“Where is order #1045? Give me the tracking number.”

get_order

“Pay order 10293 from my balance.”

pay_order (opt-in scope)
Tools & scopes

What the connector can do

Each MCP tool maps one-to-one to a REST endpoint and needs a matching scope on the API key.

ToolScopeWhat it returns
list_orders / get_orderorders:readOrders with status, items, Shopify/WooCommerce numbers, tracking, and the full USD split: product, international shipping, China domestic shipping, packing, sourcing, insurance, tax and tariff.
list_inventory / get_inventoryinventory:readStock held in our warehouses per SKU, low-stock filters and the inventory ledger.
get_balance / list_billingbalance:readWallet balance and billing history for any date range.
list_shipping_ratesrates:readLive quotes by SKU:qty or total grams. Each option returns carrier, USD price, transit window, packing and EU duty (€3 × distinct SKU).
pay_orderorders:payPay an order from your balance. Off by default, idempotent and rate-limited.
What the API returns

The same numbers Claude and your scripts see

Settings → API Keys issues the key and the MCP zip. Live quotes and order totals are no longer a single number — they break out packing, duty and the rest of the HF bill.

Settings → API Keys: scoped keys for Claude Desktop and Cursor, with MCP zip and OpenAPI downloads
Settings → API Keys. Create a key, pick scopes, download the MCP connector and the OpenAPI spec.
GET /connector/v1/shipping-rates returning carrier, USD price, transit days, packing and EU duty
Live GET /shipping-rates: pass items=SKU:qty or weight in grams. Each line has price, packing and EU duty (€3 × distinct SKU).
GET /connector/v1/orders returning product, shipping, packing, sourcing, insurance, tax, tariff and total in USD
list_orders / get_order return the billed split in USD. confirmAmount on pay must match totalAmount.

Live API / MCP

GET /shipping-rates quotes right now: catalog items or grams, packing estimate, EU duty when the destination is EU. Use this for scripts, Claude and Cursor.

Shopify checkout

Rate Sync writes a static delivery profile. Checkout does not call us live. Use Rate Sync so customers see a price at checkout. Shipping zones and Rate Sync →

Setup

Connect your AI assistant in four steps

  1. Create a free account

    Sign up at app.honestfulphilment.com and connect your Shopify or WooCommerce store.

  2. Create an API key

    Open Settings → API Keys, name the key (e.g. “Claude Desktop”), pick its scopes and, optionally, limit it to one store.

  3. Add the MCP connector

    Download the MCP connector below, run npm install and add it to Claude Desktop, Claude Code or Cursor with your key.

  4. Ask in plain English

    Your assistant now calls our tools directly: no exports, no spreadsheets, no switching tabs.

Claude Desktop config

Unzip the MCP connector, run npm install, then add this to claude_desktop_config.json (Cursor: ~/.cursor/mcp.json). Requires Node.js 18+.

{
  "mcpServers": {
    "hf": {
      "command": "node",
      "args": ["/path/to/hf-claude-mcp/src/index.js"],
      "env": { "HF_API_KEY": "YOUR_API_KEY" }
    }
  }
}

REST API for developers

Prefer your own scripts or agents? Call the same endpoints directly.

BASE=https://api.honestfulphilment.com/connector/v1
KEY=YOUR_API_KEY

curl -H "x-key: $KEY" "$BASE/balance"
curl -H "x-key: $KEY" "$BASE/orders?status=NOT_PAID"
curl -H "x-key: $KEY" "$BASE/shipping-rates?countryCode=DE&items=SKU-123:2"
  • Base URL https://api.honestfulphilment.com, paths under /connector/v1
  • Auth header x-key, 60 requests per minute per key
  • OpenAPI 3 spec and agent guide
API reference

REST endpoints

Base URL https://api.honestfulphilment.com/connector/v1. Send your key in the x-key header. Responses use the envelope { status, data, errorCode, errorMessage, pageIndex, pageSize, totalCount }; amounts are in USD; pageSize defaults to 20 (max 100). This API does not create store orders and does not write Shopify checkout rates. Full schemas are in the OpenAPI spec.

MethodPathScopeDescription
GET/ordersorders:readList orders. Filters: status, orderNo, sku, time range, page, pageSize (default 20, max 100). Each row includes the USD cost split; address is on GET /orders/{id} only.
GET/orders/{id}orders:readOne order by HF id or order number, with items, address, tracking and the full USD split (product, shipping, packing, insurance, tax, tariff).
POST/orders/{id}/payorders:payPay from balance. Body: idempotencyKey (required), confirmAmount (optional, must match USD total).
GET/inventoryinventory:readWarehouse stock per SKU. Filters: keyword, maxQuantity (SQL quantity <=, not a page trim), warehouseCode.
GET/inventory/{sku}inventory:readOne SKU; includeLogs=true adds the inventory ledger.
GET/balancebalance:readWallet balance and recent billing.
GET/billingbalance:readBilling history between startTime and endTime.
GET/shipping-ratesrates:readLive quote: countryCode, optional postCode, items=SKU:qty or weight in grams. Returns price, packing, EU duty, transit days.
Safety

Built for agents, with guard rails

  • Read-only scopes by default; payments are a separate opt-in
  • Keys can be limited to a single store and revoked instantly
  • Payments need a unique idempotency key and an optional amount check
  • Rate limits of 60 calls per minute per key and 10 payments per minute
  • The full key is shown only once and never includes your login

Works with your store

Orders from Shopify and WooCommerce stores are available through the same key, with the original platform order numbers.

Behind it: a real warehouse

The data comes from our own China warehouse, sourcing and QC teams. See our services →

FAQ

AI integration questions

Which AI tools can connect to Honest FulPhilment?

Any client that supports the Model Context Protocol (MCP), including Claude Desktop, Claude Code and Cursor. Developers and other agents can call the same REST API directly with an API key, using our OpenAPI 3 specification.

Can the AI spend my money?

Not unless you allow it. New API keys are read-only by default. Paying orders needs the separate orders:pay scope, every payment requires a unique idempotency key and the pay endpoint is limited to 10 calls per minute.

Is it safe to give an AI assistant an API key?

Each key has only the scopes you choose, can be limited to a single store and can be revoked instantly in Settings → API Keys. Keys are separate from your login session, so the assistant never sees your password.

How much does the AI integration cost?

Nothing. API keys, the MCP connector and the REST API are free for every Honest FulPhilment account. You only pay for products, fulfilment and shipping as usual.

Is there a REST API for developers?

Yes. The base URL is https://api.honestfulphilment.com, endpoints live under /connector/v1 and authentication uses the x-key header. Each key is limited to 60 requests per minute; lists default to 20 records per page (max 100). The OpenAPI 3 spec is public at honestfulphilment.com/ai/openapi-v1.yaml.

What cost fields do orders return?

Every order from list_orders and get_order includes the billed split in USD: product, international shipping, China domestic shipping, packing, sourcing, insurance, tax and tariff, plus the total. The same numbers show in Claude MCP.

Is the shipping-rates API the same as Shopify checkout?

No. GET /connector/v1/shipping-rates is a live quote (items or weight, packing and EU duty). Shopify checkout reads a static delivery profile written by Rate Sync. Use the API or MCP for scripts and agents; use Rate Sync so customers see a price at checkout.

Does it work with both Shopify and WooCommerce stores?

Yes. Orders from every connected Shopify and WooCommerce store are available through the same key, including the original platform order numbers (thirdOrderIds / thirdOrderNos).

Do you have a fulfilment API for Shopify and WooCommerce?

Yes. One connector covers every store on the account — Shopify and WooCommerce. It is a REST API at https://api.honestfulphilment.com/connector/v1 plus an MCP server for Claude and Cursor. Authenticate with the x-key header. It reads fulfilment data from our China warehouse; it is not the Shopify Admin API or the Woo REST API.

Can the API create Shopify or WooCommerce orders?

No. Store orders still import from the Shopify app, a WooCommerce REST key, or a CSV/Excel upload. The connector lists, quotes, and (with an opt-in scope) pays HF fulfilment orders. It does not create storefront orders or write checkout rates.

How do I connect Claude Desktop to my fulfilment account?

Create a key in Settings → API Keys, download the MCP zip, run npm install, and add the server to claude_desktop_config.json with HF_API_KEY. Cursor uses the same entry in ~/.cursor/mcp.json. Node.js 18+ is required.

Start fulfilling your Shopify and WooCommerce orders from China

Free to connect. Set up your store in minutes and talk to a real account manager.

On WooCommerce? Connect your store free →