Protoship
Server Details
Your agent picks parts for an ESP32 device; Protoship quotes it, has it assembled and delivers it.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Each tool has a clearly distinct role in the purchase workflow: catalog for parts, quote for pricing, reserve for locking in a quote, status for reservation state, and join_waitlist for non-catalog requests. Although catalog and quote are both free and read-only, their outputs and purposes are described distinctly enough to avoid misselection.
The names mix nouns (catalog, status) with verbs (quote, reserve) and one verb_noun form (join_waitlist). They are readable and individually clear, but there is no single predictable convention across the set.
Five tools is a well-scoped surface for a configure-quote-reserve workflow. Each tool maps to a meaningful step or query, with no redundant or filler operations.
The core lifecycle is covered: discover parts, get a quote, reserve it, and check reservation status, plus a waitlist path for custom requests. Minor gaps remain, such as canceling or modifying a reservation and leaving the waitlist, but these are not central to the stated flow.
Available Tools
5 toolscatalogList the Protoship standard partsARead-onlyInspect
Lists the parts a Protoship device is built from: the always-included Arduino Nano ESP32 on its carrier, the modules (function, plug, I2C address, limits) and the enclosure options, plus the power and delivery rules. Free, no side effects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds 'Free' (cost information not in annotations) and clarifies what comes back, but 'no side effects' largely restates readOnlyHint and there are no details on response format or volume.
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?
Two sentences, front-loaded with what is listed, and the trailing 'Free, no side effects' serves as a useful call-to-action. Every clause carries content; there is no padding.
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 no-argument, no-output-schema read tool, the description covers what the catalog contains and its cost/safety profile adequately. It could go slightly further by indicating the shape of the response (e.g., a flat list per category), but nothing essential 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?
The tool takes zero parameters, so the baseline of 4 applies and there is no parameter semantics to compensate for. Nothing is missing on this dimension.
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 ('Lists') and resource ('the parts a Protoship device is built from'), then enumerates exactly what is covered: the Arduino Nano ESP32 on its carrier, modules (function, plug, I2C address, limits), enclosure options, and power/delivery rules. This level of enumeration makes it unmistakable versus siblings like quote, reserve, or status.
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?
The description implies usage (browse the standard parts before quoting or reserving) and notes it is 'Free, no side effects', which encourages calling it. However, it never states when to use this versus quote/reserve/status or names any alternative, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_waitlistJoin the Protoship waitlistAIdempotentInspect
Puts your user on the Protoship waitlist, for PCBs, 3D prints, CNC parts, sheet metal or devices outside the catalog. Protoship sends one email to confirm the address, later one with the invite. No newsletter. Use only your user's own email address and only with their consent. Privacy policy: https://protoship.dev/privacy
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Your user's email address. | ||
| device | No | The device your user wants to build, in a sentence. Optional. | |
| interests | No | What your user wants to order. Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, it discloses concrete side effects: one confirmation email and a later invite email, plus 'No newsletter'. It also states the consent requirement and privacy policy link, which are valuable behavioral details for an external write action.
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 scope, then adds only useful behavioral and compliance details. Every sentence contributes to correct invocation.
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 external waitlist action with complete parameter descriptions and rich annotations, the description covers purpose, side effects, consent, and privacy context. No output schema exists, so return-value explanation is not required.
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 baseline is 3. The description adds meaningful semantics for the email parameter by requiring the user's own address and consent, and it reinforces the waitlist context for device and interests.
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: putting the user on the Protoship waitlist. It also scopes the use to PCBs, 3D prints, CNC parts, sheet metal, or devices outside the catalog, which distinguishes it from catalog/order-oriented siblings.
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 a clear use context by describing the waitlist categories and 'outside the catalog' condition. It also adds consent and own-email constraints, but it does not explicitly name sibling alternatives or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quotePrice a deviceARead-onlyInspect
Prices a device built from catalog modules: parts, enclosure, assembly, shipping, Protoship fee and VAT for the destination country, as one total, plus a delivery estimate, a quote_id for reserve, a reserve_url your user can open, and an ESPHome starter config. If the device breaks a rule (power, plugs, unknown part), it returns the problems to fix. Free, no side effects.
| Name | Required | Description | Default |
|---|---|---|---|
| parts | Yes | Module ids from catalog, e.g. ["bme280", "oled"]. Repeat an id or use "micro_servo:2" for two. The Nano ESP32 and the carrier are always included. | |
| units | No | How many identical devices. Default 1. | |
| country | No | Two-letter EU country code of the delivery address, e.g. DE. Default DE. | |
| enclosure | No | printed (default) or none. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the readOnlyHint/openWorldHint annotations: zero cost, no side effects, and that validation failures return a list of problems to fix rather than erroring out. It does not discuss rate limits or quote expiry, which would round it out.
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 the core action and kept to two compact sentences. The long comma-chained enumeration of returned artifacts makes it denser than it needs to be, but every clause carries information.
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, the description takes on return-value disclosure and does so thoroughly: total, delivery estimate, quote_id, reserve_url, ESPHome config, plus the error shape. An agent knows both what it gets back and how failures surface.
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 all four parameters are already documented in the input schema. The description only obliquely reinforces them (VAT 'for the destination country' justifies country; 'built from catalog modules' frames parts) and says nothing about units or enclosure.
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+resource: prices a device built from catalog modules, and enumerates what the total covers (parts, enclosure, assembly, shipping, fee, VAT). It implicitly separates itself from catalog (module ids) and reserve (quote_id/reserve_url), but never names those siblings explicitly.
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?
Usage is only implied through the workflow hints — a quote_id for reserve and a reserve_url to open — plus the 'free, no side effects' note. It never says explicitly when to call this versus catalog or reserve, nor any prerequisites such as resolving module ids first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reserveReserve a quoted deviceAInspect
Reserves the device from a quote for your user. No payment and no obligation to buy. Protoship sends one email to confirm the address and the reservation, and one when the device can be ordered. No newsletter. Use only your user's own email address, only after showing them the total and with their consent. Privacy policy: https://protoship.dev/privacy
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Your user's email address. | ||
| purpose | No | What the device is for, in a sentence. Optional. | |
| quote_id | Yes | quote_id from quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful side effects: no payment or obligation, two confirmation emails, and no newsletter. It also adds consent and privacy handling context that an agent needs before invoking an open-world reservation.
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 adds short, useful constraints and side effects. Every sentence earns its place by clarifying obligations, communications, or consent requirements.
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 non-destructive but write-oriented, open-world reservation tool with no output schema, the description covers the important behavioral context: what happens, what does not happen, and what consent is required. The remaining details, such as exact return payload, are not necessary to invoke it correctly.
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 schema already documents email, purpose, and quote_id. The description reinforces that email must be the user's own and that quote_id comes from a quote, but adds little additional parameter-level meaning, especially for the optional purpose field.
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: it reserves the device from a quote for the user. It is clearly distinct from catalog, quote, and status in meaning, but it does not explicitly contrast itself with join_waitlist or other reservation alternatives.
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 prerequisites and constraints: use only the user's own email, only after showing them the total, and only with their consent. It does not explicitly name when to use join_waitlist instead or other alternatives, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusCheck a reservationARead-onlyInspect
Returns the state of a reservation (pending until the email is confirmed, then confirmed), the device and its total.
| Name | Required | Description | Default |
|---|---|---|---|
| reservation_id | Yes | The id reserve returned, e.g. R-7KQ2M9XW4P. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower, and the description still adds real value by disclosing the state lifecycle: pending until email confirmation, then confirmed. It does not say what happens for an unknown or malformed id, which is the remaining behavioral gap.
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?
One sentence, front-loaded with the return value, then the state semantics, then the payload contents. Every clause carries information and nothing is repeated from the title or schema.
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?
There is no output schema, so the description must enumerate return fields, and it does: state, device, and total. For a one-parameter read tool that is nearly sufficient; only not-found/error behavior is left unstated.
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% and the single parameter already carries an example format ('R-7KQ2M9XW4P'), so the schema does the heavy lifting. The description adds no meaning about the id beyond what the schema provides, which is the baseline-3 case.
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 gives a specific verb+resource: it 'returns the state of a reservation', which resolves the ambiguity of the bare name 'status'. It is clearly a lookup rather than an action, distinguishing it from reserve/quote/join_waitlist, though it never names those siblings explicitly.
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?
Usage is only implied: an agent can infer this is the follow-up call after reserve (to check confirmation state), but the description never states when to use it, when not to, or what to do instead. No prerequisites or alternatives are mentioned.
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.
5 tool updates
- First observed
catalog - First observed
join_waitlist - First observed
quote - First observed
reserve - First observed
status
Related MCP Connectors
Plan and build a physical body for your AI agent: boards, parts list, assembly and pairing.
Agent-native supply network for components, fabrication, industrial RFQs, offers, and fulfillment.
device.house — words become circuits. Design devices: BoM, enclosure, firmware, routed PCB.
AI electronics blueprint generator — BOM, wiring, firmware, renders for Arduino/ESP32/RPi.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables agents to turn a plain-language description of a device into a complete, validated build package — parts list, 3D-printable parts, wiring, firmware code, picture assembly guide, and tests — that anyone can assemble without electronics experience.19 PyPI1MIT

PCBEditor MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables AI assistants to turn plain-language requests into complete, routed and design-rule-checked printed circuit boards, including engineering review, part search and inventory use, and export to Gerber, KiCad, BOM and pick-and-place files.MIT- AlicenseNot gradedqualityAmaintenanceAI quoting agent for electronics distributors. RFQ in, quote out via MCP tools.47 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to generate step-by-step 3D assembly manuals from a project's own design files, with real part shapes, pin-to-pin wiring, and fasteners, returned as a shareable link. Also lets users photograph their in-progress build so the agent can verify it and highlight the exact parts, pins, and wires the current step refers to.168 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.