@codeqr/ts-mcp 0.9.0 → 0.19.3

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 (479) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +16 -218
  3. package/auth.d.mts +6 -0
  4. package/auth.d.mts.map +1 -0
  5. package/auth.d.ts +6 -0
  6. package/auth.d.ts.map +1 -0
  7. package/auth.js +37 -0
  8. package/auth.js.map +1 -0
  9. package/{headers.mjs → auth.mjs} +16 -2
  10. package/auth.mjs.map +1 -0
  11. package/code-tool-paths.cjs +8 -0
  12. package/code-tool-paths.cjs.map +1 -0
  13. package/code-tool-paths.d.cts +2 -0
  14. package/code-tool-paths.d.cts.map +1 -0
  15. package/code-tool-types.d.mts +7 -9
  16. package/code-tool-types.d.mts.map +1 -1
  17. package/code-tool-types.d.ts +7 -9
  18. package/code-tool-types.d.ts.map +1 -1
  19. package/code-tool-worker.d.mts +5 -0
  20. package/code-tool-worker.d.mts.map +1 -0
  21. package/code-tool-worker.d.ts +5 -0
  22. package/code-tool-worker.d.ts.map +1 -0
  23. package/code-tool-worker.js +249 -0
  24. package/code-tool-worker.js.map +1 -0
  25. package/code-tool-worker.mjs +244 -0
  26. package/code-tool-worker.mjs.map +1 -0
  27. package/code-tool.d.mts +12 -45
  28. package/code-tool.d.mts.map +1 -1
  29. package/code-tool.d.ts +12 -45
  30. package/code-tool.d.ts.map +1 -1
  31. package/code-tool.js +315 -27
  32. package/code-tool.js.map +1 -1
  33. package/code-tool.mjs +282 -27
  34. package/code-tool.mjs.map +1 -1
  35. package/docs-search-tool.d.mts +10 -3
  36. package/docs-search-tool.d.mts.map +1 -1
  37. package/docs-search-tool.d.ts +10 -3
  38. package/docs-search-tool.d.ts.map +1 -1
  39. package/docs-search-tool.js +29 -6
  40. package/docs-search-tool.js.map +1 -1
  41. package/docs-search-tool.mjs +29 -6
  42. package/docs-search-tool.mjs.map +1 -1
  43. package/http.d.mts +6 -3
  44. package/http.d.mts.map +1 -1
  45. package/http.d.ts +6 -3
  46. package/http.d.ts.map +1 -1
  47. package/http.js +108 -49
  48. package/http.js.map +1 -1
  49. package/http.mjs +108 -49
  50. package/http.mjs.map +1 -1
  51. package/index.js +19 -50
  52. package/index.js.map +1 -1
  53. package/index.mjs +19 -50
  54. package/index.mjs.map +1 -1
  55. package/instructions.d.mts +2 -0
  56. package/instructions.d.mts.map +1 -0
  57. package/instructions.d.ts +2 -0
  58. package/instructions.d.ts.map +1 -0
  59. package/instructions.js +42 -0
  60. package/instructions.js.map +1 -0
  61. package/instructions.mjs +39 -0
  62. package/instructions.mjs.map +1 -0
  63. package/logger.d.mts +7 -0
  64. package/logger.d.mts.map +1 -0
  65. package/logger.d.ts +7 -0
  66. package/logger.d.ts.map +1 -0
  67. package/logger.js +29 -0
  68. package/logger.js.map +1 -0
  69. package/logger.mjs +22 -0
  70. package/logger.mjs.map +1 -0
  71. package/methods.d.mts +10 -0
  72. package/methods.d.mts.map +1 -0
  73. package/methods.d.ts +10 -0
  74. package/methods.d.ts.map +1 -0
  75. package/methods.js +215 -0
  76. package/methods.js.map +1 -0
  77. package/methods.mjs +211 -0
  78. package/methods.mjs.map +1 -0
  79. package/options.d.mts +9 -9
  80. package/options.d.mts.map +1 -1
  81. package/options.d.ts +9 -9
  82. package/options.d.ts.map +1 -1
  83. package/options.js +54 -359
  84. package/options.js.map +1 -1
  85. package/options.mjs +54 -359
  86. package/options.mjs.map +1 -1
  87. package/package.json +83 -60
  88. package/server.d.mts +11 -16
  89. package/server.d.mts.map +1 -1
  90. package/server.d.ts +11 -16
  91. package/server.d.ts.map +1 -1
  92. package/server.js +86 -101
  93. package/server.js.map +1 -1
  94. package/server.mjs +85 -96
  95. package/server.mjs.map +1 -1
  96. package/src/{headers.ts → auth.ts} +18 -1
  97. package/src/code-tool-paths.cts +5 -0
  98. package/src/code-tool-types.ts +8 -9
  99. package/src/code-tool-worker.ts +295 -0
  100. package/src/code-tool.ts +371 -34
  101. package/src/docs-search-tool.ts +48 -7
  102. package/src/http.ts +128 -54
  103. package/src/index.ts +22 -63
  104. package/src/instructions.ts +60 -0
  105. package/src/logger.ts +28 -0
  106. package/src/methods.ts +236 -0
  107. package/src/options.ts +72 -384
  108. package/src/server.ts +99 -116
  109. package/src/stdio.ts +6 -5
  110. package/src/{tools/types.ts → types.ts} +14 -5
  111. package/src/util.ts +25 -0
  112. package/stdio.d.mts +1 -1
  113. package/stdio.d.mts.map +1 -1
  114. package/stdio.d.ts +1 -1
  115. package/stdio.d.ts.map +1 -1
  116. package/stdio.js +5 -4
  117. package/stdio.js.map +1 -1
  118. package/stdio.mjs +5 -4
  119. package/stdio.mjs.map +1 -1
  120. package/{tools/types.d.mts → types.d.mts} +10 -2
  121. package/types.d.mts.map +1 -0
  122. package/{tools/types.d.ts → types.d.ts} +10 -2
  123. package/types.d.ts.map +1 -0
  124. package/types.js.map +1 -0
  125. package/types.mjs.map +1 -0
  126. package/util.d.mts +4 -0
  127. package/util.d.mts.map +1 -0
  128. package/util.d.ts +4 -0
  129. package/util.d.ts.map +1 -0
  130. package/util.js +30 -0
  131. package/util.js.map +1 -0
  132. package/util.mjs +24 -0
  133. package/util.mjs.map +1 -0
  134. package/compat.d.mts +0 -58
  135. package/compat.d.mts.map +0 -1
  136. package/compat.d.ts +0 -58
  137. package/compat.d.ts.map +0 -1
  138. package/compat.js +0 -387
  139. package/compat.js.map +0 -1
  140. package/compat.mjs +0 -378
  141. package/compat.mjs.map +0 -1
  142. package/dynamic-tools.d.mts +0 -12
  143. package/dynamic-tools.d.mts.map +0 -1
  144. package/dynamic-tools.d.ts +0 -12
  145. package/dynamic-tools.d.ts.map +0 -1
  146. package/dynamic-tools.js +0 -135
  147. package/dynamic-tools.js.map +0 -1
  148. package/dynamic-tools.mjs +0 -132
  149. package/dynamic-tools.mjs.map +0 -1
  150. package/filtering.d.mts +0 -3
  151. package/filtering.d.mts.map +0 -1
  152. package/filtering.d.ts +0 -3
  153. package/filtering.d.ts.map +0 -1
  154. package/filtering.js +0 -24
  155. package/filtering.js.map +0 -1
  156. package/filtering.mjs +0 -16
  157. package/filtering.mjs.map +0 -1
  158. package/headers.d.mts +0 -4
  159. package/headers.d.mts.map +0 -1
  160. package/headers.d.ts +0 -4
  161. package/headers.d.ts.map +0 -1
  162. package/headers.js +0 -22
  163. package/headers.js.map +0 -1
  164. package/headers.mjs.map +0 -1
  165. package/src/compat.ts +0 -483
  166. package/src/dynamic-tools.ts +0 -153
  167. package/src/filtering.ts +0 -18
  168. package/src/tools/analytics/retrieve-analytics.ts +0 -441
  169. package/src/tools/domains/create-domains.ts +0 -75
  170. package/src/tools/domains/delete-domains.ts +0 -55
  171. package/src/tools/domains/list-domains.ts +0 -68
  172. package/src/tools/domains/update-domains.ts +0 -79
  173. package/src/tools/events/list-events.ts +0 -421
  174. package/src/tools/index.ts +0 -133
  175. package/src/tools/links/bulk/create-links-bulk.ts +0 -966
  176. package/src/tools/links/bulk/delete-links-bulk.ts +0 -59
  177. package/src/tools/links/count-links.ts +0 -957
  178. package/src/tools/links/create-links.ts +0 -957
  179. package/src/tools/links/delete-links.ts +0 -56
  180. package/src/tools/links/list-links.ts +0 -980
  181. package/src/tools/links/retrieve-info-links.ts +0 -75
  182. package/src/tools/links/update-links.ts +0 -964
  183. package/src/tools/links/upsert-links.ts +0 -958
  184. package/src/tools/projects/list-projects.ts +0 -51
  185. package/src/tools/projects/retrieve-projects.ts +0 -56
  186. package/src/tools/qrcodes/bulk/create-qrcodes-bulk.ts +0 -1077
  187. package/src/tools/qrcodes/bulk/delete-qrcodes-bulk.ts +0 -59
  188. package/src/tools/qrcodes/count-qrcodes.ts +0 -220
  189. package/src/tools/qrcodes/create-qrcodes.ts +0 -1067
  190. package/src/tools/qrcodes/delete-qrcodes.ts +0 -56
  191. package/src/tools/qrcodes/list-qrcodes.ts +0 -221
  192. package/src/tools/qrcodes/retrieve-qrcodes.ts +0 -67
  193. package/src/tools/qrcodes/update-qrcodes.ts +0 -1074
  194. package/src/tools/qrcodes/upsert-qrcodes.ts +0 -1068
  195. package/src/tools/tags/create-tags.ts +0 -59
  196. package/src/tools/tags/delete-tags.ts +0 -55
  197. package/src/tools/tags/list-tags.ts +0 -87
  198. package/src/tools/tags/update-tags.ts +0 -63
  199. package/src/tools/track/track-lead-track.ts +0 -93
  200. package/src/tools/track/track-sale-track.ts +0 -108
  201. package/src/tools.ts +0 -1
  202. package/tools/analytics/retrieve-analytics.d.mts +0 -51
  203. package/tools/analytics/retrieve-analytics.d.mts.map +0 -1
  204. package/tools/analytics/retrieve-analytics.d.ts +0 -51
  205. package/tools/analytics/retrieve-analytics.d.ts.map +0 -1
  206. package/tools/analytics/retrieve-analytics.js +0 -438
  207. package/tools/analytics/retrieve-analytics.js.map +0 -1
  208. package/tools/analytics/retrieve-analytics.mjs +0 -431
  209. package/tools/analytics/retrieve-analytics.mjs.map +0 -1
  210. package/tools/domains/create-domains.d.mts +0 -51
  211. package/tools/domains/create-domains.d.mts.map +0 -1
  212. package/tools/domains/create-domains.d.ts +0 -51
  213. package/tools/domains/create-domains.d.ts.map +0 -1
  214. package/tools/domains/create-domains.js +0 -74
  215. package/tools/domains/create-domains.js.map +0 -1
  216. package/tools/domains/create-domains.mjs +0 -67
  217. package/tools/domains/create-domains.mjs.map +0 -1
  218. package/tools/domains/delete-domains.d.mts +0 -51
  219. package/tools/domains/delete-domains.d.mts.map +0 -1
  220. package/tools/domains/delete-domains.d.ts +0 -51
  221. package/tools/domains/delete-domains.d.ts.map +0 -1
  222. package/tools/domains/delete-domains.js +0 -55
  223. package/tools/domains/delete-domains.js.map +0 -1
  224. package/tools/domains/delete-domains.mjs +0 -48
  225. package/tools/domains/delete-domains.mjs.map +0 -1
  226. package/tools/domains/list-domains.d.mts +0 -51
  227. package/tools/domains/list-domains.d.mts.map +0 -1
  228. package/tools/domains/list-domains.d.ts +0 -51
  229. package/tools/domains/list-domains.d.ts.map +0 -1
  230. package/tools/domains/list-domains.js +0 -67
  231. package/tools/domains/list-domains.js.map +0 -1
  232. package/tools/domains/list-domains.mjs +0 -60
  233. package/tools/domains/list-domains.mjs.map +0 -1
  234. package/tools/domains/update-domains.d.mts +0 -51
  235. package/tools/domains/update-domains.d.mts.map +0 -1
  236. package/tools/domains/update-domains.d.ts +0 -51
  237. package/tools/domains/update-domains.d.ts.map +0 -1
  238. package/tools/domains/update-domains.js +0 -78
  239. package/tools/domains/update-domains.js.map +0 -1
  240. package/tools/domains/update-domains.mjs +0 -71
  241. package/tools/domains/update-domains.mjs.map +0 -1
  242. package/tools/events/list-events.d.mts +0 -51
  243. package/tools/events/list-events.d.mts.map +0 -1
  244. package/tools/events/list-events.d.ts +0 -51
  245. package/tools/events/list-events.d.ts.map +0 -1
  246. package/tools/events/list-events.js +0 -418
  247. package/tools/events/list-events.js.map +0 -1
  248. package/tools/events/list-events.mjs +0 -411
  249. package/tools/events/list-events.mjs.map +0 -1
  250. package/tools/index.d.mts +0 -10
  251. package/tools/index.d.mts.map +0 -1
  252. package/tools/index.d.ts +0 -10
  253. package/tools/index.d.ts.map +0 -1
  254. package/tools/index.js +0 -117
  255. package/tools/index.js.map +0 -1
  256. package/tools/index.mjs +0 -110
  257. package/tools/index.mjs.map +0 -1
  258. package/tools/links/bulk/create-links-bulk.d.mts +0 -51
  259. package/tools/links/bulk/create-links-bulk.d.mts.map +0 -1
  260. package/tools/links/bulk/create-links-bulk.d.ts +0 -51
  261. package/tools/links/bulk/create-links-bulk.d.ts.map +0 -1
  262. package/tools/links/bulk/create-links-bulk.js +0 -956
  263. package/tools/links/bulk/create-links-bulk.js.map +0 -1
  264. package/tools/links/bulk/create-links-bulk.mjs +0 -949
  265. package/tools/links/bulk/create-links-bulk.mjs.map +0 -1
  266. package/tools/links/bulk/delete-links-bulk.d.mts +0 -51
  267. package/tools/links/bulk/delete-links-bulk.d.mts.map +0 -1
  268. package/tools/links/bulk/delete-links-bulk.d.ts +0 -51
  269. package/tools/links/bulk/delete-links-bulk.d.ts.map +0 -1
  270. package/tools/links/bulk/delete-links-bulk.js +0 -58
  271. package/tools/links/bulk/delete-links-bulk.js.map +0 -1
  272. package/tools/links/bulk/delete-links-bulk.mjs +0 -51
  273. package/tools/links/bulk/delete-links-bulk.mjs.map +0 -1
  274. package/tools/links/count-links.d.mts +0 -51
  275. package/tools/links/count-links.d.mts.map +0 -1
  276. package/tools/links/count-links.d.ts +0 -51
  277. package/tools/links/count-links.d.ts.map +0 -1
  278. package/tools/links/count-links.js +0 -951
  279. package/tools/links/count-links.js.map +0 -1
  280. package/tools/links/count-links.mjs +0 -944
  281. package/tools/links/count-links.mjs.map +0 -1
  282. package/tools/links/create-links.d.mts +0 -51
  283. package/tools/links/create-links.d.mts.map +0 -1
  284. package/tools/links/create-links.d.ts +0 -51
  285. package/tools/links/create-links.d.ts.map +0 -1
  286. package/tools/links/create-links.js +0 -947
  287. package/tools/links/create-links.js.map +0 -1
  288. package/tools/links/create-links.mjs +0 -940
  289. package/tools/links/create-links.mjs.map +0 -1
  290. package/tools/links/delete-links.d.mts +0 -51
  291. package/tools/links/delete-links.d.mts.map +0 -1
  292. package/tools/links/delete-links.d.ts +0 -51
  293. package/tools/links/delete-links.d.ts.map +0 -1
  294. package/tools/links/delete-links.js +0 -55
  295. package/tools/links/delete-links.js.map +0 -1
  296. package/tools/links/delete-links.mjs +0 -48
  297. package/tools/links/delete-links.mjs.map +0 -1
  298. package/tools/links/list-links.d.mts +0 -51
  299. package/tools/links/list-links.d.mts.map +0 -1
  300. package/tools/links/list-links.d.ts +0 -51
  301. package/tools/links/list-links.d.ts.map +0 -1
  302. package/tools/links/list-links.js +0 -973
  303. package/tools/links/list-links.js.map +0 -1
  304. package/tools/links/list-links.mjs +0 -966
  305. package/tools/links/list-links.mjs.map +0 -1
  306. package/tools/links/retrieve-info-links.d.mts +0 -51
  307. package/tools/links/retrieve-info-links.d.mts.map +0 -1
  308. package/tools/links/retrieve-info-links.d.ts +0 -51
  309. package/tools/links/retrieve-info-links.d.ts.map +0 -1
  310. package/tools/links/retrieve-info-links.js +0 -71
  311. package/tools/links/retrieve-info-links.js.map +0 -1
  312. package/tools/links/retrieve-info-links.mjs +0 -64
  313. package/tools/links/retrieve-info-links.mjs.map +0 -1
  314. package/tools/links/update-links.d.mts +0 -51
  315. package/tools/links/update-links.d.mts.map +0 -1
  316. package/tools/links/update-links.d.ts +0 -51
  317. package/tools/links/update-links.d.ts.map +0 -1
  318. package/tools/links/update-links.js +0 -953
  319. package/tools/links/update-links.js.map +0 -1
  320. package/tools/links/update-links.mjs +0 -946
  321. package/tools/links/update-links.mjs.map +0 -1
  322. package/tools/links/upsert-links.d.mts +0 -51
  323. package/tools/links/upsert-links.d.mts.map +0 -1
  324. package/tools/links/upsert-links.d.ts +0 -51
  325. package/tools/links/upsert-links.d.ts.map +0 -1
  326. package/tools/links/upsert-links.js +0 -947
  327. package/tools/links/upsert-links.js.map +0 -1
  328. package/tools/links/upsert-links.mjs +0 -940
  329. package/tools/links/upsert-links.mjs.map +0 -1
  330. package/tools/projects/list-projects.d.mts +0 -51
  331. package/tools/projects/list-projects.d.mts.map +0 -1
  332. package/tools/projects/list-projects.d.ts +0 -51
  333. package/tools/projects/list-projects.d.ts.map +0 -1
  334. package/tools/projects/list-projects.js +0 -51
  335. package/tools/projects/list-projects.js.map +0 -1
  336. package/tools/projects/list-projects.mjs +0 -44
  337. package/tools/projects/list-projects.mjs.map +0 -1
  338. package/tools/projects/retrieve-projects.d.mts +0 -51
  339. package/tools/projects/retrieve-projects.d.mts.map +0 -1
  340. package/tools/projects/retrieve-projects.d.ts +0 -51
  341. package/tools/projects/retrieve-projects.d.ts.map +0 -1
  342. package/tools/projects/retrieve-projects.js +0 -55
  343. package/tools/projects/retrieve-projects.js.map +0 -1
  344. package/tools/projects/retrieve-projects.mjs +0 -48
  345. package/tools/projects/retrieve-projects.mjs.map +0 -1
  346. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.mts +0 -51
  347. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.mts.map +0 -1
  348. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.ts +0 -51
  349. package/tools/qrcodes/bulk/create-qrcodes-bulk.d.ts.map +0 -1
  350. package/tools/qrcodes/bulk/create-qrcodes-bulk.js +0 -1068
  351. package/tools/qrcodes/bulk/create-qrcodes-bulk.js.map +0 -1
  352. package/tools/qrcodes/bulk/create-qrcodes-bulk.mjs +0 -1061
  353. package/tools/qrcodes/bulk/create-qrcodes-bulk.mjs.map +0 -1
  354. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.mts +0 -51
  355. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.mts.map +0 -1
  356. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.ts +0 -51
  357. package/tools/qrcodes/bulk/delete-qrcodes-bulk.d.ts.map +0 -1
  358. package/tools/qrcodes/bulk/delete-qrcodes-bulk.js +0 -58
  359. package/tools/qrcodes/bulk/delete-qrcodes-bulk.js.map +0 -1
  360. package/tools/qrcodes/bulk/delete-qrcodes-bulk.mjs +0 -51
  361. package/tools/qrcodes/bulk/delete-qrcodes-bulk.mjs.map +0 -1
  362. package/tools/qrcodes/count-qrcodes.d.mts +0 -51
  363. package/tools/qrcodes/count-qrcodes.d.mts.map +0 -1
  364. package/tools/qrcodes/count-qrcodes.d.ts +0 -51
  365. package/tools/qrcodes/count-qrcodes.d.ts.map +0 -1
  366. package/tools/qrcodes/count-qrcodes.js +0 -215
  367. package/tools/qrcodes/count-qrcodes.js.map +0 -1
  368. package/tools/qrcodes/count-qrcodes.mjs +0 -208
  369. package/tools/qrcodes/count-qrcodes.mjs.map +0 -1
  370. package/tools/qrcodes/create-qrcodes.d.mts +0 -51
  371. package/tools/qrcodes/create-qrcodes.d.mts.map +0 -1
  372. package/tools/qrcodes/create-qrcodes.d.ts +0 -51
  373. package/tools/qrcodes/create-qrcodes.d.ts.map +0 -1
  374. package/tools/qrcodes/create-qrcodes.js +0 -1059
  375. package/tools/qrcodes/create-qrcodes.js.map +0 -1
  376. package/tools/qrcodes/create-qrcodes.mjs +0 -1052
  377. package/tools/qrcodes/create-qrcodes.mjs.map +0 -1
  378. package/tools/qrcodes/delete-qrcodes.d.mts +0 -51
  379. package/tools/qrcodes/delete-qrcodes.d.mts.map +0 -1
  380. package/tools/qrcodes/delete-qrcodes.d.ts +0 -51
  381. package/tools/qrcodes/delete-qrcodes.d.ts.map +0 -1
  382. package/tools/qrcodes/delete-qrcodes.js +0 -55
  383. package/tools/qrcodes/delete-qrcodes.js.map +0 -1
  384. package/tools/qrcodes/delete-qrcodes.mjs +0 -48
  385. package/tools/qrcodes/delete-qrcodes.mjs.map +0 -1
  386. package/tools/qrcodes/list-qrcodes.d.mts +0 -51
  387. package/tools/qrcodes/list-qrcodes.d.mts.map +0 -1
  388. package/tools/qrcodes/list-qrcodes.d.ts +0 -51
  389. package/tools/qrcodes/list-qrcodes.d.ts.map +0 -1
  390. package/tools/qrcodes/list-qrcodes.js +0 -217
  391. package/tools/qrcodes/list-qrcodes.js.map +0 -1
  392. package/tools/qrcodes/list-qrcodes.mjs +0 -210
  393. package/tools/qrcodes/list-qrcodes.mjs.map +0 -1
  394. package/tools/qrcodes/retrieve-qrcodes.d.mts +0 -51
  395. package/tools/qrcodes/retrieve-qrcodes.d.mts.map +0 -1
  396. package/tools/qrcodes/retrieve-qrcodes.d.ts +0 -51
  397. package/tools/qrcodes/retrieve-qrcodes.d.ts.map +0 -1
  398. package/tools/qrcodes/retrieve-qrcodes.js +0 -65
  399. package/tools/qrcodes/retrieve-qrcodes.js.map +0 -1
  400. package/tools/qrcodes/retrieve-qrcodes.mjs +0 -58
  401. package/tools/qrcodes/retrieve-qrcodes.mjs.map +0 -1
  402. package/tools/qrcodes/update-qrcodes.d.mts +0 -51
  403. package/tools/qrcodes/update-qrcodes.d.mts.map +0 -1
  404. package/tools/qrcodes/update-qrcodes.d.ts +0 -51
  405. package/tools/qrcodes/update-qrcodes.d.ts.map +0 -1
  406. package/tools/qrcodes/update-qrcodes.js +0 -1065
  407. package/tools/qrcodes/update-qrcodes.js.map +0 -1
  408. package/tools/qrcodes/update-qrcodes.mjs +0 -1058
  409. package/tools/qrcodes/update-qrcodes.mjs.map +0 -1
  410. package/tools/qrcodes/upsert-qrcodes.d.mts +0 -51
  411. package/tools/qrcodes/upsert-qrcodes.d.mts.map +0 -1
  412. package/tools/qrcodes/upsert-qrcodes.d.ts +0 -51
  413. package/tools/qrcodes/upsert-qrcodes.d.ts.map +0 -1
  414. package/tools/qrcodes/upsert-qrcodes.js +0 -1059
  415. package/tools/qrcodes/upsert-qrcodes.js.map +0 -1
  416. package/tools/qrcodes/upsert-qrcodes.mjs +0 -1052
  417. package/tools/qrcodes/upsert-qrcodes.mjs.map +0 -1
  418. package/tools/tags/create-tags.d.mts +0 -51
  419. package/tools/tags/create-tags.d.mts.map +0 -1
  420. package/tools/tags/create-tags.d.ts +0 -51
  421. package/tools/tags/create-tags.d.ts.map +0 -1
  422. package/tools/tags/create-tags.js +0 -58
  423. package/tools/tags/create-tags.js.map +0 -1
  424. package/tools/tags/create-tags.mjs +0 -51
  425. package/tools/tags/create-tags.mjs.map +0 -1
  426. package/tools/tags/delete-tags.d.mts +0 -51
  427. package/tools/tags/delete-tags.d.mts.map +0 -1
  428. package/tools/tags/delete-tags.d.ts +0 -51
  429. package/tools/tags/delete-tags.d.ts.map +0 -1
  430. package/tools/tags/delete-tags.js +0 -55
  431. package/tools/tags/delete-tags.js.map +0 -1
  432. package/tools/tags/delete-tags.mjs +0 -48
  433. package/tools/tags/delete-tags.mjs.map +0 -1
  434. package/tools/tags/list-tags.d.mts +0 -51
  435. package/tools/tags/list-tags.d.mts.map +0 -1
  436. package/tools/tags/list-tags.d.ts +0 -51
  437. package/tools/tags/list-tags.d.ts.map +0 -1
  438. package/tools/tags/list-tags.js +0 -87
  439. package/tools/tags/list-tags.js.map +0 -1
  440. package/tools/tags/list-tags.mjs +0 -80
  441. package/tools/tags/list-tags.mjs.map +0 -1
  442. package/tools/tags/update-tags.d.mts +0 -51
  443. package/tools/tags/update-tags.d.mts.map +0 -1
  444. package/tools/tags/update-tags.d.ts +0 -51
  445. package/tools/tags/update-tags.d.ts.map +0 -1
  446. package/tools/tags/update-tags.js +0 -63
  447. package/tools/tags/update-tags.js.map +0 -1
  448. package/tools/tags/update-tags.mjs +0 -56
  449. package/tools/tags/update-tags.mjs.map +0 -1
  450. package/tools/track/track-lead-track.d.mts +0 -51
  451. package/tools/track/track-lead-track.d.mts.map +0 -1
  452. package/tools/track/track-lead-track.d.ts +0 -51
  453. package/tools/track/track-lead-track.d.ts.map +0 -1
  454. package/tools/track/track-lead-track.js +0 -87
  455. package/tools/track/track-lead-track.js.map +0 -1
  456. package/tools/track/track-lead-track.mjs +0 -80
  457. package/tools/track/track-lead-track.mjs.map +0 -1
  458. package/tools/track/track-sale-track.d.mts +0 -51
  459. package/tools/track/track-sale-track.d.mts.map +0 -1
  460. package/tools/track/track-sale-track.d.ts +0 -51
  461. package/tools/track/track-sale-track.d.ts.map +0 -1
  462. package/tools/track/track-sale-track.js +0 -99
  463. package/tools/track/track-sale-track.js.map +0 -1
  464. package/tools/track/track-sale-track.mjs +0 -92
  465. package/tools/track/track-sale-track.mjs.map +0 -1
  466. package/tools/types.d.mts.map +0 -1
  467. package/tools/types.d.ts.map +0 -1
  468. package/tools/types.js.map +0 -1
  469. package/tools/types.mjs.map +0 -1
  470. package/tools.d.mts +0 -2
  471. package/tools.d.mts.map +0 -1
  472. package/tools.d.ts +0 -2
  473. package/tools.d.ts.map +0 -1
  474. package/tools.js +0 -18
  475. package/tools.js.map +0 -1
  476. package/tools.mjs +0 -2
  477. package/tools.mjs.map +0 -1
  478. /package/{tools/types.js → types.js} +0 -0
  479. /package/{tools/types.mjs → types.mjs} +0 -0
