Acorn Harness

For AI assistants and developers

Order wire harnesses from Claude, ChatGPT, Claude Code or Codex.

Add Acorn to your assistant, describe the wire harness you need, and get the exact price and a checkout link. Building something yourself? Use the REST API further down.

Both use the same order system as the configurator: the same prices, the same checkout and the same orders.

Order with AI

One step for each assistant. There's no account or key to set up.

Claude (web and desktop)

Opens Claude with Acorn filled in. Click Add.

Add to Claude ↗
Add it by hand
  1. In Claude (claude.ai or the desktop app), open Customize → Connectors.
  2. Click Add → Custom → Web (or "Add custom connector").
  3. Name it "Acorn Harness" and enter the URL https://acornharness.com/mcp, then click Continue.
  4. Under Authentication choose "No sign-in" (the server is public), then click Add.
  5. In a chat, open the "+" menu → Connectors and turn on Acorn Harness.

On Team and Enterprise plans an owner adds it once under Organization settings → Connectors (Add → Custom → Web); members then find it under Customize → Connectors.

ChatGPT

Open ChatGPT plugins ↗

Choose + → Add custom MCP server, paste the connector URL, pick "No authentication", then Create as a plugin.

Step by step
  1. In ChatGPT on the web, open chatgpt.com/plugins.
  2. Select the + button, then Add custom MCP server.
  3. Name it "Acorn Harness", add a short description, and under Connection enter the MCP server URL https://acornharness.com/mcp.
  4. Set Authentication to "No authentication", review the warning and select I understand and want to continue.
  5. Select Create as a plugin, check that the four Acorn tools are listed, and install the plugin.
  6. Start a new chat, type @ and pick Acorn Harness.

If Add custom MCP server is missing, your plan or workspace doesn't allow custom MCP servers yet: on some plans you first turn on Developer mode in Settings, and on Business and Enterprise an admin has to allow them.

Claude Code

Run in your terminal:

claude mcp add --transport http acorn https://acornharness.com/mcp
Or install the plugin (adds an ordering skill)

Inside Claude Code:

/plugin marketplace add almond-bot/acorn-plugins
/plugin install acorn@acorn-plugins

Open source at almond-bot/acorn-plugins.

Codex

Run in your terminal:

codex mcp add acorn --url https://acornharness.com/mcp
Or edit config.toml

Add this to ~/.codex/config.toml; the Codex app, CLI and IDE extension share it:

[mcp_servers.acorn]
url = "https://acornharness.com/mcp"

Connector URL, if your app asks for one: https://acornharness.com/mcp. No sign-in.

Then ask

“Quote 10 XT30(2+2) wire harnesses, 350 mm, 16 AWG, straight on one end and right angle down on the other, then send me a checkout link.”

What happens next

  1. Your assistant turns the request into a design and tells you the exact price, with a link to see the design on our site.
  2. When you say go, it gives you a checkout link on acornharness.com. The link works for 24 hours.
  3. You pay and enter your US shipping address on that page. Nothing is charged until you do, and you never type card details into the chat.

Every wire harness is made to order, Assembled in the USA and ships within 5 business days. See the shipping and returns policies, what we receive from your assistant and our terms.

Other apps

Any app that lets you add a custom connector works the same way: add https://acornharness.com/mcp with no sign-in.

Config file format

Most apps that use a config file take this:

mcp.json
{
  "mcpServers": {
    "acorn": {
      "type": "http",
      "url": "https://acornharness.com/mcp"
    }
  }
}

Build your own integration

A public JSON REST API: no key, CORS enabled. Price any design, create an order, and hand the checkout_url to whoever pays. The machine-readable description is openapi.json; agents can read llms-full.txt.

Endpoints

EndpointWhat it does
POST /api/quotePrice a multi-design order without creating it.
POST /api/ordersCreate an order; returns pricing, a checkout_url and a pay_url.
GET /api/orders/{id}Payment status and charged totals.
GET /api/quote?k=22&l=350…Quick quote for one design from design-link parameters.
GET /api/spec?k=22&l=350…The manufacturing spec, an Almond Harness Studio .harness.json file.
GET /openapi.jsonOpenAPI 3.1 description of all of the above.

Examples

1. Price an order

POST /api/quote takes the same body as an order and creates nothing.

Request
curl -X POST https://acornharness.com/api/quote \
  -H "Content-Type: application/json" \
  -d '{"items": [
     {"connector": "xt30-22", "length_mm": 350, "end_b": "ra-down", "quantity": 10},
     {"connector": "xt30", "length_mm": 200, "end_b": "unterminated", "quantity": 4}
   ]}'
Response (abridged)
{
  "currency": "USD",
  "items": [
    {
      "name": "Acorn Harness XT30(2+2) 350 mm 16AWG ST/RA-D",
      "quantity": 10,
      "unit_price": 26.95,
      "total": 269.5,
      "design_url": "https://acornharness.com/?k=…#design"
    },
    {
      "name": "Acorn Harness XT30 pigtail 200 mm 16AWG ST",
      "quantity": 4,
      "unit_price": 16.76,
      "total": 67.04,
      "design_url": "https://acornharness.com/?k=…#design"
    }
  ],
  "harnesses": 14,
  "volume_discount": 0.05,
  "subtotal": 336.54,
  "shipping_options": [
    {
      "label": "US Ground",
      "price": 12
    },
    {
      "label": "US Two-Day",
      "price": 28
    }
  ]
}

2. Create the order

POST /api/orders returns the same pricing plus a Stripe checkout_url and a shorter pay_url on acornharness.com that opens it (valid 24 hours). Send an Idempotency-Key so a retry returns the same order instead of a second one.

