Costable — Parametric Should-Cost Analysis

Parametric should-cost: P50/P80/P90 estimates, 801 materials, 25 countries, quote review.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
98%
Naming quality
94%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'compare_manufacturing_countries' name length outside 3-30 rangein compare_manufacturing_countries

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,868Tokens (tool definitions)
~1.5 KBTypical response size
Moderate attention impact (1.46% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "costable": {
      "url": "https://costable.ai/api/mcp"
    }
  }
}

Remote endpoints

https://costable.ai/api/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪estimate_part(description, countryCode, batchQty)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "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'."
    },
    "countryCode": {
      "type": "string",
      "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.",
      "default": "US"
    },
    "batchQty": {
      "type": "number",
      "description": "Batch / order quantity. Affects Wright's Law learning curve factor. Defaults to 100.",
      "default": 100
    }
  },
  "required": [
    "description"
  ]
}
🟢search_materials(query, category, limit)

Search the Costable materials database (37 materials with LME-sourced pricing). Returns material name, category, price per kg, density, and strength properties.

Input Schema

{
  "type": "object",
  "properties": {
    "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."
    },
    "limit": {
      "type": "number",
      "description": "Maximum results to return. Defaults to 20.",
      "default": 20
    }
  }
}
🟢search_processes(query, category, limit)

Search the Costable manufacturing process database (41 processes). Returns process name, category, machine rate ($/hr), and cycle time model.

Input Schema

{
  "type": "object",
  "properties": {
    "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."
    },
    "limit": {
      "type": "number",
      "description": "Maximum results to return. Defaults to 20.",
      "default": 20
    }
  }
}
🟢get_labour_rates(countryCode)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "countryCode": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2 country code, e.g. 'US', 'CN', 'DE', 'VN'."
    }
  },
  "required": [
    "countryCode"
  ]
}
🟡create_cost_model(name, countryCode, batchQty, overheadRate, marginRate)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Descriptive name for the cost model, e.g. 'Aluminium Enclosure Rev2'."
    },
    "countryCode": {
      "type": "string",
      "description": "Primary manufacturing country code (ISO 3166-1 alpha-2)."
    },
    "batchQty": {
      "type": "number",
      "description": "Batch / order quantity. Affects Wright's Law learning curve."
    },
    "overheadRate": {
      "type": "number",
      "description": "Factory overhead as a decimal fraction (e.g. 0.25 = 25%). Defaults to 0.25.",
      "default": 0.25
    },
    "marginRate": {
      "type": "number",
      "description": "Profit margin as a decimal fraction (e.g. 0.15 = 15%). Defaults to 0.15.",
      "default": 0.15
    }
  },
  "required": [
    "name",
    "countryCode",
    "batchQty"
  ]
}
🟡add_material_to_model(modelId, materialQuery, massKg, qty, scrapFactor)

Add a material (BOM line) to an existing cost model. Searches the materials database by name query — no need for exact IDs.

Input Schema

{
  "type": "object",
  "properties": {
    "modelId": {
      "type": "number",
      "description": "Cost model ID returned by create_cost_model."
    },
    "materialQuery": {
      "type": "string",
      "description": "Material name to search for, e.g. 'ABS', 'Aluminium 6061', 'Stainless 304'."
    },
    "massKg": {
      "type": "number",
      "description": "Mass of material per unit in kilograms."
    },
    "qty": {
      "type": "number",
      "description": "Number of this material per unit assembly. Defaults to 1.",
      "default": 1
    },
    "scrapFactor": {
      "type": "number",
      "description": "Scrap/yield factor (e.g. 1.05 = 5% material waste). Defaults to 1.05.",
      "default": 1.05
    }
  },
  "required": [
    "modelId",
    "materialQuery",
    "massKg"
  ]
}
🟡add_process_to_model(modelId, processQuery, countryCode, skillLevel, cycleTimeHrs, ...)

Add a manufacturing process step to an existing cost model. Searches the process database by name query — no need for exact IDs.

Input Schema

{
  "type": "object",
  "properties": {
    "modelId": {
      "type": "number",
      "description": "Cost model ID returned by create_cost_model."
    },
    "processQuery": {
      "type": "string",
      "description": "Process name to search for, e.g. 'CNC 3-Axis', 'Injection Moulding', 'TIG Welding'."
    },
    "countryCode": {
      "type": "string",
      "description": "Country where this process step is performed (ISO 3166-1 alpha-2)."
    },
    "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."
    },
    "cycleTimeHrs": {
      "type": "number",
      "description": "Cycle time per unit in decimal hours (e.g. 0.5 = 30 minutes)."
    },
    "stepOrder": {
      "type": "number",
      "description": "Step sequence number (1 = first). Defaults to 1.",
      "default": 1
    }
  },
  "required": [
    "modelId",
    "processQuery",
    "countryCode",
    "skillLevel",
    "cycleTimeHrs"
  ]
}
🟢calculate_cost_model(modelId)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "modelId": {
      "type": "number",
      "description": "Cost model ID returned by create_cost_model."
    }
  },
  "required": [
    "modelId"
  ]
}
⚪compare_manufacturing_countries(modelId, countries)

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.

Input Schema

{
  "type": "object",
  "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."
    }
  },
  "required": [
    "modelId",
    "countries"
  ]
}
🟢review_supplier_quote(supplierName, countryCode, items)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "supplierName": {
      "type": "string",
      "description": "Name of the supplier (for labelling the report)."
    },
    "countryCode": {
      "type": "string",
      "description": "Supplier's manufacturing country (ISO 3166-1 alpha-2)."
    },
    "items": {
      "type": "array",
      "description": "Quote line items.",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Part description."
          },
          "quotedPrice": {
            "type": "number",
            "description": "Quoted unit price in USD."
          },
          "qty": {
            "type": "number",
            "description": "Order quantity."
          },
          "materialHint": {
            "type": "string",
            "description": "Optional material name hint for better matching."
          },
          "processHint": {
            "type": "string",
            "description": "Optional process name hint for better matching."
          }
        },
        "required": [
          "description",
          "quotedPrice",
          "qty"
        ]
      }
    }
  },
  "required": [
    "supplierName",
    "countryCode",
    "items"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools
verifiedversion not recorded10 tools