package/http.js CHANGED
@@ -7,58 +7,71 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.launchStreamableHTTPServer = exports.streamableHTTPApp = void 0;
8
8
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
9
9
  const express_1 = __importDefault(require("express"));
10
- const v3_1 = require("zod-validation-error/v3");
11
- const options_1 = require("./options.js");
10
+ const pino_1 = __importDefault(require("pino"));
11
+ const pino_http_1 = __importDefault(require("pino-http"));
12
+ const auth_1 = require("./auth.js");
13
+ const logger_1 = require("./logger.js");
12
14
  const server_1 = require("./server.js");
13
- const headers_1 = require("./headers.js");
14
- const newServer = ({ clientOptions, mcpOptions: defaultMcpOptions, req, res, }) => {
15
- const server = (0, server_1.newMcpServer)();
16
- let mcpOptions;
17
- try {
18
- mcpOptions = (0, options_1.parseQueryOptions)(defaultMcpOptions, req.query);
15
+ const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
16
+ const stainlessApiKey = (0, auth_1.getStainlessApiKey)(req, mcpOptions);
17
+ const server = await (0, server_1.newMcpServer)(stainlessApiKey);
18
+ const authOptions = (0, auth_1.parseClientAuthHeaders)(req, false);
19
+ let upstreamClientEnvs;
20
+ const clientEnvsHeader = req.headers['x-stainless-mcp-client-envs'];
21
+ if (typeof clientEnvsHeader === 'string') {
22
+ try {
23
+ const parsed = JSON.parse(clientEnvsHeader);
24
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
25
+ upstreamClientEnvs = parsed;
26
+ }
27
+ }
28
+ catch {
29
+ // Ignore malformed header
30
+ }
19
31
  }
20
- catch (error) {
21
- res.status(400).json({
22
- jsonrpc: '2.0',
23
- error: {
24
- code: -32000,
25
- message: `Invalid request: ${(0, v3_1.fromError)(error)}`,
26
- },
27
- });
28
- return null;
29
- }
30
- try {
31
- const authOptions = (0, headers_1.parseAuthHeaders)(req);
32
- (0, server_1.initMcpServer)({
33
- server: server,
34
- clientOptions: {
35
- ...clientOptions,
36
- ...authOptions,
37
- },
38
- mcpOptions,
39
- });
40
- }
41
- catch (error) {
42
- res.status(401).json({
43
- jsonrpc: '2.0',
44
- error: {
45
- code: -32000,
46
- message: `Unauthorized: ${error instanceof Error ? error.message : error}`,
47
- },
48
- });
49
- return null;
32
+ // Parse x-stainless-mcp-client-permissions header to override permission options
33
+ //
34
+ // Note: Permissions are best-effort and intended to prevent clients from doing unexpected things;
35
+ // they're not a hard security boundary, so we allow arbitrary, client-driven overrides.
36
+ //
37
+ // See the Stainless MCP documentation for more details.
38
+ let effectiveMcpOptions = mcpOptions;
39
+ const clientPermissionsHeader = req.headers['x-stainless-mcp-client-permissions'];
40
+ if (typeof clientPermissionsHeader === 'string') {
41
+ try {
42
+ const parsed = JSON.parse(clientPermissionsHeader);
43
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
44
+ effectiveMcpOptions = {
45
+ ...mcpOptions,
46
+ ...(typeof parsed.allow_http_gets === 'boolean' && { codeAllowHttpGets: parsed.allow_http_gets }),
47
+ ...(Array.isArray(parsed.allowed_methods) && { codeAllowedMethods: parsed.allowed_methods }),
48
+ ...(Array.isArray(parsed.blocked_methods) && { codeBlockedMethods: parsed.blocked_methods }),
49
+ };
50
+ (0, logger_1.getLogger)().info({ clientPermissions: parsed }, 'Overriding code execution permissions from x-stainless-mcp-client-permissions header');
51
+ }
52
+ }
53
+ catch (error) {
54
+ (0, logger_1.getLogger)().warn({ error }, 'Failed to parse x-stainless-mcp-client-permissions header');
55
+ }
50
56
  }
57
+ await (0, server_1.initMcpServer)({
58
+ server: server,
59
+ mcpOptions: effectiveMcpOptions,
60
+ clientOptions: {
61
+ ...clientOptions,
62
+ ...authOptions,
63
+ },
64
+ stainlessApiKey: stainlessApiKey,
65
+ upstreamClientEnvs,
66
+ });
51
67
  return server;
52
68
  };