Request
curl -X POST https://acornharness.com/api/orders \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: po-1234" \
  -d '{"items": [
     {"connector": "xt30-22", "length_mm": 350, "end_b": "ra-down", "quantity": 10},
     {"connector": "xt30", "length_mm": 200, "end_b": "unterminated", "quantity": 4}
   ],
   "email": "buyer@example.com",
   "reference": "PO-1234"}'
Response (201, abridged)
{
  "id": "cs_live_a1B2…",
  "object": "order",
  "status": "awaiting_payment",
  "checkout_url": "https://checkout.stripe.com/c/pay/cs_live_a1B2…",
  "pay_url": "https://acornharness.com/pay/cs_live_a1B2…",
  "expires_at": "2026-11-03T17:00:00.000Z",
  "status_url": "https://acornharness.com/api/orders/cs_live_a1B2…",
  "reference": "PO-1234",
  "subtotal": 336.54,
  …
}

3. Pay and track

Whoever pays opens checkout_url (or pay_url) and pays through Stripe; shipping and sales tax are added there. Nothing is charged or built until then. Poll the order for its status.

Request
curl https://acornharness.com/api/orders/cs_live_a1B2…
Response (abridged)
{
  "id": "cs_live_a1B2…",
  "status": "paid",
  "reference": "PO-1234",
  "harnesses": 14,
  "subtotal": 336.54,
  "shipping": { "label": "US Ground", "price": 12 },
  "tax": …,
  "total": …,
  "fulfillment": "Built and shipped within 5 business days; tracking is emailed to the buyer."
}

Volume discounts count every wire harness in the order, across all designs: 10+ 5% off, 100+ 10% off, 1000+ 20% off. Shipping options, lead time and the no-returns terms are in the shipping and returns policies.

Request format

items holds 1–40 designs. Each is an object of the fields below. Any field you leave out takes the default design's value, and unknown fields are rejected so a typo can't order the wrong part. An item can also be a complete design code or a design_url string, as returned by the quote API or copied from the configurator.

FieldValuesDefault
connector"xt30" (XT30, power only, 2 pins); "xt30-22" (XT30(2+2), power + 2 signal pins); "xt30-gh" (XT30 + JST GH, power + signal on GH)"xt30-22"
length_mm30–3000, rounded to 5 mm. Wire only: back of one plug to the back of the other, or to the wire tips on a pigtail.350
power_gauge14, 16, 18 (AWG). XT30(2+2) signal wires are 24 AWG, or 30 AWG with any JST GH end.16
end_a"straight", "ra-up", "ra-down". Up/down as seen from the wire side."straight"
end_b"straight", "ra-up", "ra-down", "unterminated". "unterminated" makes a pigtail: no plug, wires stripped 6 mm and tinned."ra-down"
colorsArray in pin order. XT30: PIN+, PIN-. XT30(2+2) and XT30 + JST GH: PIN+, PIN-, SIG1, SIG2. Power red/black, signal green/yellow.red, black (+ green, yellow)
twistedtrue / false. Signal pair (XT30(2+2), XT30 + JST GH).true
swap_signalstrue / false. XT30(2+2), XT30 + JST GH: cross the signal pair, so end A pin 1 goes to end B pin 2 and 2 to 1 (e.g. to swap CAN H/L). Needs signal pins on end B (a plug, or end_b_gh).false
end_b_ghtrue / false. XT30(2+2): end B's signal pair goes to its own JST GH 1.25 mm 2-pin plug (SIG1 pin 1, SIG2 pin 2; pin 1 is on the left seen from the wire side with the latch up); its power wires go to a 2-pin XT30, or tinned leads when end_b is "unterminated". End A keeps the XT30(2+2). +$2.00.false
quantity1–50001
designOptional starting point: a complete design code or design_url. The other fields override it.none

Order-level fields: email (prefills checkout; the receipt and tracking go there) and reference (your PO or note, up to 200 characters, echoed back on the order).

Order status

statusMeaning
awaiting_paymentCreated; checkout_url is still valid.
payment_processingPaid with a method that settles later, such as a bank debit.
payment_failedThat payment didn't go through. Create a new order.
paidOn the bench. Ships within 5 business days; tracking is emailed to the buyer.
expiredNot paid within 24 hours. Create a new order.

The order id is the only credential, so keep it private. Status responses never include addresses or contact details.

Errors

Errors are JSON {"error": "…"} with a message that names the bad field:

400  {"error": "items[1].length_mm must be a number from 30 to 3000"}
CodeWhen
400Invalid body, item or field.
404No such order.
409Idempotency-Key reused with a different body.
502Stripe was unreachable. Retry with the same Idempotency-Key.

Building an agent? Use the MCP tools

The connector from Order with AI is a stateless MCP server at https://acornharness.com/mcp (Streamable HTTP, no auth) with the same operations as tools. Item fields match the request format above, except colors is an object (power_pos, power_neg, signal_1, signal_2).

ToolWhat it doesChanges anything?
list_optionsEvery connector, length, gauge, end, color and extra, with the rules for combining them.No
quote_harnessExact price for one or more designs, plus a configurator link for each.No
create_orderCreates an unpaid order and returns a checkout link on acornharness.com for the buyer.Creates an unpaid order
get_order_statusPayment status and charged totals for an order id.No

To try the tools by hand, connect the MCP Inspector to the URL with the Streamable HTTP transport:

Terminal
npx @modelcontextprotocol/inspector@latest

Questions, or need net terms on a PO? Email support@almond.bot.