<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Positioning Stages</title>
    <description>The latest articles on DEV Community by Positioning Stages (@positioningstages).</description>
    <link>https://dev.to/positioningstages</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4223833%2Fd4ff8248-eefc-48b8-850e-a7cb6c8cac4f.png</url>
      <title>DEV Community: Positioning Stages</title>
      <link>https://dev.to/positioningstages</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/positioningstages"/>
    <language>en</language>
    <item>
      <title>Schema Defaults Can Quietly Rewrite a Freight Quote: Smoke-Testing a Hosted MCP Server</title>
      <dc:creator>Positioning Stages</dc:creator>
      <pubDate>Thu, 12 Nov 2026 03:43:12 +0000</pubDate>
      <link>https://dev.to/positioningstages/schema-defaults-can-quietly-rewrite-a-freight-quote-smoke-testing-a-hosted-mcp-server-2do7</link>
      <guid>https://dev.to/positioningstages/schema-defaults-can-quietly-rewrite-a-freight-quote-smoke-testing-a-hosted-mcp-server-2do7</guid>
      <description>&lt;p&gt;A freight-rating tool exposed over MCP looks easy to wire into an agent: point the client at a URL, let it discover the tools, and let the model call &lt;code&gt;quote_shipping_rates&lt;/code&gt;. The risk is not that the call fails. The risk is that it succeeds with inputs the model never supplied. This post walks through a shell smoke test of JTLGO's public commerce MCP server and focuses on one detail that matters for any typed tool: optional parameters with defaults, and how to catch them in the response.&lt;/p&gt;

&lt;h2&gt;
  
  
  The endpoint and the handshake
&lt;/h2&gt;

&lt;p&gt;JTLGO publishes two connector URLs against one server. The public one, &lt;code&gt;https://jtlgo.com/api/mcp&lt;/code&gt;, exposes six read-only tools and needs no sign-in. The account URL adds four account-scoped tools behind OAuth, started by the client only when account data is needed. JTLGO's own &lt;a href="https://jtlgo.com/mcp/" rel="noopener noreferrer"&gt;setup page for the public and account connectors&lt;/a&gt; has JSON and TOML config snippets for common clients.&lt;/p&gt;

&lt;p&gt;The transport is JSON-RPC over HTTP POST. A plain GET is rejected with 405 on purpose; a GET returning metadata would be a second, undocumented interface. The request needs an &lt;code&gt;Accept&lt;/code&gt; header naming both JSON and the event-stream type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl -s -X POST https://jtlgo.com/api/mcp \
  -H &lt;span class="s1"&gt;'content-type: application/json'&lt;/span&gt; \
  -H &lt;span class="s1"&gt;'accept: application/json, text/event-stream'&lt;/span&gt; \
  -d &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"0.1"}}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When this was run on 11 November 2026, the server answered with protocol version &lt;code&gt;2025-06-18&lt;/code&gt; and &lt;code&gt;serverInfo&lt;/code&gt; of &lt;code&gt;jtlgo-commerce-mcp&lt;/code&gt; version &lt;code&gt;1.1.0&lt;/code&gt;. A &lt;code&gt;tools/list&lt;/code&gt; call then returned the six public tools: &lt;code&gt;search_products&lt;/code&gt;, &lt;code&gt;quote_shipping_rates&lt;/code&gt;, &lt;code&gt;track_shipment&lt;/code&gt;, &lt;code&gt;get_product_detail&lt;/code&gt;, &lt;code&gt;human_handoff&lt;/code&gt; and &lt;code&gt;get_mcp_config&lt;/code&gt;, each annotated with &lt;code&gt;readOnlyHint: true&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the schema before you trust the tool
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tools/list&lt;/code&gt; is cheap and usually served from a static schema, so it proves reachability, not correctness. Its real value is the input schema. For &lt;code&gt;quote_shipping_rates&lt;/code&gt;, the schema returned on the test date had two required fields, &lt;code&gt;weight&lt;/code&gt; (kg, minimum 0.01) and &lt;code&gt;countryCode&lt;/code&gt; (ISO alpha-2). Everything else was optional:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;length&lt;/code&gt;, &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt; in cm, described as defaulting to 20, 20 and 15.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;goodsType&lt;/code&gt;, an enum of &lt;code&gt;general&lt;/code&gt;, &lt;code&gt;battery&lt;/code&gt;, &lt;code&gt;liquid&lt;/code&gt;, &lt;code&gt;powder&lt;/code&gt; and &lt;code&gt;sensitive&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;description&lt;/code&gt;, optional text used to infer &lt;code&gt;goodsType&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;limit&lt;/code&gt;, the number of top routes to return, 1 to 20, default 3.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That shape is reasonable for a human-facing calculator. For an agent, it creates a trap. A model that only knows "12 kg to the US" can make a valid call with two arguments, and the server will fill the box size in for it. JTLGO's longer article on &lt;a href="https://jtlgo.com/blog/mcp-server-for-freight-quotes-and-tracking/" rel="noopener noreferrer"&gt;which tools a freight MCP server should expose and why dimensions matter&lt;/a&gt; states the underlying rule: any quote tool that accepts weight without dimensions is guessing, because for almost every mode the billable figure is volumetric.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two calls that differ only by the box
&lt;/h2&gt;

