heor-agent-mcp 0.1.0

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 (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +152 -0
  3. package/dist/audit/builder.d.ts +8 -0
  4. package/dist/audit/builder.d.ts.map +1 -0
  5. package/dist/audit/builder.js +37 -0
  6. package/dist/audit/builder.js.map +1 -0
  7. package/dist/audit/types.d.ts +30 -0
  8. package/dist/audit/types.d.ts.map +1 -0
  9. package/dist/audit/types.js +2 -0
  10. package/dist/audit/types.js.map +1 -0
  11. package/dist/formatters/docx.d.ts +5 -0
  12. package/dist/formatters/docx.d.ts.map +1 -0
  13. package/dist/formatters/docx.js +207 -0
  14. package/dist/formatters/docx.js.map +1 -0
  15. package/dist/formatters/json.d.ts +4 -0
  16. package/dist/formatters/json.d.ts.map +1 -0
  17. package/dist/formatters/json.js +4 -0
  18. package/dist/formatters/json.js.map +1 -0
  19. package/dist/formatters/markdown.d.ts +5 -0
  20. package/dist/formatters/markdown.d.ts.map +1 -0
  21. package/dist/formatters/markdown.js +50 -0
  22. package/dist/formatters/markdown.js.map +1 -0
  23. package/dist/knowledge/index.d.ts +8 -0
  24. package/dist/knowledge/index.d.ts.map +1 -0
  25. package/dist/knowledge/index.js +8 -0
  26. package/dist/knowledge/index.js.map +1 -0
  27. package/dist/knowledge/paths.d.ts +9 -0
  28. package/dist/knowledge/paths.d.ts.map +1 -0
  29. package/dist/knowledge/paths.js +35 -0
  30. package/dist/knowledge/paths.js.map +1 -0
  31. package/dist/knowledge/projectStore.d.ts +37 -0
  32. package/dist/knowledge/projectStore.d.ts.map +1 -0
  33. package/dist/knowledge/projectStore.js +112 -0
  34. package/dist/knowledge/projectStore.js.map +1 -0
  35. package/dist/knowledge/rawStore.d.ts +18 -0
  36. package/dist/knowledge/rawStore.d.ts.map +1 -0
  37. package/dist/knowledge/rawStore.js +103 -0
  38. package/dist/knowledge/rawStore.js.map +1 -0
  39. package/dist/knowledge/search.d.ts +19 -0
  40. package/dist/knowledge/search.d.ts.map +1 -0
  41. package/dist/knowledge/search.js +105 -0
  42. package/dist/knowledge/search.js.map +1 -0
  43. package/dist/knowledge/types.d.ts +6 -0
  44. package/dist/knowledge/types.d.ts.map +1 -0
  45. package/dist/knowledge/types.js +2 -0
  46. package/dist/knowledge/types.js.map +1 -0
  47. package/dist/knowledge/wikiStore.d.ts +18 -0
  48. package/dist/knowledge/wikiStore.d.ts.map +1 -0
  49. package/dist/knowledge/wikiStore.js +77 -0
  50. package/dist/knowledge/wikiStore.js.map +1 -0
  51. package/dist/knowledge/yaml.d.ts +17 -0
  52. package/dist/knowledge/yaml.d.ts.map +1 -0
  53. package/dist/knowledge/yaml.js +131 -0
  54. package/dist/knowledge/yaml.js.map +1 -0
  55. package/dist/models/distributions.d.ts +28 -0
  56. package/dist/models/distributions.d.ts.map +1 -0
  57. package/dist/models/distributions.js +99 -0
  58. package/dist/models/distributions.js.map +1 -0
  59. package/dist/models/index.d.ts +11 -0
  60. package/dist/models/index.d.ts.map +1 -0
  61. package/dist/models/index.js +7 -0
  62. package/dist/models/index.js.map +1 -0
  63. package/dist/models/markov.d.ts +42 -0
  64. package/dist/models/markov.d.ts.map +1 -0
  65. package/dist/models/markov.js +82 -0
  66. package/dist/models/markov.js.map +1 -0
  67. package/dist/models/modelUtils.d.ts +29 -0
  68. package/dist/models/modelUtils.d.ts.map +1 -0
  69. package/dist/models/modelUtils.js +139 -0
  70. package/dist/models/modelUtils.js.map +1 -0
  71. package/dist/models/owsa.d.ts +31 -0
  72. package/dist/models/owsa.d.ts.map +1 -0
  73. package/dist/models/owsa.js +103 -0
  74. package/dist/models/owsa.js.map +1 -0
  75. package/dist/models/partsa.d.ts +40 -0
  76. package/dist/models/partsa.d.ts.map +1 -0
  77. package/dist/models/partsa.js +65 -0
  78. package/dist/models/partsa.js.map +1 -0
  79. package/dist/models/psa.d.ts +33 -0
  80. package/dist/models/psa.d.ts.map +1 -0
  81. package/dist/models/psa.js +118 -0
  82. package/dist/models/psa.js.map +1 -0
  83. package/dist/providers/direct/aifa.d.ts +3 -0
  84. package/dist/providers/direct/aifa.d.ts.map +1 -0
  85. package/dist/providers/direct/aifa.js +30 -0
  86. package/dist/providers/direct/aifa.js.map +1 -0
  87. package/dist/providers/direct/allOfUs.d.ts +3 -0
  88. package/dist/providers/direct/allOfUs.d.ts.map +1 -0
  89. package/dist/providers/direct/allOfUs.js +37 -0
  90. package/dist/providers/direct/allOfUs.js.map +1 -0
  91. package/dist/providers/direct/anvisa.d.ts +3 -0
  92. package/dist/providers/direct/anvisa.d.ts.map +1 -0
  93. package/dist/providers/direct/anvisa.js +25 -0
  94. package/dist/providers/direct/anvisa.js.map +1 -0
  95. package/dist/providers/direct/biorxiv.d.ts +3 -0
  96. package/dist/providers/direct/biorxiv.d.ts.map +1 -0
  97. package/dist/providers/direct/biorxiv.js +33 -0
  98. package/dist/providers/direct/biorxiv.js.map +1 -0
  99. package/dist/providers/direct/bnf.d.ts +3 -0
  100. package/dist/providers/direct/bnf.d.ts.map +1 -0
  101. package/dist/providers/direct/bnf.js +30 -0
  102. package/dist/providers/direct/bnf.js.map +1 -0
  103. package/dist/providers/direct/cadthReviews.d.ts +3 -0
  104. package/dist/providers/direct/cadthReviews.d.ts.map +1 -0
  105. package/dist/providers/direct/cadthReviews.js +30 -0
  106. package/dist/providers/direct/cadthReviews.js.map +1 -0
  107. package/dist/providers/direct/chembl.d.ts +3 -0
  108. package/dist/providers/direct/chembl.d.ts.map +1 -0
  109. package/dist/providers/direct/chembl.js +24 -0
  110. package/dist/providers/direct/chembl.js.map +1 -0
  111. package/dist/providers/direct/citeline.d.ts +3 -0
  112. package/dist/providers/direct/citeline.d.ts.map +1 -0
  113. package/dist/providers/direct/citeline.js +50 -0
  114. package/dist/providers/direct/citeline.js.map +1 -0
  115. package/dist/providers/direct/clinicalTrials.d.ts +3 -0
  116. package/dist/providers/direct/clinicalTrials.d.ts.map +1 -0
  117. package/dist/providers/direct/clinicalTrials.js +29 -0
  118. package/dist/providers/direct/clinicalTrials.js.map +1 -0
  119. package/dist/providers/direct/cmsNadac.d.ts +3 -0
  120. package/dist/providers/direct/cmsNadac.d.ts.map +1 -0
  121. package/dist/providers/direct/cmsNadac.js +52 -0
  122. package/dist/providers/direct/cmsNadac.js.map +1 -0
  123. package/dist/providers/direct/cochrane.d.ts +3 -0
  124. package/dist/providers/direct/cochrane.d.ts.map +1 -0
  125. package/dist/providers/direct/cochrane.js +46 -0
  126. package/dist/providers/direct/cochrane.js.map +1 -0
  127. package/dist/providers/direct/conitec.d.ts +3 -0
  128. package/dist/providers/direct/conitec.d.ts.map +1 -0
  129. package/dist/providers/direct/conitec.js +25 -0
  130. package/dist/providers/direct/conitec.js.map +1 -0
  131. package/dist/providers/direct/cortellis.d.ts +3 -0
  132. package/dist/providers/direct/cortellis.d.ts.map +1 -0
  133. package/dist/providers/direct/cortellis.js +52 -0
  134. package/dist/providers/direct/cortellis.js.map +1 -0
  135. package/dist/providers/direct/datasus.d.ts +3 -0
  136. package/dist/providers/direct/datasus.d.ts.map +1 -0
  137. package/dist/providers/direct/datasus.js +30 -0
  138. package/dist/providers/direct/datasus.js.map +1 -0
  139. package/dist/providers/direct/embase.d.ts +3 -0
  140. package/dist/providers/direct/embase.d.ts.map +1 -0
  141. package/dist/providers/direct/embase.js +54 -0
  142. package/dist/providers/direct/embase.js.map +1 -0
  143. package/dist/providers/direct/fonasa.d.ts +3 -0
  144. package/dist/providers/direct/fonasa.d.ts.map +1 -0
  145. package/dist/providers/direct/fonasa.js +25 -0
  146. package/dist/providers/direct/fonasa.js.map +1 -0
  147. package/dist/providers/direct/gbaDecisions.d.ts +3 -0
  148. package/dist/providers/direct/gbaDecisions.d.ts.map +1 -0
  149. package/dist/providers/direct/gbaDecisions.js +30 -0
  150. package/dist/providers/direct/gbaDecisions.js.map +1 -0
  151. package/dist/providers/direct/googleScholar.d.ts +3 -0
  152. package/dist/providers/direct/googleScholar.d.ts.map +1 -0
  153. package/dist/providers/direct/googleScholar.js +39 -0
  154. package/dist/providers/direct/googleScholar.js.map +1 -0
  155. package/dist/providers/direct/hasTc.d.ts +3 -0
  156. package/dist/providers/direct/hasTc.d.ts.map +1 -0
  157. package/dist/providers/direct/hasTc.js +30 -0
  158. package/dist/providers/direct/hasTc.js.map +1 -0
  159. package/dist/providers/direct/hitap.d.ts +3 -0
  160. package/dist/providers/direct/hitap.d.ts.map +1 -0
  161. package/dist/providers/direct/hitap.js +30 -0
  162. package/dist/providers/direct/hitap.js.map +1 -0
  163. package/dist/providers/direct/icerReports.d.ts +3 -0
  164. package/dist/providers/direct/icerReports.d.ts.map +1 -0
  165. package/dist/providers/direct/icerReports.js +30 -0
  166. package/dist/providers/direct/icerReports.js.map +1 -0
  167. package/dist/providers/direct/iets.d.ts +3 -0
  168. package/dist/providers/direct/iets.d.ts.map +1 -0
  169. package/dist/providers/direct/iets.js +25 -0
  170. package/dist/providers/direct/iets.js.map +1 -0
  171. package/dist/providers/direct/ihmeGbd.d.ts +3 -0
  172. package/dist/providers/direct/ihmeGbd.d.ts.map +1 -0
  173. package/dist/providers/direct/ihmeGbd.js +74 -0
  174. package/dist/providers/direct/ihmeGbd.js.map +1 -0
  175. package/dist/providers/direct/index.d.ts +7 -0
  176. package/dist/providers/direct/index.d.ts.map +1 -0
  177. package/dist/providers/direct/index.js +186 -0
  178. package/dist/providers/direct/index.js.map +1 -0
  179. package/dist/providers/direct/inesss.d.ts +3 -0
  180. package/dist/providers/direct/inesss.d.ts.map +1 -0
  181. package/dist/providers/direct/inesss.js +30 -0
  182. package/dist/providers/direct/inesss.js.map +1 -0
  183. package/dist/providers/direct/iqwig.d.ts +3 -0
  184. package/dist/providers/direct/iqwig.d.ts.map +1 -0
  185. package/dist/providers/direct/iqwig.js +30 -0
  186. package/dist/providers/direct/iqwig.js.map +1 -0
  187. package/dist/providers/direct/ispor.d.ts +3 -0
  188. package/dist/providers/direct/ispor.d.ts.map +1 -0
  189. package/dist/providers/direct/ispor.js +35 -0
  190. package/dist/providers/direct/ispor.js.map +1 -0
  191. package/dist/providers/direct/nhsCosts.d.ts +3 -0
  192. package/dist/providers/direct/nhsCosts.d.ts.map +1 -0
  193. package/dist/providers/direct/nhsCosts.js +32 -0
  194. package/dist/providers/direct/nhsCosts.js.map +1 -0
  195. package/dist/providers/direct/niceTa.d.ts +3 -0
  196. package/dist/providers/direct/niceTa.d.ts.map +1 -0
  197. package/dist/providers/direct/niceTa.js +30 -0
  198. package/dist/providers/direct/niceTa.js.map +1 -0
  199. package/dist/providers/direct/oecd.d.ts +3 -0
  200. package/dist/providers/direct/oecd.d.ts.map +1 -0
  201. package/dist/providers/direct/oecd.js +102 -0
  202. package/dist/providers/direct/oecd.js.map +1 -0
  203. package/dist/providers/direct/orangeBook.d.ts +3 -0
  204. package/dist/providers/direct/orangeBook.d.ts.map +1 -0
  205. package/dist/providers/direct/orangeBook.js +48 -0
  206. package/dist/providers/direct/orangeBook.js.map +1 -0
  207. package/dist/providers/direct/paho.d.ts +3 -0
  208. package/dist/providers/direct/paho.d.ts.map +1 -0
  209. package/dist/providers/direct/paho.js +30 -0
  210. package/dist/providers/direct/paho.js.map +1 -0
  211. package/dist/providers/direct/pbacPsd.d.ts +3 -0
  212. package/dist/providers/direct/pbacPsd.d.ts.map +1 -0
  213. package/dist/providers/direct/pbacPsd.js +30 -0
  214. package/dist/providers/direct/pbacPsd.js.map +1 -0
  215. package/dist/providers/direct/pbsSchedule.d.ts +3 -0
  216. package/dist/providers/direct/pbsSchedule.d.ts.map +1 -0
  217. package/dist/providers/direct/pbsSchedule.js +37 -0
  218. package/dist/providers/direct/pbsSchedule.js.map +1 -0
  219. package/dist/providers/direct/pharmapendium.d.ts +3 -0
  220. package/dist/providers/direct/pharmapendium.d.ts.map +1 -0
  221. package/dist/providers/direct/pharmapendium.js +39 -0
  222. package/dist/providers/direct/pharmapendium.js.map +1 -0
  223. package/dist/providers/direct/proxyClient.d.ts +15 -0
  224. package/dist/providers/direct/proxyClient.d.ts.map +1 -0
  225. package/dist/providers/direct/proxyClient.js +76 -0
  226. package/dist/providers/direct/proxyClient.js.map +1 -0
  227. package/dist/providers/direct/pssru.d.ts +3 -0
  228. package/dist/providers/direct/pssru.d.ts.map +1 -0
  229. package/dist/providers/direct/pssru.js +33 -0
  230. package/dist/providers/direct/pssru.js.map +1 -0
  231. package/dist/providers/direct/pubmed.d.ts +3 -0
  232. package/dist/providers/direct/pubmed.d.ts.map +1 -0
  233. package/dist/providers/direct/pubmed.js +73 -0
  234. package/dist/providers/direct/pubmed.js.map +1 -0
  235. package/dist/providers/direct/purpleBook.d.ts +3 -0
  236. package/dist/providers/direct/purpleBook.d.ts.map +1 -0
  237. package/dist/providers/direct/purpleBook.js +52 -0
  238. package/dist/providers/direct/purpleBook.js.map +1 -0
  239. package/dist/providers/direct/tlv.d.ts +3 -0
  240. package/dist/providers/direct/tlv.d.ts.map +1 -0
  241. package/dist/providers/direct/tlv.js +30 -0
  242. package/dist/providers/direct/tlv.js.map +1 -0
  243. package/dist/providers/direct/whoGho.d.ts +3 -0
  244. package/dist/providers/direct/whoGho.d.ts.map +1 -0
  245. package/dist/providers/direct/whoGho.js +51 -0
  246. package/dist/providers/direct/whoGho.js.map +1 -0
  247. package/dist/providers/direct/worldBank.d.ts +3 -0
  248. package/dist/providers/direct/worldBank.d.ts.map +1 -0
  249. package/dist/providers/direct/worldBank.js +54 -0
  250. package/dist/providers/direct/worldBank.js.map +1 -0
  251. package/dist/providers/factory.d.ts +3 -0
  252. package/dist/providers/factory.d.ts.map +1 -0
  253. package/dist/providers/factory.js +8 -0
  254. package/dist/providers/factory.js.map +1 -0
  255. package/dist/providers/hosted/index.d.ts +9 -0
  256. package/dist/providers/hosted/index.d.ts.map +1 -0
  257. package/dist/providers/hosted/index.js +16 -0
  258. package/dist/providers/hosted/index.js.map +1 -0
  259. package/dist/providers/types.d.ts +176 -0
  260. package/dist/providers/types.d.ts.map +1 -0
  261. package/dist/providers/types.js +2 -0
  262. package/dist/providers/types.js.map +1 -0
  263. package/dist/server.d.ts +3 -0
  264. package/dist/server.d.ts.map +1 -0
  265. package/dist/server.js +80 -0
  266. package/dist/server.js.map +1 -0
  267. package/dist/tools/costEffectivenessModel.d.ts +98 -0
  268. package/dist/tools/costEffectivenessModel.d.ts.map +1 -0
  269. package/dist/tools/costEffectivenessModel.js +404 -0
  270. package/dist/tools/costEffectivenessModel.js.map +1 -0
  271. package/dist/tools/htaDossierPrep.d.ts +69 -0
  272. package/dist/tools/htaDossierPrep.d.ts.map +1 -0
  273. package/dist/tools/htaDossierPrep.js +399 -0
  274. package/dist/tools/htaDossierPrep.js.map +1 -0
  275. package/dist/tools/knowledgeRead.d.ts +21 -0
  276. package/dist/tools/knowledgeRead.d.ts.map +1 -0
  277. package/dist/tools/knowledgeRead.js +38 -0
  278. package/dist/tools/knowledgeRead.js.map +1 -0
  279. package/dist/tools/knowledgeSearch.d.ts +37 -0
  280. package/dist/tools/knowledgeSearch.d.ts.map +1 -0
  281. package/dist/tools/knowledgeSearch.js +51 -0
  282. package/dist/tools/knowledgeSearch.js.map +1 -0
  283. package/dist/tools/knowledgeWrite.d.ts +25 -0
  284. package/dist/tools/knowledgeWrite.d.ts.map +1 -0
  285. package/dist/tools/knowledgeWrite.js +40 -0
  286. package/dist/tools/knowledgeWrite.js.map +1 -0
  287. package/dist/tools/literatureSearch.d.ts +42 -0
  288. package/dist/tools/literatureSearch.d.ts.map +1 -0
  289. package/dist/tools/literatureSearch.js +142 -0
  290. package/dist/tools/literatureSearch.js.map +1 -0
  291. package/dist/tools/metabolicProfile.d.ts +19 -0
  292. package/dist/tools/metabolicProfile.d.ts.map +1 -0
  293. package/dist/tools/metabolicProfile.js +150 -0
  294. package/dist/tools/metabolicProfile.js.map +1 -0
  295. package/dist/tools/projectCreate.d.ts +37 -0
  296. package/dist/tools/projectCreate.d.ts.map +1 -0
  297. package/dist/tools/projectCreate.js +61 -0
  298. package/dist/tools/projectCreate.js.map +1 -0
  299. package/package.json +71 -0
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { writeWikiFile } from "../knowledge/wikiStore.js";
3
+ import { createAuditRecord } from "../audit/builder.js";
4
+ const KnowledgeWriteSchema = z.object({
5
+ project: z.string().min(1),
6
+ path: z.string().min(1),
7
+ content: z.string(),
8
+ });
9
+ export async function handleKnowledgeWrite(rawParams) {
10
+ const params = KnowledgeWriteSchema.parse(rawParams);
11
+ const audit = createAuditRecord("knowledge_write", { project: params.project, path: params.path }, "text");
12
+ try {
13
+ const fullPath = await writeWikiFile(params.project, params.path, params.content);
14
+ return {
15
+ content: `✓ Wrote ${params.path} (${params.content.length} chars)\nFull path: ${fullPath}`,
16
+ audit,
17
+ };
18
+ }
19
+ catch (err) {
20
+ const msg = err instanceof Error ? err.message : String(err);
21
+ return {
22
+ content: `Error writing ${params.path}: ${msg}`,
23
+ audit,
24
+ };
25
+ }
26
+ }
27
+ export const knowledgeWriteToolSchema = {
28
+ name: "knowledge_write",
29
+ description: "Write a file to the project's wiki/ tree. Path MUST start with 'wiki/' and end with '.md'. Use this to compile/organize evidence from raw/ files into a structured knowledge base. Supports Obsidian-style [[wikilinks]].",
30
+ inputSchema: {
31
+ type: "object",
32
+ properties: {
33
+ project: { type: "string", description: "Project ID" },
34
+ path: { type: "string", description: "Relative path starting with 'wiki/', ending with .md (e.g. 'wiki/trials/sustain-6.md')" },
35
+ content: { type: "string", description: "Markdown content. Can include YAML frontmatter and [[wikilinks]]." },
36
+ },
37
+ required: ["project", "path", "content"],
38
+ },
39
+ };
40
+ //# sourceMappingURL=knowledgeWrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledgeWrite.js","sourceRoot":"","sources":["../../src/tools/knowledgeWrite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,SAAkB;IAC3D,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;IAE3G,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAClF,OAAO;YACL,OAAO,EAAE,WAAW,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,uBAAuB,QAAQ,EAAE;YAC1F,KAAK;SACN,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,iBAAiB,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE;YAC/C,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,2NAA2N;IACxO,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;YACtD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wFAAwF,EAAE;YAC/H,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;SAC9G;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;KACzC;CACF,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { ToolResult } from "../providers/types.js";
2
+ export declare function handleLiteratureSearch(rawParams: unknown): Promise<ToolResult>;
3
+ export declare const literatureSearchToolSchema: {
4
+ name: string;
5
+ description: string;
6
+ inputSchema: {
7
+ type: string;
8
+ properties: {
9
+ query: {
10
+ type: string;
11
+ description: string;
12
+ };
13
+ sources: {
14
+ type: string;
15
+ items: {
16
+ type: string;
17
+ enum: string[];
18
+ };
19
+ description: string;
20
+ };
21
+ max_results: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ date_from: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ output_format: {
30
+ type: string;
31
+ enum: string[];
32
+ description: string;
33
+ };
34
+ project: {
35
+ type: string;
36
+ description: string;
37
+ };
38
+ };
39
+ required: string[];
40
+ };
41
+ };
42
+ //# sourceMappingURL=literatureSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literatureSearch.d.ts","sourceRoot":"","sources":["../../src/tools/literatureSearch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA2DxD,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,UAAU,CAAC,CAIrB;AAED,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFtC,CAAC"}
@@ -0,0 +1,142 @@
1
+ import { z } from "zod";
2
+ import { createProvider } from "../providers/factory.js";
3
+ const LiteratureSearchSchema = z.object({
4
+ query: z.string().min(1, "query is required"),
5
+ sources: z
6
+ .array(z.enum([
7
+ "pubmed",
8
+ "clinicaltrials",
9
+ "biorxiv",
10
+ "chembl",
11
+ "embase",
12
+ "who_gho",
13
+ "world_bank",
14
+ "all_of_us",
15
+ "oecd",
16
+ "ihme_gbd",
17
+ "orange_book",
18
+ "purple_book",
19
+ "cochrane",
20
+ "citeline",
21
+ "pharmapendium",
22
+ "cortellis",
23
+ "google_scholar",
24
+ "cms_nadac",
25
+ "pssru",
26
+ "nhs_costs",
27
+ "bnf",
28
+ "pbs_schedule",
29
+ "datasus",
30
+ "conitec",
31
+ "anvisa",
32
+ "paho",
33
+ "iets",
34
+ "fonasa",
35
+ "hitap",
36
+ "nice_ta",
37
+ "cadth_reviews",
38
+ "icer_reports",
39
+ "pbac_psd",
40
+ "gba_decisions",
41
+ "has_tc",
42
+ "iqwig",
43
+ "aifa",
44
+ "tlv",
45
+ "inesss",
46
+ "ispor",
47
+ ]))
48
+ .optional(),
49
+ max_results: z.number().int().min(1).max(100).optional(),
50
+ date_from: z.string().optional(),
51
+ study_types: z
52
+ .array(z.enum(["rct", "meta_analysis", "observational", "review"]))
53
+ .optional(),
54
+ output_format: z.enum(["text", "json", "docx"]).optional(),
55
+ project: z.string().optional(),
56
+ });
57
+ export async function handleLiteratureSearch(rawParams) {
58
+ const params = LiteratureSearchSchema.parse(rawParams);
59
+ const provider = createProvider();
60
+ return provider.searchLiterature(params);
61
+ }
62
+ export const literatureSearchToolSchema = {
63
+ name: "literature_search",
64
+ description: "Search PubMed, ClinicalTrials.gov, bioRxiv/medRxiv, ChEMBL, FDA Orange Book, FDA Purple Book, enterprise sources (Cochrane, Citeline, Pharmapendium, Cortellis), HTA cost reference sources (CMS NADAC, PSSRU, NHS National Cost Collection, BNF, PBS Schedule), LATAM sources (DATASUS, CONITEC, ANVISA, PAHO, IETS, FONASA), APAC sources (HITAP), and HTA appraisal/guidance sources (NICE TAs, CADTH CDR/pCODR, ICER, PBAC PSDs, G-BA AMNOG, HAS Transparency Committee, IQWiG, AIFA, TLV Sweden, INESSS Quebec) for evidence on a drug or indication. Returns structured results including HTA precedents and appraisal decisions with a full audit trail suitable for HTA submissions.",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ query: {
69
+ type: "string",
70
+ description: "Research question (e.g. 'semaglutide type 2 diabetes cost-effectiveness')",
71
+ },
72
+ sources: {
73
+ type: "array",
74
+ items: {
75
+ type: "string",
76
+ enum: [
77
+ "pubmed",
78
+ "clinicaltrials",
79
+ "biorxiv",
80
+ "chembl",
81
+ "embase",
82
+ "who_gho",
83
+ "world_bank",
84
+ "all_of_us",
85
+ "oecd",
86
+ "ihme_gbd",
87
+ "orange_book",
88
+ "purple_book",
89
+ "cochrane",
90
+ "citeline",
91
+ "pharmapendium",
92
+ "cortellis",
93
+ "google_scholar",
94
+ "cms_nadac",
95
+ "pssru",
96
+ "nhs_costs",
97
+ "bnf",
98
+ "pbs_schedule",
99
+ "datasus",
100
+ "conitec",
101
+ "anvisa",
102
+ "paho",
103
+ "iets",
104
+ "fonasa",
105
+ "hitap",
106
+ "nice_ta",
107
+ "cadth_reviews",
108
+ "icer_reports",
109
+ "pbac_psd",
110
+ "gba_decisions",
111
+ "has_tc",
112
+ "iqwig",
113
+ "aifa",
114
+ "tlv",
115
+ "inesss",
116
+ "ispor",
117
+ ],
118
+ },
119
+ description: "Data sources to query. Default: pubmed, clinicaltrials, biorxiv, chembl (+ embase if ELSEVIER_API_KEY set). Use 'who_gho' and 'world_bank' for epidemiology and demographic data. Use 'oecd' for OECD health statistics (expenditure, hospital beds, physicians, life expectancy). Use 'ihme_gbd' for Global Burden of Disease estimates (DALYs, prevalence, mortality across 204 countries). Use 'orange_book' for FDA drug approvals and therapeutic equivalence. Use 'purple_book' for FDA-licensed biologics and biosimilars. Enterprise (require API key): 'cochrane' (COCHRANE_API_KEY), 'citeline' (CITELINE_API_KEY), 'pharmapendium' (PHARMAPENDIUM_API_KEY), 'cortellis' (CORTELLIS_API_KEY). HTA cost reference sources: 'cms_nadac' (US drug acquisition costs via CMS API), 'pssru' (UK unit costs, reference links), 'nhs_costs' (NHS National Cost Collection, reference links), 'bnf' (UK drug pricing, reference links), 'pbs_schedule' (Australia PBS/MBS pricing, reference links). LATAM sources (explicit request only): 'datasus' (Brazil SUS hospital/ambulatory data), 'conitec' (Brazil HTA reports), 'anvisa' (Brazil drug pricing/registry), 'paho' (Pan American regional health statistics), 'iets' (Colombia HTA reports), 'fonasa' (Chile public health insurance data). APAC sources (explicit request only): 'hitap' (Thailand HTA reports and methodology). HTA appraisal/precedent sources (explicit request only): 'nice_ta' (NICE Technology Appraisals, UK), 'cadth_reviews' (CADTH CDR/pCODR, Canada), 'icer_reports' (ICER evidence reports and HBPBs, US), 'pbac_psd' (PBAC Public Summary Documents, Australia), 'gba_decisions' (G-BA AMNOG benefit assessments, Germany), 'has_tc' (HAS Transparency Committee opinions, France), 'iqwig' (IQWiG systematic reviews and dossier assessments, Germany), 'aifa' (AIFA reimbursement decisions, Italy), 'tlv' (TLV value-based pricing decisions, Sweden), 'inesss' (INESSS drug evaluations, Quebec Canada).",
120
+ },
121
+ max_results: {
122
+ type: "number",
123
+ description: "Maximum results to return (default: 20, max: 100)",
124
+ },
125
+ date_from: {
126
+ type: "string",
127
+ description: "Exclude results before this date (ISO format: YYYY-MM-DD)",
128
+ },
129
+ output_format: {
130
+ type: "string",
131
+ enum: ["text", "json", "docx"],
132
+ description: "Output format. 'docx' requires hosted tier.",
133
+ },
134
+ project: {
135
+ type: "string",
136
+ description: "Project ID for knowledge base persistence. When set, results are saved to ~/.heor-agent/projects/{project}/raw/literature/",
137
+ },
138
+ },
139
+ required: ["query"],
140
+ },
141
+ };
142
+ //# sourceMappingURL=literatureSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literatureSearch.js","sourceRoot":"","sources":["../../src/tools/literatureSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface MetabolicProfile {
2
+ condition: string;
3
+ indicators_found: MetabolicIndicator[];
4
+ comorbidities_mentioned: string[];
5
+ biomarkers_mentioned: string[];
6
+ demographic_notes: string[];
7
+ data_quality: "strong" | "moderate" | "weak";
8
+ }
9
+ export interface MetabolicIndicator {
10
+ name: string;
11
+ category: "anthropometric" | "glycemic" | "lipid" | "cardiovascular" | "renal" | "hepatic" | "other";
12
+ mentioned_in: number;
13
+ }
14
+ export declare function analyzeMetabolicProfile(results: Array<{
15
+ title: string;
16
+ abstract: string;
17
+ }>, condition: string): MetabolicProfile;
18
+ export declare function profileToMarkdown(profile: MetabolicProfile): string;
19
+ //# sourceMappingURL=metabolicProfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metabolicProfile.d.ts","sourceRoot":"","sources":["../../src/tools/metabolicProfile.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EACJ,gBAAgB,GAChB,UAAU,GACV,OAAO,GACP,gBAAgB,GAChB,OAAO,GACP,SAAS,GACT,OAAO,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB;AAkED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACnD,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAoElB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAwCnE"}
@@ -0,0 +1,150 @@
1
+ // Common HEOR metabolic indicators to look for in abstracts
2
+ const METABOLIC_INDICATORS = [
3
+ // Anthropometric
4
+ { name: "BMI", pattern: /\bBMI\b|body mass index/i, category: "anthropometric" },
5
+ { name: "Waist circumference", pattern: /waist circumference/i, category: "anthropometric" },
6
+ { name: "Obesity", pattern: /\bobes/i, category: "anthropometric" },
7
+ // Glycemic
8
+ { name: "HbA1c", pattern: /\bHbA1c\b|glycated hemoglobin|glycosylated/i, category: "glycemic" },
9
+ { name: "Fasting glucose", pattern: /fasting (plasma )?glucose|FPG\b/i, category: "glycemic" },
10
+ { name: "HOMA-IR", pattern: /HOMA-IR|insulin resistance/i, category: "glycemic" },
11
+ // Lipid
12
+ { name: "LDL cholesterol", pattern: /\bLDL\b|low-density lipoprotein/i, category: "lipid" },
13
+ { name: "HDL cholesterol", pattern: /\bHDL\b|high-density lipoprotein/i, category: "lipid" },
14
+ { name: "Triglycerides", pattern: /triglyceride/i, category: "lipid" },
15
+ { name: "Total cholesterol", pattern: /total cholesterol/i, category: "lipid" },
16
+ // Cardiovascular
17
+ {
18
+ name: "Blood pressure",
19
+ pattern: /blood pressure|hypertension|systolic|diastolic|SBP\b|DBP\b/i,
20
+ category: "cardiovascular",
21
+ },
22
+ { name: "Heart rate", pattern: /heart rate|pulse rate/i, category: "cardiovascular" },
23
+ { name: "MACE", pattern: /\bMACE\b|major adverse cardiovascular/i, category: "cardiovascular" },
24
+ // Renal
25
+ { name: "eGFR", pattern: /\beGFR\b|estimated glomerular filtration/i, category: "renal" },
26
+ { name: "Creatinine", pattern: /creatinine/i, category: "renal" },
27
+ { name: "UACR", pattern: /\bUACR\b|albumin.creatinine ratio/i, category: "renal" },
28
+ // Hepatic
29
+ { name: "ALT", pattern: /\bALT\b|alanine (amino)?transferase/i, category: "hepatic" },
30
+ { name: "AST", pattern: /\bAST\b|aspartate (amino)?transferase/i, category: "hepatic" },
31
+ {
32
+ name: "NAFLD",
33
+ pattern: /\bNAFLD\b|non.alcoholic fatty liver|NASH\b|MASLD\b|MASH\b/i,
34
+ category: "hepatic",
35
+ },
36
+ ];
37
+ const COMORBIDITIES = [
38
+ { name: "Type 2 diabetes", pattern: /type 2 diabetes|T2DM?\b|T2D\b/i },
39
+ { name: "Hypertension", pattern: /hypertension/i },
40
+ { name: "Dyslipidemia", pattern: /dyslipid/i },
41
+ { name: "Cardiovascular disease", pattern: /cardiovascular disease|CVD\b|coronary artery/i },
42
+ { name: "Chronic kidney disease", pattern: /chronic kidney|CKD\b/i },
43
+ { name: "Heart failure", pattern: /heart failure|HF\b|HFrEF|HFpEF/i },
44
+ { name: "Stroke", pattern: /\bstroke\b|cerebrovascular/i },
45
+ { name: "Depression", pattern: /\bdepression\b|depressive/i },
46
+ { name: "COPD", pattern: /\bCOPD\b|chronic obstructive/i },
47
+ { name: "Metabolic syndrome", pattern: /metabolic syndrome/i },
48
+ ];
49
+ const BIOMARKERS = [
50
+ { name: "CRP / hs-CRP", pattern: /\bCRP\b|C-reactive protein|hs-CRP/i },
51
+ { name: "NT-proBNP", pattern: /NT-proBNP|BNP\b|brain natriuretic/i },
52
+ { name: "Troponin", pattern: /troponin/i },
53
+ { name: "IL-6", pattern: /\bIL-6\b|interleukin.6/i },
54
+ { name: "TNF-α", pattern: /TNF|tumor necrosis factor/i },
55
+ { name: "Adiponectin", pattern: /adiponectin/i },
56
+ { name: "Ferritin", pattern: /ferritin/i },
57
+ ];
58
+ export function analyzeMetabolicProfile(results, condition) {
59
+ const indicatorCounts = new Map();
60
+ const comorbSet = new Set();
61
+ const biomarkerSet = new Set();
62
+ const demoNotes = [];
63
+ for (const r of results) {
64
+ const text = `${r.title} ${r.abstract}`;
65
+ // Scan for metabolic indicators
66
+ for (const ind of METABOLIC_INDICATORS) {
67
+ if (ind.pattern.test(text)) {
68
+ const existing = indicatorCounts.get(ind.name);
69
+ if (existing) {
70
+ existing.count++;
71
+ }
72
+ else {
73
+ indicatorCounts.set(ind.name, { count: 1, category: ind.category });
74
+ }
75
+ }
76
+ }
77
+ // Scan for comorbidities
78
+ for (const c of COMORBIDITIES) {
79
+ if (c.pattern.test(text))
80
+ comorbSet.add(c.name);
81
+ }
82
+ // Scan for biomarkers
83
+ for (const b of BIOMARKERS) {
84
+ if (b.pattern.test(text))
85
+ biomarkerSet.add(b.name);
86
+ }
87
+ // Extract demographic mentions
88
+ const ageMatch = text.match(/(\d+)\s*[-–]\s*(\d+)\s*years?\s*(old|of age)?/i);
89
+ if (ageMatch) {
90
+ const note = `Age range: ${ageMatch[1]}–${ageMatch[2]} years`;
91
+ if (!demoNotes.includes(note))
92
+ demoNotes.push(note);
93
+ }
94
+ if (/\bmale\b.*\bfemale\b|\bmen\b.*\bwomen\b/i.test(text) &&
95
+ !demoNotes.some((d) => d.includes("sex"))) {
96
+ demoNotes.push("Both sexes included in study populations");
97
+ }
98
+ }
99
+ const indicators = Array.from(indicatorCounts.entries())
100
+ .map(([name, { count, category }]) => ({ name, category, mentioned_in: count }))
101
+ .sort((a, b) => b.mentioned_in - a.mentioned_in);
102
+ // Data quality based on how many indicators and results
103
+ const quality = indicators.length >= 5 && results.length >= 5
104
+ ? "strong"
105
+ : indicators.length >= 2 || results.length >= 3
106
+ ? "moderate"
107
+ : "weak";
108
+ return {
109
+ condition,
110
+ indicators_found: indicators,
111
+ comorbidities_mentioned: Array.from(comorbSet).sort(),
112
+ biomarkers_mentioned: Array.from(biomarkerSet).sort(),
113
+ demographic_notes: demoNotes,
114
+ data_quality: quality,
115
+ };
116
+ }
117
+ export function profileToMarkdown(profile) {
118
+ const lines = [];
119
+ lines.push(`\n## Population Metabolic Profile: ${profile.condition}`);
120
+ lines.push(`*Data quality: ${profile.data_quality}*\n`);
121
+ if (profile.indicators_found.length > 0) {
122
+ lines.push(`### Metabolic Indicators Identified`);
123
+ lines.push(`| Indicator | Category | Mentioned in N studies |`);
124
+ lines.push(`|-----------|----------|-----------------------|`);
125
+ for (const ind of profile.indicators_found) {
126
+ lines.push(`| ${ind.name} | ${ind.category} | ${ind.mentioned_in} |`);
127
+ }
128
+ lines.push("");
129
+ }
130
+ if (profile.comorbidities_mentioned.length > 0) {
131
+ lines.push(`### Comorbidities Mentioned`);
132
+ profile.comorbidities_mentioned.forEach((c) => lines.push(`- ${c}`));
133
+ lines.push("");
134
+ }
135
+ if (profile.biomarkers_mentioned.length > 0) {
136
+ lines.push(`### Biomarkers Referenced`);
137
+ profile.biomarkers_mentioned.forEach((b) => lines.push(`- ${b}`));
138
+ lines.push("");
139
+ }
140
+ if (profile.demographic_notes.length > 0) {
141
+ lines.push(`### Population Demographics`);
142
+ profile.demographic_notes.forEach((d) => lines.push(`- ${d}`));
143
+ lines.push("");
144
+ }
145
+ if (profile.indicators_found.length === 0) {
146
+ lines.push(`*No metabolic indicators identified in the search results. Try a more specific query or request additional data sources (who_gho, all_of_us).*`);
147
+ }
148
+ return lines.join("\n");
149
+ }
150
+ //# sourceMappingURL=metabolicProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metabolicProfile.js","sourceRoot":"","sources":["../../src/tools/metabolicProfile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { ToolResult } from "../providers/types.js";
2
+ export declare function handleProjectCreate(rawParams: unknown): Promise<ToolResult>;
3
+ export declare const projectCreateToolSchema: {
4
+ name: string;
5
+ description: string;
6
+ inputSchema: {
7
+ type: string;
8
+ properties: {
9
+ project_id: {
10
+ type: string;
11
+ description: string;
12
+ };
13
+ drug: {
14
+ type: string;
15
+ description: string;
16
+ };
17
+ indication: {
18
+ type: string;
19
+ description: string;
20
+ };
21
+ hta_targets: {
22
+ type: string;
23
+ items: {
24
+ type: string;
25
+ enum: string[];
26
+ };
27
+ description: string;
28
+ };
29
+ notes: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ };
34
+ required: string[];
35
+ };
36
+ };
37
+ //# sourceMappingURL=projectCreate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectCreate.d.ts","sourceRoot":"","sources":["../../src/tools/projectCreate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAaxD,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA+BjF;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBnC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { z } from "zod";
2
+ import { createProject, listProjects } from "../knowledge/projectStore.js";
3
+ import { createAuditRecord } from "../audit/builder.js";
4
+ const ProjectCreateSchema = z.object({
5
+ project_id: z.string().min(1).max(64),
6
+ drug: z.string().min(1),
7
+ indication: z.string().min(1),
8
+ hta_targets: z
9
+ .array(z.enum(["nice", "ema", "fda", "iqwig", "has", "jca", "cadth", "pbac", "icer"]))
10
+ .optional(),
11
+ notes: z.string().optional(),
12
+ });
13
+ export async function handleProjectCreate(rawParams) {
14
+ const params = ProjectCreateSchema.parse(rawParams);
15
+ const audit = createAuditRecord("project_create", params, "text");
16
+ const { config, created, path } = await createProject(params);
17
+ const lines = [];
18
+ if (created) {
19
+ lines.push(`✓ Created project "${config.project_id}"`);
20
+ lines.push(`Drug: ${config.drug} | Indication: ${config.indication}`);
21
+ if (config.hta_targets && config.hta_targets.length > 0) {
22
+ lines.push(`HTA targets: ${config.hta_targets.join(", ")}`);
23
+ }
24
+ lines.push(`Path: ${path}`);
25
+ lines.push("");
26
+ lines.push("Directory skeleton created:");
27
+ lines.push("- raw/literature/ (auto-populated by literature_search)");
28
+ lines.push("- raw/models/ (auto-populated by cost_effectiveness_model)");
29
+ lines.push("- raw/dossiers/ (auto-populated by hta_dossier_prep)");
30
+ lines.push("- wiki/index.md (starter index for manual organization)");
31
+ lines.push("");
32
+ lines.push(`Now use \`project: "${config.project_id}"\` in tool calls to auto-save results here.`);
33
+ }
34
+ else {
35
+ lines.push(`Project "${config.project_id}" already exists at ${path}`);
36
+ lines.push(`Drug: ${config.drug} | Indication: ${config.indication}`);
37
+ }
38
+ const allProjects = await listProjects();
39
+ lines.push(`\nAll projects (${allProjects.length}): ${allProjects.join(", ")}`);
40
+ return { content: lines.join("\n"), audit };
41
+ }
42
+ export const projectCreateToolSchema = {
43
+ name: "project_create",
44
+ description: "Initialize a new HEOR project workspace with directory skeleton and project.yaml metadata. Idempotent — returns existing project if already created. Required before using the `project` parameter in other tools.",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ project_id: { type: "string", description: "Short identifier (alphanumeric + hyphens, e.g. 'semaglutide-t2d')" },
49
+ drug: { type: "string", description: "Drug or intervention name" },
50
+ indication: { type: "string", description: "Disease/condition being treated" },
51
+ hta_targets: {
52
+ type: "array",
53
+ items: { type: "string", enum: ["nice", "ema", "fda", "iqwig", "has", "jca", "cadth", "pbac", "icer"] },
54
+ description: "HTA bodies to target (optional)",
55
+ },
56
+ notes: { type: "string", description: "Free-text project notes (optional)" },
57
+ },
58
+ required: ["project_id", "drug", "indication"],
59
+ },
60
+ };
61
+ //# sourceMappingURL=projectCreate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectCreate.js","sourceRoot":"","sources":["../../src/tools/projectCreate.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "heor-agent-mcp",
3
+ "version": "0.1.0",
4
+ "license": "MIT",
5
+ "author": "mnaumov",
6
+ "engines": {
7
+ "node": ">=20.0.0"
8
+ },
9
+ "description": "HEOR AI agent as an MCP server for Claude.ai — 7 tools across literature search (39 data sources incl. PubMed/ClinicalTrials.gov/Cochrane/NICE/CADTH), state-of-the-art cost-effectiveness modeling (Markov/PartSA/PSA/EVPI), HTA dossier prep (NICE/EMA/FDA/IQWiG/HAS/EU JCA), and persistent project knowledge base",
10
+ "type": "module",
11
+ "main": "dist/server.js",
12
+ "bin": {
13
+ "heor-agent-mcp": "dist/server.js"
14
+ },
15
+ "files": [
16
+ "dist/",
17
+ "README.md",
18
+ "LICENSE"
19
+ ],
20
+ "keywords": [
21
+ "heor",
22
+ "health-economics",
23
+ "hta",
24
+ "cost-effectiveness",
25
+ "pharmacoeconomics",
26
+ "nice",
27
+ "icer",
28
+ "cadth",
29
+ "pbac",
30
+ "jca",
31
+ "euhta",
32
+ "pubmed",
33
+ "clinicaltrials",
34
+ "cochrane",
35
+ "embase",
36
+ "markov",
37
+ "psa",
38
+ "mcp",
39
+ "model-context-protocol",
40
+ "claude",
41
+ "anthropic"
42
+ ],
43
+ "homepage": "https://github.com/mnaumov/HEORAgent#readme",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "git+https://github.com/mnaumov/HEORAgent.git"
47
+ },
48
+ "bugs": {
49
+ "url": "https://github.com/mnaumov/HEORAgent/issues"
50
+ },
51
+ "scripts": {
52
+ "build": "tsc",
53
+ "dev": "tsx src/server.ts",
54
+ "test": "jest",
55
+ "test:watch": "jest --watch",
56
+ "prepublishOnly": "npm run build"
57
+ },
58
+ "dependencies": {
59
+ "@modelcontextprotocol/sdk": "^1.0.0",
60
+ "docx": "^9.6.1",
61
+ "zod": "^3.22.4"
62
+ },
63
+ "devDependencies": {
64
+ "@types/jest": "^29.5.11",
65
+ "@types/node": "^20.11.0",
66
+ "jest": "^29.7.0",
67
+ "ts-jest": "^29.1.1",
68
+ "tsx": "^4.7.0",
69
+ "typescript": "^5.3.3"
70
+ }
71
+ }