{"openapi":"3.1.0","info":{"title":"MW SysArc Node API","version":"1.0.0-beta.1","description":"A small, versioned function surface over audited MW SysArc calculation nodes plus owner-scoped private compositions. Inputs are processed in memory and are not written to request logs."},"servers":[{"url":"https://tools.mwsysarc.com/api/v1"}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","bearerFormat":"mw_beta_..."}},"schemas":{"ApiError":{"type":"object","required":["requestId","error"],"properties":{"requestId":{"type":"string","format":"uuid"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"field":{"type":"string"}}}}}}},"paths":{"/functions":{"get":{"summary":"List stable public functions and their node plans","responses":{"200":{"description":"Small public function catalog"}}}},"/functions:invoke":{"post":{"summary":"Ask for function help or execute a composed node plan","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["function","operation"],"properties":{"function":{"type":"string"},"operation":{"enum":["help","run"]},"inputs":{"type":"object"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","default":"USD"}}}}}},"responses":{"200":{"description":"Function help or result including nodes used"},"422":{"description":"Input or numerical-domain error"},"429":{"description":"Rate or quota limit"}}}},"/nodes":{"get":{"summary":"List the small curated node set","responses":{"200":{"description":"Curated node catalog"}}}},"/nodes/{nodeId}":{"get":{"summary":"Get one stable node schema","parameters":[{"name":"nodeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Node schema"},"404":{"description":"Unknown node"}}}},"/nodes/{nodeId}:run":{"post":{"summary":"Run one stable node","security":[{"ApiKey":[]}],"parameters":[{"name":"nodeId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Node result"},"422":{"description":"Input or numerical-domain error"}}}}},"x-mw-functions":[{"id":"math.simplify-ratio","name":"Simplify a ratio","description":"Reduce a whole-number ratio and return its decimal relationship.","aliases":["ratio","simplify ratio","reduce ratio"],"inputs":[{"key":"a","label":"First term","kind":"number","required":true,"integer":true},{"key":"b","label":"Second term","kind":"number","required":true,"integer":true}],"outputs":[{"key":"firstSimplifiedTerm","label":"First simplified term","kind":"number"},{"key":"secondSimplifiedTerm","label":"Second simplified term","kind":"number"},{"key":"decimalRatio","label":"Decimal ratio","kind":"number"}],"nodePlan":[{"id":"math.ratio","purpose":"Reduce both ratio terms with their greatest common divisor."}]},{"id":"math.analyze-change","name":"Analyze percentage change","description":"Compare a new value with an original value and return absolute and percentage change.","aliases":["percentage change","percent change","analyze change"],"inputs":[{"key":"original","label":"Original value","kind":"number","required":true},{"key":"newValue","label":"New value","kind":"number","required":true}],"outputs":[{"key":"difference","label":"Difference","kind":"number"},{"key":"percentageChange","label":"Percentage change","kind":"percent"}],"nodePlan":[{"id":"math.percentage-change","purpose":"Measure change relative to the original magnitude."}]},{"id":"math.coordinate-distance","name":"Measure coordinate distance","description":"Calculate the straight-line distance between two points.","aliases":["distance","point distance","coordinate distance"],"inputs":[{"key":"x1","label":"First x","kind":"number","required":true},{"key":"y1","label":"First y","kind":"number","required":true},{"key":"x2","label":"Second x","kind":"number","required":true},{"key":"y2","label":"Second y","kind":"number","required":true}],"outputs":[{"key":"distance","label":"Distance","kind":"number"}],"nodePlan":[{"id":"math.distance-between-points","purpose":"Apply the Euclidean distance formula."}]},{"id":"math.solve-quadratic","name":"Solve a real quadratic equation","description":"Solve a quadratic equation and expose the discriminant used to classify its real roots.","aliases":["quadratic","quadratic formula","solve quadratic"],"inputs":[{"key":"a","label":"Quadratic coefficient","kind":"number","required":true},{"key":"b","label":"Linear coefficient","kind":"number","required":true},{"key":"c","label":"Constant","kind":"number","required":true}],"outputs":[{"key":"firstRoot","label":"First root","kind":"number"},{"key":"secondRoot","label":"Second root","kind":"number"},{"key":"discriminant","label":"Discriminant","kind":"number"}],"nodePlan":[{"id":"math.quadratic-formula","purpose":"Calculate the discriminant and real roots."}]},{"id":"business.pricing-plan","name":"Build a price and sales plan","description":"Turn unit cost, operating costs, planned volume and target profit into price, break-even and target-profit volume.","aliases":["pricing","price plan","break even plan","target profit plan"],"inputs":[{"key":"variableCost","label":"Variable cost per unit","kind":"currency","required":true,"min":0},{"key":"fixedOperatingCosts","label":"Fixed operating costs","kind":"currency","required":true,"min":0},{"key":"targetProfit","label":"Target operating profit","kind":"currency","required":true,"min":0},{"key":"expectedQuantity","label":"Expected quantity","kind":"number","required":true,"min":5e-324}],"outputs":[{"key":"requiredPrice","label":"Required price","kind":"currency"},{"key":"breakEvenUnits","label":"Break-even units","kind":"number"},{"key":"targetProfitUnits","label":"Target-profit units","kind":"number"},{"key":"contributionPerUnit","label":"Contribution per unit","kind":"currency"}],"nodePlan":[{"id":"business.minimum-viable-price","purpose":"Set a cost-based price floor for the planned quantity and profit."},{"id":"business.break-even","purpose":"Calculate the volume that covers operating costs."},{"id":"business.target-profit","purpose":"Confirm the volume required for the chosen profit."}]},{"id":"business.hiring-decision","name":"Test whether a new hire clears a profit threshold","description":"Include full employee and recurring operating costs, then return required volume and retained profit after hiring.","aliases":["hire","hiring","can i hire","hiring decision"],"inputs":[{"key":"annualEmployeeCost","label":"Annual loaded employee cost","kind":"currency","required":true,"min":0},{"key":"monthlyOperatingExpenses","label":"Monthly recurring operating expenses","kind":"currency","required":true,"min":0},{"key":"profitRate","label":"Required profit on total hire cost","kind":"percent","required":true,"min":0},{"key":"contribution","label":"Contribution per sale or hour","kind":"currency","required":true,"min":5e-324},{"key":"productiveMonths","label":"Productive months in first year","kind":"number","required":true,"min":5e-324,"max":12},{"key":"expectedMonthlyVolume","label":"Expected monthly volume","kind":"number","required":true,"min":0}],"outputs":[{"key":"annualVolumeRequired","label":"Annual volume required","kind":"number"},{"key":"retainedProfit","label":"Retained profit after hiring","kind":"currency"},{"key":"retainedMargin","label":"Retained margin after hiring","kind":"percent"}],"nodePlan":[{"id":"business.hiring-break-even","purpose":"Test the hire against fully loaded cost, operating expenses and required profit."}]},{"id":"business.startup-model","name":"Build a connected startup model","description":"Connect price, break-even, target profit and hiring economics in one deterministic function.","aliases":["startup","start a business","startup model","business startup"],"inputs":[{"key":"variableCost","label":"Variable cost per unit","kind":"currency","required":true,"min":0},{"key":"monthlyOperatingExpenses","label":"Monthly recurring operating expenses","kind":"currency","required":true,"min":0},{"key":"targetProfit","label":"Target monthly operating profit","kind":"currency","required":true,"min":0},{"key":"expectedMonthlyQuantity","label":"Expected monthly quantity","kind":"number","required":true,"min":5e-324},{"key":"annualEmployeeCost","label":"Annual loaded employee cost","kind":"currency","required":true,"min":0},{"key":"hireProfitRate","label":"Required profit on total hire cost","kind":"percent","required":true,"min":0},{"key":"productiveMonths","label":"Productive months in first year","kind":"number","required":true,"min":5e-324,"max":12}],"outputs":[{"key":"requiredPrice","label":"Required price","kind":"currency"},{"key":"breakEvenUnits","label":"Monthly break-even units","kind":"number"},{"key":"targetProfitUnits","label":"Monthly target-profit units","kind":"number"},{"key":"hireAnnualVolumeRequired","label":"Annual volume required after hiring","kind":"number"},{"key":"retainedProfitAfterHiring","label":"Retained profit after hiring","kind":"currency"},{"key":"retainedMarginAfterHiring","label":"Retained margin after hiring","kind":"percent"}],"nodePlan":[{"id":"business.minimum-viable-price","purpose":"Calculate a monthly cost-and-profit price floor."},{"id":"business.break-even","purpose":"Calculate monthly break-even volume."},{"id":"business.target-profit","purpose":"Calculate monthly target-profit volume."},{"id":"business.hiring-break-even","purpose":"Test the annual hire after business costs and required profit."}]}],"x-mw-nodes":[{"id":"math.ratio","registryId":"mathematics:ratio","name":"Ratio Calculator and Simplifier","category":"mathematics","description":"Simplify a two-number whole-number ratio and calculate its decimal relationship.","formula":"Simplified ratio = a / gcd(a,b) : b / gcd(a,b)","inputs":[{"key":"a","label":"First term","kind":"number","required":true,"integer":true},{"key":"b","label":"Second term","kind":"number","required":true,"integer":true}],"outputs":[{"key":"firstSimplifiedTerm","label":"First simplified term","kind":"number"},{"key":"secondSimplifiedTerm","label":"Second simplified term","kind":"number"},{"key":"decimalRatio","label":"a divided by b","kind":"number"}]},{"id":"math.percentage-change","registryId":"mathematics:percentage-change","name":"Percentage Change Calculator","category":"mathematics","description":"Calculate the percentage increase or decrease between an original and a new value.","formula":"Percentage change = (new - original) / |original| * 100","inputs":[{"key":"original","label":"Original value","kind":"number","required":true},{"key":"newValue","label":"New value","kind":"number","required":true}],"outputs":[{"key":"difference","label":"Difference","kind":"number"},{"key":"percentageChange","label":"Percentage change","kind":"percent"}]},{"id":"math.distance-between-points","registryId":"mathematics:distance-between-points","name":"Distance Between Two Points Calculator","category":"mathematics","description":"Calculate straight-line distance between two coordinates.","formula":"d = sqrt((x2 - x1)^2 + (y2 - y1)^2)","inputs":[{"key":"x1","label":"First x","kind":"number","required":true},{"key":"y1","label":"First y","kind":"number","required":true},{"key":"x2","label":"Second x","kind":"number","required":true},{"key":"y2","label":"Second y","kind":"number","required":true}],"outputs":[{"key":"distance","label":"Distance","kind":"number"}]},{"id":"math.quadratic-formula","registryId":"mathematics:quadratic-formula","name":"Quadratic Formula Calculator","category":"mathematics","description":"Solve ax squared plus bx plus c equals zero over the real numbers.","formula":"x = (-b +/- sqrt(b^2 - 4ac)) / (2a)","inputs":[{"key":"a","label":"Quadratic coefficient","kind":"number","required":true},{"key":"b","label":"Linear coefficient","kind":"number","required":true},{"key":"c","label":"Constant","kind":"number","required":true}],"outputs":[{"key":"firstRoot","label":"First root","kind":"number"},{"key":"secondRoot","label":"Second root","kind":"number"},{"key":"discriminant","label":"Discriminant","kind":"number"}]},{"id":"business.break-even","registryId":"economics:break-even","name":"Break-even Calculator","category":"business","description":"Find the unit sales needed to cover recurring operating and variable costs.","formula":"Break-even units = fixed operating costs / (price per unit - variable cost per unit)","inputs":[{"key":"fixed","label":"Fixed operating costs","kind":"currency","required":true,"min":0},{"key":"price","label":"Price per unit","kind":"currency","required":true,"min":0},{"key":"variable","label":"Variable cost per unit","kind":"currency","required":true,"min":0}],"outputs":[{"key":"breakEvenUnits","label":"Break-even units","kind":"number"},{"key":"breakEvenRevenue","label":"Break-even revenue","kind":"currency"},{"key":"contributionPerUnit","label":"Contribution per unit","kind":"currency"}]},{"id":"business.margin","registryId":"economics:margin","name":"Profit Margin Calculator","category":"business","description":"Calculate profit and margin from revenue and cost.","formula":"Margin = (revenue - cost) / revenue * 100","inputs":[{"key":"revenue","label":"Revenue","kind":"currency","required":true,"min":5e-324},{"key":"cost","label":"Cost","kind":"currency","required":true,"min":0}],"outputs":[{"key":"profitMargin","label":"Profit margin","kind":"percent"},{"key":"profit","label":"Profit","kind":"currency"},{"key":"costShare","label":"Cost share","kind":"percent"}]},{"id":"business.markup","registryId":"economics:markup","name":"Markup Calculator","category":"business","description":"Calculate markup from unit cost and selling price.","formula":"Markup = (selling price - cost) / cost * 100","inputs":[{"key":"cost","label":"Unit cost","kind":"currency","required":true,"min":5e-324},{"key":"price","label":"Selling price","kind":"currency","required":true,"min":0}],"outputs":[{"key":"markup","label":"Markup","kind":"percent"},{"key":"profitPerUnit","label":"Profit per unit","kind":"currency"},{"key":"profitMargin","label":"Profit margin","kind":"percent"}]},{"id":"business.contribution-margin","registryId":"economics:contribution-margin","name":"Contribution Margin Calculator","category":"business","description":"Measure the sales revenue remaining after variable costs.","formula":"Contribution margin = sales - variable costs","inputs":[{"key":"sales","label":"Sales revenue","kind":"currency","required":true,"min":5e-324},{"key":"variable","label":"Variable costs","kind":"currency","required":true,"min":0}],"outputs":[{"key":"contributionMargin","label":"Contribution margin","kind":"currency"},{"key":"contributionMarginRatio","label":"Contribution margin ratio","kind":"percent"},{"key":"variableCostRatio","label":"Variable cost ratio","kind":"percent"}]},{"id":"business.target-profit","registryId":"economics:target-profit","name":"Target Profit Quantity Calculator","category":"business","description":"Find unit sales required to cover operating costs and reach an operating-profit target.","formula":"Required units = (fixed operating costs + target profit) / (price - variable cost)","inputs":[{"key":"fixed","label":"Fixed operating costs","kind":"currency","required":true,"min":0},{"key":"target","label":"Target operating profit","kind":"currency","required":true,"min":0},{"key":"price","label":"Price per unit","kind":"currency","required":true,"min":0},{"key":"variable","label":"Variable cost per unit","kind":"currency","required":true,"min":0}],"outputs":[{"key":"unitsRequired","label":"Units required","kind":"number"},{"key":"requiredRevenue","label":"Required revenue","kind":"currency"},{"key":"contributionPerUnit","label":"Contribution per unit","kind":"currency"}]},{"id":"business.minimum-viable-price","registryId":"economics:minimum-viable-price","name":"Minimum Viable Price Calculator","category":"business","description":"Calculate the unit price required to cover costs and a target profit at a planned volume.","formula":"Required price = variable cost + (fixed cost + target profit) / quantity","inputs":[{"key":"variable","label":"Variable cost per unit","kind":"currency","required":true,"min":0},{"key":"fixed","label":"Fixed cost","kind":"currency","required":true,"min":0},{"key":"target","label":"Target profit","kind":"currency","required":true},{"key":"quantity","label":"Expected quantity","kind":"number","required":true,"min":5e-324}],"outputs":[{"key":"minimumViablePrice","label":"Minimum viable price","kind":"currency"}]},{"id":"business.hiring-break-even","registryId":"economics:hiring-break-even","name":"Hiring Break-Even Calculator","category":"business","description":"Calculate the sales or billable volume required to cover fully loaded hiring and operating costs while earning a chosen profit.","formula":"Required volume = (annual employee cost + 12 * monthly operating expenses) * (1 + profit rate) / contribution","inputs":[{"key":"annualEmployeeCost","label":"Annual loaded employee cost","kind":"currency","required":true,"min":0},{"key":"monthlyOperatingExpenses","label":"Monthly recurring operating expenses","kind":"currency","required":true,"min":0},{"key":"profitRate","label":"Required profit on total hire cost","kind":"percent","required":true,"min":0},{"key":"contribution","label":"Contribution per sale or hour","kind":"currency","required":true,"min":5e-324},{"key":"productiveMonths","label":"Productive months in first year","kind":"number","required":true,"min":5e-324,"max":12},{"key":"expectedMonthlyVolume","label":"Expected monthly sales or billable hours","kind":"number","required":true,"min":0}],"outputs":[{"key":"annualVolumeRequired","label":"Annual volume required","kind":"number"},{"key":"monthlyVolumeRequired","label":"Monthly volume during productive months","kind":"number"},{"key":"monthlyFullyLoadedCost","label":"Monthly fully loaded cost per hire","kind":"currency"},{"key":"annualProfitTarget","label":"Annual profit target from hire","kind":"currency"},{"key":"retainedProfit","label":"Retained profit after hiring","kind":"currency"},{"key":"retainedMargin","label":"Retained margin after hiring","kind":"percent"}]}]}