mcp-server-saxo-openapi 0.1.1__tar.gz

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 (186) hide show
  1. mcp_server_saxo_openapi-0.1.1/.gitignore +7 -0
  2. mcp_server_saxo_openapi-0.1.1/CONTRIBUTING.md +48 -0
  3. mcp_server_saxo_openapi-0.1.1/LICENSE +21 -0
  4. mcp_server_saxo_openapi-0.1.1/PKG-INFO +214 -0
  5. mcp_server_saxo_openapi-0.1.1/README.ja.md +146 -0
  6. mcp_server_saxo_openapi-0.1.1/README.md +188 -0
  7. mcp_server_saxo_openapi-0.1.1/SPEC_FRESHNESS.md +26 -0
  8. mcp_server_saxo_openapi-0.1.1/pyproject.toml +64 -0
  9. mcp_server_saxo_openapi-0.1.1/spec/json/atr/cashmanagement-beneficiaryinstructions.json +83 -0
  10. mcp_server_saxo_openapi-0.1.1/spec/json/atr/cashmanagement-cashwithdrawal.json +76 -0
  11. mcp_server_saxo_openapi-0.1.1/spec/json/atr/cashmanagement-cashwithdrawallimits.json +63 -0
  12. mcp_server_saxo_openapi-0.1.1/spec/json/atr/cashmanagement-interaccounttransfers.json +48 -0
  13. mcp_server_saxo_openapi-0.1.1/spec/json/atr/cashmanagement-periodicpayment.json +389 -0
  14. mcp_server_saxo_openapi-0.1.1/spec/json/atr/partner-cashtransfer.json +227 -0
  15. mcp_server_saxo_openapi-0.1.1/spec/json/atr/partner-cashtransferlimits.json +63 -0
  16. mcp_server_saxo_openapi-0.1.1/spec/json/atr/partner-prefunding.json +108 -0
  17. mcp_server_saxo_openapi-0.1.1/spec/json/atr/securitiestransfers.json +1268 -0
  18. mcp_server_saxo_openapi-0.1.1/spec/json/ca/elections.json +156 -0
  19. mcp_server_saxo_openapi-0.1.1/spec/json/ca/events.json +1446 -0
  20. mcp_server_saxo_openapi-0.1.1/spec/json/ca/eventviews.json +876 -0
  21. mcp_server_saxo_openapi-0.1.1/spec/json/ca/holdings.json +281 -0
  22. mcp_server_saxo_openapi-0.1.1/spec/json/ca/proxyvoting.json +347 -0
  23. mcp_server_saxo_openapi-0.1.1/spec/json/ca/standinginstructions.json +401 -0
  24. mcp_server_saxo_openapi-0.1.1/spec/json/chart/charts.json +1707 -0
  25. mcp_server_saxo_openapi-0.1.1/spec/json/cm/accounts.json +41 -0
  26. mcp_server_saxo_openapi-0.1.1/spec/json/cm/clientrenewals.json +3244 -0
  27. mcp_server_saxo_openapi-0.1.1/spec/json/cm/documents.json +108 -0
  28. mcp_server_saxo_openapi-0.1.1/spec/json/cm/signups.json +633 -0
  29. mcp_server_saxo_openapi-0.1.1/spec/json/cm/users.json +45 -0
  30. mcp_server_saxo_openapi-0.1.1/spec/json/cr/historicalreportdata-accountstatement.json +82 -0
  31. mcp_server_saxo_openapi-0.1.1/spec/json/cr/historicalreportdata-portfoliomanagement.json +157 -0
  32. mcp_server_saxo_openapi-0.1.1/spec/json/cr/historicalreportdata-tradedetails.json +82 -0
  33. mcp_server_saxo_openapi-0.1.1/spec/json/cr/historicalreportdata-tradesexecuted.json +57 -0
  34. mcp_server_saxo_openapi-0.1.1/spec/json/cs/audit-orderactivities.json +257 -0
  35. mcp_server_saxo_openapi-0.1.1/spec/json/cs/cashmanagement-interaccounttransfer.json +68 -0
  36. mcp_server_saxo_openapi-0.1.1/spec/json/cs/cashmanagement-wiretransfers.json +66 -0
  37. mcp_server_saxo_openapi-0.1.1/spec/json/cs/clientinfo.json +164 -0
  38. mcp_server_saxo_openapi-0.1.1/spec/json/cs/historicalreportdata-aggregatedamounts.json +149 -0
  39. mcp_server_saxo_openapi-0.1.1/spec/json/cs/historicalreportdata-bookings.json +257 -0
  40. mcp_server_saxo_openapi-0.1.1/spec/json/cs/historicalreportdata-closedpositions.json +111 -0
  41. mcp_server_saxo_openapi-0.1.1/spec/json/cs/historicalreportdata-trades.json +139 -0
  42. mcp_server_saxo_openapi-0.1.1/spec/json/cs/support-cases.json +565 -0
  43. mcp_server_saxo_openapi-0.1.1/spec/json/cs/tradingconditions-contractoption.json +122 -0
  44. mcp_server_saxo_openapi-0.1.1/spec/json/cs/tradingconditions-cost.json +919 -0
  45. mcp_server_saxo_openapi-0.1.1/spec/json/cs/tradingconditions.json +899 -0
  46. mcp_server_saxo_openapi-0.1.1/spec/json/dm/disclaimermanagement.json +129 -0
  47. mcp_server_saxo_openapi-0.1.1/spec/json/ens/clientactivities.json +1512 -0
  48. mcp_server_saxo_openapi-0.1.1/spec/json/hist/accountvalues.json +57 -0
  49. mcp_server_saxo_openapi-0.1.1/spec/json/hist/historicalpositions.json +800 -0
  50. mcp_server_saxo_openapi-0.1.1/spec/json/hist/performance.json +1082 -0
  51. mcp_server_saxo_openapi-0.1.1/spec/json/hist/transactions.json +367 -0
  52. mcp_server_saxo_openapi-0.1.1/spec/json/hist/unsettledamounts.json +524 -0
  53. mcp_server_saxo_openapi-0.1.1/spec/json/mkt/instrumentdocument.json +1512 -0
  54. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/advisoryaccounts.json +490 -0
  55. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/externalaccounts.json +785 -0
  56. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/fundinginstruction.json +266 -0
  57. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/interactiveesigning.json +235 -0
  58. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/interactiveidverification.json +185 -0
  59. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/partnerbulkbookings.json +80 -0
  60. mcp_server_saxo_openapi-0.1.1/spec/json/partnerintegration/updatepricing.json +716 -0
  61. mcp_server_saxo_openapi-0.1.1/spec/json/port/accountgroups.json +191 -0
  62. mcp_server_saxo_openapi-0.1.1/spec/json/port/accounts.json +1106 -0
  63. mcp_server_saxo_openapi-0.1.1/spec/json/port/balances.json +3457 -0
  64. mcp_server_saxo_openapi-0.1.1/spec/json/port/clients.json +1418 -0
  65. mcp_server_saxo_openapi-0.1.1/spec/json/port/closedpositions.json +612 -0
  66. mcp_server_saxo_openapi-0.1.1/spec/json/port/exposure.json +2987 -0
  67. mcp_server_saxo_openapi-0.1.1/spec/json/port/netpositions.json +2079 -0
  68. mcp_server_saxo_openapi-0.1.1/spec/json/port/orders.json +664 -0
  69. mcp_server_saxo_openapi-0.1.1/spec/json/port/positions.json +852 -0
  70. mcp_server_saxo_openapi-0.1.1/spec/json/port/users.json +1047 -0
  71. mcp_server_saxo_openapi-0.1.1/spec/json/ref/algostrategies.json +102 -0
  72. mcp_server_saxo_openapi-0.1.1/spec/json/ref/countries.json +244 -0
  73. mcp_server_saxo_openapi-0.1.1/spec/json/ref/cultures.json +74 -0
  74. mcp_server_saxo_openapi-0.1.1/spec/json/ref/currencies.json +91 -0
  75. mcp_server_saxo_openapi-0.1.1/spec/json/ref/currencypairs.json +86 -0
  76. mcp_server_saxo_openapi-0.1.1/spec/json/ref/exchanges.json +76 -0
  77. mcp_server_saxo_openapi-0.1.1/spec/json/ref/instruments.json +3475 -0
  78. mcp_server_saxo_openapi-0.1.1/spec/json/ref/languages.json +83 -0
  79. mcp_server_saxo_openapi-0.1.1/spec/json/ref/standarddates.json +69 -0
  80. mcp_server_saxo_openapi-0.1.1/spec/json/ref/timezones.json +129 -0
  81. mcp_server_saxo_openapi-0.1.1/spec/json/reg/financialoverview.json +483 -0
  82. mcp_server_saxo_openapi-0.1.1/spec/json/reg/investmentprofile.json +843 -0
  83. mcp_server_saxo_openapi-0.1.1/spec/json/reg/knowledgeandexperience.json +131 -0
  84. mcp_server_saxo_openapi-0.1.1/spec/json/trade/allocationkeys.json +1044 -0
  85. mcp_server_saxo_openapi-0.1.1/spec/json/trade/infoprices.json +2811 -0
  86. mcp_server_saxo_openapi-0.1.1/spec/json/trade/messages.json +362 -0
  87. mcp_server_saxo_openapi-0.1.1/spec/json/trade/optionschain.json +1179 -0
  88. mcp_server_saxo_openapi-0.1.1/spec/json/trade/orders.json +10001 -0
  89. mcp_server_saxo_openapi-0.1.1/spec/json/trade/positions.json +1395 -0
  90. mcp_server_saxo_openapi-0.1.1/spec/json/trade/prices.json +3053 -0
  91. mcp_server_saxo_openapi-0.1.1/spec/json/trade/trades.json +936 -0
  92. mcp_server_saxo_openapi-0.1.1/spec/json/vas/pricealerts.json +1933 -0
  93. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/__init__.py +32 -0
  94. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/__main__.py +6 -0
  95. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/cli.py +95 -0
  96. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/commands.py +119 -0
  97. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/__init__.py +1 -0
  98. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/cashmanagement-beneficiaryinstructions.json +83 -0
  99. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/cashmanagement-cashwithdrawal.json +76 -0
  100. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/cashmanagement-cashwithdrawallimits.json +63 -0
  101. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/cashmanagement-interaccounttransfers.json +48 -0
  102. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/cashmanagement-periodicpayment.json +389 -0
  103. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/partner-cashtransfer.json +227 -0
  104. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/partner-cashtransferlimits.json +63 -0
  105. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/partner-prefunding.json +108 -0
  106. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/atr/securitiestransfers.json +1268 -0
  107. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ca/elections.json +156 -0
  108. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ca/events.json +1446 -0
  109. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ca/eventviews.json +876 -0
  110. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ca/holdings.json +281 -0
  111. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ca/proxyvoting.json +347 -0
  112. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ca/standinginstructions.json +401 -0
  113. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/chart/charts.json +1707 -0
  114. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cm/accounts.json +41 -0
  115. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cm/clientrenewals.json +3244 -0
  116. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cm/documents.json +108 -0
  117. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cm/signups.json +633 -0
  118. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cm/users.json +45 -0
  119. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cr/historicalreportdata-accountstatement.json +82 -0
  120. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cr/historicalreportdata-portfoliomanagement.json +157 -0
  121. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cr/historicalreportdata-tradedetails.json +82 -0
  122. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cr/historicalreportdata-tradesexecuted.json +57 -0
  123. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/audit-orderactivities.json +257 -0
  124. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/cashmanagement-interaccounttransfer.json +68 -0
  125. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/cashmanagement-wiretransfers.json +66 -0
  126. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/clientinfo.json +164 -0
  127. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/historicalreportdata-aggregatedamounts.json +149 -0
  128. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/historicalreportdata-bookings.json +257 -0
  129. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/historicalreportdata-closedpositions.json +111 -0
  130. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/historicalreportdata-trades.json +139 -0
  131. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/support-cases.json +565 -0
  132. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/tradingconditions-contractoption.json +122 -0
  133. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/tradingconditions-cost.json +919 -0
  134. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/cs/tradingconditions.json +899 -0
  135. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/dm/disclaimermanagement.json +129 -0
  136. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ens/clientactivities.json +1512 -0
  137. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/hist/accountvalues.json +57 -0
  138. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/hist/historicalpositions.json +800 -0
  139. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/hist/performance.json +1082 -0
  140. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/hist/transactions.json +367 -0
  141. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/hist/unsettledamounts.json +524 -0
  142. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/mkt/instrumentdocument.json +1512 -0
  143. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/advisoryaccounts.json +490 -0
  144. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/externalaccounts.json +785 -0
  145. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/fundinginstruction.json +266 -0
  146. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/interactiveesigning.json +235 -0
  147. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/interactiveidverification.json +185 -0
  148. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/partnerbulkbookings.json +80 -0
  149. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/partnerintegration/updatepricing.json +716 -0
  150. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/accountgroups.json +191 -0
  151. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/accounts.json +1106 -0
  152. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/balances.json +3457 -0
  153. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/clients.json +1418 -0
  154. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/closedpositions.json +612 -0
  155. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/exposure.json +2987 -0
  156. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/netpositions.json +2079 -0
  157. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/orders.json +664 -0
  158. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/positions.json +852 -0
  159. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/port/users.json +1047 -0
  160. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/algostrategies.json +102 -0
  161. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/countries.json +244 -0
  162. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/cultures.json +74 -0
  163. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/currencies.json +91 -0
  164. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/currencypairs.json +86 -0
  165. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/exchanges.json +76 -0
  166. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/instruments.json +3475 -0
  167. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/languages.json +83 -0
  168. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/standarddates.json +69 -0
  169. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/ref/timezones.json +129 -0
  170. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/reg/financialoverview.json +483 -0
  171. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/reg/investmentprofile.json +843 -0
  172. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/reg/knowledgeandexperience.json +131 -0
  173. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/allocationkeys.json +1044 -0
  174. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/infoprices.json +2811 -0
  175. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/messages.json +362 -0
  176. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/optionschain.json +1179 -0
  177. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/orders.json +10001 -0
  178. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/positions.json +1395 -0
  179. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/prices.json +3053 -0
  180. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/trade/trades.json +936 -0
  181. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/data/json/vas/pricealerts.json +1933 -0
  182. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/index.py +151 -0
  183. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/mcp_server.py +146 -0
  184. mcp_server_saxo_openapi-0.1.1/src/saxo_doc_helper/py.typed +0 -0
  185. mcp_server_saxo_openapi-0.1.1/tests/test_saxo_doc_helper.py +146 -0
  186. mcp_server_saxo_openapi-0.1.1/tools/saxo_doc_helper.py +22 -0
