@frontlinesystems/rason-mcp-server 2026.5.1 → 2026.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/LICENSE +35 -35
  2. package/examples/EXAMPLES_REFERENCE.md +128 -128
  3. package/examples/{optimization → Optimization}/Conic/AirlineHubConic.json +111 -111
  4. package/examples/{optimization → Optimization}/Conic/AirlineHubConic2.json +108 -108
  5. package/examples/{optimization → Optimization}/Conic/AirlineHubConic3.json +111 -111
  6. package/examples/{optimization → Optimization}/Conic/AirlineHubConic4.json +99 -99
  7. package/examples/{optimization → Optimization}/Conic/AirlineHubConic5.json +101 -101
  8. package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv.json +81 -81
  9. package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv4.json +96 -96
  10. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel.json +73 -73
  11. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel1.json +86 -86
  12. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel11.json +108 -108
  13. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel2.json +77 -77
  14. package/examples/{optimization → Optimization}/DataBinding/ProductMixTab.json +89 -89
  15. package/examples/{optimization → Optimization}/DataBinding/ProductMixTab1.json +73 -73
  16. package/examples/{optimization → Optimization}/DataBinding/ProductMixTab2.json +77 -77
  17. package/examples/{optimization → Optimization}/Linear/Inventory.json +199 -199
  18. package/examples/{optimization → Optimization}/Linear/Matop.json +119 -119
  19. package/examples/{optimization → Optimization}/Linear/ProductMix.json +97 -97
  20. package/examples/{optimization → Optimization}/Linear/ProductMix2.json +72 -72
  21. package/examples/{optimization → Optimization}/Linear/ProductMix3.json +49 -49
  22. package/examples/{optimization → Optimization}/Linear/ProductMix4.json +56 -56
  23. package/examples/{optimization → Optimization}/Linear/ProductMixCsv1.json +106 -106
  24. package/examples/{optimization → Optimization}/Linear/ProductMixCsv2.json +106 -106
  25. package/examples/{optimization → Optimization}/Linear/ProductMixSQL11.json +82 -82
  26. package/examples/{optimization → Optimization}/Linear/Rowop.json +126 -126
  27. package/examples/{optimization → Optimization}/NonLinear/AirlineHub.json +63 -63
  28. package/examples/{optimization → Optimization}/NonLinear/AirlineHub2.json +47 -47
  29. package/examples/{optimization → Optimization}/NonLinear/AirlineHub3.json +47 -47
  30. package/examples/{optimization → Optimization}/NonSmooth/Inventory2.json +159 -159
  31. package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt.json +55 -55
  32. package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt2.json +65 -65
  33. package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyChance.json +78 -78
  34. package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
  35. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect.json +77 -77
  36. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect2.json +81 -81
  37. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect3.json +84 -84
  38. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect4.json +74 -74
  39. package/examples/{simulation → Simulation}/CandyStoreSalesUsingSIP.json +147 -147
  40. package/examples/{simulation → Simulation}/CollegeFundGrowth1.json +423 -423
  41. package/examples/{simulation → Simulation}/CollegeFundGrowth1SIPModel.json +27 -27
  42. package/examples/{simulation → Simulation}/CollegeFundGrowth2.json +415 -415
  43. package/examples/{simulation → Simulation}/CollegeFundGrowthSIP.json +401 -401
  44. package/examples/{simulation → Simulation}/GBMSimulationModel.json +236 -236
  45. package/examples/{simulation → Simulation}/YieldManagement(Sim).json +69 -69
  46. package/examples/{simulation → Simulation}/YieldManagement2(Sim).json +72 -72
  47. package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
  48. package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
  49. package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
  50. package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
  51. package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
  52. package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
  53. package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
  54. package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
  55. package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
  56. package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
  57. package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
  58. package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
  59. package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
  60. package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
  61. package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
  62. package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
  63. package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
  64. package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
  65. package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
  66. package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
  67. package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
  68. package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
  69. package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
  70. package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
  71. package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
  72. package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
  73. package/examples/datamining/Classification/DecisionTree.json +90 -90
  74. package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
  75. package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
  76. package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
  77. package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
  78. package/examples/datamining/Classification/FindBestModel.json +86 -86
  79. package/examples/datamining/Classification/LogisticRegression.json +82 -82
  80. package/examples/datamining/Classification/NaiveBayes.json +78 -78
  81. package/examples/datamining/Classification/NearestNeighbors.json +84 -84
  82. package/examples/datamining/Classification/NeuralNetwork.json +92 -92
  83. package/examples/datamining/Clustering/Hierarchical.json +54 -54
  84. package/examples/datamining/Clustering/KMeans.json +71 -71
  85. package/examples/datamining/DataSources/DelimitedFile.json +49 -49
  86. package/examples/datamining/DataSources/JSONFile.json +49 -49
  87. package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
  88. package/examples/datamining/DataSources/MSExcelTable.json +50 -50
  89. package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
  90. package/examples/datamining/DataSources/ODATATable.json +49 -49
  91. package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
  92. package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
  93. package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
  94. package/examples/datamining/FeatureSelection/Univariate.json +78 -78
  95. package/examples/datamining/Regression/DecisionTree.json +82 -82
  96. package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
  97. package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
  98. package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
  99. package/examples/datamining/Regression/FindBestModel.json +86 -86
  100. package/examples/datamining/Regression/LinearRegression.json +124 -124
  101. package/examples/datamining/Regression/NearestNeighbors.json +77 -77
  102. package/examples/datamining/Regression/NeuralNetwork.json +82 -82
  103. package/examples/datamining/Scoring/JSONClassifier.json +62 -62
  104. package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
  105. package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
  106. package/examples/datamining/Scoring/JSONForecaster.json +49 -49
  107. package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
  108. package/examples/datamining/Scoring/JSONPCA.json +41 -41
  109. package/examples/datamining/Scoring/JSONRegressor.json +56 -56
  110. package/examples/datamining/Scoring/JSONTransformer.json +38 -38
  111. package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
  112. package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
  113. package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
  114. package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
  115. package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
  116. package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
  117. package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
  118. package/examples/datamining/Summarizer/Summarization.json +54 -54
  119. package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
  120. package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
  121. package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
  122. package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
  123. package/examples/datamining/TimeSeries/Arima.json +74 -74
  124. package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
  125. package/examples/datamining/TimeSeries/Exponential.json +64 -64
  126. package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
  127. package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
  128. package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
  129. package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
  130. package/examples/datamining/Transformation/Binning.json +69 -69
  131. package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
  132. package/examples/datamining/Transformation/CategoryReduction.json +51 -51
  133. package/examples/datamining/Transformation/Factorization.json +50 -50
  134. package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
  135. package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
  136. package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
  137. package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
  138. package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
  139. package/examples/datamining/Transformation/Partitioning.json +46 -46
  140. package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
  141. package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
  142. package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
  143. package/examples/datamining/Transformation/Rescaling.json +67 -67
  144. package/examples/datamining/Transformation/Sampling.json +43 -43
  145. package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
  146. package/examples/flow/SQLServerTransform.json +260 -260
  147. package/examples/flow/dm-calc-pipeline.json +277 -277
  148. package/examples/flow/dm-pipeline-simulation.json +113 -113
  149. package/examples/flow/opt-sim-pipeline.json +159 -159
  150. package/examples/flow/sim-dm-pipeline.json +106 -106
  151. package/examples/flow/sim-sim-pipeline.json +136 -136
  152. package/examples/index.json +4678 -4678
  153. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
  154. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
  155. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
  156. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
  157. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
  158. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
  159. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
  160. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
  161. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
  162. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
  163. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
  164. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
  165. package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
  166. package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
  167. package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
  168. package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
  169. package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
  170. package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
  171. package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
  172. package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
  173. package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
  174. package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
  175. package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
  176. package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
  177. package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
  178. package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
  179. package/examples/rason-features/UserGuide/UGForecast.json +50 -50
  180. package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
  181. package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
  182. package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
  183. package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
  184. package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
  185. package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
  186. package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
  187. package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
  188. package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
  189. package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
  190. package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
  191. package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
  192. package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
  193. package/out/index.cjs +1 -1
  194. package/package.json +3 -2