53
69
  const post = (options) => async (req, res) => {
54
- const server = newServer({ ...options, req, res });
70
+ const server = await newServer({ ...options, req, res });
55
71
  // If we return null, we already set the authorization error.
56
72
  if (server === null)
57
73
  return;
58
- const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
59
- // Stateless server
60
- sessionIdGenerator: undefined,
61
- });
74
+ const transport = new streamableHttp_js_1.StreamableHTTPServerTransport();
62
75
  await server.connect(transport);
63
76
  await transport.handleRequest(req, res, req.body);
64
77
  };
@@ -80,28 +93,74 @@ const del = async (req, res) => {
80
93
  },
81
94
  });
82
95
  };
83
- const streamableHTTPApp = ({ clientOptions = {}, mcpOptions = {}, }) => {
96
+ const redactHeaders = (headers) => {
97
+ const hiddenHeaders = /auth|cookie|key|token|x-stainless-mcp-client-envs/i;
98
+ const filtered = { ...headers };
99
+ Object.keys(filtered).forEach((key) => {
100
+ if (hiddenHeaders.test(key)) {
101
+ filtered[key] = '[REDACTED]';
102
+ }
103
+ });
104
+ return filtered;
105
+ };
106
+ const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, }) => {
84
107
  const app = (0, express_1.default)();
85
108
  app.set('query parser', 'extended');
86
109
  app.use(express_1.default.json());
110
+ app.use((0, pino_http_1.default)({
111
+ logger: (0, logger_1.getLogger)(),
112
+ customLogLevel: (req, res) => {
113
+ if (res.statusCode >= 500) {
114
+ return 'error';
115
+ }
116
+ else if (res.statusCode >= 400) {
117
+ return 'warn';
118
+ }
119
+ return 'info';
120
+ },
121
+ customSuccessMessage: function (req, res) {
122
+ return `Request ${req.method} to ${req.url} completed with status ${res.statusCode}`;
123
+ },
124
+ customErrorMessage: function (req, res, err) {
125
+ return `Request ${req.method} to ${req.url} errored with status ${res.statusCode}`;
126
+ },
127
+ serializers: {
128
+ req: pino_1.default.stdSerializers.wrapRequestSerializer((req) => {
129
+ return {
130
+ ...req,
131
+ headers: redactHeaders(req.raw.headers),
132
+ };
133
+ }),
134
+ res: pino_1.default.stdSerializers.wrapResponseSerializer((res) => {
135
+ return {
136
+ ...res,
137
+ headers: redactHeaders(res.headers),
138
+ };
139
+ }),
140
+ },
141
+ }));
142
+ app.get('/health', async (req, res) => {
143
+ res.status(200).send('OK');
144
+ });
87
145
  app.get('/', get);
88
146
  app.post('/', post({ clientOptions, mcpOptions }));
89
147
  app.delete('/', del);
90
148
  return app;
91
149
  };