@@ -0,0 +1,7 @@
1
+ __pycache__/
2
+ *.pyc
3
+ dist/
4
+ *.egg-info/
5
+ .eggs/
6
+ build/
7
+ .venv/
@@ -0,0 +1,48 @@
1
+ # Contributing
2
+
3
+ Thank you for your interest in **mcp-server-saxo-openapi**.
4
+
5
+ ## What we welcome
6
+
7
+ - Bug reports and reproducible examples for `saxo-doc-helper` / MCP
8
+ - Improvements to CLI/MCP ergonomics (normalization, error messages, tests)
9
+ - Documentation fixes in `README.md` / `README.ja.md`
10
+
11
+ ## What is harder to accept
12
+
13
+ - Hand-editing large files under `spec/json/` — specs are generated from the Saxo Developer Portal. Prefer the maintainer regeneration flow.
14
+
15
+ ## Updating the spec database
16
+
17
+ If you maintain a full development workspace with the crawler pipeline, see [docs/MAINTAINER.md](docs/MAINTAINER.md).
18
+
19
+ Otherwise, open an issue describing which Saxo endpoint or schema looks stale, with a link to the official Saxo reference page.
20
+
21
+ ## Development setup
22
+
23
+ ```bash
24
+ git clone https://github.com/nohikomiso/mcp-server-saxo-openapi.git
25
+ cd mcp-server-saxo-openapi
26
+ uv sync
27
+ uv run python -m unittest discover -s tests -v
28
+ ```
29
+
30
+ No third-party runtime dependencies (Python standard library only).
31
+
32
+ Before a release, sync packaged data from the maintainer source of truth:
33
+
34
+ ```bash
35
+ rm -rf src/saxo_doc_helper/data/json
36
+ cp -a spec/json src/saxo_doc_helper/data/json
37
+ ```
38
+
39
+ ## Pull requests
40
+
41
+ 1. Fork and create a branch from `main`
42
+ 2. Run `uv run python -m unittest discover -s tests -v`
43
+ 3. Keep README changes in sync across English and Japanese when both are affected
44
+ 4. Open a PR with a short summary and test evidence
45
+
46
+ ## License
47
+
48
+ By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 nohikomiso
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,214 @@
1
+ Metadata-Version: 2.4
2
+ Name: mcp-server-saxo-openapi
3
+ Version: 0.1.1
4
+ Summary: MCP server and CLI for Saxo Bank OpenAPI spec lookup (offline; no trading)
5
+ Project-URL: Homepage, https://github.com/nohikomiso/mcp-server-saxo-openapi
6
+ Project-URL: Repository, https://github.com/nohikomiso/mcp-server-saxo-openapi
7
+ Project-URL: Issues, https://github.com/nohikomiso/mcp-server-saxo-openapi/issues
8
+ Author: nohikomiso
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: cli,mcp,model-context-protocol,openapi,saxo,saxo-bank,saxobank,trading
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Libraries
23
+ Classifier: Typing :: Typed
24
+ Requires-Python: >=3.10
25
+ Description-Content-Type: text/markdown
26
+
27
+ # mcp-server-saxo-openapi
28
+
29
+ **Saxo Bank OpenAPI spec lookup — CLI tool and MCP server**
30
+
31
+ English | [日本語](https://github.com/nohikomiso/mcp-server-saxo-openapi/blob/main/README.ja.md)
32
+
33
+ ---
34
+
35
+ ![License](https://img.shields.io/badge/license-MIT-green.svg)
36
+ ![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
37
+ ![CLI](https://img.shields.io/badge/CLI-saxo--doc--helper-blue.svg)
38
+ ![MCP](https://img.shields.io/badge/MCP-stdio-orange.svg)
39
+ ![Spec updated](https://img.shields.io/github/last-commit/nohikomiso/mcp-server-saxo-openapi/main?label=spec%20updated)
40
+
41
+ Look up **Saxo Bank** / **Saxobank** OpenAPI endpoint parameters and JSON samples from your terminal, or attach the same tools to Cursor, Claude Desktop, and other MCP clients — without wrestling the deep official reference tree.
42
+
43
+ Zero third-party dependencies (Python stdlib only). Spec database: ~260 endpoints across 17 service groups, shipped inside the wheel.
44
+
45
+ ---
46
+
47
+ ## Spec snapshot
48
+
49
+ **Spec snapshot: 2026-07-08** (Saxo Release Notes through **2025/05/15**).
50
+
51
+ Structured endpoint specs for agents and developers. Saxo does not publish a single docs semver; we record the crawl date and the newest Release Notes heading present at that time. Details: [SPEC_FRESHNESS.md](SPEC_FRESHNESS.md).
52
+
53
+ Missing endpoint, wrong parameter, or something that looks out of date? Please [open an Issue](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues). Pull requests: [CONTRIBUTING.md](CONTRIBUTING.md).
54
+
55
+ ---
56
+
57
+ ## What this is / is not
58
+
59
+ | This package | Not this package |
60
+ |--------------|------------------|
61
+ | Offline **spec lookup** (CLI + MCP) | Live trading / portfolio API calls |
62
+ | No Saxo credentials required | OAuth, order placement, balances |
63
+ | Token-efficient progressive disclosure | A substitute for a full OpenAPI client |
64
+
65
+ For **live** Saxo OpenAPI access from an MCP client, see community servers such as [`@borgels/mcp-server-saxo`](https://www.npmjs.com/package/@borgels/mcp-server-saxo) (npm, unofficial, separate project).
66
+
67
+ **Unofficial** — not affiliated with or endorsed by Saxo Bank A/S.
68
+
69
+ ---
70
+
71
+ ## Features
72
+
73
+ - **Structured spec database** — nested parameters and request/response samples
74
+ - **CLI** — `search-endpoints`, `get-endpoint`, `get-schema` with depth control and "Did you mean?" suggestions
75
+ - **MCP server** — stdio JSON-RPC; same three tools
76
+ - **Token-efficient** — progressive disclosure (collapsed nested schemas, drill down on demand)
77
+
78
+ **Requirements:** Python 3.10+
79
+
80
+ ---
81
+
82
+ ## Getting started — recommended (uvx)
83
+
84
+ ### Production PyPI
85
+
86
+ ```bash
87
+ uvx mcp-server-saxo-openapi
88
+ uvx --from mcp-server-saxo-openapi saxo-doc-helper search-endpoints orders
89
+ uvx --from mcp-server-saxo-openapi saxo-doc-helper --version
90
+ ```
91
+
92
+ `uvx` resolves the **package** name; use `--from mcp-server-saxo-openapi` to run the `saxo-doc-helper` console script.
93
+
94
+ MCP client config:
95
+
96
+ ```json
97
+ {
98
+ "mcpServers": {
99
+ "saxo-openapi": {
100
+ "command": "uvx",
101
+ "args": ["mcp-server-saxo-openapi"]
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### From GitHub
108
+
109
+ ```bash
110
+ uvx --from git+https://github.com/nohikomiso/mcp-server-saxo-openapi.git saxo-doc-helper search-endpoints orders
111
+ uvx --from git+https://github.com/nohikomiso/mcp-server-saxo-openapi.git mcp-server-saxo-openapi
112
+ ```
113
+
114
+ ### TestPyPI (development only)
115
+
116
+ ```bash
117
+ uvx --index-url https://test.pypi.org/simple/ \
118
+ --index https://pypi.org/simple/ \
119
+ --from mcp-server-saxo-openapi \
120
+ saxo-doc-helper search-endpoints orders
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Getting started — local clone
126
+
127
+ ```bash
128
+ git clone https://github.com/nohikomiso/mcp-server-saxo-openapi.git
129
+ cd mcp-server-saxo-openapi
130
+ python tools/saxo_doc_helper.py search-endpoints orders
131
+ python tools/saxo_doc_helper.py get-endpoint POST /trade/v2/orders
132
+ python tools/saxo_doc_helper.py get-schema algorithmicorderdata
133
+ ```
134
+
135
+ Or install editable:
136
+
137
+ ```bash
138
+ uv sync
139
+ uv run saxo-doc-helper --version
140
+ uv run saxo-doc-helper search-endpoints orders
141
+ ```
142
+
143
+ ### Input normalization
144
+
145
+ | Input | Normalized |
146
+ |-------|------------|
147
+ | `post` | `POST` |
148
+ | `trade/v2/orders` | `/trade/v2/orders` |
149
+ | `https://gateway.saxobank.com/sim/openapi/trade/v2/orders` | `/trade/v2/orders` |
150
+
151
+ If no exact match is found, **Did you mean?** suggestions are returned.
152
+
153
+ ---
154
+
155
+ ## MCP tools exposed
156
+
157
+ | Tool | Description |
158
+ |------|-------------|
159
+ | `search_saxo_endpoints(query)` | Keyword search across all endpoints |
160
+ | `get_saxo_endpoint_spec(method, path, depth?)` | Parameters + request/response samples |
161
+ | `get_saxo_schema_spec(schema_name, depth?)` | Nested schema drill-down |
162
+
163
+ ---
164
+
165
+ ## Agent integration
166
+
167
+ > When researching Saxo OpenAPI specs, do **not** read `spec/json/` files directly.
168
+ > Use `saxo-doc-helper` (or `python tools/saxo_doc_helper.py` from a clone).
169
+
170
+ ---
171
+
172
+ ## Repository layout
173
+
174
+ ```text
175
+ mcp-server-saxo-openapi/
176
+ ├── pyproject.toml
177
+ ├── SPEC_FRESHNESS.md
178
+ ├── LICENSE
179
+ ├── README.md / README.ja.md
180
+ ├── CONTRIBUTING.md
181
+ ├── docs/
182
+ │ └── MAINTAINER.md
183
+ ├── src/saxo_doc_helper/ # installable package (+ data/json)
184
+ ├── spec/json/ # maintainer source of truth
185
+ ├── tests/
186
+ └── tools/
187
+ └── saxo_doc_helper.py # thin clone-compatible wrapper
188
+ ```
189
+
190
+ ---
191
+
192
+ ## Related projects
193
+
194
+ | Project | Role |
195
+ |---------|------|
196
+ | [saxo-apy](https://github.com/nohikomiso/saxo-apy) | OAuth and session management |
197
+ | [saxo-openapi](https://github.com/nohikomiso/saxo-openapi) | Python REST/WebSocket client (AI-ready) |
198
+ | [@borgels/mcp-server-saxo](https://www.npmjs.com/package/@borgels/mcp-server-saxo) | Live Saxo OpenAPI MCP (npm; unofficial) |
199
+
200
+ This repository provides **spec lookup**. Runtime API access is a separate concern.
201
+
202
+ ---
203
+
204
+ ## Feedback and maintainers
205
+
206
+ - Bugs / stale specs: [GitHub Issues](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues)
207
+ - Maintainers: [docs/MAINTAINER.md](docs/MAINTAINER.md)
208
+ - Source crawl: public Saxo Developer Portal reference docs
209
+
210
+ ---
211
+
212
+ ## License
213
+
214
+ [MIT License](LICENSE)
@@ -0,0 +1,146 @@
1
+ # mcp-server-saxo-openapi
2
+
3
+ **Saxo Bank / サクソバンク証券 OpenAPI 仕様ルックアップ — CLI と MCP サーバー**
4
+
5
+ [English](https://github.com/nohikomiso/mcp-server-saxo-openapi/blob/main/README.md) | 日本語
6
+
7
+ ---
8
+
9
+ ![License](https://img.shields.io/badge/license-MIT-green.svg)
10
+ ![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
11
+ ![CLI](https://img.shields.io/badge/CLI-saxo--doc--helper-blue.svg)
12
+ ![MCP](https://img.shields.io/badge/MCP-stdio-orange.svg)
13
+ ![Spec updated](https://img.shields.io/github/last-commit/nohikomiso/mcp-server-saxo-openapi/main?label=spec%20updated)
14
+
15
+ ターミナルまたは Cursor / Claude Desktop などの MCP クライアントから、**サクソバンク証券(Saxo Bank)** OpenAPI のエンドポイントパラメータと JSON サンプルを参照できます。公式リファレンスツリーが深すぎて辿りにくい、という問題向けです。
16
+
17
+ サードパーティ依存なし(Python 標準ライブラリのみ)。仕様 DB は約 260 エンドポイント / 17 サービスグループで、wheel にも同梱されます。
18
+
19
+ ---
20
+
21
+ ## Spec snapshot
22
+
23
+ **Spec snapshot: 2026-07-08**(Saxo Release Notes through **2025/05/15**)。
24
+
25
+ エージェント向けに再構成したスナップショットです。Saxo にドキュメント全体の semver はなく、クロール日と当時の最新 Release Notes 見出しを記録します。詳細: [SPEC_FRESHNESS.md](SPEC_FRESHNESS.md)。
26
+
27
+ 欠け・誤り・古さを見つけたら [Issue](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues) をください。PR: [CONTRIBUTING.md](CONTRIBUTING.md)。
28
+
29
+ ---
30
+
31
+ ## これは何か / 何かではないか
32
+
33
+ | 本パッケージ | 対象外 |
34
+ |--------------|--------|
35
+ | オフラインの **仕様ルックアップ**(CLI + MCP) | ライブ取引・ポートフォリオ API |
36
+ | Saxo 認証情報は不要 | OAuth・発注・残高照会 |
37
+ | トークン効率の段階的開示 | フル OpenAPI クライアントの代替 |
38
+
39
+ **ライブ** API を MCP から叩く場合は、コミュニティの [`@borgels/mcp-server-saxo`](https://www.npmjs.com/package/@borgels/mcp-server-saxo)(npm・非公式・別プロジェクト)などを参照。
40
+
41
+ **非公式** — Saxo Bank A/S との提携・推奨はありません。
42
+
43
+ ---
44
+
45
+ ## 機能
46
+
47
+ - **構造化仕様 DB** — ネストパラメータと Request/Response サンプル
48
+ - **CLI** — `search-endpoints` / `get-endpoint` / `get-schema`(depth 制御・Did you mean?)
49
+ - **MCP サーバー** — stdio JSON-RPC、同じ 3 ツール
50
+ - **トークン効率** — 段階的開示
51
+
52
+ **要件:** Python 3.10+
53
+
54
+ ---
55
+
56
+ ## はじめに — 推奨(uvx)
57
+
58
+ ### 本番 PyPI
59
+
60
+ ```bash
61
+ uvx mcp-server-saxo-openapi
62
+ uvx --from mcp-server-saxo-openapi saxo-doc-helper search-endpoints orders
63
+ uvx --from mcp-server-saxo-openapi saxo-doc-helper --version
64
+ ```
65
+
66
+ CLI はパッケージ名と違うため `--from mcp-server-saxo-openapi` が必要です。
67
+
68
+ MCP 設定例:
69
+
70
+ ```json
71
+ {
72
+ "mcpServers": {
73
+ "saxo-openapi": {
74
+ "command": "uvx",
75
+ "args": ["mcp-server-saxo-openapi"]
76
+ }
77
+ }
78
+ }
79
+ ```
80
+
81
+ ### GitHub から
82
+
83
+ ```bash
84
+ uvx --from git+https://github.com/nohikomiso/mcp-server-saxo-openapi.git saxo-doc-helper search-endpoints orders
85
+ ```
86
+
87
+ ### TestPyPI(開発用)
88
+
89
+ ```bash
90
+ uvx --index-url https://test.pypi.org/simple/ \
91
+ --index https://pypi.org/simple/ \
92
+ --from mcp-server-saxo-openapi \
93
+ saxo-doc-helper search-endpoints orders
94
+ ```
95
+
96
+ ---
97
+
98
+ ## はじめに — ローカル clone
99
+
100
+ ```bash
101
+ git clone https://github.com/nohikomiso/mcp-server-saxo-openapi.git
102
+ cd mcp-server-saxo-openapi
103
+ python tools/saxo_doc_helper.py search-endpoints orders
104
+ ```
105
+
106
+ または:
107
+
108
+ ```bash
109
+ uv sync
110
+ uv run saxo-doc-helper --version
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 公開 MCP ツール
116
+
117
+ | ツール | 説明 |
118
+ |--------|------|
119
+ | `search_saxo_endpoints(query)` | 全エンドポイントをキーワード検索 |
120
+ | `get_saxo_endpoint_spec(method, path, depth?)` | パラメータ + サンプル JSON |
121
+ | `get_saxo_schema_spec(schema_name, depth?)` | ネストスキーマのドリルダウン |
122
+
123
+ ---
124
+
125
+ ## 関連プロジェクト
126
+
127
+ | プロジェクト | 役割 |
128
+ |--------------|------|
129
+ | [saxo-apy](https://github.com/nohikomiso/saxo-apy) | OAuth / セッション |
130
+ | [saxo-openapi](https://github.com/nohikomiso/saxo-openapi) | REST/WebSocket クライアント |
131
+ | [@borgels/mcp-server-saxo](https://www.npmjs.com/package/@borgels/mcp-server-saxo) | ライブ Saxo OpenAPI MCP(npm・非公式) |
132
+
133
+ 本リポジトリは **仕様ルックアップ**。ランタイム API は別レイヤーです。
134
+
135
+ ---
136
+
137
+ ## フィードバック
138
+
139
+ - 不具合・古い仕様: [GitHub Issues](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues)
140
+ - メンテ: [docs/MAINTAINER.md](docs/MAINTAINER.md)
141
+
142
+ ---
143
+
144
+ ## License
145
+
146
+ [MIT License](LICENSE)
@@ -0,0 +1,188 @@
1
+ # mcp-server-saxo-openapi
2
+
3
+ **Saxo Bank OpenAPI spec lookup — CLI tool and MCP server**
4
+
5
+ English | [日本語](https://github.com/nohikomiso/mcp-server-saxo-openapi/blob/main/README.ja.md)
6
+
7
+ ---
8
+
9
+ ![License](https://img.shields.io/badge/license-MIT-green.svg)
10
+ ![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
11
+ ![CLI](https://img.shields.io/badge/CLI-saxo--doc--helper-blue.svg)
12
+ ![MCP](https://img.shields.io/badge/MCP-stdio-orange.svg)
13
+ ![Spec updated](https://img.shields.io/github/last-commit/nohikomiso/mcp-server-saxo-openapi/main?label=spec%20updated)
14
+
15
+ Look up **Saxo Bank** / **Saxobank** OpenAPI endpoint parameters and JSON samples from your terminal, or attach the same tools to Cursor, Claude Desktop, and other MCP clients — without wrestling the deep official reference tree.
16
+
17
+ Zero third-party dependencies (Python stdlib only). Spec database: ~260 endpoints across 17 service groups, shipped inside the wheel.
18
+
19
+ ---
20
+
21
+ ## Spec snapshot
22
+
23
+ **Spec snapshot: 2026-07-08** (Saxo Release Notes through **2025/05/15**).
24
+
25
+ Structured endpoint specs for agents and developers. Saxo does not publish a single docs semver; we record the crawl date and the newest Release Notes heading present at that time. Details: [SPEC_FRESHNESS.md](SPEC_FRESHNESS.md).
26
+
27
+ Missing endpoint, wrong parameter, or something that looks out of date? Please [open an Issue](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues). Pull requests: [CONTRIBUTING.md](CONTRIBUTING.md).
28
+
29
+ ---
30
+
31
+ ## What this is / is not
32
+
33
+ | This package | Not this package |
34
+ |--------------|------------------|
35
+ | Offline **spec lookup** (CLI + MCP) | Live trading / portfolio API calls |
36
+ | No Saxo credentials required | OAuth, order placement, balances |
37
+ | Token-efficient progressive disclosure | A substitute for a full OpenAPI client |
38
+
39
+ For **live** Saxo OpenAPI access from an MCP client, see community servers such as [`@borgels/mcp-server-saxo`](https://www.npmjs.com/package/@borgels/mcp-server-saxo) (npm, unofficial, separate project).
40
+
41
+ **Unofficial** — not affiliated with or endorsed by Saxo Bank A/S.
42
+
43
+ ---
44
+
45
+ ## Features
46
+
47
+ - **Structured spec database** — nested parameters and request/response samples
48
+ - **CLI** — `search-endpoints`, `get-endpoint`, `get-schema` with depth control and "Did you mean?" suggestions
49
+ - **MCP server** — stdio JSON-RPC; same three tools
50
+ - **Token-efficient** — progressive disclosure (collapsed nested schemas, drill down on demand)
51
+
52
+ **Requirements:** Python 3.10+
53
+
54
+ ---
55
+
56
+ ## Getting started — recommended (uvx)
57
+
58
+ ### Production PyPI
59
+
60
+ ```bash
61
+ uvx mcp-server-saxo-openapi
62
+ uvx --from mcp-server-saxo-openapi saxo-doc-helper search-endpoints orders
63
+ uvx --from mcp-server-saxo-openapi saxo-doc-helper --version
64
+ ```
65
+
66
+ `uvx` resolves the **package** name; use `--from mcp-server-saxo-openapi` to run the `saxo-doc-helper` console script.
67
+
68
+ MCP client config:
69
+
70
+ ```json
71
+ {
72
+ "mcpServers": {
73
+ "saxo-openapi": {
74
+ "command": "uvx",
75
+ "args": ["mcp-server-saxo-openapi"]
76
+ }
77
+ }
78
+ }
79
+ ```
80
+
81
+ ### From GitHub
82
+
83
+ ```bash
84
+ uvx --from git+https://github.com/nohikomiso/mcp-server-saxo-openapi.git saxo-doc-helper search-endpoints orders
85
+ uvx --from git+https://github.com/nohikomiso/mcp-server-saxo-openapi.git mcp-server-saxo-openapi
86
+ ```
87
+
88
+ ### TestPyPI (development only)
89
+
90
+ ```bash
91
+ uvx --index-url https://test.pypi.org/simple/ \
92
+ --index https://pypi.org/simple/ \
93
+ --from mcp-server-saxo-openapi \
94
+ saxo-doc-helper search-endpoints orders
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Getting started — local clone
100
+
101
+ ```bash
102
+ git clone https://github.com/nohikomiso/mcp-server-saxo-openapi.git
103
+ cd mcp-server-saxo-openapi
104
+ python tools/saxo_doc_helper.py search-endpoints orders
105
+ python tools/saxo_doc_helper.py get-endpoint POST /trade/v2/orders
106
+ python tools/saxo_doc_helper.py get-schema algorithmicorderdata
107
+ ```
108
+
109
+ Or install editable:
110
+
111
+ ```bash
112
+ uv sync
113
+ uv run saxo-doc-helper --version
114
+ uv run saxo-doc-helper search-endpoints orders
115
+ ```
116
+
117
+ ### Input normalization
118
+
119
+ | Input | Normalized |
120
+ |-------|------------|
121
+ | `post` | `POST` |
122
+ | `trade/v2/orders` | `/trade/v2/orders` |
123
+ | `https://gateway.saxobank.com/sim/openapi/trade/v2/orders` | `/trade/v2/orders` |
124
+
125
+ If no exact match is found, **Did you mean?** suggestions are returned.
126
+
127
+ ---
128
+
129
+ ## MCP tools exposed
130
+
131
+ | Tool | Description |
132
+ |------|-------------|
133
+ | `search_saxo_endpoints(query)` | Keyword search across all endpoints |
134
+ | `get_saxo_endpoint_spec(method, path, depth?)` | Parameters + request/response samples |
135
+ | `get_saxo_schema_spec(schema_name, depth?)` | Nested schema drill-down |
136
+
137
+ ---
138
+
139
+ ## Agent integration
140
+
141
+ > When researching Saxo OpenAPI specs, do **not** read `spec/json/` files directly.
142
+ > Use `saxo-doc-helper` (or `python tools/saxo_doc_helper.py` from a clone).
143
+
144
+ ---
145
+
146
+ ## Repository layout
147
+
148
+ ```text
149
+ mcp-server-saxo-openapi/
150
+ ├── pyproject.toml
151
+ ├── SPEC_FRESHNESS.md
152
+ ├── LICENSE
153
+ ├── README.md / README.ja.md
154
+ ├── CONTRIBUTING.md
155
+ ├── docs/
156
+ │ └── MAINTAINER.md
157
+ ├── src/saxo_doc_helper/ # installable package (+ data/json)
158
+ ├── spec/json/ # maintainer source of truth
159
+ ├── tests/
160
+ └── tools/
161
+ └── saxo_doc_helper.py # thin clone-compatible wrapper
162
+ ```
163
+
164
+ ---
165
+
166
+ ## Related projects
167
+
168
+ | Project | Role |
169
+ |---------|------|
170
+ | [saxo-apy](https://github.com/nohikomiso/saxo-apy) | OAuth and session management |
171
+ | [saxo-openapi](https://github.com/nohikomiso/saxo-openapi) | Python REST/WebSocket client (AI-ready) |
172
+ | [@borgels/mcp-server-saxo](https://www.npmjs.com/package/@borgels/mcp-server-saxo) | Live Saxo OpenAPI MCP (npm; unofficial) |
173
+
174
+ This repository provides **spec lookup**. Runtime API access is a separate concern.
175
+
176
+ ---
177
+
178
+ ## Feedback and maintainers
179
+
180
+ - Bugs / stale specs: [GitHub Issues](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues)
181
+ - Maintainers: [docs/MAINTAINER.md](docs/MAINTAINER.md)
182
+ - Source crawl: public Saxo Developer Portal reference docs
183
+
184
+ ---
185
+
186
+ ## License
187
+
188
+ [MIT License](LICENSE)
@@ -0,0 +1,26 @@
1
+ # Spec freshness
2
+
3
+ | Field | Value |
4
+ |-------|-------|
5
+ | **Spec snapshot** | `2026-07-08` |
6
+ | **Saxo Release Notes through** | `2025/05/15` |
7
+ | Package version | `0.1.1` (tool/PyPI version; independent of the snapshot dates) |
8
+
9
+ There is **no single semver** for the whole Saxo OpenAPI documentation set. Saxo publishes dated [Release Notes](https://www.developer.saxo/openapi/releasenotes/release-notes) (e.g. `Release 2025/05/15`). Endpoint paths may contain `v1`/`v2` — those are per-service API versions, not a global docs version.
10
+
11
+ ## What the dates mean
12
+
13
+ - **Spec snapshot** — the day this repository’s structured `spec/json/` was crawled/synced from the Saxo Developer Portal.
14
+ - **Saxo Release Notes through** — the newest Release Notes heading present on the portal when that snapshot was taken.
15
+
16
+ ## Source
17
+
18
+ - Reference docs: https://www.developer.saxo/openapi/referencedocs
19
+ - Release notes: https://www.developer.saxo/openapi/releasenotes
20
+ - Planned changes: https://www.developer.saxo/openapi/releasenotes/planned-changes
21
+
22
+ Maintainers detect portal updates by hashing the Release Notes and Planned Changes pages (see the private workspace crawler `check_change_detection`), then re-crawl, update this file, sync package data, and publish a new package version.
23
+
24
+ ## Feedback
25
+
26
+ Missing endpoint, wrong parameter, or something that looks out of date? Please [open an Issue](https://github.com/nohikomiso/mcp-server-saxo-openapi/issues).