@@ -1,64 +1,64 @@
1
- {
2
- "modelName": "UGYieldManagement3Example",
3
- "modelDescription": "RASON Simulation Optimization Model: Running multiple parameterized simulations in UGYieldManagement2, and examining the results has given us a good deal of information about the behavior of this simulation model. However, if we take just a few more steps we can answer the question, 'How many tickets should we sell to realize the maximum expected net revenue?' By changing 'sold' from a simulation parameter to a decision variable, we can setup a simulation optimization model. See the Defining Your Stochastic Optimization chapter within the RASON User Guide for a complete discussion of this example and also the previous examples UGYieldManagement 1 and 2.",
4
- "comment": "Change the modelType property to 'optimization'. If left at 'modelType':'simulation' as in UGYieldManagement 1 and 2, only a simulation will be performed, not a simulation optimization.",
5
- "modelType": "optimization",
6
- "modelSettings": {
7
- "comment": "Replace numSimulations: 41 with simulationOptimization: True in modelSettings. Setting simulationOptimization to true will run a simulation optimization. The evolutionary engine must be selected in engineSettings below.",
8
- "simulationOptimization": true,
9
- "numTrials": 1000
10
- },
11
- "engineSettings": {
12
- "comment": "In order to run a simulation optimization, you must set the engine to 'Evolutionary'. The random seed option is set to provide reproducible results.",
13
- "engine": "Evolutionary",
14
- "randomSeed": 1
15
- },
16
- "variables": {
17
- "comment": "Replace parameters with variables and define sold as an integer variable (since we can't sell fractional tickets) with a lower bound of 0 (since we can't sell a negative number of tickets). We are interested in the value of this variable in the solution, so we must ask for the finalValue to be returned in the Result.",
18
- "sold": {
19
- "lower": 0,
20
- "upper": 500,
21
- "type": "integer",
22
- "finalValue": []
23
- }
24
- },
25
- "data": {
26
- "comment": "The data section remains unchanged from UGYieldManagement 2.",
27
- "price": {
28
- "value": 200
29
- },
30
- "capacity": {
31
- "value": 100
32
- },
33
- "refund_no_shows": {
34
- "value": 0.5
35
- },
36
- "refund_overbook": {
37
- "value": 1.25
38
- }
39
- },
40
- "uncertainVariables": {
41
- "comment": "The uncertainVariables section remains unchanged from UGYieldManagement 2.",
42
- "no_shows": {
43
- "formula": "PsiLogNormal(0.1*sold, 0.06*sold)"
44
- }
45
- },
46
- "formulas": {
47
- "comment": "The formulas section remains unchanged from UGYieldManagement 2.",
48
- "show_ups": {
49
- "formula": "sold - Round(no_shows, 0)"
50
- },
51
- "overbook": {
52
- "formula": "Max(0, show_ups - capacity)"
53
- }
54
- },
55
- "objective": {
56
- "comment": "The objective section remains unchanged from UGYieldManagement 2.",
57
- "revenue": {
58
- "formula": "price*(sold - refund_no_shows*Round(no_shows, 0) - refund_overbook*overbook)",
59
- "chanceType": "ExpVal",
60
- "type": "maximize",
61
- "finalValue": []
62
- }
63
- }
1
+ {
2
+ "modelName": "UGYieldManagement3Example",
3
+ "modelDescription": "RASON Simulation Optimization Model: Running multiple parameterized simulations in UGYieldManagement2, and examining the results has given us a good deal of information about the behavior of this simulation model. However, if we take just a few more steps we can answer the question, 'How many tickets should we sell to realize the maximum expected net revenue?' By changing 'sold' from a simulation parameter to a decision variable, we can setup a simulation optimization model. See the Defining Your Stochastic Optimization chapter within the RASON User Guide for a complete discussion of this example and also the previous examples UGYieldManagement 1 and 2.",
4
+ "comment": "Change the modelType property to 'optimization'. If left at 'modelType':'simulation' as in UGYieldManagement 1 and 2, only a simulation will be performed, not a simulation optimization.",
5
+ "modelType": "optimization",
6
+ "modelSettings": {
7
+ "comment": "Replace numSimulations: 41 with simulationOptimization: True in modelSettings. Setting simulationOptimization to true will run a simulation optimization. The evolutionary engine must be selected in engineSettings below.",
8
+ "simulationOptimization": true,
9
+ "numTrials": 1000
10
+ },
11
+ "engineSettings": {
12
+ "comment": "In order to run a simulation optimization, you must set the engine to 'Evolutionary'. The random seed option is set to provide reproducible results.",
13
+ "engine": "Evolutionary",
14
+ "randomSeed": 1
15
+ },
16
+ "variables": {
17
+ "comment": "Replace parameters with variables and define sold as an integer variable (since we can't sell fractional tickets) with a lower bound of 0 (since we can't sell a negative number of tickets). We are interested in the value of this variable in the solution, so we must ask for the finalValue to be returned in the Result.",
18
+ "sold": {
19
+ "lower": 0,
20
+ "upper": 500,
21
+ "type": "integer",
22
+ "finalValue": []
23
+ }
24
+ },
25
+ "data": {
26
+ "comment": "The data section remains unchanged from UGYieldManagement 2.",
27
+ "price": {
28
+ "value": 200
29
+ },
30
+ "capacity": {
31
+ "value": 100
32
+ },
33
+ "refund_no_shows": {
34
+ "value": 0.5
35
+ },
36
+ "refund_overbook": {
37
+ "value": 1.25
38
+ }
39
+ },
40
+ "uncertainVariables": {
41
+ "comment": "The uncertainVariables section remains unchanged from UGYieldManagement 2.",
42
+ "no_shows": {
43
+ "formula": "PsiLogNormal(0.1*sold, 0.06*sold)"
44
+ }
45
+ },
46
+ "formulas": {
47
+ "comment": "The formulas section remains unchanged from UGYieldManagement 2.",
48
+ "show_ups": {
49
+ "formula": "sold - Round(no_shows, 0)"
50
+ },
51
+ "overbook": {
52
+ "formula": "Max(0, show_ups - capacity)"
53
+ }
54
+ },
55
+ "objective": {
56
+ "comment": "The objective section remains unchanged from UGYieldManagement 2.",
57
+ "revenue": {
58
+ "formula": "price*(sold - refund_no_shows*Round(no_shows, 0) - refund_overbook*overbook)",
59
+ "chanceType": "ExpVal",
60
+ "type": "maximize",
61
+ "finalValue": []
62
+ }
63
+ }
64
64
  }
package/out/index.cjs CHANGED
@@ -309,7 +309,7 @@ Data flow:`);for(let a of o)t.push(` ${a}`)}return{lines:t,observations:r}}func
309
309
  ### Structure`),t.push(...a.lines),a.observations.length>0){t.push(`
310
310
  ### Observations`);for(let x of a.observations)t.push(`- ${x}`)}let s=new Set(["modelName","modelDescription","modelType","modelSettings","comment","variables","constraints","objective","uncertainVariables","uncertainFunctions","formulas","data","datasources","datasets","estimator","transformer","fittedModel","weakLearner","preProcessor","actions","decisionTables","boxFunctions","boxIterators","typeDefs","flowName","workflowName","flowDescription","workflowDescription","engineSettings","indexSets","parameters","evaluations","contexts"]),l=Object.keys(e).filter(x=>{if(s.has(x))return!1;let S=e[x];return!(S&&typeof S=="object"&&!Array.isArray(S)&&"modelName"in S)}),d=[],p=Ke(e.engineSettings);p&&d.push(`engineSettings (${p})`);let f=Ke(e.indexSets);f&&d.push(`indexSets (${f})`);let g=Ke(e.parameters);g&&d.push(`parameters (${g})`);let y=Ke(e.evaluations);y&&d.push(`evaluations (${y})`);let v=Ke(e.contexts);return v&&d.push(`contexts (${v})`),(d.length>0||l.length>0)&&(t.push(`
311
311
  ### Other sections`),d.length>0&&t.push(d.join(" | ")),l.length>0&&t.push(`Unrecognized: ${l.join(", ")}`)),t.join(`
312
- `)}function OR(e){e.registerTool("describe_model",{title:"Analyze RASON Model",description:"Analyze and classify a RASON model: reliably detect model type and subtype (optimization \u2014 LP, QP, MIP, stochastic, chance-constrained; simulation; datamining \u2014 classification, regression, clustering; calculation \u2014 decision tables, box functions; multi-stage flow), inventory and classify components (variable types, constraint types, distribution families, ML pipelines, inter-stage data flow), and identify issues (missing result requests, absent validation data, empty output sections). Provides deterministic RASON-specific analysis beyond what raw JSON inspection reveals. Call whenever the user asks about, discusses, or works with a RASON model \u2014 whether open in the editor, referenced as a file, provided inline, or stored on the RASON server.",annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:I.object({model:I.record(I.string(),I.unknown()).optional().describe("The RASON model as a JSON object. Mutually exclusive with rason_model_path and name_or_id."),rason_model_path:I.string().optional().describe("Path to a file containing a RASON model. Mutually exclusive with model and name_or_id."),name_or_id:I.string().optional().describe("Name or ID of an existing model on the RASON account. The model will be fetched and analyzed. Mutually exclusive with model and rason_model_path.")})},async t=>{let{model:r,rason_model_path:i,name_or_id:n}=t,o=[r,i,n].filter(l=>l!==void 0).length;if(o===0)throw new Error("Must provide one of: model, rason_model_path, or name_or_id.");if(o>1)throw new Error("Provide only one of: model, rason_model_path, or name_or_id.");let a;if(r)a=r;else if(i){let l=await sn(i);try{a=JSON.parse(l)}catch(d){throw new Error(`Failed to parse JSON from ${i}: ${d instanceof SyntaxError?d.message:"unknown error"}. The file may contain syntax errors or incomplete JSON. Read the file directly to inspect and fix the content.`)}}else{let d=(await tt("GET",`/model/${encodeURIComponent(n)}`)).content[0].text;try{a=JSON.parse(d)}catch(p){throw new Error(`Failed to parse model response for "${n}": ${p instanceof SyntaxError?p.message:"unknown error"}. Use get_model to retrieve the raw content and inspect it directly.`)}}return{content:[{type:"text",text:tF(a)}]}})}var NR=process.env.RASON_EXAMPLES_DIR||AR.default.resolve(__dirname,"../examples"),Bi=new qm({name:"rason-mcp-server",version:"2026.5.1"},{instructions:`This MCP server connects to Frontline Systems' RASON REST API (endpoint: https://rason.net, web app: https://rason.com). RASON (RESTful Analytic Solver Object Notation) is a JSON-based modeling language created by Frontline Systems, Inc. (https://www.solver.com), the creator of the Excel Solver, for defining and solving analytical models via a REST API.
312
+ `)}function OR(e){e.registerTool("describe_model",{title:"Analyze RASON Model",description:"Analyze and classify a RASON model: reliably detect model type and subtype (optimization \u2014 LP, QP, MIP, stochastic, chance-constrained; simulation; datamining \u2014 classification, regression, clustering; calculation \u2014 decision tables, box functions; multi-stage flow), inventory and classify components (variable types, constraint types, distribution families, ML pipelines, inter-stage data flow), and identify issues (missing result requests, absent validation data, empty output sections). Provides deterministic RASON-specific analysis beyond what raw JSON inspection reveals. Call whenever the user asks about, discusses, or works with a RASON model \u2014 whether open in the editor, referenced as a file, provided inline, or stored on the RASON server.",annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:I.object({model:I.record(I.string(),I.unknown()).optional().describe("The RASON model as a JSON object. Mutually exclusive with rason_model_path and name_or_id."),rason_model_path:I.string().optional().describe("Path to a file containing a RASON model. Mutually exclusive with model and name_or_id."),name_or_id:I.string().optional().describe("Name or ID of an existing model on the RASON account. The model will be fetched and analyzed. Mutually exclusive with model and rason_model_path.")})},async t=>{let{model:r,rason_model_path:i,name_or_id:n}=t,o=[r,i,n].filter(l=>l!==void 0).length;if(o===0)throw new Error("Must provide one of: model, rason_model_path, or name_or_id.");if(o>1)throw new Error("Provide only one of: model, rason_model_path, or name_or_id.");let a;if(r)a=r;else if(i){let l=await sn(i);try{a=JSON.parse(l)}catch(d){throw new Error(`Failed to parse JSON from ${i}: ${d instanceof SyntaxError?d.message:"unknown error"}. The file may contain syntax errors or incomplete JSON. Read the file directly to inspect and fix the content.`)}}else{let d=(await tt("GET",`/model/${encodeURIComponent(n)}`)).content[0].text;try{a=JSON.parse(d)}catch(p){throw new Error(`Failed to parse model response for "${n}": ${p instanceof SyntaxError?p.message:"unknown error"}. Use get_model to retrieve the raw content and inspect it directly.`)}}return{content:[{type:"text",text:tF(a)}]}})}var NR=process.env.RASON_EXAMPLES_DIR||AR.default.resolve(__dirname,"../examples"),Bi=new qm({name:"rason-mcp-server",version:"2026.5.2"},{instructions:`This MCP server connects to Frontline Systems' RASON REST API (endpoint: https://rason.net, web app: https://rason.com). RASON (RESTful Analytic Solver Object Notation) is a JSON-based modeling language created by Frontline Systems, Inc. (https://www.solver.com), the creator of the Excel Solver, for defining and solving analytical models via a REST API.
313
313
 
314
314
  RASON model types:
315
315
  - Optimization \u2014 linear, mixed-integer, nonlinear, conic, quadratic, stochastic; powered by Gurobi, XPRESS, MOSEK, KNITRO engines
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@frontlinesystems/rason-mcp-server",
3
- "version": "2026.5.1",
4
- "description": "MCP server for RASON — build, analyze, and solve optimization, simulation, data science, and decision models",
3
+ "version": "2026.5.2",
4
+ "mcpName": "io.github.frontlinesystems/rason-mcp-server",
5
+ "description": "Build, solve, and analyze RASON optimization, simulation, data science, and decision models",
5
6
  "author": "Frontline Systems (https://www.solver.com)",
6
7
  "license": "SEE LICENSE IN LICENSE",
7
8
  "repository": {