&lt;p&gt;The test made two calls with the same weight and destination. The first passed real dimensions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"tools/call"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"quote_shipping_rates"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"weight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"countryCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"US"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"length"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"width"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"height"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"goodsType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"general"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second passed only &lt;code&gt;weight&lt;/code&gt; and &lt;code&gt;countryCode&lt;/code&gt;. Both returned &lt;code&gt;ok: true&lt;/code&gt; and a list of routes. The difference was in the echoed &lt;code&gt;request&lt;/code&gt; block: the second response showed &lt;code&gt;length: 20&lt;/code&gt;, &lt;code&gt;width: 20&lt;/code&gt;, &lt;code&gt;height: 15&lt;/code&gt; and &lt;code&gt;goodsType: "general"&lt;/code&gt; — values the caller never sent. Each route also carried &lt;code&gt;actualWeight&lt;/code&gt;, &lt;code&gt;volumeWeight&lt;/code&gt; and &lt;code&gt;chargeableWeight&lt;/code&gt;. With the 40 × 30 × 25 cm box the volumetric figure on the routes was 5; with the defaulted box it was 1. At 12 kg actual weight the chargeable weight was 12 in both cases, so the headline result happened not to change.&lt;/p&gt;

&lt;p&gt;Swap in a light, bulky product and it would. That is the failure mode: an agent that omits dimensions gets a confident, well-formed answer for a smaller box than the real one. Every response also carried a notice that estimated rates are for reference only and that final pricing depends on actual cargo details and JTLGO's manual confirmation, which matches the company's position that final freight is confirmed after warehouse measurement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Guardrails worth putting in the client
&lt;/h2&gt;

&lt;p&gt;Three checks are cheap to add on the agent side:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Require what the server defaults.&lt;/strong&gt; In the tool-use prompt or a wrapper, refuse to call &lt;code&gt;quote_shipping_rates&lt;/code&gt; without all three dimensions. If the user has none, ask for packed carton size rather than letting the default stand in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diff the echo.&lt;/strong&gt; Compare the &lt;code&gt;request&lt;/code&gt; block in the response with the arguments you sent. Any field present in the echo but absent from your call was defaulted; surface it to the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Classify the cargo explicitly.&lt;/strong&gt; Pass &lt;code&gt;goodsType&lt;/code&gt; deliberately. Batteries, liquids and powders are separate classes in the enum, and restricted cargo is exactly where a rating engine may return nothing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the last case the server provides &lt;code&gt;human_handoff&lt;/code&gt;. JTLGO's guidance is that when confidence is low — restricted commodities, unusual lanes — the correct behaviour is to hand off rather than extrapolate. &lt;code&gt;get_mcp_config&lt;/code&gt; returns a support block with email and WhatsApp contacts and a message asking for product links, destination, package weight and dimensions, and delivery deadline. The same engine powers the human-facing &lt;a href="https://jtlgo.com/rate-and-ship/" rel="noopener noreferrer"&gt;Rate &amp;amp; Ship calculator&lt;/a&gt;, which is a useful cross-check when an agent result looks odd.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scope to state in your agent's instructions
&lt;/h2&gt;

&lt;p&gt;JTLGO describes the connector's scope plainly: it quotes China-origin express, air and ocean options with billable weight calculated from the dimensions supplied, and it does not rate domestic truckload movements inside the destination country. &lt;code&gt;track_shipment&lt;/code&gt; accepts up to 10 numbers per call. Put both facts in the system prompt so the model does not promise an LTL or FTL quote the tool cannot produce.&lt;/p&gt;

