Parametric should-cost: P50/P80/P90 estimates, 801 materials, 25 countries, quote review.
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.
Add a material (BOM line) to an existing cost model. Searches the materials database by name query — no need for exact IDs.
Mass of material per unit in kilograms.
Cost model ID returned by create_cost_model.
Material name to search for, e.g. 'ABS', 'Aluminium 6061', 'Stainless 304'.
Number of this material per unit assembly. Defaults to 1.
Scrap/yield factor (e.g. 1.05 = 5% material waste). Defaults to 1.05.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Add a material (BOM line) to an existing cost model. Searches the materials database by name query — no need for exact IDs.
| Argument | Type | Description |
|---|---|---|
| qty | number | Number of this material per unit assembly. Defaults to 1. |
| massKg* | number | Mass of material per unit in kilograms. |
| modelId* | number | Cost model ID returned by create_cost_model. |
| scrapFactor | number | Scrap/yield factor (e.g. 1.05 = 5% material waste). Defaults to 1.05. |
| materialQuery* | string | Material name to search for, e.g. 'ABS', 'Aluminium 6061', 'Stainless 304'. |
{
"type": "object",
"required": [
"modelId",
"materialQuery",
"massKg"
],
"properties": {
"qty": {
"type": "number",
"default": 1,
"description": "Number of this material per unit assembly. Defaults to 1."
},
"massKg": {
"type": "number",
"description": "Mass of material per unit in kilograms."
},
"modelId": {
"type": "number",
"description": "Cost model ID returned by create_cost_model."
},
"scrapFactor": {
"type": "number",
"default": 1.05,
"description": "Scrap/yield factor (e.g. 1.05 = 5% material waste). Defaults to 1.05."
},
"materialQuery": {
"type": "string",
"description": "Material name to search for, e.g. 'ABS', 'Aluminium 6061', 'Stainless 304'."
}
}
}Add a manufacturing process step to an existing cost model. Searches the process database by name query — no need for exact IDs.
| Argument | Type | Description |
|---|---|---|
| modelId* | number | Cost model ID returned by create_cost_model. |
| stepOrder | number | Step sequence number (1 = first). Defaults to 1. |
| skillLevel* | string | Worker skill level. Options: cnc_machinist, machine_operator, welder, composite_tech, assembly_tech, quality_inspector, toolmaker, engineer, general_labour, painter, electrician, plumber, driver, warehouse, admin, manager. |
| countryCode* | string | Country where this process step is performed (ISO 3166-1 alpha-2). |
| cycleTimeHrs* | number | Cycle time per unit in decimal hours (e.g. 0.5 = 30 minutes). |
| processQuery* | string | Process name to search for, e.g. 'CNC 3-Axis', 'Injection Moulding', 'TIG Welding'. |
{
"type": "object",
"required": [
"modelId",
"processQuery",
"countryCode",
"skillLevel",
"cycleTimeHrs"
],
"properties": {
"modelId": {
"type": "number",
"description": "Cost model ID returned by create_cost_model."
},
"stepOrder": {
"type": "number",
"default": 1,
"description": "Step sequence number (1 = first). Defaults to 1."
},
"skillLevel": {
"type": "string",
"description": "Worker skill level. Options: cnc_machinist, machine_operator, welder, composite_tech, assembly_tech, quality_inspector, toolmaker, engineer, general_labour, painter, electrician, plumber, driver, warehouse, admin, manager."
},
"countryCode": {
"type": "string",
"description": "Country where this process step is performed (ISO 3166-1 alpha-2)."
},
"cycleTimeHrs": {
"type": "number",
"description": "Cycle time per unit in decimal hours (e.g. 0.5 = 30 minutes)."
},
"processQuery": {
"type": "string",
"description": "Process name to search for, e.g. 'CNC 3-Axis', 'Injection Moulding', 'TIG Welding'."
}
}
}Run the Monte Carlo should-cost calculation on a cost model. Returns P50 (median), P80 and P90 cost-at-risk per unit, plus a full cost breakdown (material, labour, machine, overhead, margin).
| Argument | Type | Description |
|---|---|---|
| modelId* | number | Cost model ID returned by create_cost_model. |
{
"type": "object",
"required": [
"modelId"
],
"properties": {
"modelId": {
"type": "number",
"description": "Cost model ID returned by create_cost_model."
}
}
}Run the cost model across multiple manufacturing countries simultaneously to identify the optimal sourcing location. Returns P50/P80/P90 per country and % delta vs baseline.
| Argument | Type | Description |
|---|---|---|
| modelId* | number | Cost model ID returned by create_cost_model. |
| countries* | array | Array of ISO 3166-1 alpha-2 country codes to compare, e.g. ['US','CN','VN','MX','DE']. Maximum 6. |
{
"type": "object",
"required": [
"modelId",
"countries"
],
"properties": {
"modelId": {
"type": "number",
"description": "Cost model ID returned by create_cost_model."
},
"countries": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of ISO 3166-1 alpha-2 country codes to compare, e.g. ['US','CN','VN','MX','DE']. Maximum 6."
}
}
}Create a new parametric cost model in Costable. Returns the model ID which is used by add_material_to_model, add_process_to_model, calculate_cost_model, and compare_manufacturing_countries.
| Argument | Type | Description |
|---|---|---|
| name* | string | Descriptive name for the cost model, e.g. 'Aluminium Enclosure Rev2'. |
| batchQty* | number | Batch / order quantity. Affects Wright's Law learning curve. |
| marginRate | number | Profit margin as a decimal fraction (e.g. 0.15 = 15%). Defaults to 0.15. |
| countryCode* | string | Primary manufacturing country code (ISO 3166-1 alpha-2). |
| overheadRate | number | Factory overhead as a decimal fraction (e.g. 0.25 = 25%). Defaults to 0.25. |
{
"type": "object",
"required": [
"name",
"countryCode",
"batchQty"
],
"properties": {
"name": {
"type": "string",
"description": "Descriptive name for the cost model, e.g. 'Aluminium Enclosure Rev2'."
},
"batchQty": {
"type": "number",
"description": "Batch / order quantity. Affects Wright's Law learning curve."
},
"marginRate": {
"type": "number",
"default": 0.15,
"description": "Profit margin as a decimal fraction (e.g. 0.15 = 15%). Defaults to 0.15."
},
"countryCode": {
"type": "string",
"description": "Primary manufacturing country code (ISO 3166-1 alpha-2)."
},
"overheadRate": {
"type": "number",
"default": 0.25,
"description": "Factory overhead as a decimal fraction (e.g. 0.25 = 25%). Defaults to 0.25."
}
}
}Instantly estimate the should-cost of a manufactured part using natural language. Returns P50 (median), P80 and P90 cost-at-risk per unit based on Monte Carlo simulation of material price variance, labour rate variance and cycle time uncertainty. Use this for quick feasibility checks before building a full cost model.
| Argument | Type | Description |
|---|---|---|
| batchQty | number | Batch / order quantity. Affects Wright's Law learning curve factor. Defaults to 100. |
| countryCode | string | ISO 3166-1 alpha-2 manufacturing country code. Defaults to 'US'. Supported: US, CN, DE, JP, UK, MX, IN, VN, TH, PL, BR, FR, IT, KR, TW, CA, SE, SG, MY, ID, CZ, TR, ZA, ES, AU. |
| description* | string | Natural language description, e.g. '500 ABS injection moulded phone cases 0.08 kg' or 'CNC milled aluminium bracket 0.45 kg, 100 units'. |
{
"type": "object",
"required": [
"description"
],
"properties": {
"batchQty": {
"type": "number",
"default": 100,
"description": "Batch / order quantity. Affects Wright's Law learning curve factor. Defaults to 100."
},
"countryCode": {
"type": "string",
"default": "US",
"description": "ISO 3166-1 alpha-2 manufacturing country code. Defaults to 'US'. Supported: US, CN, DE, JP, UK, MX, IN, VN, TH, PL, BR, FR, IT, KR, TW, CA, SE, SG, MY, ID, CZ, TR, ZA, ES, AU."
},
"description": {
"type": "string",
"description": "Natural language description, e.g. '500 ABS injection moulded phone cases 0.08 kg' or 'CNC milled aluminium bracket 0.45 kg, 100 units'."
}
}
}Get manufacturing labour rates ($/hr) for all skill levels in a given country. Data covers 16 skill levels across 25 countries (ILO/BLS/ABS sourced).
| Argument | Type | Description |
|---|---|---|
| countryCode* | string | ISO 3166-1 alpha-2 country code, e.g. 'US', 'CN', 'DE', 'VN'. |
{
"type": "object",
"required": [
"countryCode"
],
"properties": {
"countryCode": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code, e.g. 'US', 'CN', 'DE', 'VN'."
}
}
}Analyse a supplier quote against Costable's should-cost benchmarks. Returns a line-by-line delta (% over/under should-cost), verdict (LOW / COMPETITIVE / HIGH / VERY HIGH), and a list of the top items to challenge in negotiation.
| Argument | Type | Description |
|---|---|---|
| items* | array | Quote line items. |
| countryCode* | string | Supplier's manufacturing country (ISO 3166-1 alpha-2). |
| supplierName* | string | Name of the supplier (for labelling the report). |
{
"type": "object",
"required": [
"supplierName",
"countryCode",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"description",
"quotedPrice",
"qty"
],
"properties": {
"qty": {
"type": "number",
"description": "Order quantity."
},
"description": {
"type": "string",
"description": "Part description."
},
"processHint": {
"type": "string",
"description": "Optional process name hint for better matching."
},
"quotedPrice": {
"type": "number",
"description": "Quoted unit price in USD."
},
"materialHint": {
"type": "string",
"description": "Optional material name hint for better matching."
}
}
},
"description": "Quote line items."
},
"countryCode": {
"type": "string",
"description": "Supplier's manufacturing country (ISO 3166-1 alpha-2)."
},
"supplierName": {
"type": "string",
"description": "Name of the supplier (for labelling the report)."
}
}
}Search the Costable materials database (37 materials with LME-sourced pricing). Returns material name, category, price per kg, density, and strength properties.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum results to return. Defaults to 20. |
| query | string | Search query, e.g. 'aluminium', 'stainless', 'ABS', 'titanium'. |
| category | string | Filter by category: Metals - Aluminium, Metals - Steel, Metals - Titanium, Metals - Copper Alloys, Polymers - Thermoplastic, Polymers - Thermoset, Composites, Timber, Rubber & Elastomers. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"default": 20,
"description": "Maximum results to return. Defaults to 20."
},
"query": {
"type": "string",
"description": "Search query, e.g. 'aluminium', 'stainless', 'ABS', 'titanium'."
},
"category": {
"type": "string",
"description": "Filter by category: Metals - Aluminium, Metals - Steel, Metals - Titanium, Metals - Copper Alloys, Polymers - Thermoplastic, Polymers - Thermoset, Composites, Timber, Rubber & Elastomers."
}
}
}Search the Costable manufacturing process database (41 processes). Returns process name, category, machine rate ($/hr), and cycle time model.
| Argument | Type | Description |
|---|---|---|
| limit | number | Maximum results to return. Defaults to 20. |
| query | string | Search query, e.g. 'CNC', 'injection moulding', 'laser cutting', 'anodising'. |
| category | string | Filter by category: CNC Machining, Sheet Metal, Casting, Polymer Processing, Additive Manufacturing, Composites, Welding & Joining, Surface Finishing, Assembly. |
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"default": 20,
"description": "Maximum results to return. Defaults to 20."
},
"query": {
"type": "string",
"description": "Search query, e.g. 'CNC', 'injection moulding', 'laser cutting', 'anodising'."
},
"category": {
"type": "string",
"description": "Filter by category: CNC Machining, Sheet Metal, Casting, Polymer Processing, Additive Manufacturing, Composites, Welding & Joining, Surface Finishing, Assembly."
}
}
}