92
150
  exports.streamableHTTPApp = streamableHTTPApp;
93
- const launchStreamableHTTPServer = async (options, port) => {
94
- const app = (0, exports.streamableHTTPApp)({ mcpOptions: options });
151
+ const launchStreamableHTTPServer = async ({ mcpOptions, port, }) => {
152
+ const app = (0, exports.streamableHTTPApp)({ mcpOptions });
95
153
  const server = app.listen(port);
96
154
  const address = server.address();
155
+ const logger = (0, logger_1.getLogger)();
97
156
  if (typeof address === 'string') {
98
- console.error(`MCP Server running on streamable HTTP at ${address}`);
157
+ logger.info(`MCP Server running on streamable HTTP at ${address}`);
99
158
  }
100
159
  else if (address !== null) {
101
- console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
160
+ logger.info(`MCP Server running on streamable HTTP on port ${address.port}`);
102
161
  }
103
162
  else {
104
- console.error(`MCP Server running on streamable HTTP on port ${port}`);
163
+ logger.info(`MCP Server running on streamable HTTP on port ${port}`);
105
164
  }
106
165
  };
107
166
  exports.launchStreamableHTTPServer = launchStreamableHTTPServer;
package/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;;AAGtF,0FAAmG;AAEnG,sDAA8B;AAC9B,gDAAwB;AACxB,0DAAiC;AACjC,oCAAoE;AACpE,wCAAqC;AAErC,wCAAuD;AAEvD,MAAM,SAAS,GAAG,KAAK,EAAE,EACvB,aAAa,EACb,UAAU,EACV,GAAG,EACH,GAAG,GAMJ,EAA6B,EAAE;IAC9B,MAAM,eAAe,GAAG,IAAA,yBAAkB,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAY,EAAC,eAAe,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,IAAA,6BAAsB,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAEvD,IAAI,kBAAsD,CAAC;IAC3D,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACpE,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,kBAAkB,GAAG,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,EAAE;IACF,kGAAkG;IAClG,wFAAwF;IACxF,EAAE;IACF,wDAAwD;IACxD,IAAI,mBAAmB,GAAG,UAAU,CAAC;IACrC,MAAM,uBAAuB,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;IAClF,IAAI,OAAO,uBAAuB,KAAK,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACnD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,mBAAmB,GAAG;oBACpB,GAAG,UAAU;oBACb,GAAG,CAAC,OAAO,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;oBACjG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;oBAC5F,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;iBAC7F,CAAC;gBACF,IAAA,kBAAS,GAAE,CAAC,IAAI,CACd,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAC7B,sFAAsF,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,kBAAS,GAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,2DAA2D,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,MAAM,IAAA,sBAAa,EAAC;QAClB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,mBAAmB;QAC/B,aAAa,EAAE;YACb,GAAG,aAAa;YAChB,GAAG,WAAW;SACf;QACD,eAAe,EAAE,eAAe;QAChC,kBAAkB;KACnB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,IAAI,GACR,CAAC,OAAiE,EAAE,EAAE,CACtE,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;IACpD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,6DAA6D;IAC7D,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO;IAC5B,MAAM,SAAS,GAAG,IAAI,iDAA6B,EAAE,CAAC;IACtD,MAAM,MAAM,CAAC,OAAO,CAAC,SAAgB,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC;AAEJ,MAAM,GAAG,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;IAChE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,KAAK;YACZ,OAAO,EAAE,sBAAsB;SAChC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;IAChE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,KAAK;YACZ,OAAO,EAAE,sBAAsB;SAChC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAA4B,EAAE,EAAE;IACrD,MAAM,aAAa,GAAG,oDAAoD,CAAC;IAC3E,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAAC,EAChC,aAAa,GAAG,EAAE,EAClB,UAAU,GAIX,EAAmB,EAAE;IACpB,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACpC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CACL,IAAA,mBAAQ,EAAC;QACP,MAAM,EAAE,IAAA,kBAAS,GAAE;QACnB,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3B,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBACjC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,oBAAoB,EAAE,UAAU,GAAG,EAAE,GAAG;YACtC,OAAO,WAAW,GAAG,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,0BAA0B,GAAG,CAAC,UAAU,EAAE,CAAC;QACvF,CAAC;QACD,kBAAkB,EAAE,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG;YACzC,OAAO,WAAW,GAAG,CAAC,MAAM,OAAO,GAAG,CAAC,GAAG,wBAAwB,GAAG,CAAC,UAAU,EAAE,CAAC;QACrF,CAAC;QACD,WAAW,EAAE;YACX,GAAG,EAAE,cAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrD,OAAO;oBACL,GAAG,GAAG;oBACN,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;iBACxC,CAAC;YACJ,CAAC,CAAC;YACF,GAAG,EAAE,cAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtD,OAAO;oBACL,GAAG,GAAG;oBACN,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;iBACpC,CAAC;YACJ,CAAC,CAAC;SACH;KACF,CAAC,CACH,CAAC;IAEF,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;QACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACnD,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAErB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AApDW,QAAA,iBAAiB,qBAoD5B;AAEK,MAAM,0BAA0B,GAAG,KAAK,EAAE,EAC/C,UAAU,EACV,IAAI,GAIL,EAAE,EAAE;IACH,MAAM,GAAG,GAAG,IAAA,yBAAiB,EAAC,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAE3B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,iDAAiD,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,CAAC;AApBW,QAAA,0BAA0B,8BAoBrC"}
package/http.mjs CHANGED
@@ -1,58 +1,71 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
3
  import express from 'express';
4
- import { fromError } from 'zod-validation-error/v3';
5
- import { parseQueryOptions } from "./options.mjs";
4
+ import pino from 'pino';
5
+ import pinoHttp from 'pino-http';
6
+ import { getStainlessApiKey, parseClientAuthHeaders } from "./auth.mjs";
7
+ import { getLogger } from "./logger.mjs";
6
8
  import { initMcpServer, newMcpServer } from "./server.mjs";
7
- import { parseAuthHeaders } from "./headers.mjs";
8
- const newServer = ({ clientOptions, mcpOptions: defaultMcpOptions, req, res, }) => {
9
- const server = newMcpServer();
10
- let mcpOptions;
11
- try {
12
- mcpOptions = parseQueryOptions(defaultMcpOptions, req.query);
9
+ const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
10
+ const stainlessApiKey = getStainlessApiKey(req, mcpOptions);
11
+ const server = await newMcpServer(stainlessApiKey);
12
+ const authOptions = parseClientAuthHeaders(req, false);
13
+ let upstreamClientEnvs;
14
+ const clientEnvsHeader = req.headers['x-stainless-mcp-client-envs'];
15
+ if (typeof clientEnvsHeader === 'string') {
16
+ try {
17
+ const parsed = JSON.parse(clientEnvsHeader);
18
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
19
+ upstreamClientEnvs = parsed;
20
+ }
21
+ }
22
+ catch {
23
+ // Ignore malformed header
24
+ }
13
25
  }
14
- catch (error) {
15
- res.status(400).json({
16
- jsonrpc: '2.0',
17
- error: {
18
- code: -32000,
19
- message: `Invalid request: ${fromError(error)}`,
20
- },
21
- });
22
- return null;
23
- }
24
- try {
25
- const authOptions = parseAuthHeaders(req);
26
- initMcpServer({
27
- server: server,
28
- clientOptions: {
29
- ...clientOptions,
30
- ...authOptions,
31
- },
32
- mcpOptions,
33
- });
34
- }
35
- catch (error) {
36
- res.status(401).json({
37
- jsonrpc: '2.0',
38
- error: {
39
- code: -32000,
40
- message: `Unauthorized: ${error instanceof Error ? error.message : error}`,
41
- },
42
- });
43
- return null;
26
+ // Parse x-stainless-mcp-client-permissions header to override permission options
27
+ //
28
+ // Note: Permissions are best-effort and intended to prevent clients from doing unexpected things;
29
+ // they're not a hard security boundary, so we allow arbitrary, client-driven overrides.
30
+ //
31
+ // See the Stainless MCP documentation for more details.
32
+ let effectiveMcpOptions = mcpOptions;
33
+ const clientPermissionsHeader = req.headers['x-stainless-mcp-client-permissions'];
34
+ if (typeof clientPermissionsHeader === 'string') {
35
+ try {
36
+ const parsed = JSON.parse(clientPermissionsHeader);
37
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
38
+ effectiveMcpOptions = {
39
+ ...mcpOptions,
40
+ ...(typeof parsed.allow_http_gets === 'boolean' && { codeAllowHttpGets: parsed.allow_http_gets }),
41
+ ...(Array.isArray(parsed.allowed_methods) && { codeAllowedMethods: parsed.allowed_methods }),
42
+ ...(Array.isArray(parsed.blocked_methods) && { codeBlockedMethods: parsed.blocked_methods }),
43
+ };
44
+ getLogger().info({ clientPermissions: parsed }, 'Overriding code execution permissions from x-stainless-mcp-client-permissions header');
45
+ }
46
+ }
47
+ catch (error) {
48
+ getLogger().warn({ error }, 'Failed to parse x-stainless-mcp-client-permissions header');
49
+ }
44
50
  }
51
+ await initMcpServer({
52
+ server: server,
53
+ mcpOptions: effectiveMcpOptions,
54
+ clientOptions: {
55
+ ...clientOptions,
56
+ ...authOptions,
57
+ },
58
+ stainlessApiKey: stainlessApiKey,
59
+ upstreamClientEnvs,
60
+ });
45
61
  return server;
46
62
  };
47
63
  const post = (options) => async (req, res) => {
48
- const server = newServer({ ...options, req, res });
64
+ const server = await newServer({ ...options, req, res });
49
65
  // If we return null, we already set the authorization error.
50
66
  if (server === null)
51
67
  return;
52
- const transport = new StreamableHTTPServerTransport({
53
- // Stateless server
54
- sessionIdGenerator: undefined,
55
- });
68
+ const transport = new StreamableHTTPServerTransport();
56
69
  await server.connect(transport);
57
70
  await transport.handleRequest(req, res, req.body);
58
71
  };
@@ -74,27 +87,73 @@ const del = async (req, res) => {
74
87
  },
75
88
  });