&lt;p&gt;Questions about the connector or a specific shipment can go to &lt;a href="mailto:sales@jtlgo.com"&gt;sales@jtlgo.com&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need an API key for the public tools?&lt;/strong&gt;&lt;br&gt;
No. The public URL needs no sign-in. Account tools use an OAuth flow started by the client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my GET request fail?&lt;/strong&gt;&lt;br&gt;
The endpoint accepts JSON-RPC over POST only; GET is rejected with 405 by design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I know if a dimension was defaulted?&lt;/strong&gt;&lt;br&gt;
Compare the &lt;code&gt;request&lt;/code&gt; object in the response with the arguments you sent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does the server quote US domestic LTL?&lt;/strong&gt;&lt;br&gt;
No. It covers China-origin export routes, not domestic truckload rating in the destination country.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>api</category>
      <category>testing</category>
    </item>
    <item>
      <title>The Motorized Positioning Stage RFQ Checklist: What to Send for an Accurate Quote</title>
      <dc:creator>Positioning Stages</dc:creator>
      <pubDate>Tue, 03 Nov 2026 08:47:37 +0000</pubDate>
      <link>https://dev.to/positioningstages/the-motorized-positioning-stage-rfq-checklist-what-to-send-for-an-accurate-quote-3j03</link>
      <guid>https://dev.to/positioningstages/the-motorized-positioning-stage-rfq-checklist-what-to-send-for-an-accurate-quote-3j03</guid>
      <description>&lt;p&gt;The quality of a quotation depends on the quality of the request. A request that says "XY stage, 25 mm, high accuracy" gets either a guess or a round of questions. A request that states motion, load, orientation, precision basis and supply scope gets a firm answer faster. This checklist follows the structure of the positioningstages.com &lt;a href="https://positioningstages.com/request-quote/?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;request-a-quote form&lt;/a&gt;, so you can prepare everything before you start.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F109b4dxw913viz8y3ezo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F109b4dxw913viz8y3ezo.webp" alt="CYDXYR120-1205-25-100W-L XYÎ¸ multi-axis stage, an example of a complete assembly quote" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Complete multi-axis assemblies are one of the supply-scope options in the inquiry form. Photo: positioningstages.com.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Gather the basics first
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Contact and context
&lt;/h3&gt;

&lt;p&gt;Name, work email, company or institution and country are required. Phone or WhatsApp is optional. If you already know a model or series, add it; if you found a candidate with the &lt;a href="https://positioningstages.com/stage-selector/?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;stage selector&lt;/a&gt;, quote its part number exactly, because part numbers encode table, screw, travel and motor frame.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Application and motion
&lt;/h3&gt;

&lt;p&gt;Pick the application: imaging or microscopy, optical alignment or photonics, inspection or metrology, assembly or dispensing, research or laboratory, or other. Then the motion: one linear axis, XY, XYZ, rotation, tilt, vertical lift, XY plus rotation, or a custom arrangement. Say what moves (sample, camera, optics, tool or a complete fixture) and the motion sequence: move-settle-measure, continuous scanning, repeated point-to-point or a coordinated path. "Not yet defined" is a valid answer for each and invites guidance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Define motion, load and precision
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3. Travel and angle per axis
&lt;/h3&gt;

&lt;p&gt;State the total travel for every axis and the angle for every rotary or tilt axis. Avoid Â± notation unless you mean it, and say so; positioningstages.com converts half-range catalogue figures to totals precisely because the two are easy to confuse. Add the approach and clearance margin you need at each end.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa58ejfa30xjx2oud4ccj.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa58ejfa30xjx2oud4ccj.webp" alt="Dimensioned drawing of the CYGXS60-0601-20-28 linear stage used as an RFQ reference" width="650" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Reference the drawing revision in your RFQ. Drawing: positioningstages.com.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Load and orientation
&lt;/h3&gt;

&lt;p&gt;Give the total moving load in kg, g or lb, including fixtures and adapter plates. Describe the centre of mass position if it is off-centre. Choose an orientation: horizontal, vertical with the load travelling up and down, inverted, or several. The catalogue's payload values are presumed horizontal and centred, so orientation is the field that most often changes the recommendation.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Precision target with its basis
&lt;/h3&gt;

