@dolusoft/hirebase-mcp 1.3.5 → 1.4.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 (232) hide show
  1. package/dist/__tests__/integration/hybrid-search.test.d.ts +1 -0
  2. package/dist/__tests__/integration/hybrid-search.test.js +70 -0
  3. package/dist/__tests__/integration/hybrid-search.test.js.map +1 -0
  4. package/dist/__tests__/unit/chunking.test.d.ts +1 -0
  5. package/dist/__tests__/unit/chunking.test.js +70 -0
  6. package/dist/__tests__/unit/chunking.test.js.map +1 -0
  7. package/dist/__tests__/unit/composite-score.test.d.ts +1 -0
  8. package/dist/__tests__/unit/composite-score.test.js +28 -0
  9. package/dist/__tests__/unit/composite-score.test.js.map +1 -0
  10. package/dist/__tests__/unit/find-similar-candidates.test.d.ts +1 -0
  11. package/dist/__tests__/unit/find-similar-candidates.test.js +33 -0
  12. package/dist/__tests__/unit/find-similar-candidates.test.js.map +1 -0
  13. package/dist/__tests__/unit/query-enhancer.test.d.ts +1 -0
  14. package/dist/__tests__/unit/query-enhancer.test.js +20 -0
  15. package/dist/__tests__/unit/query-enhancer.test.js.map +1 -0
  16. package/dist/__tests__/unit/skill-graph.test.d.ts +1 -0
  17. package/dist/__tests__/unit/skill-graph.test.js +38 -0
  18. package/dist/__tests__/unit/skill-graph.test.js.map +1 -0
  19. package/dist/__tests__/unit/skill-normalizer.test.d.ts +1 -0
  20. package/dist/__tests__/unit/skill-normalizer.test.js +41 -0
  21. package/dist/__tests__/unit/skill-normalizer.test.js.map +1 -0
  22. package/dist/__tests__/unit/smoke.test.d.ts +1 -0
  23. package/dist/__tests__/unit/smoke.test.js +7 -0
  24. package/dist/__tests__/unit/smoke.test.js.map +1 -0
  25. package/dist/application/dto/candidate-summary.d.ts +2 -0
  26. package/dist/application/dto/filter-input.d.ts +2 -0
  27. package/dist/application/dto/search-results.d.ts +3 -0
  28. package/dist/application/dto/stats.d.ts +6 -0
  29. package/dist/application/services/query-enhancer.d.ts +10 -0
  30. package/dist/application/services/query-enhancer.js +34 -0
  31. package/dist/application/services/query-enhancer.js.map +1 -0
  32. package/dist/application/use-cases/add-cv.d.ts +5 -1
  33. package/dist/application/use-cases/add-cv.js +25 -4
  34. package/dist/application/use-cases/add-cv.js.map +1 -1
  35. package/dist/application/use-cases/delete-cv.d.ts +5 -1
  36. package/dist/application/use-cases/delete-cv.js +13 -1
  37. package/dist/application/use-cases/delete-cv.js.map +1 -1
  38. package/dist/application/use-cases/delete-job-posting.d.ts +10 -0
  39. package/dist/application/use-cases/delete-job-posting.js +23 -0
  40. package/dist/application/use-cases/delete-job-posting.js.map +1 -0
  41. package/dist/application/use-cases/filter-candidates.js +12 -1
  42. package/dist/application/use-cases/filter-candidates.js.map +1 -1
  43. package/dist/application/use-cases/find-similar-candidates.d.ts +21 -0
  44. package/dist/application/use-cases/find-similar-candidates.js +85 -0
  45. package/dist/application/use-cases/find-similar-candidates.js.map +1 -0
  46. package/dist/application/use-cases/get-stats.js +2 -0
  47. package/dist/application/use-cases/get-stats.js.map +1 -1
  48. package/dist/application/use-cases/list-cvs.d.ts +2 -1
  49. package/dist/application/use-cases/list-cvs.js +18 -2
  50. package/dist/application/use-cases/list-cvs.js.map +1 -1
  51. package/dist/application/use-cases/match-candidates.d.ts +5 -1
  52. package/dist/application/use-cases/match-candidates.js +61 -19
  53. package/dist/application/use-cases/match-candidates.js.map +1 -1
  54. package/dist/application/use-cases/reindex-all.d.ts +22 -0
  55. package/dist/application/use-cases/reindex-all.js +124 -0
  56. package/dist/application/use-cases/reindex-all.js.map +1 -0
  57. package/dist/application/use-cases/semantic-search.d.ts +3 -1
  58. package/dist/application/use-cases/semantic-search.js +13 -3
  59. package/dist/application/use-cases/semantic-search.js.map +1 -1
  60. package/dist/application/use-cases/update-cv.d.ts +2 -1
  61. package/dist/application/use-cases/update-cv.js +18 -3
  62. package/dist/application/use-cases/update-cv.js.map +1 -1
  63. package/dist/domain/entities/candidate.d.ts +3 -0
  64. package/dist/domain/repositories/candidate-repository.d.ts +1 -0
  65. package/dist/domain/repositories/chunk-repository.d.ts +8 -0
  66. package/dist/infrastructure/config/app-config.d.ts +5 -0
  67. package/dist/infrastructure/config/app-config.js +4 -0
  68. package/dist/infrastructure/config/app-config.js.map +1 -1
  69. package/dist/infrastructure/persistence/database.d.ts +1 -0
  70. package/dist/infrastructure/persistence/database.js +20 -0
  71. package/dist/infrastructure/persistence/database.js.map +1 -1
  72. package/dist/infrastructure/persistence/lancedb-candidate-repository.d.ts +1 -0
  73. package/dist/infrastructure/persistence/lancedb-candidate-repository.js +20 -0
  74. package/dist/infrastructure/persistence/lancedb-candidate-repository.js.map +1 -1
  75. package/dist/infrastructure/persistence/lancedb-chunk-repository.d.ts +4 -1
  76. package/dist/infrastructure/persistence/lancedb-chunk-repository.js +64 -2
  77. package/dist/infrastructure/persistence/lancedb-chunk-repository.js.map +1 -1
  78. package/dist/interface/dashboard/public/200.html +1 -1
  79. package/dist/interface/dashboard/public/404.html +1 -1
  80. package/dist/interface/dashboard/public/_nuxt/builds/latest.json +1 -1
  81. package/dist/interface/dashboard/public/_nuxt/builds/meta/05a92851-5bed-4eaf-bd75-e0aff9ec5876.json +1 -0
  82. package/dist/interface/dashboard/public/_nuxt/builds/meta/1d36013b-8fb8-4cea-a448-d5f224b731ee.json +1 -0
  83. package/dist/interface/dashboard/public/_nuxt/builds/meta/2bb695c5-c739-46a0-a3e6-4b76aa321c29.json +1 -0
  84. package/dist/interface/dashboard/public/_nuxt/builds/meta/3ee0a1ee-8e79-4443-a6e7-b0b6412b0a38.json +1 -0
  85. package/dist/interface/dashboard/public/_nuxt/builds/meta/ba31dbc0-8fe2-44bc-8214-6b3d717566a0.json +1 -0
  86. package/dist/interface/dashboard/public/_nuxt/builds/meta/fc914bdb-64a6-4798-a08f-64eb8ea9a307.json +1 -0
  87. package/dist/interface/dashboard/public/index.html +1 -1
  88. package/dist/interface/mcp/server.js +105 -42
  89. package/dist/interface/mcp/server.js.map +1 -1
  90. package/dist/interface/mcp/tools/add-cv.d.ts +2 -2
  91. package/dist/interface/mcp/tools/add-cv.js +31 -3
  92. package/dist/interface/mcp/tools/add-cv.js.map +1 -1
  93. package/dist/interface/mcp/tools/add-job-posting.d.ts +2 -2
  94. package/dist/interface/mcp/tools/add-job-posting.js +20 -12
  95. package/dist/interface/mcp/tools/add-job-posting.js.map +1 -1
  96. package/dist/interface/mcp/tools/add-pipeline-note.d.ts +2 -2
  97. package/dist/interface/mcp/tools/add-pipeline-note.js +10 -6
  98. package/dist/interface/mcp/tools/add-pipeline-note.js.map +1 -1
  99. package/dist/interface/mcp/tools/add-reference-cv.d.ts +2 -2
  100. package/dist/interface/mcp/tools/add-reference-cv.js +9 -5
  101. package/dist/interface/mcp/tools/add-reference-cv.js.map +1 -1
  102. package/dist/interface/mcp/tools/add-to-pipeline.d.ts +2 -2
  103. package/dist/interface/mcp/tools/add-to-pipeline.js +9 -5
  104. package/dist/interface/mcp/tools/add-to-pipeline.js.map +1 -1
  105. package/dist/interface/mcp/tools/check-duplicate-candidate.d.ts +2 -2
  106. package/dist/interface/mcp/tools/check-duplicate-candidate.js +8 -4
  107. package/dist/interface/mcp/tools/check-duplicate-candidate.js.map +1 -1
  108. package/dist/interface/mcp/tools/compare-candidates.d.ts +2 -2
  109. package/dist/interface/mcp/tools/compare-candidates.js +8 -4
  110. package/dist/interface/mcp/tools/compare-candidates.js.map +1 -1
  111. package/dist/interface/mcp/tools/create-call-batch.d.ts +2 -2
  112. package/dist/interface/mcp/tools/create-call-batch.js +10 -6
  113. package/dist/interface/mcp/tools/create-call-batch.js.map +1 -1
  114. package/dist/interface/mcp/tools/delete-cv.d.ts +2 -2
  115. package/dist/interface/mcp/tools/delete-cv.js +29 -2
  116. package/dist/interface/mcp/tools/delete-cv.js.map +1 -1
  117. package/dist/interface/mcp/tools/delete-job-posting.d.ts +2 -2
  118. package/dist/interface/mcp/tools/delete-job-posting.js +32 -3
  119. package/dist/interface/mcp/tools/delete-job-posting.js.map +1 -1
  120. package/dist/interface/mcp/tools/export-results.d.ts +2 -2
  121. package/dist/interface/mcp/tools/export-results.js +7 -3
  122. package/dist/interface/mcp/tools/export-results.js.map +1 -1
  123. package/dist/interface/mcp/tools/filter-candidates.d.ts +2 -2
  124. package/dist/interface/mcp/tools/filter-candidates.js +17 -9
  125. package/dist/interface/mcp/tools/filter-candidates.js.map +1 -1
  126. package/dist/interface/mcp/tools/find-similar-candidates.d.ts +3 -0
  127. package/dist/interface/mcp/tools/find-similar-candidates.js +39 -0
  128. package/dist/interface/mcp/tools/find-similar-candidates.js.map +1 -0
  129. package/dist/interface/mcp/tools/generate-screening-report.d.ts +2 -2
  130. package/dist/interface/mcp/tools/generate-screening-report.js +8 -4
  131. package/dist/interface/mcp/tools/generate-screening-report.js.map +1 -1
  132. package/dist/interface/mcp/tools/get-call-batch-status.d.ts +2 -2
  133. package/dist/interface/mcp/tools/get-call-batch-status.js +7 -3
  134. package/dist/interface/mcp/tools/get-call-batch-status.js.map +1 -1
  135. package/dist/interface/mcp/tools/get-candidate-history.d.ts +2 -2
  136. package/dist/interface/mcp/tools/get-candidate-history.js +7 -3
  137. package/dist/interface/mcp/tools/get-candidate-history.js.map +1 -1
  138. package/dist/interface/mcp/tools/get-cv-chunks.d.ts +2 -2
  139. package/dist/interface/mcp/tools/get-cv-chunks.js +13 -9
  140. package/dist/interface/mcp/tools/get-cv-chunks.js.map +1 -1
  141. package/dist/interface/mcp/tools/get-cv-detail.d.ts +2 -2
  142. package/dist/interface/mcp/tools/get-cv-detail.js +6 -2
  143. package/dist/interface/mcp/tools/get-cv-detail.js.map +1 -1
  144. package/dist/interface/mcp/tools/get-cv-versions.d.ts +2 -2
  145. package/dist/interface/mcp/tools/get-cv-versions.js +6 -2
  146. package/dist/interface/mcp/tools/get-cv-versions.js.map +1 -1
  147. package/dist/interface/mcp/tools/get-job-posting.d.ts +2 -2
  148. package/dist/interface/mcp/tools/get-job-posting.js +7 -3
  149. package/dist/interface/mcp/tools/get-job-posting.js.map +1 -1
  150. package/dist/interface/mcp/tools/get-pending-actions.d.ts +2 -2
  151. package/dist/interface/mcp/tools/get-pending-actions.js +6 -2
  152. package/dist/interface/mcp/tools/get-pending-actions.js.map +1 -1
  153. package/dist/interface/mcp/tools/get-pipeline-candidates.d.ts +2 -2
  154. package/dist/interface/mcp/tools/get-pipeline-candidates.js +7 -3
  155. package/dist/interface/mcp/tools/get-pipeline-candidates.js.map +1 -1
  156. package/dist/interface/mcp/tools/get-pipeline.d.ts +2 -2
  157. package/dist/interface/mcp/tools/get-pipeline.js +7 -3
  158. package/dist/interface/mcp/tools/get-pipeline.js.map +1 -1
  159. package/dist/interface/mcp/tools/get-screening-history.d.ts +2 -2
  160. package/dist/interface/mcp/tools/get-screening-history.js +7 -3
  161. package/dist/interface/mcp/tools/get-screening-history.js.map +1 -1
  162. package/dist/interface/mcp/tools/get-server-status.d.ts +2 -2
  163. package/dist/interface/mcp/tools/get-server-status.js +6 -2
  164. package/dist/interface/mcp/tools/get-server-status.js.map +1 -1
  165. package/dist/interface/mcp/tools/get-stats.d.ts +2 -2
  166. package/dist/interface/mcp/tools/get-stats.js +6 -2
  167. package/dist/interface/mcp/tools/get-stats.js.map +1 -1
  168. package/dist/interface/mcp/tools/list-cvs.d.ts +2 -2
  169. package/dist/interface/mcp/tools/list-cvs.js +32 -11
  170. package/dist/interface/mcp/tools/list-cvs.js.map +1 -1
  171. package/dist/interface/mcp/tools/list-job-postings.d.ts +2 -2
  172. package/dist/interface/mcp/tools/list-job-postings.js +6 -2
  173. package/dist/interface/mcp/tools/list-job-postings.js.map +1 -1
  174. package/dist/interface/mcp/tools/list-reference-cvs.d.ts +2 -2
  175. package/dist/interface/mcp/tools/list-reference-cvs.js +7 -3
  176. package/dist/interface/mcp/tools/list-reference-cvs.js.map +1 -1
  177. package/dist/interface/mcp/tools/manage-tags.d.ts +2 -2
  178. package/dist/interface/mcp/tools/manage-tags.js +8 -4
  179. package/dist/interface/mcp/tools/manage-tags.js.map +1 -1
  180. package/dist/interface/mcp/tools/match-candidates.d.ts +2 -2
  181. package/dist/interface/mcp/tools/match-candidates.js +26 -12
  182. package/dist/interface/mcp/tools/match-candidates.js.map +1 -1
  183. package/dist/interface/mcp/tools/reindex-all.d.ts +3 -0
  184. package/dist/interface/mcp/tools/reindex-all.js +31 -0
  185. package/dist/interface/mcp/tools/reindex-all.js.map +1 -0
  186. package/dist/interface/mcp/tools/remove-reference-cv.d.ts +2 -2
  187. package/dist/interface/mcp/tools/remove-reference-cv.js +29 -2
  188. package/dist/interface/mcp/tools/remove-reference-cv.js.map +1 -1
  189. package/dist/interface/mcp/tools/reset-database.d.ts +2 -2
  190. package/dist/interface/mcp/tools/reset-database.js +29 -2
  191. package/dist/interface/mcp/tools/reset-database.js.map +1 -1
  192. package/dist/interface/mcp/tools/semantic-search.d.ts +2 -2
  193. package/dist/interface/mcp/tools/semantic-search.js +24 -11
  194. package/dist/interface/mcp/tools/semantic-search.js.map +1 -1
  195. package/dist/interface/mcp/tools/set-pending-action.d.ts +2 -2
  196. package/dist/interface/mcp/tools/set-pending-action.js +16 -12
  197. package/dist/interface/mcp/tools/set-pending-action.js.map +1 -1
  198. package/dist/interface/mcp/tools/update-call-outcome.d.ts +2 -2
  199. package/dist/interface/mcp/tools/update-call-outcome.js +10 -6
  200. package/dist/interface/mcp/tools/update-call-outcome.js.map +1 -1
  201. package/dist/interface/mcp/tools/update-cv.d.ts +2 -2
  202. package/dist/interface/mcp/tools/update-cv.js +16 -6
  203. package/dist/interface/mcp/tools/update-cv.js.map +1 -1
  204. package/dist/interface/mcp/tools/update-job-posting.d.ts +2 -2
  205. package/dist/interface/mcp/tools/update-job-posting.js +16 -12
  206. package/dist/interface/mcp/tools/update-job-posting.js.map +1 -1
  207. package/dist/interface/mcp/tools/update-pipeline-status.d.ts +2 -2
  208. package/dist/interface/mcp/tools/update-pipeline-status.js +9 -5
  209. package/dist/interface/mcp/tools/update-pipeline-status.js.map +1 -1
  210. package/dist/interface/mcp/types.d.ts +2 -0
  211. package/dist/shared/data/skill-graph.json +115 -0
  212. package/dist/shared/data/skill-map.json +104 -0
  213. package/dist/shared/mcp/logger.d.ts +7 -0
  214. package/dist/shared/mcp/logger.js +20 -0
  215. package/dist/shared/mcp/logger.js.map +1 -0
  216. package/dist/shared/mcp/progress.d.ts +6 -0
  217. package/dist/shared/mcp/progress.js +33 -0
  218. package/dist/shared/mcp/progress.js.map +1 -0
  219. package/dist/shared/services/skill-graph.d.ts +11 -0
  220. package/dist/shared/services/skill-graph.js +84 -0
  221. package/dist/shared/services/skill-graph.js.map +1 -0
  222. package/dist/shared/services/skill-normalizer.d.ts +6 -0
  223. package/dist/shared/services/skill-normalizer.js +32 -0
  224. package/dist/shared/services/skill-normalizer.js.map +1 -0
  225. package/dist/shared/types/index.d.ts +3 -1
  226. package/dist/shared/utils/chunking.d.ts +9 -1
  227. package/dist/shared/utils/chunking.js +46 -36
  228. package/dist/shared/utils/chunking.js.map +1 -1
  229. package/dist/shared/utils/skill-migration.d.ts +6 -0
  230. package/dist/shared/utils/skill-migration.js +35 -0
  231. package/dist/shared/utils/skill-migration.js.map +1 -0
  232. package/package.json +12 -6
