Find manufacturers worldwide, match a part spec to suppliers, estimate cost, request quotes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check a design against typical manufacturing rules before you request quotes. Returns pass, warn or fail per check with the limit and the reason. Supported processes: sheet-metal, laser-cutting, cnc-machining, 3d-printing, injection-molding, die-casting, casting, metal-stamping, pcb-assembly. Parameters are in millimetres/degrees, for example thickness_mm, bend_radius_mm, flange_length_mm, hole_diameter_mm, hole_to_edge_mm, hole_to_bend_mm, wall_thickness_mm, pocket_depth_mm, inside_corner_radius_mm, draft_deg, material.
Numeric design parameters, see the tool description
Check a design against typical manufacturing rules before you request quotes. Returns pass, warn or fail per check with the limit and the reason. Supported processes: sheet-metal, laser-cutting, cnc-machining, 3d-printing, injection-molding, die-casting, casting, metal-stamping, pcb-assembly. Parameters are in millimetres/degrees, for example thickness_mm, bend_radius_mm, flange_length_mm, hole_diameter_mm, hole_to_edge_mm, hole_to_bend_mm, wall_thickness_mm, pocket_depth_mm, inside_corner_radius_mm, draft_deg, material.
| Argument | Type | Description |
|---|---|---|
| params* | object | Numeric design parameters, see the tool description |
| process* | string |
{
"type": "object",
"required": [
"process",
"params"
],
"properties": {
"params": {
"type": "object",
"description": "Numeric design parameters, see the tool description",
"additionalProperties": true
},
"process": {
"enum": [
"sheet-metal",
"laser-cutting",
"cnc-machining",
"3d-printing",
"injection-molding",
"die-casting",
"casting",
"metal-stamping",
"pcb-assembly"
],
"type": "string"
}
}
}Create a structured request for quotation for the human you act for. Call get_rfq_requirements for the process first and upload files with upload_rfq_file; use dry_run to check completeness before sending. The answer contains quote_readiness, missing and recommended items. We match manufacturers, email the ones that opted in, and return direct contact, quote-form and agent links for all matches plus an RFQ id and a token to read quotes later. Only call after the user agreed that the request is shared with matched manufacturers.
| Argument | Type | Description |
|---|---|---|
| finish | string | |
| strict | boolean | true = refuse to send when required items are missing |
| dry_run | boolean | true = check completeness only; nothing is stored or sent |
| process* | string | |
| file_ids | array | file_id values returned by upload_rfq_file |
| quantity* | integer | |
| cad_files | array | |
| materials | array |
Estimate landed cost per unit and the price needed for a target margin for a custom product. All money values in USD per unit.
| Argument | Type | Description |
|---|---|---|
| part | number | |
| hardware | number | |
| shipping | number | |
| finishing | number | |
| packaging | number | |
| returns_percent | number | |
| assembly_minutes | number | |
| labor_rate_per_hour | number | |
| payment_fee_percent | number | |
| target_margin_percent | number |
Fetch the full text of a document or manufacturer profile by the id returned from search.
| Argument | Type | Description |
|---|---|---|
| id* | string | A page URL or supplier:<CC>:<domain> from search results |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "A page URL or supplier:<CC>:<domain> from search results"
}
}
}Find manufacturing businesses you can contact directly, including official-registry establishments without a website (Mexico: INEGI DENUE). Returns how to reach each one: contact form, phone and email (published only for legal entities), website. Filter by ISO country code (MX, US, ...), process and city. Use next_after to page.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| after | integer | next_after value from the previous page |
| limit | integer | |
| country | string | ISO 3166-1 alpha-2, e.g. MX |
| process | string |
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"after": {
"type": "integer",
"description": "next_after value from the previous page"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2, e.g. MX"
},
"process": {
"enum": [
"laser-cutting",
"cnc-machining",
"sheet-metal",
"3d-printing",
"injection-molding",
"pcb-assembly",
"die-casting",
"welding",
"waterjet-cutting",
"metal-stamping",
"forging",
"heat-treatment",
"grinding-polishing",
"casting",
"wire-forming",
"steel-construction",
"surface-finishing"
],
"type": "string"
}
}
}Find contract manufacturers in the directory by country and process. Processes: laser-cutting, cnc-machining, sheet-metal, 3d-printing, injection-molding, pcb-assembly, die-casting, welding, waterjet-cutting, metal-stamping, forging, heat-treatment, grinding-polishing, casting, wire-forming, steel-construction, surface-finishing. Country as ISO code (DE) or slug (germany).
| Argument | Type | Description |
|---|---|---|
| city | string | |
| limit | integer | Max results, 1 to 100 |
| country | string | ISO 3166-1 alpha-2 code or country slug |
| process | string | Process id, e.g. laser-cutting |
{
"type": "object",
"properties": {
"city": {
"type": "string"
},
"limit": {
"type": "integer",
"description": "Max results, 1 to 100"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 code or country slug"
},
"process": {
"type": "string",
"description": "Process id, e.g. laser-cutting"
}
}
}Design-for-manufacturing rules for one process (sheet metal, CNC machining, injection molding, 3D printing, casting, welding, PCB assembly and more): typical tolerances, file formats, the rules with their reasons, a pre-RFQ checklist and common mistakes. Typical rules of thumb; the manufacturer's own guidelines override them. Omit process to list all.
| Argument | Type | Description |
|---|---|---|
| process | string |
{
"type": "object",
"properties": {
"process": {
"enum": [
"laser-cutting",
"cnc-machining",
"sheet-metal",
"3d-printing",
"injection-molding",
"pcb-assembly",
"die-casting",
"welding",
"waterjet-cutting",
"metal-stamping",
"forging",
"heat-treatment",
"grinding-polishing",
"casting",
"wire-forming",
"steel-construction",
"surface-finishing"
],
"type": "string"
}
}
}For a manufacturer's agent (needs the supplier token): what the directory stores about your company, and the allowed values for each field.
| Argument | Type | Description |
|---|---|---|
| supplier_token | string | Only if your client cannot send the Authorization: Bearer header |
{
"type": "object",
"properties": {
"supplier_token": {
"type": "string",
"description": "Only if your client cannot send the Authorization: Bearer header"
}
}
}Get one of the 13 playbook steps (summary, explanation, checklist, related tools).
| Argument | Type | Description |
|---|---|---|
| step* | integer | Step number 1 to 13 |
{
"type": "object",
"required": [
"step"
],
"properties": {
"step": {
"type": "integer",
"maximum": 13,
"minimum": 1,
"description": "Step number 1 to 13"
}
}
}For a manufacturer's agent (needs the supplier token): one request in full — spec, what is missing, why you matched, file download links for your company, and the conversation so far.
| Argument | Type | Description |
|---|---|---|
| rfq_id* | string | |
| supplier_token | string | Only if your client cannot send the Authorization: Bearer header |
{
"type": "object",
"required": [
"rfq_id"
],
"properties": {
"rfq_id": {
"type": "string"
},
"supplier_token": {
"type": "string",
"description": "Only if your client cannot send the Authorization: Bearer header"
}
}
}Read the matches and the quotes received so far for an RFQ you created. Needs the rfq_id and the token returned by create_rfq.
| Argument | Type | Description |
|---|---|---|
| token* | string | |
| rfq_id* | string |
{
"type": "object",
"required": [
"rfq_id",
"token"
],
"properties": {
"token": {
"type": "string"
},
"rfq_id": {
"type": "string"
}
}
}What a factory needs to quote a given process (required and recommended items with accepted values). Read this before create_rfq so the request is complete.
| Argument | Type | Description |
|---|---|---|
| process* | string |
{
"type": "object",
"required": [
"process"
],
"properties": {
"process": {
"enum": [
"laser-cutting",
"cnc-machining",
"sheet-metal",
"3d-printing",
"injection-molding",
"pcb-assembly",
"die-casting",
"welding",
"waterjet-cutting",
"metal-stamping",
"forging",
"heat-treatment",
"grinding-polishing",
"casting",
"wire-forming",
"steel-construction",
"surface-finishing"
],
"type": "string"
}
}
}Read the conversation of a request: messages from factories (answers, quotes, files) and your own. Pass since=<last message_id> to get only new ones.
| Argument | Type | Description |
|---|---|---|
| since | integer | |
| token | string | rfq token (buyer) or supplier token (factory); may be sent as Authorization: Bearer instead |
| rfq_id* | string |
{
"type": "object",
"required": [
"rfq_id"
],
"properties": {
"since": {
"type": "integer"
},
"token": {
"type": "string",
"description": "rfq token (buyer) or supplier token (factory); may be sent as Authorization: Bearer instead"
},
"rfq_id": {
"type": "string"
}
}
}List tools and factories with pros and cons. Optional category: Fabrication, Electronics, Sourcing, Prototyping, Measuring, Design, Review.
| Argument | Type | Description |
|---|---|---|
| category | string | Optional category filter |
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "Optional category filter"
}
}
}For a manufacturer's agent (needs the supplier token): the open quote requests your company was matched to, newest first, with readiness, whether you answered, your quote and unread buyer messages.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| supplier_token | string | Only if your client cannot send the Authorization: Bearer header |
| include_answered | boolean | Default true |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1
},
"supplier_token": {
"type": "string",
"description": "Only if your client cannot send the Authorization: Bearer header"
},
"include_answered": {
"type": "boolean",
"description": "Default true"
}
}
}Rank manufacturers for a structured part spec. Returns scored matches with the reasons, so an agent can explain the choice to its user.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| country | string | Preferred country, ISO code or slug |
| process* | string | |
| quantity | integer | Units wanted; favors prototype-friendly shops for small numbers and series producers for large ones |
| materials | array | |
| industries | array | |
| file_formats | array | CAD formats you can supply |
| tolerance_mm | number | Tightest tolerance you need, in mm |
| certifications | array |
Search the Vibe Manufacturing playbook, guides, tool reviews and the manufacturer directory. Mention a process (for example CNC machining) or a country to get matching manufacturers. Returns result ids for fetch.
| Argument | Type | Description |
|---|---|---|
| query* | string | What to look for, e.g. "laser cutting manufacturers in Germany" or "how to check manufacturability" |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "What to look for, e.g. \"laser cutting manufacturers in Germany\" or \"how to check manufacturability\""
}
}
}Search the playbook, guides, tool reviews and comparisons on vibe-manufacturing.com.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results, 1 to 20 |
| query* | string | Free-text search term |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max results, 1 to 20"
},
"query": {
"type": "string",
"description": "Free-text search term"
}
}
}For a manufacturer's agent (needs the supplier token): write to the buyer of a request you were matched to — a question, an answer or an update, optionally with file_ids from upload_rfq_file. Draft it for the manufacturer and send only after they confirm.
| Argument | Type | Description |
|---|---|---|
| body* | string | |
| kind | string | |
| rfq_id* | string | |
| file_ids | array | |
| supplier_token | string | Only if your client cannot send the Authorization: Bearer header |
{
"type": "object",
"required": [
"rfq_id",
"body"
],
"properties": {
"body": {
"type": "string"
},
"kind": {
"enum": [
"question",
"answer",
"note",
"update"
],
"type": "string"
},
"rfq_id": {
"type": "string"
},
"file_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10
},
"supplier_token": {
"type": "string",
"description": "Only if your client cannot send the Authorization: Bearer header"
}
}
}Write to the matched factories about a request (buyer token) or to the buyer (supplier token): a question, an answer or an update, optionally with file_ids. We relay it by email or API and keep the thread.
| Argument | Type | Description |
|---|---|---|
| body* | string | |
| kind | string | |
| token | string | rfq token (buyer) or supplier token (factory); may be sent as Authorization: Bearer instead |
| rfq_id* | string | |
| file_ids | array | |
| company_id | integer | Buyer only: address one matched manufacturer instead of all |
{
"type": "object",
"required": [
"rfq_id",
"body"
],
"properties": {
"body": {
"type": "string"
},
"kind": {
"enum": [
"question",
"answer",
"note",
"update"
],
"type": "string"
},
"token": {
"type": "string",
"description": "rfq token (buyer) or supplier token (factory); may be sent as Authorization: Bearer instead"
},
"rfq_id": {
"type": "string"
},
"file_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10
},
"company_id": {
"type": "integer",
"description": "Buyer only: address one matched manufacturer instead of all"
}
}
}For a manufacturer's agent: answer an RFQ the company was matched to. Needs the supplier token issued when the company registered. Replaces any existing quote from this supplier for this RFQ, adds a thread entry and notifies the buyer by email and an optional callback; repeating the call sends notifications again. Only call with the supplier's authorization.
| Argument | Type | Description |
|---|---|---|
| notes | string | |
| rfq_id* | string | |
| currency | string | 3-letter code, default EUR |
| quantity | integer | |
| unit_price* | number | |
| valid_until | string | YYYY-MM-DD |
| lead_time_days | integer | |
| supplier_token | string | Only if your client cannot send the Authorization: Bearer header |
{
"type": "object",
"required": [
"rfq_id",
"unit_price"
],
"properties": {
"notes": {
"type": "string"
},
"rfq_id": {
"type": "string"
},
"currency": {
"type": "string",
"description": "3-letter code, default EUR"
},
"quantity": {
"type": "integer"
},
"unit_price": {
"type": "number"
},
"valid_until": {
"type": "string",
"description": "YYYY-MM-DD"
},
"lead_time_days": {
"type": "integer"
},
"supplier_token": {
"type": "string",
"description": "Only if your client cannot send the Authorization: Bearer header"
}
}
}Send a quote request for the human you act for. Only call after the user agreed that the request and email may be shared with suitable manufacturers. A person reviews it and replies by email.
| Argument | Type | Description |
|---|---|---|
| email* | string | Reply address of the human requester |
| country | string | |
| process | string | |
| quantity | string | |
| description* | string | Part, material, size, tolerances, file formats |
| user_consent* | boolean | true only if the user agreed to share the request with manufacturers |
{
"type": "object",
"required": [
"email",
"description",
"user_consent"
],
"properties": {
"email": {
"type": "string",
"description": "Reply address of the human requester"
},
"country": {
"type": "string"
},
"process": {
"enum": [
"laser-cutting",
"cnc-machining",
"sheet-metal",
"3d-printing",
"injection-molding",
"pcb-assembly",
"die-casting",
"welding",
"waterjet-cutting",
"metal-stamping",
"forging",
"heat-treatment",
"grinding-polishing",
"casting",
"wire-forming",
"steel-construction",
"surface-finishing"
],
"type": "string"
},
"quantity": {
"type": "string"
},
"description": {
"type": "string",
"description": "Part, material, size, tolerances, file formats"
},
"user_consent": {
"type": "boolean",
"description": "true only if the user agreed to share the request with manufacturers"
}
}
}For a manufacturer's agent (needs the supplier token): change processes, materials, certs, formats, industries, signals, machines, lead_time_days, min_order_qty, notes or notify_email. Fields you leave out keep their value; a field you send replaces it whole (a processes list replaces the stored list, so send the complete list, not only additions). Name, domain, country and address cannot be changed here. Set authorised: true only after the manufacturer confirmed the change.
| Argument | Type | Description |
|---|---|---|
| certs | array | |
| notes | string | |
| formats | array | |
| signals | array | |
| machines | array | |
| materials | array | |
| processes | array | |
| authorised* | boolean | |
| industries | array | |
Upload a design file (STEP/STP, IGES/IGS, STL, 3MF, OBJ, DXF, DWG, PDF, ZIP (Gerber files go in a ZIP); up to 6 MB as base64 here, up to 100 MB with POST /api/v1/rfq/files?name=...). Returns a file_id to pass in create_rfq file_ids. Unused files expire after 24 hours. Only upload files the user agreed to share with manufacturers.
| Argument | Type | Description |
|---|---|---|
| name* | string | File name with extension, e.g. bracket.step |
| token | string | The rfq token, or a supplier token, when rfq_id is given; may be sent as Authorization: Bearer instead |
| rfq_id | string | Optional: attach to an existing request (needs token) |
| content_base64* | string |
{
"type": "object",
"required": [
"name",
"content_base64"
],
"properties": {
"name": {
"type": "string",
"description": "File name with extension, e.g. bracket.step"
},
"token": {
"type": "string",
"description": "The rfq token, or a supplier token, when rfq_id is given; may be sent as Authorization: Bearer instead"
},
"rfq_id": {
"type": "string",
"description": "Optional: attach to an existing request (needs token)"
},
"content_base64": {
"type": "string"
}
}
}| needed_by | string |
| industries | array |
| budget_note | string |
| description* | string | Part, size, material, use |
| callback_url | string | Optional https URL that receives a signed event when a factory answers |
| file_formats | array |
| thickness_mm | number | Material thickness for sheet, plate and cut parts |
| tolerance_mm | number |
| user_consent | boolean | true only if the user agreed to share the request with matched manufacturers; required unless dry_run |
| certifications | array |
| requester_email | string | Reply address of the human requester; required unless dry_run |
| ship_to_country | string | ISO 3166-1 alpha-2 |
{
"type": "object",
"required": [
"process",
"quantity",
"description"
],
"properties": {
"finish": {
"type": "string"
},
"strict": {
"type": "boolean",
"description": "true = refuse to send when required items are missing"
},
"dry_run": {
"type": "boolean",
"description": "true = check completeness only; nothing is stored or sent"
},
"process": {
"enum": [
"laser-cutting",
"cnc-machining",
"sheet-metal",
"3d-printing",
"injection-molding",
"pcb-assembly",
"die-casting",
"welding",
"waterjet-cutting",
"metal-stamping",
"forging",
"heat-treatment",
"grinding-polishing",
"casting",
"wire-forming",
"steel-construction",
"surface-finishing"
],
"type": "string"
},
"file_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "file_id values returned by upload_rfq_file"
},
"quantity": {
"type": "integer",
"minimum": 1
},
"cad_files": {
"type": "array",
"items": {
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "public https URL of the CAD file"
},
"format": {
"enum": [
"step",
"dxf",
"dwg",
"stl",
"iges",
"3mf",
"gerber"
],
"type": "string"
},
"sha256": {
"type": "string"
}
}
},
"maxItems": 5
},
"materials": {
"type": "array",
"items": {
"enum": [
"aluminium",
"steel",
"stainless-steel",
"titanium",
"brass",
"copper",
"plastic"
],
"type": "string"
}
},
"needed_by": {
"type": "string"
},
"industries": {
"type": "array",
"items": {
"enum": [
"automotive",
"aerospace",
"medical",
"energy",
"railway",
"marine",
"electronics",
"food",
"construction",
"packaging",
"defense",
"consumer"
],
"type": "string"
}
},
"budget_note": {
"type": "string"
},
"description": {
"type": "string",
"description": "Part, size, material, use"
},
"callback_url": {
"type": "string",
"description": "Optional https URL that receives a signed event when a factory answers"
},
"file_formats": {
"type": "array",
"items": {
"enum": [
"step",
"dxf",
"dwg",
"stl",
"iges",
"3mf",
"gerber"
],
"type": "string"
}
},
"thickness_mm": {
"type": "number",
"description": "Material thickness for sheet, plate and cut parts"
},
"tolerance_mm": {
"type": "number"
},
"user_consent": {
"type": "boolean",
"description": "true only if the user agreed to share the request with matched manufacturers; required unless dry_run"
},
"certifications": {
"type": "array",
"items": {
"enum": [
"iso-9001",
"iso-14001",
"iatf-16949",
"iso-13485",
"as9100",
"en-1090",
"iso-45001",
"itar",
"nadcap",
"ul-listed",
"rohs",
"fda-registered",
"cmmc"
],
"type": "string"
}
},
"requester_email": {
"type": "string",
"description": "Reply address of the human requester; required unless dry_run"
},
"ship_to_country": {
"type": "string",
"description": "ISO 3166-1 alpha-2"
}
}
}{
"type": "object",
"properties": {
"part": {
"type": "number"
},
"hardware": {
"type": "number"
},
"shipping": {
"type": "number"
},
"finishing": {
"type": "number"
},
"packaging": {
"type": "number"
},
"returns_percent": {
"type": "number"
},
"assembly_minutes": {
"type": "number"
},
"labor_rate_per_hour": {
"type": "number"
},
"payment_fee_percent": {
"type": "number"
},
"target_margin_percent": {
"type": "number"
}
}
}{
"type": "object",
"required": [
"process"
],
"properties": {
"limit": {
"type": "integer"
},
"country": {
"type": "string",
"description": "Preferred country, ISO code or slug"
},
"process": {
"enum": [
"laser-cutting",
"cnc-machining",
"sheet-metal",
"3d-printing",
"injection-molding",
"pcb-assembly",
"die-casting",
"welding",
"waterjet-cutting",
"metal-stamping",
"forging",
"heat-treatment",
"grinding-polishing",
"casting",
"wire-forming",
"steel-construction",
"surface-finishing"
],
"type": "string"
},
"quantity": {
"type": "integer",
"description": "Units wanted; favors prototype-friendly shops for small numbers and series producers for large ones"
},
"materials": {
"type": "array",
"items": {
"enum": [
"aluminium",
"steel",
"stainless-steel",
"titanium",
"brass",
"copper",
"plastic"
],
"type": "string"
}
},
"industries": {
"type": "array",
"items": {
"enum": [
"automotive",
"aerospace",
"medical",
"energy",
"railway",
"marine",
"electronics",
"food",
"construction",
"packaging",
"defense",
"consumer"
],
"type": "string"
}
},
"file_formats": {
"type": "array",
"items": {
"enum": [
"step",
"dxf",
"dwg",
"stl",
"iges",
"3mf",
"gerber"
],
"type": "string"
},
"description": "CAD formats you can supply"
},
"tolerance_mm": {
"type": "number",
"description": "Tightest tolerance you need, in mm"
},
"certifications": {
"type": "array",
"items": {
"enum": [
"iso-9001",
"iso-14001",
"iatf-16949",
"iso-13485",
"as9100",
"en-1090",
"iso-45001",
"itar",
"nadcap",
"ul-listed",
"rohs",
"fda-registered",
"cmmc"
],
"type": "string"
}
}
}
}| notify_email |
| string |
| min_order_qty | integer |
| lead_time_days | integer |
| supplier_token | string | Only if your client cannot send the Authorization: Bearer header |
{
"type": "object",
"required": [
"authorised"
],
"properties": {
"certs": {
"type": "array",
"items": {
"type": "string"
}
},
"notes": {
"type": "string"
},
"formats": {
"type": "array",
"items": {
"type": "string"
}
},
"signals": {
"type": "array",
"items": {
"type": "string"
}
},
"machines": {
"type": "array",
"items": {
"type": "string"
}
},
"materials": {
"type": "array",
"items": {
"type": "string"
}
},
"processes": {
"type": "array",
"items": {
"type": "string"
}
},
"authorised": {
"type": "boolean"
},
"industries": {
"type": "array",
"items": {
"type": "string"
}
},
"notify_email": {
"type": "string"
},
"min_order_qty": {
"type": "integer"
},
"lead_time_days": {
"type": "integer"
},
"supplier_token": {
"type": "string",
"description": "Only if your client cannot send the Authorization: Bearer header"
}
}
}