76
89
  };
77
- export const streamableHTTPApp = ({ clientOptions = {}, mcpOptions = {}, }) => {
90
+ const redactHeaders = (headers) => {
91
+ const hiddenHeaders = /auth|cookie|key|token|x-stainless-mcp-client-envs/i;
92
+ const filtered = { ...headers };
93
+ Object.keys(filtered).forEach((key) => {
94
+ if (hiddenHeaders.test(key)) {
95
+ filtered[key] = '[REDACTED]';
96
+ }
97
+ });
98
+ return filtered;
99
+ };
100
+ export const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, }) => {
78
101
  const app = express();
79
102
  app.set('query parser', 'extended');
80
103
  app.use(express.json());
104
+ app.use(pinoHttp({
105
+ logger: getLogger(),
106
+ customLogLevel: (req, res) => {
107
+ if (res.statusCode >= 500) {
108
+ return 'error';
109
+ }
110
+ else if (res.statusCode >= 400) {
111
+ return 'warn';
112
+ }
113
+ return 'info';
114
+ },
115
+ customSuccessMessage: function (req, res) {
116
+ return `Request ${req.method} to ${req.url} completed with status ${res.statusCode}`;
117
+ },
118
+ customErrorMessage: function (req, res, err) {
119
+ return `Request ${req.method} to ${req.url} errored with status ${res.statusCode}`;
120
+ },
121
+ serializers: {
122
+ req: pino.stdSerializers.wrapRequestSerializer((req) => {
123
+ return {
124
+ ...req,
125
+ headers: redactHeaders(req.raw.headers),
126
+ };
127
+ }),
128
+ res: pino.stdSerializers.wrapResponseSerializer((res) => {
129
+ return {
130
+ ...res,
131
+ headers: redactHeaders(res.headers),
132
+ };
133
+ }),
134
+ },
135
+ }));
136
+ app.get('/health', async (req, res) => {
137
+ res.status(200).send('OK');
138
+ });
81
139
  app.get('/', get);
82
140
  app.post('/', post({ clientOptions, mcpOptions }));
83
141
  app.delete('/', del);
84
142
  return app;
85
143
  };