@@ -1 +1 @@
1
- {"version":3,"file":"add-to-pipeline.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-to-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAGzF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CACtC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,qGAAqG,EACrG;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAC9D,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACxC,YAAY,EAAE,cAAc;gBAC5B,WAAW,EAAE,YAAY;gBACzB,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"add-to-pipeline.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-to-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAGzF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CACtC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QAC5C,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SACrD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1G,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACxC,YAAY,EAAE,cAAc;gBAC5B,WAAW,EAAE,YAAY;gBACzB,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;aACxE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerCheckDuplicateCandidateTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerCheckDuplicateCandidateTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,14 +2,18 @@ import { z } from 'zod/v4';
2
2
  import { CheckDuplicateCandidateUseCase } from '../../../application/use-cases/check-duplicate-candidate.js';
3
3
  export function registerCheckDuplicateCandidateTool(server, deps) {
4
4
  const useCase = new CheckDuplicateCandidateUseCase(deps.candidateRepo);
5
- server.tool('check_duplicate_candidate', 'Check if a candidate already exists by name or email. Returns lightweight matches (ID, name, email only) for quick duplicate detection before importing.', {
6
- name: z.string().optional().describe('Candidate name to search for (partial match)'),
7
- email: z.string().optional().describe('Candidate email to search for (exact match)'),
5
+ return server.registerTool('check_duplicate_candidate', {
6
+ description: 'Check duplicate by name or email before import',
7
+ inputSchema: {
8
+ name: z.string().optional().describe('Name (partial match)'),
9
+ email: z.string().optional().describe('Email (exact match)'),
10
+ },
11
+ annotations: { readOnlyHint: true, openWorldHint: false },
8
12
  }, async ({ name, email }) => {
9
13
  try {
10
14
  const result = await useCase.execute({ name, email });
11
15
  return {
12
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
16
+ content: [{ type: 'text', text: JSON.stringify(result) }],
13
17
  };
14
18
  }
15
19
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"check-duplicate-candidate.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/check-duplicate-candidate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvE,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,0JAA0J,EAC1J;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QACpF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;KACrF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"check-duplicate-candidate.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/check-duplicate-candidate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvE,OAAO,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE;QACtD,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAC7D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerCompareCandidatesTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerCompareCandidatesTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,14 +2,18 @@ import { z } from 'zod/v4';
2
2
  import { CompareCandidatesUseCase } from '../../../application/use-cases/compare-candidates.js';
3
3
  export function registerCompareCandidatesTool(server, deps) {
4
4
  const useCase = new CompareCandidatesUseCase(deps.candidateRepo, deps.jobPostingRepo);
5
- server.tool('compare_candidates', 'Compare 2-5 candidates side by side. Optionally provide a job posting to include skill match scores.', {
6
- candidate_ids: z.array(z.string()).describe('IDs of candidates to compare (2-5)'),
7
- job_posting_id: z.string().optional().describe('Job posting ID for skill match scoring'),
5
+ return server.registerTool('compare_candidates', {
6
+ description: 'Compare 2-5 candidates side by side',
7
+ inputSchema: {
8
+ candidate_ids: z.array(z.string()).describe('Candidate IDs (2-5)'),
9
+ job_posting_id: z.string().optional().describe('Job posting for scoring'),
10
+ },
11
+ annotations: { readOnlyHint: true, openWorldHint: false },
8
12
  }, async ({ candidate_ids, job_posting_id }) => {
9
13
  try {
10
14
  const result = await useCase.execute(candidate_ids, job_posting_id);
11
15
  return {
12
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
16
+ content: [{ type: 'text', text: JSON.stringify(result) }],
13
17
  };
14
18
  }
15
19
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"compare-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/compare-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,IAAkB;IACjF,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEtF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,sGAAsG,EACtG;QACE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACjF,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACzF,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"compare-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/compare-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,IAAkB;IACjF,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEtF,OAAO,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE;QAC/C,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC1E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerCreateCallBatchTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerCreateCallBatchTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,11 +2,15 @@ import { z } from 'zod/v4';
2
2
  import { CreateCallBatchUseCase } from '../../../application/use-cases/create-call-batch.js';
3
3
  export function registerCreateCallBatchTool(server, deps) {
4
4
  const useCase = new CreateCallBatchUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.callBatchRepo, deps.callBatchItemRepo);
5
- server.tool('create_call_batch', 'Create a call batch: mark a list of candidates as to_call and assign them to a person (e.g. Sezer) for calling. Tracks who will call, when the batch was created, and the outcome of each call.', {
6
- job_posting_id: z.string().describe('ID of the job posting'),
7
- sent_to: z.string().describe('Name of the person who will make the calls, e.g. "Sezer"'),
8
- candidate_ids: z.array(z.string()).describe('List of candidate IDs to include in this call batch'),
9
- note: z.string().optional().describe('Optional note about this batch, e.g. "Bayram sonrasına randevu alınacak"'),
5
+ return server.registerTool('create_call_batch', {
6
+ description: 'Create call batch, assign candidates to a caller',
7
+ inputSchema: {
8
+ job_posting_id: z.string().describe('Job posting ID'),
9
+ sent_to: z.string().describe('Caller name'),
10
+ candidate_ids: z.array(z.string()).describe('Candidate IDs'),
11
+ note: z.string().optional().describe('Batch note'),
12
+ },
13
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
10
14
  }, async ({ job_posting_id, sent_to, candidate_ids, note }) => {
11
15
  try {
12
16
  const result = await useCase.execute({
@@ -16,7 +20,7 @@ export function registerCreateCallBatchTool(server, deps) {
16
20
  note,
17
21
  });
18
22
  return {
19
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
23
+ content: [{ type: 'text', text: JSON.stringify(result) }],
20
24
  };
21
25
  }
22
26
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-call-batch.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/create-call-batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACxC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,CACvB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,iMAAiM,EACjM;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;QACxF,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAClG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;KACjH,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACnC,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,aAAa;gBAC3B,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-call-batch.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/create-call-batch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACxC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,CACvB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAC9C,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC5D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SACnD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1G,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACnC,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,aAAa;gBAC3B,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerDeleteCvTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerDeleteCvTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -1,8 +1,35 @@
1
1
  import { z } from 'zod/v4';
2
2
  import { DeleteCvUseCase } from '../../../application/use-cases/delete-cv.js';
3
3
  export function registerDeleteCvTool(server, deps) {
4
- const useCase = new DeleteCvUseCase(deps.candidateRepo, deps.chunkRepo, deps.versionRepo);
5
- server.tool('delete_cv', 'Delete a candidate and all associated data (chunks, versions) from the database.', { candidate_id: z.string().describe('ID of the candidate to delete') }, async ({ candidate_id }) => {
4
+ const useCase = new DeleteCvUseCase(deps.candidateRepo, deps.chunkRepo, deps.versionRepo, deps.applicationRepo, deps.applicationEventRepo);
5
+ return server.registerTool('delete_cv', {
6
+ description: 'Delete candidate and all associated data',
7
+ inputSchema: { candidate_id: z.string().describe('Candidate ID') },
8
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
9
+ }, async ({ candidate_id }) => {
10
+ try {
11
+ const confirmation = await server.server.elicitInput({
12
+ message: 'Bu CV\'yi kalici olarak silmek istediginize emin misiniz?',
13
+ requestedSchema: {
14
+ type: 'object',
15
+ properties: {
16
+ confirmed: {
17
+ type: 'boolean',
18
+ title: 'Onayla',
19
+ description: 'Evet, devam et',
20
+ default: false,
21
+ },
22
+ },
23
+ required: ['confirmed'],
24
+ },
25
+ });
26
+ if (confirmation.action !== 'accept' || !confirmation.content?.confirmed) {
27
+ return { content: [{ type: 'text', text: 'Islem iptal edildi.' }] };
28
+ }
29
+ }
30
+ catch {
31
+ // Client doesn't support elicitation — proceed without
32
+ }
6
33
  try {
7
34
  await useCase.execute(candidate_id);
8
35
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"delete-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-cv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,IAAkB;IACxE,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAE1F,MAAM,CAAC,IAAI,CACT,WAAW,EACX,kFAAkF,EAClF,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,EACtE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;aACrG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"delete-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-cv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,IAAkB;IACxE,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE3I,OAAO,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;QACtC,WAAW,EAAE,0CAA0C;QACvD,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QAClE,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACnD,OAAO,EAAE,2DAA2D;gBACpE,eAAe,EAAE;oBACf,IAAI,EAAE,QAAiB;oBACvB,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,SAAkB;4BACxB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,gBAAgB;4BAC7B,OAAO,EAAE,KAAK;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF,CAAC,CAAC;YACH,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAE,YAAY,CAAC,OAAe,EAAE,SAAS,EAAE,CAAC;gBAClF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;aACrG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerDeleteJobPostingTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerDeleteJobPostingTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -1,8 +1,36 @@
1
1
  import { z } from 'zod/v4';
2
+ import { DeleteJobPostingUseCase } from '../../../application/use-cases/delete-job-posting.js';
2
3
  export function registerDeleteJobPostingTool(server, deps) {
3
- server.tool('delete_job_posting', 'Delete a job posting by ID.', {
4
- id: z.string().describe('Job posting ID'),
4
+ return server.registerTool('delete_job_posting', {
5
+ description: 'Delete a job posting by ID.',
6
+ inputSchema: {
7
+ id: z.string().describe('Job posting ID'),
8
+ },
9
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
5
10
  }, async ({ id }) => {
11
+ try {
12
+ const confirmation = await server.server.elicitInput({
13
+ message: 'Bu is ilanini silmek istediginize emin misiniz?',
14
+ requestedSchema: {
15
+ type: 'object',
16
+ properties: {
17
+ confirmed: {
18
+ type: 'boolean',
19
+ title: 'Onayla',
20
+ description: 'Evet, devam et',
21
+ default: false,
22
+ },
23
+ },
24
+ required: ['confirmed'],
25
+ },
26
+ });
27
+ if (confirmation.action !== 'accept' || !confirmation.content?.confirmed) {
28
+ return { content: [{ type: 'text', text: 'Islem iptal edildi.' }] };
29
+ }
30
+ }
31
+ catch {
32
+ // Client doesn't support elicitation — proceed without
33
+ }
6
34
  try {
7
35
  const existing = await deps.jobPostingRepo.findById(id);
8
36
  if (!existing) {
@@ -11,7 +39,8 @@ export function registerDeleteJobPostingTool(server, deps) {
11
39
  isError: true,
12
40
  };
13
41
  }
14
- await deps.jobPostingRepo.delete(id);
42
+ const useCase = new DeleteJobPostingUseCase(deps.jobPostingRepo, deps.applicationRepo, deps.applicationEventRepo);
43
+ await useCase.execute(id);
15
44
  return {
16
45
  content: [{ type: 'text', text: JSON.stringify({ deleted: true, id, title: existing.title }) }],
17
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"delete-job-posting.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-job-posting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,6BAA6B,EAC7B;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KAC1C,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aACzG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"delete-job-posting.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-job-posting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAG/F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,OAAO,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE;QAC/C,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAC1C;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACnD,OAAO,EAAE,iDAAiD;gBAC1D,eAAe,EAAE;oBACf,IAAI,EAAE,QAAiB;oBACvB,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,SAAkB;4BACxB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,gBAAgB;4BAC7B,OAAO,EAAE,KAAK;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF,CAAC,CAAC;YACH,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAE,YAAY,CAAC,OAAe,EAAE,SAAS,EAAE,CAAC;gBAClF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClH,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aACzG,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerExportResultsTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerExportResultsTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,9 +2,13 @@ import { z } from 'zod/v4';
2
2
  import { ExportResultsUseCase } from '../../../application/use-cases/export-results.js';
3
3
  export function registerExportResultsTool(server, deps) {
4
4
  const useCase = new ExportResultsUseCase(deps.candidateRepo, deps.exportService);
5
- server.tool('export_results', 'Export candidate data in JSON or CSV format.', {
6
- candidate_ids: z.array(z.string()).describe('List of candidate IDs to export'),
7
- format: z.enum(['json', 'csv']).describe('Export format'),
5
+ return server.registerTool('export_results', {
6
+ description: 'Export candidates as JSON or CSV',
7
+ inputSchema: {
8
+ candidate_ids: z.array(z.string()).describe('Candidate IDs'),
9
+ format: z.enum(['json', 'csv']).describe('Output format'),
10
+ },
11
+ annotations: { readOnlyHint: true, openWorldHint: false },
8
12
  }, async ({ candidate_ids, format }) => {
9
13
  try {
10
14
  const result = await useCase.execute(candidate_ids, format);
@@ -1 +1 @@
1
- {"version":3,"file":"export-results.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/export-results.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAIxF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,8CAA8C,EAC9C;QACE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC9E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC1D,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,MAAsB,CAAC,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"export-results.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/export-results.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAIxF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjF,OAAO,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;QAC3C,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC1D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,MAAsB,CAAC,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerFilterCandidatesTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerFilterCandidatesTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,14 +2,20 @@ import { z } from 'zod/v4';
2
2
  import { FilterCandidatesUseCase } from '../../../application/use-cases/filter-candidates.js';
3
3
  export function registerFilterCandidatesTool(server, deps) {
4
4
  const useCase = new FilterCandidatesUseCase(deps.candidateRepo);
5
- server.tool('filter_candidates', 'Filter candidates using structured criteria like name, skills, location, experience years, languages, and tags.', {
6
- name: z.string().optional().describe('Candidate name to search for (partial match, e.g. "Okan" or "Şahin")'),
7
- skills: z.array(z.string()).optional().describe('Required skills to filter by'),
8
- location: z.string().optional().describe('Location to filter by (partial match)'),
9
- min_experience_years: z.number().optional().describe('Minimum years of experience'),
10
- languages: z.array(z.string()).optional().describe('Required languages'),
11
- tags: z.array(z.string()).optional().describe('Required tags'),
12
- }, async ({ name, skills, location, min_experience_years, languages, tags }) => {
5
+ return server.registerTool('filter_candidates', {
6
+ description: 'Filter candidates by name, skills, location, experience, tags',
7
+ inputSchema: {
8
+ name: z.string().optional().describe('Name (partial match)'),
9
+ skills: z.array(z.string()).optional().describe('Required skills'),
10
+ location: z.string().optional().describe('Location (partial match)'),
11
+ min_experience_years: z.number().optional().describe('Min experience years'),
12
+ languages: z.array(z.string()).optional().describe('Required languages'),
13
+ tags: z.array(z.string()).optional().describe('Required tags'),
14
+ pool: z.string().optional().describe('Filter by pool name'),
15
+ source: z.string().optional().describe('Filter by source channel'),
16
+ },
17
+ annotations: { readOnlyHint: true, openWorldHint: false },
18
+ }, async ({ name, skills, location, min_experience_years, languages, tags, pool, source }) => {
13
19
  try {
14
20
  const results = await useCase.execute({
15
21
  name,
@@ -18,9 +24,11 @@ export function registerFilterCandidatesTool(server, deps) {
18
24
  minExperienceYears: min_experience_years,
19
25
  languages,
20
26
  tags,
27
+ pool,
28
+ source,
21
29
  });
22
30
  return {
23
- content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
31
+ content: [{ type: 'text', text: JSON.stringify(results) }],
24
32
  };
25
33
  }
26
34
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"filter-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/filter-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAG9F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,iHAAiH,EACjH;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;QAC5G,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACjF,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACnF,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACxE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC/D,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,kBAAkB,EAAE,oBAAoB;gBACxC,SAAS;gBACT,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC7E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"filter-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/filter-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAG9F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEhE,OAAO,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAC9C,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACpE,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACxE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,kBAAkB,EAAE,oBAAoB;gBACxC,SAAS;gBACT,IAAI;gBACJ,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;aACpE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { Dependencies } from '../types.js';
3
+ export declare function registerFindSimilarCandidatesTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod/v4';
2
+ import { FindSimilarCandidatesUseCase } from '../../../application/use-cases/find-similar-candidates.js';
3
+ import { createProgressReporter } from '../../../shared/mcp/progress.js';
4
+ export function registerFindSimilarCandidatesTool(server, deps) {
5
+ const useCase = new FindSimilarCandidatesUseCase(deps.candidateRepo, deps.chunkRepo);
6
+ return server.registerTool('find_similar_candidates', {
7
+ description: 'Find candidates similar to a reference candidate using centroid vector computation',
8
+ inputSchema: {
9
+ candidate_id: z.string().describe('Reference candidate ID'),
10
+ limit: z.number().optional().describe('Max results (default: 5)'),
11
+ section_focus: z
12
+ .enum(['experience', 'skills', 'all'])
13
+ .optional()
14
+ .describe('Which CV sections to use for similarity (default: all)'),
15
+ },
16
+ annotations: { readOnlyHint: true, openWorldHint: true },
17
+ }, async ({ candidate_id, limit, section_focus }, extra) => {
18
+ try {
19
+ const reporter = createProgressReporter(extra);
20
+ await reporter.update(1, undefined, 'Computing centroid vector for reference candidate...');
21
+ const results = await useCase.execute({
22
+ candidateId: candidate_id,
23
+ limit,
24
+ sectionFocus: section_focus,
25
+ });
26
+ await reporter.update(2, undefined, `Done — ${results.length} similar candidates found`);
27
+ return {
28
+ content: [{ type: 'text', text: JSON.stringify(results) }],
29
+ };
30
+ }
31
+ catch (error) {
32
+ return {
33
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
34
+ isError: true,
35
+ };
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=find-similar-candidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-similar-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/find-similar-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,MAAM,UAAU,iCAAiC,CAAC,MAAiB,EAAE,IAAkB;IACrF,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAErF,OAAO,MAAM,CAAC,YAAY,CAAC,yBAAyB,EAAE;QACpD,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACjE,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;SACtE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,sDAAsD,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,WAAW,EAAE,YAAY;gBACzB,KAAK;gBACL,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC;YACzF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;aACpE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerGenerateScreeningReportTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerGenerateScreeningReportTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,14 +2,18 @@ import { z } from 'zod/v4';
2
2
  import { GenerateScreeningReportUseCase } from '../../../application/use-cases/generate-screening-report.js';
3
3
  export function registerGenerateScreeningReportTool(server, deps) {
4
4
  const useCase = new GenerateScreeningReportUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.jobPostingRepo);
5
- server.tool('generate_screening_report', 'Generate a screening summary report for a job posting — includes statistics, shortlisted, screened out, and pending candidates.', {
6
- job_posting_id: z.string().describe('ID of the job posting'),
7
- since: z.string().optional().describe('ISO date — only include screenings updated after this date'),
5
+ return server.registerTool('generate_screening_report', {
6
+ description: 'Screening summary: stats, shortlisted, screened out, pending',
7
+ inputSchema: {
8
+ job_posting_id: z.string().describe('Job posting ID'),
9
+ since: z.string().optional().describe('ISO date filter'),
10
+ },
11
+ annotations: { readOnlyHint: true, openWorldHint: false },
8
12
  }, async ({ job_posting_id, since }) => {
9
13
  try {
10
14
  const result = await useCase.execute(job_posting_id, since);
11
15
  return {
12
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
16
+ content: [{ type: 'text', text: JSON.stringify(result) }],
13
17
  };
14
18
  }
15
19
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"generate-screening-report.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/generate-screening-report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAChD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,iIAAiI,EACjI;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;KACpG,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generate-screening-report.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/generate-screening-report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAChD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE;QACtD,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SACzD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerGetCallBatchStatusTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerGetCallBatchStatusTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,13 +2,17 @@ import { z } from 'zod/v4';
2
2
  import { GetCallBatchStatusUseCase } from '../../../application/use-cases/get-call-batch-status.js';
3
3
  export function registerGetCallBatchStatusTool(server, deps) {
4
4
  const useCase = new GetCallBatchStatusUseCase(deps.callBatchRepo, deps.callBatchItemRepo);
5
- server.tool('get_call_batch_status', 'Get the status of a call batch: shows all candidates, their phone numbers, and the outcome of each call (pending, reached, unreachable).', {
6
- batch_id: z.string().describe('ID of the call batch'),
5
+ return server.registerTool('get_call_batch_status', {
6
+ description: 'Call batch status: candidates, phones, outcomes',
7
+ inputSchema: {
8
+ batch_id: z.string().describe('Call batch ID'),
9
+ },
10
+ annotations: { readOnlyHint: true, openWorldHint: false },
7
11
  }, async ({ batch_id }) => {
8
12
  try {
9
13
  const result = await useCase.execute(batch_id);
10
14
  return {
11
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
15
+ content: [{ type: 'text', text: JSON.stringify(result) }],
12
16
  };
13
17
  }
14
18
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-call-batch-status.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-call-batch-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,IAAkB;IAClF,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE1F,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,0IAA0I,EAC1I;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACtD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-call-batch-status.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-call-batch-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,IAAkB;IAClF,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE1F,OAAO,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;QAClD,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC/C;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerGetCandidateHistoryTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerGetCandidateHistoryTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,13 +2,17 @@ import { z } from 'zod/v4';
2
2
  import { GetCandidateHistoryUseCase } from '../../../application/use-cases/get-candidate-history.js';
3
3
  export function registerGetCandidateHistoryTool(server, deps) {
4
4
  const useCase = new GetCandidateHistoryUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.jobPostingRepo);
5
- server.tool('get_candidate_history', 'Get a candidate\'s full recruitment history across all job postings. Shows all applications and events.', {
6
- candidate_id: z.string().describe('ID of the candidate'),
5
+ return server.registerTool('get_candidate_history', {
6
+ description: 'Full recruitment history across all postings',
7
+ inputSchema: {
8
+ candidate_id: z.string().describe('Candidate ID'),
9
+ },
10
+ annotations: { readOnlyHint: true, openWorldHint: false },
7
11
  }, async ({ candidate_id }) => {
8
12
  try {
9
13
  const result = await useCase.execute(candidate_id);
10
14
  return {
11
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
15
+ content: [{ type: 'text', text: JSON.stringify(result) }],
12
16
  };
13
17
  }
14
18
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-candidate-history.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-candidate-history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAGrG,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,IAAkB;IACnF,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAC5C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,yGAAyG,EACzG;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-candidate-history.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-candidate-history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAGrG,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,IAAkB;IACnF,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAC5C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;QAClD,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SAClD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { Dependencies } from '../types.js';
3
- export declare function registerGetCvChunksTool(server: McpServer, deps: Dependencies): void;
3
+ export declare function registerGetCvChunksTool(server: McpServer, deps: Dependencies): RegisteredTool;
@@ -2,13 +2,17 @@ import { z } from 'zod/v4';
2
2
  import { GetCvChunksUseCase } from '../../../application/use-cases/get-cv-chunks.js';
3
3
  export function registerGetCvChunksTool(server, deps) {
4
4
  const useCase = new GetCvChunksUseCase(deps.chunkRepo, deps.candidateRepo);
5
- server.tool('get_cv_chunks', 'Get the text chunks (sections) of one or more candidates. Use candidate_id for single, candidate_ids for batch (max 10).', {
6
- candidate_id: z.string().optional().describe('ID of a single candidate'),
7
- candidate_ids: z.array(z.string()).optional().describe('IDs of multiple candidates (max 10, batch mode)'),
8
- section_type: z
9
- .enum(['summary', 'experience', 'education', 'skills', 'projects', 'certifications', 'full'])
10
- .optional()
11
- .describe('Filter to a specific section type'),
5
+ return server.registerTool('get_cv_chunks', {
6
+ description: 'CV text chunks/sections (single or batch max 10)',
7
+ inputSchema: {
8
+ candidate_id: z.string().optional().describe('Single candidate ID'),
9
+ candidate_ids: z.array(z.string()).optional().describe('Batch candidate IDs (max 10)'),
10
+ section_type: z
11
+ .enum(['summary', 'experience', 'education', 'skills', 'projects', 'certifications', 'full'])
12
+ .optional()
13
+ .describe('Section type filter'),
14
+ },
15
+ annotations: { readOnlyHint: true, openWorldHint: false },
12
16
  }, async ({ candidate_id, candidate_ids, section_type }) => {
13
17
  try {
14
18
  if (candidate_id && candidate_ids) {
@@ -26,12 +30,12 @@ export function registerGetCvChunksTool(server, deps) {
26
30
  if (candidate_ids) {
27
31
  const result = await useCase.executeBatch(candidate_ids, section_type);
28
32
  return {
29
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
33
+ content: [{ type: 'text', text: JSON.stringify(result) }],
30
34
  };
31
35
  }
32
36
  const chunks = await useCase.execute(candidate_id, section_type);
33
37
  return {
34
- content: [{ type: 'text', text: JSON.stringify(chunks, null, 2) }],
38
+ content: [{ type: 'text', text: JSON.stringify(chunks) }],
35
39
  };
36
40
  }
37
41
  catch (error) {