{"serverId":"mcp-registry/io.github.1337mofo/costable","tools":[{"name":"add_material_to_model","fixed":{"name":"add_material_to_model","description":"Add a material (BOM line) to an existing cost model. Searches the materials database by name query — no need for exact IDs.","inputSchema":{"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'."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"add_process_to_model","fixed":{"name":"add_process_to_model","description":"Add a manufacturing process step to an existing cost model. Searches the process database by name query — no need for exact IDs.","inputSchema":{"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'."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":314,"tokensAfter":314},{"name":"calculate_cost_model","fixed":{"name":"calculate_cost_model","description":"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).","inputSchema":{"type":"object","required":["modelId"],"properties":{"modelId":{"type":"number","description":"Cost model ID returned by create_cost_model."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":111,"tokensAfter":111},{"name":"compare_manufacturing_countries","fixed":{"name":"compare_manufacturing_countries","description":"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.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":159,"tokensAfter":159},{"name":"create_cost_model","fixed":{"name":"create_cost_model","description":"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.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":257,"tokensAfter":257},{"name":"estimate_part","fixed":{"name":"estimate_part","description":"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.","inputSchema":{"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'."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":279,"tokensAfter":279},{"name":"get_labour_rates","fixed":{"name":"get_labour_rates","description":"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).","inputSchema":{"type":"object","required":["countryCode"],"properties":{"countryCode":{"type":"string","description":"ISO 3166-1 alpha-2 country code, e.g. 'US', 'CN', 'DE', 'VN'."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":105,"tokensAfter":105},{"name":"search_materials","fixed":{"name":"search_materials","description":"Search the Costable materials database (37 materials with LME-sourced pricing). Returns material name, category, price per kg, density, and strength properties.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":192,"tokensAfter":192},{"name":"search_processes","fixed":{"name":"search_processes","description":"Search the Costable manufacturing process database (41 processes). Returns process name, category, machine rate ($/hr), and cycle time model.","inputSchema":{"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."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":183,"tokensAfter":183}],"toolsChanged":9,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}