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
- In Claude (claude.ai or the desktop app), open Customize → Connectors.
- Click Add → Custom → Web (or "Add custom connector").
- Name it "Acorn Harness" and enter the URL https://acornharness.com/mcp, then click Continue.
- Under Authentication choose "No sign-in" (the server is public), then click Add.
- 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
- In ChatGPT on the web, open chatgpt.com/plugins.
- Select the + button, then Add custom MCP server.
- Name it "Acorn Harness", add a short description, and under Connection enter the MCP server URL https://acornharness.com/mcp.
- Set Authentication to "No authentication", review the warning and select I understand and want to continue.
- Select Create as a plugin, check that the four Acorn tools are listed, and install the plugin.
- 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
- Your assistant turns the request into a design and tells you the exact price, with a link to see the design on our site.
- When you say go, it gives you a checkout link on acornharness.com. The link works for 24 hours.
- 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:
{
"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
| Endpoint | What it does |
|---|---|
POST /api/quote | Price a multi-design order without creating it. |
POST /api/orders | Create 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.json | OpenAPI 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.
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}
]}'{
"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.
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"}'{
"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.
curl https://acornharness.com/api/orders/cs_live_a1B2…
{
"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.
| Field | Values | Default |
|---|---|---|
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_mm | 30–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_gauge | 14, 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" |
colors | Array 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) |
twisted | true / false. Signal pair (XT30(2+2), XT30 + JST GH). | true |
swap_signals | true / 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_gh | true / 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 |
quantity | 1–5000 | 1 |
design | Optional 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
| status | Meaning |
|---|---|
awaiting_payment | Created; checkout_url is still valid. |
payment_processing | Paid with a method that settles later, such as a bank debit. |
payment_failed | That payment didn't go through. Create a new order. |
paid | On the bench. Ships within 5 business days; tracking is emailed to the buyer. |
expired | Not 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"}| Code | When |
|---|---|
| 400 | Invalid body, item or field. |
| 404 | No such order. |
| 409 | Idempotency-Key reused with a different body. |
| 502 | Stripe 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).
| Tool | What it does | Changes anything? |
|---|---|---|
list_options | Every connector, length, gauge, end, color and extra, with the rules for combining them. | No |
quote_harness | Exact price for one or more designs, plus a configurator link for each. | No |
create_order | Creates an unpaid order and returns a checkout link on acornharness.com for the buyer. | Creates an unpaid order |
get_order_status | Payment 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:
npx @modelcontextprotocol/inspector@latest
Questions, or need net terms on a PO? Email support@almond.bot.