Acorn Harness
Server Details
Configure, price and order custom XT30, XT30(2+2) and XT30 + JST GH wire harnesses.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- almond-bot/acorn-plugins
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct phase: list_options (read-only config data), quote_harness (price only), create_order (checkout link), and get_order_status (post-purchase lookup). The descriptions explicitly cross-reference each other and state what not to do, leaving no realistic grounds for misselection.
All names are snake_case and verb-first (create_order, get_order_status, list_options, quote_harness), so the convention is readable and predictable. Minor deviation: get_order_status is a three-part name while the rest are verb_noun, and 'quote' is a slightly different verb class than create/get/list.
Four tools is a tight, purposeful surface for a quote-to-checkout harness ordering flow, with no redundant entries. It is on the thin side of the 3-15 sweet spot, since order retrieval beyond a status flag is folded into one tool.
The core lifecycle is covered: discover options, price a design, create a payable checkout, then poll payment/shipping status. Gaps remain for order cancellation, refunds, listing past orders, and reissuing an expired checkout link, but agents can work around these by creating a new order.
Available Tools
4 toolscreate_orderCreate a wire harness orderAInspect
Create an unpaid order for one or more wire harness designs and get a checkout_url on acornharness.com for the buyer. The buyer opens it to pay (card, Link or wallet, via Stripe) and enter the US shipping address and shipping speed; nothing is charged or built until they pay there, and the link expires after 24 hours. Quote first with quote_harness and confirm the design, quantity and price with the user before calling this. Never ask for or accept card numbers or other payment details in the conversation. Items take the same fields as quote_harness and must be just as complete: pass back each quoted item's config (or design) once the user has confirmed it.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Buyer's email, only if they gave it: prefills checkout; the receipt, invoice and tracking go there. | ||
| items | Yes | 1–40 wire harness designs. Volume discounts count every harness across all items. | |
| reference | No | Buyer's PO number or note, echoed back on the order. | |
| idempotency_key | No | Any unique string. Retrying with the same key and the same items returns the same order instead of a second one. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Order id; pass to get_order_status |
| items | Yes | |
| status | Yes | |
| currency | Yes | |
| excludes | Yes | |
| ships_to | Yes | |
| subtotal | Yes | USD |
| harnesses | Yes | Total harnesses across all items |
| reference | Yes | |
| expires_at | Yes | checkout_url stops working after this time (ISO 8601) |
| checkout_url | Yes | Where the buyer pays, on acornharness.com |
| volume_discount | Yes | Fraction off every item, e.g. 0.1 |
| shipping_options | Yes | |
| next_volume_break | Yes | |
| lead_time_business_days | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, and the description usefully adds that nothing is charged or built until payment, the link expires in 24 hours, and payment runs through Stripe. However, it does not reconcile the idempotentHint=false annotation with the idempotency_key parameter's replay behavior, which is exactly the kind of behavioral nuance an agent needs before retrying. Good added context, but the retry semantics gap keeps it at a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The outcome and the checkout_url come first, followed by lifecycle details and then the sequencing constraint, so it is well front-loaded. It is dense and slightly long, but nearly every clause carries operational information; only the payment-method enumeration ("card, Link or wallet, via Stripe") is arguably surplus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating order-creation tool with a rich nested item schema and an output schema, the description covers the essential extras: the unpaid state, checkout link expiry, who supplies shipping, the quote-first workflow, and the prohibition on handling card data. Nothing an agent needs in order to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the item schema is extremely detailed, so the baseline is 3. The description adds one genuinely useful rule not in the schema: items must be as complete as in quote_harness, and the quoted item's config or design should be passed back once confirmed. Beyond that it defers to the schema rather than explaining individual fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create an unpaid order for one or more wire harness designs") and the concrete outcome ("get a checkout_url on acornharness.com for the buyer"). It clearly separates this from the sibling quote_harness by noting that quoting precedes ordering and that nothing is charged until the buyer pays.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the sequence: "Quote first with quote_harness and confirm the design, quantity and price with the user before calling this." It also gives a clear prohibition (never ask for or accept card numbers) and tells the agent to reuse the confirmed quoted item fields, so both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_order_statusGet wire harness order statusARead-onlyIdempotentInspect
Check an order by the id create_order returned (starts with cs_). Returns status: awaiting_payment (checkout_url still valid), payment_processing (a bank payment settling), payment_failed or expired (create a new order), or paid (built and shipped within 5 business days; tracking is emailed to the buyer), plus the charged totals. Never returns addresses or contact details.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | The order id from create_order, e.g. cs_live_a1B2… |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| tax | Yes | USD |
| items | Yes | |
| total | Yes | USD |
| status | Yes | |
| created | Yes | |
| currency | Yes | |
| discount | Yes | USD |
| shipping | Yes | |
| subtotal | Yes | USD |
| harnesses | Yes | |
| reference | Yes | |
| expires_at | No | |
| fulfillment | Yes | |
| checkout_url | No | Only while awaiting_payment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds substantial context beyond that. It explains each status meaning, checkout_url validity, bank settlement, shipping timing, tracking email delivery, charged totals, and a privacy guarantee that addresses and contact details are never returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then efficiently enumerates the possible statuses. Despite being a dense sentence, every clause carries operational meaning, including validity, next steps, shipping, and privacy constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup with an output schema and strong annotations, the description is complete enough to call correctly. It covers id provenance, status interpretation, next actions, timing expectations, privacy behavior, and totals without redundant schema explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the order_id pattern and example. The description still adds useful provenance by tying the id specifically to create_order and noting the cs_ prefix, though it does not add further syntax beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: check an order by the id returned from create_order. It clearly distinguishes this lookup from sibling create_order by explaining that create_order produces the id and that a new order is needed after payment_failed or expired.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use the tool: after create_order, using the returned cs_ id, and it directs creating a new order when the status is payment_failed or expired. It does not explicitly cover exclusions or when to prefer quote_harness/list_options, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_optionsList wire harness optionsARead-onlyIdempotentInspect
List every option for an Acorn Harness custom wire harness: connector types (XT30, XT30(2+2), XT30 + JST GH), wire length range, power gauges, end A and end B terminations (straight, right angle up/down, unterminated tinned leads on end B), wire colors, extras (twisted or crossed signal pair, JST GH end B), the rules for combining them, required_choices (with the question to ask the user for each), optional_choices and their defaults, pricing rules, lead time, shipping and returns. Call it when you need the allowed values; it takes no arguments and changes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that by disclosing the payload's contents (rules for combining options, required_choices with the question to ask the user, optional_choices and defaults, pricing rules, shipping and returns), which is the main unknown for a zero-argument tool. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The verb and the 'no arguments / changes nothing' cue are front-loaded, which is good. However, the core is one very long comma-chained sentence enumerating every option category, which is dense and hard to scan. The enumeration is defensible given there is no output schema, but the structure could be broken into a payload list plus a usage sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the burden of telling the agent what comes back, and it does that thoroughly: it lists the option categories, that combination rules and required/optional choice metadata are included, and that pricing, lead time and shipping data are present. It is slightly short of complete because it does not indicate the shape of the response (flat lists vs. nested rule objects) or how large it may be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description reinforces this with 'it takes no arguments', leaving no ambiguity about invocation, but it adds nothing further since there is nothing to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and a concrete resource ('every option for an Acorn Harness custom wire harness'), then enumerates the option categories it returns (connectors, lengths, terminations, colors, pricing rules, lead time, shipping). That is far beyond a tautology. It stops short of 5 because it never names the siblings it is not, so the agent must infer the split versus quote_harness or create_order.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call it when you need the allowed values' gives a clear triggering condition, and 'takes no arguments and changes nothing' rules out using it for a transaction. There is no explicit exclusion or named alternative (e.g. 'do not use this to price a specific configuration – use quote_harness'), so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_harnessQuote wire harnessesARead-onlyIdempotentInspect
Price one or more custom wire harness designs exactly as acornharness.com checkout will. Returns, for each design, a picture (side view plus both ends' rear views, as the configurator draws it: show it to the user), a configurator_url that opens the design on the site, and defaults_applied. Every item needs connector, length_mm, power_gauge, end_a, end_b, quantity, or a complete design code / configurator URL in design. Items missing any of them are refused with the questions to ask: ask the user, don't guess, and ask about end A and end B separately. Colors, twisting, crossing and end_b_gh have defaults, listed in defaults_applied for you to tell the user. Volume discounts count every harness across all items. Prices exclude shipping (chosen at checkout) and sales tax. Nothing is ordered or saved.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | 1–40 wire harness designs. Volume discounts count every harness across all items. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| currency | Yes | |
| excludes | Yes | |
| ships_to | Yes | |
| subtotal | Yes | USD |
| harnesses | Yes | Total harnesses across all items |
| volume_discount | Yes | Fraction off every item, e.g. 0.1 |
| shipping_options | Yes | |
| next_volume_break | Yes | |
| lead_time_business_days | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world behavior, yet the description still adds real context: refusal on incomplete items, side effect of defaults being surfaced in defaults_applied, volume discounts aggregated across all items, prices excluding shipping/sales tax, and that nothing is ordered or saved. It also tells the agent to show the returned picture to the user, which is behavioral guidance not present in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns and does, then the required-field rule, then defaults and pricing caveats. Dense but nearly every sentence carries information; a few clauses (e.g. restating the discount rule twice) could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, nested-array pricing tool with an output schema, the description covers what is returned at a useful level (picture, configurator_url, defaults_applied), the failure mode, the defaulting behavior, and the pricing boundaries (discount aggregation, shipping, tax). An agent has everything needed to call it correctly and to relay results to the user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description earns above that by explaining the interaction protocol (never guess, ask end A and end B separately, ask about JST GH), that a complete design code/URL satisfies all requirements, and that defaults are reported back in defaults_applied rather than silently applied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Price one or more custom wire harness designs exactly as acornharness.com checkout will') and makes clear this is a simulation of checkout pricing, not an order. That distinguishes it from create_order and list_options without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong operational guidance: items missing required fields are refused with questions, 'ask the user, don't guess', and ask end A and end B separately. It implies this is the pre-order quoting step ('Nothing is ordered or saved') but never explicitly names create_order as the follow-up or states exclusion conditions in tool terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
create_order - First observed
get_order_status - First observed
list_options - First observed
quote_harness
Related MCP Connectors
Generate 12V/24V/48V wiring diagrams and size wires, fuses, batteries, solar, and inverters.
Quote, price and order custom 3D prints (PLA) shipped anywhere in the US.
Quote, check and order 3D prints of STL, 3MF, STEP or OBJ files. Made in the USA, shipped in the US.
Instant 3D printing and CNC machining quotes from your CAD files (STL, STEP, 3MF, OBJ): price and ship date for SLS nylon, FDM plastic, aluminum and brass parts made in the US
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude to size batteries, wire gauges, and fuses for 12V-48V electrical systems in boats, vans, and off-grid builds, and generates complete wiring diagrams as SVG or PNG.9304 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables planning Arduino/ESP32/Raspberry Pi robotics builds with correct pinouts, wiring diagrams, board references, and code skeletons based on verified component specs.MIT
- AlicenseNot gradedqualityCmaintenanceEnables portable-battery outage planning by exposing tools that retrieve an example scenario, compute usable AC energy and runtime, select protected and optional loads, and compare plans under energy, continuous-power, and startup-surge limits. It returns structured calculations and spoken summaries for rehearsing what can stay powered before an outage.MIT
- FlicenseNot gradedqualityBmaintenanceEnables comparing and ranking portable battery power stations and solar generator bundles by load, runtime, use case, solar charging, portability, battery chemistry, and budget, with modeled estimates and shopping guidance.-
Glama MCP Gateway
Add one secure layer between your agents and this server.