86
- export const launchStreamableHTTPServer = async (options, port) => {
87
- const app = streamableHTTPApp({ mcpOptions: options });
144
+ export const launchStreamableHTTPServer = async ({ mcpOptions, port, }) => {
145
+ const app = streamableHTTPApp({ mcpOptions });
88
146
  const server = app.listen(port);
89
147
  const address = server.address();
148
+ const logger = getLogger();
90
149
  if (typeof address === 'string') {
91
- console.error(`MCP Server running on streamable HTTP at ${address}`);
150
+ logger.info(`MCP Server running on streamable HTTP at ${address}`);
92
151
  }
93
152
  else if (address !== null) {
94
- console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
153
+ logger.info(`MCP Server running on streamable HTTP on port ${address.port}`);
95
154
  }
96
155
  else {
97
- console.error(`MCP Server running on streamable HTTP on port ${port}`);
156
+ logger.info(`MCP Server running on streamable HTTP on port ${port}`);
98
157
  }
99
158
  };
100
159
  //# sourceMappingURL=http.mjs.map
package/http.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
package/index.js CHANGED
@@ -2,30 +2,34 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const server_1 = require("./server.js");
5
- const tools_1 = require("./tools.js");
6
5
  const options_1 = require("./options.js");
7
6
  const stdio_1 = require("./stdio.js");
8
7
  const http_1 = require("./http.js");
8
+ const logger_1 = require("./logger.js");
9
9
  async function main() {
10
10
  const options = parseOptionsOrError();
11
- if (options.list) {
12
- listAllTools();
13
- return;
14
- }
15
- const selectedTools = await selectToolsOrError(tools_1.endpoints, options);
16
- console.error(`MCP Server starting with ${selectedTools.length} tools:`, selectedTools.map((e) => e.tool.name));
11
+ (0, logger_1.configureLogger)({
12
+ level: options.debug ? 'debug' : 'info',
13
+ pretty: options.logFormat === 'pretty',
14
+ });
15
+ const selectedTools = await selectToolsOrError(options);
16
+ (0, logger_1.getLogger)().info({ tools: selectedTools.map((e) => e.tool.name) }, `MCP Server starting with ${selectedTools.length} tools`);
17
17
  switch (options.transport) {
18
18
  case 'stdio':
19
19
  await (0, stdio_1.launchStdioServer)(options);
20
20
  break;
21
21
  case 'http':
22
- await (0, http_1.launchStreamableHTTPServer)(options, options.port ?? options.socket);
22
+ await (0, http_1.launchStreamableHTTPServer)({
23
+ mcpOptions: options,
24
+ port: options.socket ?? options.port,
25
+ });
23
26
  break;
24
27
  }
25
28
  }
26
29
  if (require.main === module) {
27
30
  main().catch((error) => {
28
- console.error('Fatal error in main():', error);
31
+ // Logger might not be initialized yet
32
+ console.error('Fatal error in main()', error);
29
33
  process.exit(1);
30
34
  });
31
35
  }
@@ -34,58 +38,23 @@ function parseOptionsOrError() {
34
38
  return (0, options_1.parseCLIOptions)();
35
39
  }
36
40
  catch (error) {
37
- console.error('Error parsing options:', error);
41
+ // Logger is initialized after options, so use console.error here
42
+ console.error('Error parsing options', error);
38
43
  process.exit(1);
39
44
  }
40
45
  }