&lt;p&gt;Enter the number and say which quantity it is: repeatability, positioning accuracy or step size, with a unit from Âµm, mm, degrees, arc-minutes or arc-seconds. If reversals matter, ask for bidirectional repeatability and backlash, since the catalogue does not publish them. If you have an acceptance method, describe it; no measurement standard or test temperature is cited in the catalogue, so your method becomes the reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Environment, control and supply scope
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6. Environment and quantity
&lt;/h3&gt;

&lt;p&gt;Choose indoor laboratory, factory floor, cleanroom, vacuum or other, and add pressure, cleanliness or temperature limits in the details. Give the quantity, since a single prototype and a repeat OEM requirement are quoted differently.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbaz4n2nh4rp7dlc9o20c.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbaz4n2nh4rp7dlc9o20c.webp" alt="Linear stage connected to a controller enclosure, illustrating electronics in the supply scope" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drive, controller and cables must be named in the supply scope. Image: positioningstages.com.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Control and supply scope
&lt;/h3&gt;

&lt;p&gt;Preferred control can be PC, PLC or machine integration, an existing controller, a standalone controller or a recommendation. Supply scope can be stage only, stage and controller, a complete multi-axis assembly, an upgrade or replacement, or a recommended configuration. Each product page lists drive, controller, cable set, CAD and mounting hardware as &lt;em&gt;Not stated&lt;/em&gt;, so name each item you expect. The site's guide on &lt;a href="https://positioningstages.com/blog/building-a-quotation-comparison-that-distinguishes-included-components-from-options/?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;comparing quotations by included components and options&lt;/a&gt; helps when you have several offers.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Attachments
&lt;/h3&gt;

&lt;p&gt;Attach up to three drawings or photos. A photo of the part and a rough fixture sketch are often more useful than a long description. Send native CAD after engineering replies, which keeps unscanned executable files out of the first exchange. Label each file so the engineer can match it to the axis or fixture it describes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens next
&lt;/h2&gt;

&lt;p&gt;Engineering checks travel, load, accuracy, speed and orientation together, asks before pricing if a requirement is unclear or a standard model cannot meet it, then issues a quote that states inclusions, options and known exclusions. Read the &lt;a href="https://positioningstages.com/how-specifications-are-measured/?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;specification basis guide&lt;/a&gt; and the editorial on &lt;a href="https://positioningstages.com/blog/how-to-write-a-positioning-stage-rfq-with-all-the-necessary-inputs/?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;writing a positioning stage RFQ&lt;/a&gt; for more detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common gaps in RFQs
&lt;/h2&gt;

&lt;p&gt;The requests that need the most follow-up usually miss one of four things: orientation, the precision basis, the moving mass of fixtures, or the electronics. A two-line note covering those saves a round of email. If the project is a prototype that may move to OEM volume later, say so at the start; the requirements package tends to grow, and early notes on datums, limits and drawings make the later hand-over easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do I need a drawing to ask for a quote?
&lt;/h3&gt;

&lt;p&gt;No. Drawings are optional. The form lets you pick "Not yet defined" for most fields and ask for guidance.&lt;/p&gt;

&lt;h3&gt;
  
  
  What files can I attach?
&lt;/h3&gt;

&lt;p&gt;Up to three PDF, JPEG, PNG, WebP or TIFF files, 10 MB each and 25 MB combined. Native CAD is sent after engineering replies.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does submitting create an order?
&lt;/h3&gt;

&lt;p&gt;No. The site states that submitting is not an order, there is no charge and the form creates no purchasing commitment.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens after I submit?
&lt;/h3&gt;

&lt;p&gt;Engineering reviews travel, load, accuracy, speed and orientation together, asks about missing details, then defines the supply scope with inclusions, options and known exclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact
&lt;/h2&gt;

&lt;p&gt;Ready to ask for a quote? Send whatever parts of this checklist you know; unknowns are fine and engineering will ask about the rest. Email &lt;a href="mailto:sales@deyivision.com"&gt;sales@deyivision.com&lt;/a&gt; or visit &lt;a href="https://positioningstages.com/request-quote/?utm_source=devto&amp;amp;utm_medium=referral" rel="noopener noreferrer"&gt;the positioningstages.com contact page&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>engineering</category>
      <category>automation</category>
      <category>hardware</category>
      <category>manufacturing</category>
    </item>
  </channel>
</rss>