41
- async function selectToolsOrError(endpoints, options) {
46
+ async function selectToolsOrError(options) {
42
47
  try {
43
- const includedTools = await (0, server_1.selectTools)(endpoints, options);
48
+ const includedTools = (0, server_1.selectTools)(options);
44
49
  if (includedTools.length === 0) {
45
- console.error('No tools match the provided filters.');
50
+ (0, logger_1.getLogger)().error('No tools match the provided filters');
46
51
  process.exit(1);
47
52
  }
48
53
  return includedTools;
49
54
  }
50
55
  catch (error) {
51
- if (error instanceof Error) {
52
- console.error('Error filtering tools:', error.message);
53
- }
54
- else {
55
- console.error('Error filtering tools:', error);
56
- }
56
+ (0, logger_1.getLogger)().error({ error }, 'Error filtering tools');
57
57
  process.exit(1);
58
58
  }
59
59
  }
60
- function listAllTools() {
61
- if (tools_1.endpoints.length === 0) {
62
- console.log('No tools available.');
63
- return;
64
- }
65
- console.log('Available tools:\n');
66
- // Group endpoints by resource
67
- const resourceGroups = new Map();
68
- for (const endpoint of tools_1.endpoints) {
69
- const resource = endpoint.metadata.resource;
70
- if (!resourceGroups.has(resource)) {
71
- resourceGroups.set(resource, []);
72
- }
73
- resourceGroups.get(resource).push(endpoint);
74
- }
75
- // Sort resources alphabetically
76
- const sortedResources = Array.from(resourceGroups.keys()).sort();
77
- // Display hierarchically by resource
78
- for (const resource of sortedResources) {
79
- console.log(`Resource: ${resource}`);
80
- const resourceEndpoints = resourceGroups.get(resource);
81
- // Sort endpoints by tool name
82
- resourceEndpoints.sort((a, b) => a.tool.name.localeCompare(b.tool.name));
83
- for (const endpoint of resourceEndpoints) {
84
- const { tool, metadata: { operation, tags }, } = endpoint;
85
- console.log(` - ${tool.name} (${operation}) ${tags.length > 0 ? `tags: ${tags.join(', ')}` : ''}`);
86
- console.log(` Description: ${tool.description}`);
87
- }
88
- console.log('');
89
- }
90
- }
91
60
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAEA,wCAAuC;AACvC,0CAAwD;AACxD,sCAA4C;AAC5C,oCAAoD;AAEpD,wCAAsD;AAEtD,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAA,wBAAe,EAAC;QACd,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QACvC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,QAAQ;KACvC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAExD,IAAA,kBAAS,GAAE,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAChD,4BAA4B,aAAa,CAAC,MAAM,QAAQ,CACzD,CAAC;IAEF,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,OAAO;YACV,MAAM,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAA,iCAA0B,EAAC;gBAC/B,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;aACrC,CAAC,CAAC;YACH,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,IAAA,yBAAe,GAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iEAAiE;QACjE,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAmB;IACnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAA,kBAAS,GAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,kBAAS,GAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}