attio-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 (644) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +236 -0
  3. package/README.md +105 -0
  4. package/dist/api/attio-client.d.ts +25 -0
  5. package/dist/api/attio-client.d.ts.map +1 -0
  6. package/dist/api/attio-client.js +64 -0
  7. package/dist/api/attio-client.js.map +1 -0
  8. package/dist/api/attribute-types.d.ts +119 -0
  9. package/dist/api/attribute-types.d.ts.map +1 -0
  10. package/dist/api/attribute-types.js +320 -0
  11. package/dist/api/attribute-types.js.map +1 -0
  12. package/dist/api/client.d.ts +3 -0
  13. package/dist/api/client.d.ts.map +1 -0
  14. package/dist/api/client.js +61 -0
  15. package/dist/api/client.js.map +1 -0
  16. package/dist/api/operations/batch.d.ts +55 -0
  17. package/dist/api/operations/batch.d.ts.map +1 -0
  18. package/dist/api/operations/batch.js +176 -0
  19. package/dist/api/operations/batch.js.map +1 -0
  20. package/dist/api/operations/crud.d.ts +61 -0
  21. package/dist/api/operations/crud.d.ts.map +1 -0
  22. package/dist/api/operations/crud.js +192 -0
  23. package/dist/api/operations/crud.js.map +1 -0
  24. package/dist/api/operations/index.d.ts +14 -0
  25. package/dist/api/operations/index.d.ts.map +1 -0
  26. package/dist/api/operations/index.js +18 -0
  27. package/dist/api/operations/index.js.map +1 -0
  28. package/dist/api/operations/lists.d.ts +66 -0
  29. package/dist/api/operations/lists.d.ts.map +1 -0
  30. package/dist/api/operations/lists.js +300 -0
  31. package/dist/api/operations/lists.js.map +1 -0
  32. package/dist/api/operations/notes.d.ts +29 -0
  33. package/dist/api/operations/notes.d.ts.map +1 -0
  34. package/dist/api/operations/notes.js +63 -0
  35. package/dist/api/operations/notes.js.map +1 -0
  36. package/dist/api/operations/retry.d.ts +48 -0
  37. package/dist/api/operations/retry.d.ts.map +1 -0
  38. package/dist/api/operations/retry.js +98 -0
  39. package/dist/api/operations/retry.js.map +1 -0
  40. package/dist/api/operations/search.d.ts +37 -0
  41. package/dist/api/operations/search.d.ts.map +1 -0
  42. package/dist/api/operations/search.js +186 -0
  43. package/dist/api/operations/search.js.map +1 -0
  44. package/dist/api/operations/tasks.d.ts +20 -0
  45. package/dist/api/operations/tasks.d.ts.map +1 -0
  46. package/dist/api/operations/tasks.js +87 -0
  47. package/dist/api/operations/tasks.js.map +1 -0
  48. package/dist/api/operations/types.d.ts +61 -0
  49. package/dist/api/operations/types.d.ts.map +1 -0
  50. package/dist/api/operations/types.js +10 -0
  51. package/dist/api/operations/types.js.map +1 -0
  52. package/dist/cli/commands/attributes.d.ts +34 -0
  53. package/dist/cli/commands/attributes.d.ts.map +1 -0
  54. package/dist/cli/commands/attributes.js +171 -0
  55. package/dist/cli/commands/attributes.js.map +1 -0
  56. package/dist/cli/discover.d.ts +3 -0
  57. package/dist/cli/discover.d.ts.map +1 -0
  58. package/dist/cli/discover.js +72 -0
  59. package/dist/cli/discover.js.map +1 -0
  60. package/dist/errors/api-errors.d.ts +191 -0
  61. package/dist/errors/api-errors.d.ts.map +1 -0
  62. package/dist/errors/api-errors.js +305 -0
  63. package/dist/errors/api-errors.js.map +1 -0
  64. package/dist/errors/company-errors.d.ts +40 -0
  65. package/dist/errors/company-errors.d.ts.map +1 -0
  66. package/dist/errors/company-errors.js +62 -0
  67. package/dist/errors/company-errors.js.map +1 -0
  68. package/dist/errors/value-match-error.d.ts +15 -0
  69. package/dist/errors/value-match-error.d.ts.map +1 -0
  70. package/dist/errors/value-match-error.js +40 -0
  71. package/dist/errors/value-match-error.js.map +1 -0
  72. package/dist/handlers/error-interceptor.d.ts +6 -0
  73. package/dist/handlers/error-interceptor.d.ts.map +1 -0
  74. package/dist/handlers/error-interceptor.js +17 -0
  75. package/dist/handlers/error-interceptor.js.map +1 -0
  76. package/dist/handlers/rate-limited-handler.d.ts +17 -0
  77. package/dist/handlers/rate-limited-handler.d.ts.map +1 -0
  78. package/dist/handlers/rate-limited-handler.js +126 -0
  79. package/dist/handlers/rate-limited-handler.js.map +1 -0
  80. package/dist/handlers/resources.d.ts +11 -0
  81. package/dist/handlers/resources.d.ts.map +1 -0
  82. package/dist/handlers/resources.js +109 -0
  83. package/dist/handlers/resources.js.map +1 -0
  84. package/dist/handlers/tool-configs/companies/attributes.d.ts +85 -0
  85. package/dist/handlers/tool-configs/companies/attributes.d.ts.map +1 -0
  86. package/dist/handlers/tool-configs/companies/attributes.js +203 -0
  87. package/dist/handlers/tool-configs/companies/attributes.js.map +1 -0
  88. package/dist/handlers/tool-configs/companies/batch.d.ts +145 -0
  89. package/dist/handlers/tool-configs/companies/batch.d.ts.map +1 -0
  90. package/dist/handlers/tool-configs/companies/batch.js +249 -0
  91. package/dist/handlers/tool-configs/companies/batch.js.map +1 -0
  92. package/dist/handlers/tool-configs/companies/crud.d.ts +103 -0
  93. package/dist/handlers/tool-configs/companies/crud.d.ts.map +1 -0
  94. package/dist/handlers/tool-configs/companies/crud.js +157 -0
  95. package/dist/handlers/tool-configs/companies/crud.js.map +1 -0
  96. package/dist/handlers/tool-configs/companies/definitions.d.ts +5 -0
  97. package/dist/handlers/tool-configs/companies/definitions.d.ts.map +1 -0
  98. package/dist/handlers/tool-configs/companies/definitions.js +9 -0
  99. package/dist/handlers/tool-configs/companies/definitions.js.map +1 -0
  100. package/dist/handlers/tool-configs/companies/formatters.d.ts +42 -0
  101. package/dist/handlers/tool-configs/companies/formatters.d.ts.map +1 -0
  102. package/dist/handlers/tool-configs/companies/formatters.js +324 -0
  103. package/dist/handlers/tool-configs/companies/formatters.js.map +1 -0
  104. package/dist/handlers/tool-configs/companies/index.d.ts +642 -0
  105. package/dist/handlers/tool-configs/companies/index.d.ts.map +1 -0
  106. package/dist/handlers/tool-configs/companies/index.js +86 -0
  107. package/dist/handlers/tool-configs/companies/index.js.map +1 -0
  108. package/dist/handlers/tool-configs/companies/notes.d.ts +61 -0
  109. package/dist/handlers/tool-configs/companies/notes.d.ts.map +1 -0
  110. package/dist/handlers/tool-configs/companies/notes.js +109 -0
  111. package/dist/handlers/tool-configs/companies/notes.js.map +1 -0
  112. package/dist/handlers/tool-configs/companies/relationships.d.ts +137 -0
  113. package/dist/handlers/tool-configs/companies/relationships.d.ts.map +1 -0
  114. package/dist/handlers/tool-configs/companies/relationships.js +163 -0
  115. package/dist/handlers/tool-configs/companies/relationships.js.map +1 -0
  116. package/dist/handlers/tool-configs/companies/search.d.ts +101 -0
  117. package/dist/handlers/tool-configs/companies/search.d.ts.map +1 -0
  118. package/dist/handlers/tool-configs/companies/search.js +163 -0
  119. package/dist/handlers/tool-configs/companies/search.js.map +1 -0
  120. package/dist/handlers/tool-configs/companies/types.d.ts +6 -0
  121. package/dist/handlers/tool-configs/companies/types.d.ts.map +1 -0
  122. package/dist/handlers/tool-configs/companies/types.js +2 -0
  123. package/dist/handlers/tool-configs/companies/types.js.map +1 -0
  124. package/dist/handlers/tool-configs/index.d.ts +12 -0
  125. package/dist/handlers/tool-configs/index.d.ts.map +1 -0
  126. package/dist/handlers/tool-configs/index.js +12 -0
  127. package/dist/handlers/tool-configs/index.js.map +1 -0
  128. package/dist/handlers/tool-configs/lists.d.ts +459 -0
  129. package/dist/handlers/tool-configs/lists.d.ts.map +1 -0
  130. package/dist/handlers/tool-configs/lists.js +597 -0
  131. package/dist/handlers/tool-configs/lists.js.map +1 -0
  132. package/dist/handlers/tool-configs/paginated-people.d.ts +197 -0
  133. package/dist/handlers/tool-configs/paginated-people.d.ts.map +1 -0
  134. package/dist/handlers/tool-configs/paginated-people.js +256 -0
  135. package/dist/handlers/tool-configs/paginated-people.js.map +1 -0
  136. package/dist/handlers/tool-configs/people/activity-search.d.ts +98 -0
  137. package/dist/handlers/tool-configs/people/activity-search.d.ts.map +1 -0
  138. package/dist/handlers/tool-configs/people/activity-search.js +113 -0
  139. package/dist/handlers/tool-configs/people/activity-search.js.map +1 -0
  140. package/dist/handlers/tool-configs/people/advanced-search.d.ts +62 -0
  141. package/dist/handlers/tool-configs/people/advanced-search.d.ts.map +1 -0
  142. package/dist/handlers/tool-configs/people/advanced-search.js +74 -0
  143. package/dist/handlers/tool-configs/people/advanced-search.js.map +1 -0
  144. package/dist/handlers/tool-configs/people/crud.d.ts +63 -0
  145. package/dist/handlers/tool-configs/people/crud.d.ts.map +1 -0
  146. package/dist/handlers/tool-configs/people/crud.js +71 -0
  147. package/dist/handlers/tool-configs/people/crud.js.map +1 -0
  148. package/dist/handlers/tool-configs/people/date-search.d.ts +42 -0
  149. package/dist/handlers/tool-configs/people/date-search.d.ts.map +1 -0
  150. package/dist/handlers/tool-configs/people/date-search.js +93 -0
  151. package/dist/handlers/tool-configs/people/date-search.js.map +1 -0
  152. package/dist/handlers/tool-configs/people/formatters.d.ts +19 -0
  153. package/dist/handlers/tool-configs/people/formatters.d.ts.map +1 -0
  154. package/dist/handlers/tool-configs/people/formatters.js +98 -0
  155. package/dist/handlers/tool-configs/people/formatters.js.map +1 -0
  156. package/dist/handlers/tool-configs/people/index.d.ts +407 -0
  157. package/dist/handlers/tool-configs/people/index.d.ts.map +1 -0
  158. package/dist/handlers/tool-configs/people/index.js +30 -0
  159. package/dist/handlers/tool-configs/people/index.js.map +1 -0
  160. package/dist/handlers/tool-configs/people/notes.d.ts +38 -0
  161. package/dist/handlers/tool-configs/people/notes.d.ts.map +1 -0
  162. package/dist/handlers/tool-configs/people/notes.js +57 -0
  163. package/dist/handlers/tool-configs/people/notes.js.map +1 -0
  164. package/dist/handlers/tool-configs/people/relationships.d.ts +112 -0
  165. package/dist/handlers/tool-configs/people/relationships.d.ts.map +1 -0
  166. package/dist/handlers/tool-configs/people/relationships.js +173 -0
  167. package/dist/handlers/tool-configs/people/relationships.js.map +1 -0
  168. package/dist/handlers/tool-configs/people/search.d.ts +53 -0
  169. package/dist/handlers/tool-configs/people/search.d.ts.map +1 -0
  170. package/dist/handlers/tool-configs/people/search.js +61 -0
  171. package/dist/handlers/tool-configs/people/search.js.map +1 -0
  172. package/dist/handlers/tool-configs/people-fix-complete.d.ts +6 -0
  173. package/dist/handlers/tool-configs/people-fix-complete.d.ts.map +1 -0
  174. package/dist/handlers/tool-configs/people-fix-complete.js +76 -0
  175. package/dist/handlers/tool-configs/people-fix-complete.js.map +1 -0
  176. package/dist/handlers/tool-configs/people-fixed.d.ts +12 -0
  177. package/dist/handlers/tool-configs/people-fixed.d.ts.map +1 -0
  178. package/dist/handlers/tool-configs/people-fixed.js +58 -0
  179. package/dist/handlers/tool-configs/people-fixed.js.map +1 -0
  180. package/dist/handlers/tool-configs/people-types.d.ts +32 -0
  181. package/dist/handlers/tool-configs/people-types.d.ts.map +1 -0
  182. package/dist/handlers/tool-configs/people-types.js +5 -0
  183. package/dist/handlers/tool-configs/people-types.js.map +1 -0
  184. package/dist/handlers/tool-configs/people.d.ts +599 -0
  185. package/dist/handlers/tool-configs/people.d.ts.map +1 -0
  186. package/dist/handlers/tool-configs/people.js +817 -0
  187. package/dist/handlers/tool-configs/people.js.map +1 -0
  188. package/dist/handlers/tool-configs/prompts.d.ts +69 -0
  189. package/dist/handlers/tool-configs/prompts.d.ts.map +1 -0
  190. package/dist/handlers/tool-configs/prompts.js +90 -0
  191. package/dist/handlers/tool-configs/prompts.js.map +1 -0
  192. package/dist/handlers/tool-configs/rate-limited-people.d.ts +203 -0
  193. package/dist/handlers/tool-configs/rate-limited-people.d.ts.map +1 -0
  194. package/dist/handlers/tool-configs/rate-limited-people.js +44 -0
  195. package/dist/handlers/tool-configs/rate-limited-people.js.map +1 -0
  196. package/dist/handlers/tool-configs/records/index.d.ts +282 -0
  197. package/dist/handlers/tool-configs/records/index.d.ts.map +1 -0
  198. package/dist/handlers/tool-configs/records/index.js +277 -0
  199. package/dist/handlers/tool-configs/records/index.js.map +1 -0
  200. package/dist/handlers/tool-configs/records.d.ts +282 -0
  201. package/dist/handlers/tool-configs/records.d.ts.map +1 -0
  202. package/dist/handlers/tool-configs/records.js +277 -0
  203. package/dist/handlers/tool-configs/records.js.map +1 -0
  204. package/dist/handlers/tool-configs/resource-specific-tools.d.ts +15 -0
  205. package/dist/handlers/tool-configs/resource-specific-tools.d.ts.map +1 -0
  206. package/dist/handlers/tool-configs/resource-specific-tools.js +33 -0
  207. package/dist/handlers/tool-configs/resource-specific-tools.js.map +1 -0
  208. package/dist/handlers/tool-configs/tasks.d.ts +127 -0
  209. package/dist/handlers/tool-configs/tasks.d.ts.map +1 -0
  210. package/dist/handlers/tool-configs/tasks.js +95 -0
  211. package/dist/handlers/tool-configs/tasks.js.map +1 -0
  212. package/dist/handlers/tool-types.d.ts +47 -0
  213. package/dist/handlers/tool-types.d.ts.map +1 -0
  214. package/dist/handlers/tool-types.js +2 -0
  215. package/dist/handlers/tool-types.js.map +1 -0
  216. package/dist/handlers/tools/config-verifier.d.ts +27 -0
  217. package/dist/handlers/tools/config-verifier.d.ts.map +1 -0
  218. package/dist/handlers/tools/config-verifier.js +108 -0
  219. package/dist/handlers/tools/config-verifier.js.map +1 -0
  220. package/dist/handlers/tools/dispatcher/core.d.ts +12 -0
  221. package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -0
  222. package/dist/handlers/tools/dispatcher/core.js +276 -0
  223. package/dist/handlers/tools/dispatcher/core.js.map +1 -0
  224. package/dist/handlers/tools/dispatcher/formatting.d.ts +17 -0
  225. package/dist/handlers/tools/dispatcher/formatting.d.ts.map +1 -0
  226. package/dist/handlers/tools/dispatcher/formatting.js +25 -0
  227. package/dist/handlers/tools/dispatcher/formatting.js.map +1 -0
  228. package/dist/handlers/tools/dispatcher/logging.d.ts +63 -0
  229. package/dist/handlers/tools/dispatcher/logging.d.ts.map +1 -0
  230. package/dist/handlers/tools/dispatcher/logging.js +108 -0
  231. package/dist/handlers/tools/dispatcher/logging.js.map +1 -0
  232. package/dist/handlers/tools/dispatcher/operations/batch.d.ts +29 -0
  233. package/dist/handlers/tools/dispatcher/operations/batch.d.ts.map +1 -0
  234. package/dist/handlers/tools/dispatcher/operations/batch.js +137 -0
  235. package/dist/handlers/tools/dispatcher/operations/batch.js.map +1 -0
  236. package/dist/handlers/tools/dispatcher/operations/crud.d.ts +25 -0
  237. package/dist/handlers/tools/dispatcher/operations/crud.d.ts.map +1 -0
  238. package/dist/handlers/tools/dispatcher/operations/crud.js +110 -0
  239. package/dist/handlers/tools/dispatcher/operations/crud.js.map +1 -0
  240. package/dist/handlers/tools/dispatcher/operations/details.d.ts +13 -0
  241. package/dist/handlers/tools/dispatcher/operations/details.d.ts.map +1 -0
  242. package/dist/handlers/tools/dispatcher/operations/details.js +52 -0
  243. package/dist/handlers/tools/dispatcher/operations/details.js.map +1 -0
  244. package/dist/handlers/tools/dispatcher/operations/info.d.ts +25 -0
  245. package/dist/handlers/tools/dispatcher/operations/info.d.ts.map +1 -0
  246. package/dist/handlers/tools/dispatcher/operations/info.js +82 -0
  247. package/dist/handlers/tools/dispatcher/operations/info.js.map +1 -0
  248. package/dist/handlers/tools/dispatcher/operations/lists.d.ts +62 -0
  249. package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -0
  250. package/dist/handlers/tools/dispatcher/operations/lists.js +283 -0
  251. package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -0
  252. package/dist/handlers/tools/dispatcher/operations/notes.d.ts +17 -0
  253. package/dist/handlers/tools/dispatcher/operations/notes.d.ts.map +1 -0
  254. package/dist/handlers/tools/dispatcher/operations/notes.js +102 -0
  255. package/dist/handlers/tools/dispatcher/operations/notes.js.map +1 -0
  256. package/dist/handlers/tools/dispatcher/operations/search.d.ts +43 -0
  257. package/dist/handlers/tools/dispatcher/operations/search.d.ts.map +1 -0
  258. package/dist/handlers/tools/dispatcher/operations/search.js +190 -0
  259. package/dist/handlers/tools/dispatcher/operations/search.js.map +1 -0
  260. package/dist/handlers/tools/dispatcher/validation.d.ts +27 -0
  261. package/dist/handlers/tools/dispatcher/validation.d.ts.map +1 -0
  262. package/dist/handlers/tools/dispatcher/validation.js +47 -0
  263. package/dist/handlers/tools/dispatcher/validation.js.map +1 -0
  264. package/dist/handlers/tools/dispatcher.d.ts +11 -0
  265. package/dist/handlers/tools/dispatcher.d.ts.map +1 -0
  266. package/dist/handlers/tools/dispatcher.js +15 -0
  267. package/dist/handlers/tools/dispatcher.js.map +1 -0
  268. package/dist/handlers/tools/error-types.d.ts +33 -0
  269. package/dist/handlers/tools/error-types.d.ts.map +1 -0
  270. package/dist/handlers/tools/error-types.js +21 -0
  271. package/dist/handlers/tools/error-types.js.map +1 -0
  272. package/dist/handlers/tools/formatters.d.ts +43 -0
  273. package/dist/handlers/tools/formatters.d.ts.map +1 -0
  274. package/dist/handlers/tools/formatters.js +170 -0
  275. package/dist/handlers/tools/formatters.js.map +1 -0
  276. package/dist/handlers/tools/index.d.ts +15 -0
  277. package/dist/handlers/tools/index.d.ts.map +1 -0
  278. package/dist/handlers/tools/index.js +34 -0
  279. package/dist/handlers/tools/index.js.map +1 -0
  280. package/dist/handlers/tools/registry.d.ts +1874 -0
  281. package/dist/handlers/tools/registry.d.ts.map +1 -0
  282. package/dist/handlers/tools/registry.js +103 -0
  283. package/dist/handlers/tools/registry.js.map +1 -0
  284. package/dist/health/http-server.d.ts +24 -0
  285. package/dist/health/http-server.d.ts.map +1 -0
  286. package/dist/health/http-server.js +106 -0
  287. package/dist/health/http-server.js.map +1 -0
  288. package/dist/index.d.ts +3 -0
  289. package/dist/index.d.ts.map +1 -0
  290. package/dist/index.js +238 -0
  291. package/dist/index.js.map +1 -0
  292. package/dist/objects/base-operations.d.ts +41 -0
  293. package/dist/objects/base-operations.d.ts.map +1 -0
  294. package/dist/objects/base-operations.js +116 -0
  295. package/dist/objects/base-operations.js.map +1 -0
  296. package/dist/objects/batch-companies.d.ts +112 -0
  297. package/dist/objects/batch-companies.d.ts.map +1 -0
  298. package/dist/objects/batch-companies.js +347 -0
  299. package/dist/objects/batch-companies.js.map +1 -0
  300. package/dist/objects/companies/attributes.d.ts +83 -0
  301. package/dist/objects/companies/attributes.d.ts.map +1 -0
  302. package/dist/objects/companies/attributes.js +426 -0
  303. package/dist/objects/companies/attributes.js.map +1 -0
  304. package/dist/objects/companies/basic.d.ts +117 -0
  305. package/dist/objects/companies/basic.d.ts.map +1 -0
  306. package/dist/objects/companies/basic.js +367 -0
  307. package/dist/objects/companies/basic.js.map +1 -0
  308. package/dist/objects/companies/batch.d.ts +6 -0
  309. package/dist/objects/companies/batch.d.ts.map +1 -0
  310. package/dist/objects/companies/batch.js +6 -0
  311. package/dist/objects/companies/batch.js.map +1 -0
  312. package/dist/objects/companies/index.d.ts +13 -0
  313. package/dist/objects/companies/index.d.ts.map +1 -0
  314. package/dist/objects/companies/index.js +17 -0
  315. package/dist/objects/companies/index.js.map +1 -0
  316. package/dist/objects/companies/notes.d.ts +26 -0
  317. package/dist/objects/companies/notes.d.ts.map +1 -0
  318. package/dist/objects/companies/notes.js +199 -0
  319. package/dist/objects/companies/notes.js.map +1 -0
  320. package/dist/objects/companies/relationships.d.ts +41 -0
  321. package/dist/objects/companies/relationships.d.ts.map +1 -0
  322. package/dist/objects/companies/relationships.js +142 -0
  323. package/dist/objects/companies/relationships.js.map +1 -0
  324. package/dist/objects/companies/search.d.ts +158 -0
  325. package/dist/objects/companies/search.d.ts.map +1 -0
  326. package/dist/objects/companies/search.js +463 -0
  327. package/dist/objects/companies/search.js.map +1 -0
  328. package/dist/objects/companies/types.d.ts +27 -0
  329. package/dist/objects/companies/types.d.ts.map +1 -0
  330. package/dist/objects/companies/types.js +3 -0
  331. package/dist/objects/companies/types.js.map +1 -0
  332. package/dist/objects/lists.d.ts +148 -0
  333. package/dist/objects/lists.d.ts.map +1 -0
  334. package/dist/objects/lists.js +586 -0
  335. package/dist/objects/lists.js.map +1 -0
  336. package/dist/objects/paginated-people.d.ts +50 -0
  337. package/dist/objects/paginated-people.d.ts.map +1 -0
  338. package/dist/objects/paginated-people.js +171 -0
  339. package/dist/objects/paginated-people.js.map +1 -0
  340. package/dist/objects/people/basic.d.ts +90 -0
  341. package/dist/objects/people/basic.d.ts.map +1 -0
  342. package/dist/objects/people/basic.js +157 -0
  343. package/dist/objects/people/basic.js.map +1 -0
  344. package/dist/objects/people/batch.d.ts +24 -0
  345. package/dist/objects/people/batch.d.ts.map +1 -0
  346. package/dist/objects/people/batch.js +145 -0
  347. package/dist/objects/people/batch.js.map +1 -0
  348. package/dist/objects/people/index.d.ts +11 -0
  349. package/dist/objects/people/index.d.ts.map +1 -0
  350. package/dist/objects/people/index.js +17 -0
  351. package/dist/objects/people/index.js.map +1 -0
  352. package/dist/objects/people/notes.d.ts +20 -0
  353. package/dist/objects/people/notes.d.ts.map +1 -0
  354. package/dist/objects/people/notes.js +60 -0
  355. package/dist/objects/people/notes.js.map +1 -0
  356. package/dist/objects/people/relationships.d.ts +23 -0
  357. package/dist/objects/people/relationships.d.ts.map +1 -0
  358. package/dist/objects/people/relationships.js +116 -0
  359. package/dist/objects/people/relationships.js.map +1 -0
  360. package/dist/objects/people/search.d.ts +83 -0
  361. package/dist/objects/people/search.d.ts.map +1 -0
  362. package/dist/objects/people/search.js +286 -0
  363. package/dist/objects/people/search.js.map +1 -0
  364. package/dist/objects/people/types.d.ts +37 -0
  365. package/dist/objects/people/types.d.ts.map +1 -0
  366. package/dist/objects/people/types.js +71 -0
  367. package/dist/objects/people/types.js.map +1 -0
  368. package/dist/objects/people-write.d.ts +71 -0
  369. package/dist/objects/people-write.d.ts.map +1 -0
  370. package/dist/objects/people-write.js +261 -0
  371. package/dist/objects/people-write.js.map +1 -0
  372. package/dist/objects/records/formatters.d.ts +20 -0
  373. package/dist/objects/records/formatters.d.ts.map +1 -0
  374. package/dist/objects/records/formatters.js +47 -0
  375. package/dist/objects/records/formatters.js.map +1 -0
  376. package/dist/objects/records/index.d.ts +74 -0
  377. package/dist/objects/records/index.d.ts.map +1 -0
  378. package/dist/objects/records/index.js +374 -0
  379. package/dist/objects/records/index.js.map +1 -0
  380. package/dist/objects/records.d.ts +88 -0
  381. package/dist/objects/records.d.ts.map +1 -0
  382. package/dist/objects/records.js +432 -0
  383. package/dist/objects/records.js.map +1 -0
  384. package/dist/objects/tasks.d.ts +19 -0
  385. package/dist/objects/tasks.d.ts.map +1 -0
  386. package/dist/objects/tasks.js +23 -0
  387. package/dist/objects/tasks.js.map +1 -0
  388. package/dist/prompts/error-handler.d.ts +28 -0
  389. package/dist/prompts/error-handler.d.ts.map +1 -0
  390. package/dist/prompts/error-handler.js +47 -0
  391. package/dist/prompts/error-handler.js.map +1 -0
  392. package/dist/prompts/handlers.d.ts +49 -0
  393. package/dist/prompts/handlers.d.ts.map +1 -0
  394. package/dist/prompts/handlers.js +353 -0
  395. package/dist/prompts/handlers.js.map +1 -0
  396. package/dist/prompts/index.d.ts +11 -0
  397. package/dist/prompts/index.d.ts.map +1 -0
  398. package/dist/prompts/index.js +15 -0
  399. package/dist/prompts/index.js.map +1 -0
  400. package/dist/prompts/templates/companies.d.ts +10 -0
  401. package/dist/prompts/templates/companies.d.ts.map +1 -0
  402. package/dist/prompts/templates/companies.js +128 -0
  403. package/dist/prompts/templates/companies.js.map +1 -0
  404. package/dist/prompts/templates/index.d.ts +42 -0
  405. package/dist/prompts/templates/index.d.ts.map +1 -0
  406. package/dist/prompts/templates/index.js +58 -0
  407. package/dist/prompts/templates/index.js.map +1 -0
  408. package/dist/prompts/templates/lists.d.ts +10 -0
  409. package/dist/prompts/templates/lists.d.ts.map +1 -0
  410. package/dist/prompts/templates/lists.js +127 -0
  411. package/dist/prompts/templates/lists.js.map +1 -0
  412. package/dist/prompts/templates/notes.d.ts +10 -0
  413. package/dist/prompts/templates/notes.d.ts.map +1 -0
  414. package/dist/prompts/templates/notes.js +119 -0
  415. package/dist/prompts/templates/notes.js.map +1 -0
  416. package/dist/prompts/templates/people.d.ts +10 -0
  417. package/dist/prompts/templates/people.d.ts.map +1 -0
  418. package/dist/prompts/templates/people.js +127 -0
  419. package/dist/prompts/templates/people.js.map +1 -0
  420. package/dist/prompts/types.d.ts +52 -0
  421. package/dist/prompts/types.d.ts.map +1 -0
  422. package/dist/prompts/types.js +5 -0
  423. package/dist/prompts/types.js.map +1 -0
  424. package/dist/types/attio.d.ts +424 -0
  425. package/dist/types/attio.d.ts.map +1 -0
  426. package/dist/types/attio.js +116 -0
  427. package/dist/types/attio.js.map +1 -0
  428. package/dist/types/company-types.d.ts +52 -0
  429. package/dist/types/company-types.d.ts.map +1 -0
  430. package/dist/types/company-types.js +5 -0
  431. package/dist/types/company-types.js.map +1 -0
  432. package/dist/types/tool-types.d.ts +262 -0
  433. package/dist/types/tool-types.d.ts.map +1 -0
  434. package/dist/types/tool-types.js +6 -0
  435. package/dist/types/tool-types.js.map +1 -0
  436. package/dist/utils/api-fallback.d.ts +39 -0
  437. package/dist/utils/api-fallback.d.ts.map +1 -0
  438. package/dist/utils/api-fallback.js +94 -0
  439. package/dist/utils/api-fallback.js.map +1 -0
  440. package/dist/utils/attribute-mapping/attribute-mappers.d.ts +39 -0
  441. package/dist/utils/attribute-mapping/attribute-mappers.d.ts.map +1 -0
  442. package/dist/utils/attribute-mapping/attribute-mappers.js +394 -0
  443. package/dist/utils/attribute-mapping/attribute-mappers.js.map +1 -0
  444. package/dist/utils/attribute-mapping/filter-translator.d.ts +9 -0
  445. package/dist/utils/attribute-mapping/filter-translator.d.ts.map +1 -0
  446. package/dist/utils/attribute-mapping/filter-translator.js +104 -0
  447. package/dist/utils/attribute-mapping/filter-translator.js.map +1 -0
  448. package/dist/utils/attribute-mapping/index.d.ts +10 -0
  449. package/dist/utils/attribute-mapping/index.d.ts.map +1 -0
  450. package/dist/utils/attribute-mapping/index.js +12 -0
  451. package/dist/utils/attribute-mapping/index.js.map +1 -0
  452. package/dist/utils/attribute-mapping/legacy-maps.d.ts +11 -0
  453. package/dist/utils/attribute-mapping/legacy-maps.d.ts.map +1 -0
  454. package/dist/utils/attribute-mapping/legacy-maps.js +54 -0
  455. package/dist/utils/attribute-mapping/legacy-maps.js.map +1 -0
  456. package/dist/utils/attribute-mapping/mapping-utils.d.ts +90 -0
  457. package/dist/utils/attribute-mapping/mapping-utils.d.ts.map +1 -0
  458. package/dist/utils/attribute-mapping/mapping-utils.js +145 -0
  459. package/dist/utils/attribute-mapping/mapping-utils.js.map +1 -0
  460. package/dist/utils/auto-discovery.d.ts +22 -0
  461. package/dist/utils/auto-discovery.d.ts.map +1 -0
  462. package/dist/utils/auto-discovery.js +143 -0
  463. package/dist/utils/auto-discovery.js.map +1 -0
  464. package/dist/utils/cli-colors.d.ts +36 -0
  465. package/dist/utils/cli-colors.d.ts.map +1 -0
  466. package/dist/utils/cli-colors.js +35 -0
  467. package/dist/utils/cli-colors.js.map +1 -0
  468. package/dist/utils/config-loader.d.ts +41 -0
  469. package/dist/utils/config-loader.d.ts.map +1 -0
  470. package/dist/utils/config-loader.js +167 -0
  471. package/dist/utils/config-loader.js.map +1 -0
  472. package/dist/utils/config-migration.d.ts +140 -0
  473. package/dist/utils/config-migration.d.ts.map +1 -0
  474. package/dist/utils/config-migration.js +310 -0
  475. package/dist/utils/config-migration.js.map +1 -0
  476. package/dist/utils/date-utils.d.ts +63 -0
  477. package/dist/utils/date-utils.d.ts.map +1 -0
  478. package/dist/utils/date-utils.js +329 -0
  479. package/dist/utils/date-utils.js.map +1 -0
  480. package/dist/utils/debug-b2b-segment.d.ts +2 -0
  481. package/dist/utils/debug-b2b-segment.d.ts.map +1 -0
  482. package/dist/utils/debug-b2b-segment.js +67 -0
  483. package/dist/utils/debug-b2b-segment.js.map +1 -0
  484. package/dist/utils/domain-utils.d.ts +46 -0
  485. package/dist/utils/domain-utils.d.ts.map +1 -0
  486. package/dist/utils/domain-utils.js +143 -0
  487. package/dist/utils/domain-utils.js.map +1 -0
  488. package/dist/utils/dynamic-import.d.ts +33 -0
  489. package/dist/utils/dynamic-import.d.ts.map +1 -0
  490. package/dist/utils/dynamic-import.js +41 -0
  491. package/dist/utils/dynamic-import.js.map +1 -0
  492. package/dist/utils/error-enhancer.d.ts +23 -0
  493. package/dist/utils/error-enhancer.d.ts.map +1 -0
  494. package/dist/utils/error-enhancer.js +188 -0
  495. package/dist/utils/error-enhancer.js.map +1 -0
  496. package/dist/utils/error-handler.d.ts +89 -0
  497. package/dist/utils/error-handler.d.ts.map +1 -0
  498. package/dist/utils/error-handler.js +336 -0
  499. package/dist/utils/error-handler.js.map +1 -0
  500. package/dist/utils/filters/builders/activity.d.ts +13 -0
  501. package/dist/utils/filters/builders/activity.d.ts.map +1 -0
  502. package/dist/utils/filters/builders/activity.js +65 -0
  503. package/dist/utils/filters/builders/activity.js.map +1 -0
  504. package/dist/utils/filters/builders/basic.d.ts +13 -0
  505. package/dist/utils/filters/builders/basic.d.ts.map +1 -0
  506. package/dist/utils/filters/builders/basic.js +36 -0
  507. package/dist/utils/filters/builders/basic.js.map +1 -0
  508. package/dist/utils/filters/builders/complex.d.ts +31 -0
  509. package/dist/utils/filters/builders/complex.d.ts.map +1 -0
  510. package/dist/utils/filters/builders/complex.js +92 -0
  511. package/dist/utils/filters/builders/complex.js.map +1 -0
  512. package/dist/utils/filters/builders/date.d.ts +17 -0
  513. package/dist/utils/filters/builders/date.d.ts.map +1 -0
  514. package/dist/utils/filters/builders/date.js +51 -0
  515. package/dist/utils/filters/builders/date.js.map +1 -0
  516. package/dist/utils/filters/builders/index.d.ts +8 -0
  517. package/dist/utils/filters/builders/index.d.ts.map +1 -0
  518. package/dist/utils/filters/builders/index.js +8 -0
  519. package/dist/utils/filters/builders/index.js.map +1 -0
  520. package/dist/utils/filters/builders/numeric.d.ts +17 -0
  521. package/dist/utils/filters/builders/numeric.d.ts.map +1 -0
  522. package/dist/utils/filters/builders/numeric.js +61 -0
  523. package/dist/utils/filters/builders/numeric.js.map +1 -0
  524. package/dist/utils/filters/builders/text.d.ts +17 -0
  525. package/dist/utils/filters/builders/text.d.ts.map +1 -0
  526. package/dist/utils/filters/builders/text.js +47 -0
  527. package/dist/utils/filters/builders/text.js.map +1 -0
  528. package/dist/utils/filters/builders/types.d.ts +2 -0
  529. package/dist/utils/filters/builders/types.d.ts.map +1 -0
  530. package/dist/utils/filters/builders/types.js +2 -0
  531. package/dist/utils/filters/builders/types.js.map +1 -0
  532. package/dist/utils/filters/builders.d.ts +2 -0
  533. package/dist/utils/filters/builders.d.ts.map +1 -0
  534. package/dist/utils/filters/builders.js +2 -0
  535. package/dist/utils/filters/builders.js.map +1 -0
  536. package/dist/utils/filters/cache.d.ts +80 -0
  537. package/dist/utils/filters/cache.d.ts.map +1 -0
  538. package/dist/utils/filters/cache.js +212 -0
  539. package/dist/utils/filters/cache.js.map +1 -0
  540. package/dist/utils/filters/index.d.ts +51 -0
  541. package/dist/utils/filters/index.d.ts.map +1 -0
  542. package/dist/utils/filters/index.js +67 -0
  543. package/dist/utils/filters/index.js.map +1 -0
  544. package/dist/utils/filters/operators.d.ts +65 -0
  545. package/dist/utils/filters/operators.d.ts.map +1 -0
  546. package/dist/utils/filters/operators.js +214 -0
  547. package/dist/utils/filters/operators.js.map +1 -0
  548. package/dist/utils/filters/relationship.d.ts +81 -0
  549. package/dist/utils/filters/relationship.d.ts.map +1 -0
  550. package/dist/utils/filters/relationship.js +393 -0
  551. package/dist/utils/filters/relationship.js.map +1 -0
  552. package/dist/utils/filters/translators.d.ts +120 -0
  553. package/dist/utils/filters/translators.d.ts.map +1 -0
  554. package/dist/utils/filters/translators.js +397 -0
  555. package/dist/utils/filters/translators.js.map +1 -0
  556. package/dist/utils/filters/types.d.ts +77 -0
  557. package/dist/utils/filters/types.d.ts.map +1 -0
  558. package/dist/utils/filters/types.js +85 -0
  559. package/dist/utils/filters/types.js.map +1 -0
  560. package/dist/utils/filters/utils.d.ts +86 -0
  561. package/dist/utils/filters/utils.d.ts.map +1 -0
  562. package/dist/utils/filters/utils.js +142 -0
  563. package/dist/utils/filters/utils.js.map +1 -0
  564. package/dist/utils/filters/validation-utils.d.ts +123 -0
  565. package/dist/utils/filters/validation-utils.d.ts.map +1 -0
  566. package/dist/utils/filters/validation-utils.js +282 -0
  567. package/dist/utils/filters/validation-utils.js.map +1 -0
  568. package/dist/utils/filters/validators.d.ts +73 -0
  569. package/dist/utils/filters/validators.d.ts.map +1 -0
  570. package/dist/utils/filters/validators.js +311 -0
  571. package/dist/utils/filters/validators.js.map +1 -0
  572. package/dist/utils/json-serializer.d.ts +68 -0
  573. package/dist/utils/json-serializer.d.ts.map +1 -0
  574. package/dist/utils/json-serializer.js +235 -0
  575. package/dist/utils/json-serializer.js.map +1 -0
  576. package/dist/utils/logger.d.ts +226 -0
  577. package/dist/utils/logger.d.ts.map +1 -0
  578. package/dist/utils/logger.js +323 -0
  579. package/dist/utils/logger.js.map +1 -0
  580. package/dist/utils/numeric-utils.d.ts +27 -0
  581. package/dist/utils/numeric-utils.d.ts.map +1 -0
  582. package/dist/utils/numeric-utils.js +83 -0
  583. package/dist/utils/numeric-utils.js.map +1 -0
  584. package/dist/utils/pagination.d.ts +85 -0
  585. package/dist/utils/pagination.d.ts.map +1 -0
  586. package/dist/utils/pagination.js +169 -0
  587. package/dist/utils/pagination.js.map +1 -0
  588. package/dist/utils/person-lookup.d.ts +35 -0
  589. package/dist/utils/person-lookup.d.ts.map +1 -0
  590. package/dist/utils/person-lookup.js +67 -0
  591. package/dist/utils/person-lookup.js.map +1 -0
  592. package/dist/utils/rate-limiter.d.ts +82 -0
  593. package/dist/utils/rate-limiter.d.ts.map +1 -0
  594. package/dist/utils/rate-limiter.js +159 -0
  595. package/dist/utils/rate-limiter.js.map +1 -0
  596. package/dist/utils/record-utils.d.ts +74 -0
  597. package/dist/utils/record-utils.d.ts.map +1 -0
  598. package/dist/utils/record-utils.js +312 -0
  599. package/dist/utils/record-utils.js.map +1 -0
  600. package/dist/utils/relationship-utils.d.ts +61 -0
  601. package/dist/utils/relationship-utils.d.ts.map +1 -0
  602. package/dist/utils/relationship-utils.js +242 -0
  603. package/dist/utils/relationship-utils.js.map +1 -0
  604. package/dist/utils/response-formatter.d.ts +121 -0
  605. package/dist/utils/response-formatter.d.ts.map +1 -0
  606. package/dist/utils/response-formatter.js +188 -0
  607. package/dist/utils/response-formatter.js.map +1 -0
  608. package/dist/utils/uri-parser.d.ts +18 -0
  609. package/dist/utils/uri-parser.d.ts.map +1 -0
  610. package/dist/utils/uri-parser.js +31 -0
  611. package/dist/utils/uri-parser.js.map +1 -0
  612. package/dist/utils/validation.d.ts +59 -0
  613. package/dist/utils/validation.d.ts.map +1 -0
  614. package/dist/utils/validation.js +264 -0
  615. package/dist/utils/validation.js.map +1 -0
  616. package/dist/utils/value-matcher.d.ts +58 -0
  617. package/dist/utils/value-matcher.d.ts.map +1 -0
  618. package/dist/utils/value-matcher.js +131 -0
  619. package/dist/utils/value-matcher.js.map +1 -0
  620. package/dist/validators/attribute-validator.d.ts +59 -0
  621. package/dist/validators/attribute-validator.d.ts.map +1 -0
  622. package/dist/validators/attribute-validator.js +531 -0
  623. package/dist/validators/attribute-validator.js.map +1 -0
  624. package/dist/validators/company/field_detector.d.ts +5 -0
  625. package/dist/validators/company/field_detector.d.ts.map +1 -0
  626. package/dist/validators/company/field_detector.js +95 -0
  627. package/dist/validators/company/field_detector.js.map +1 -0
  628. package/dist/validators/company/index.d.ts +26 -0
  629. package/dist/validators/company/index.d.ts.map +1 -0
  630. package/dist/validators/company/index.js +433 -0
  631. package/dist/validators/company/index.js.map +1 -0
  632. package/dist/validators/company/type_cache.d.ts +14 -0
  633. package/dist/validators/company/type_cache.d.ts.map +1 -0
  634. package/dist/validators/company/type_cache.js +28 -0
  635. package/dist/validators/company/type_cache.js.map +1 -0
  636. package/dist/validators/company/types.d.ts +8 -0
  637. package/dist/validators/company/types.d.ts.map +1 -0
  638. package/dist/validators/company/types.js +2 -0
  639. package/dist/validators/company/types.js.map +1 -0
  640. package/dist/validators/company-validator.d.ts +2 -0
  641. package/dist/validators/company-validator.d.ts.map +1 -0
  642. package/dist/validators/company-validator.js +2 -0
  643. package/dist/validators/company-validator.js.map +1 -0
  644. package/package.json +167 -0
@@ -0,0 +1,817 @@
1
+ /**
2
+ * Utility function to safely extract a person's name from Attio record format.
3
+ * Tries multiple potential paths to find a valid name.
4
+ *
5
+ * @param person - The person record from Attio API
6
+ * @returns The person's name or 'Unnamed' if not found
7
+ */
8
+ function getPersonName(person) {
9
+ // Try multiple potential paths to find a name
10
+ return (person.values?.name?.[0]?.full_name ||
11
+ person.values?.name?.[0]?.value ||
12
+ person.values?.name?.[0]?.formatted ||
13
+ person.values?.full_name?.[0]?.value ||
14
+ person.attributes?.name?.value ||
15
+ 'Unnamed');
16
+ }
17
+ import { searchPeople, searchPeopleByEmail, searchPeopleByPhone, getPersonDetails, getPersonNotes, createPersonNote, searchPeopleByCreationDate, searchPeopleByModificationDate, searchPeopleByLastInteraction, searchPeopleByActivity, searchPeopleByCompanyList, searchPeopleByNotes, advancedSearchPeople, } from '../../objects/people/index.js';
18
+ import { createPerson } from '../../objects/people-write.js';
19
+ import { searchCompanies } from '../../objects/companies/index.js';
20
+ import { getAttioClient } from '../../api/attio-client.js';
21
+ // People tool configurations
22
+ export const peopleToolConfigs = {
23
+ create: {
24
+ name: 'create-person',
25
+ handler: async (objectSlug, attributes, _objectId) => {
26
+ // Adapter function to match RecordCreateToolConfig interface
27
+ // The dispatcher passes (objectSlug, attributes, objectId) but createPerson only needs attributes
28
+ try {
29
+ return await createPerson(attributes);
30
+ }
31
+ catch (error) {
32
+ // Add context to errors for better debugging
33
+ const errorMessage = error instanceof Error ? error.message : String(error);
34
+ const contextualError = new Error(`Failed to create person via adapter: ${errorMessage}`);
35
+ contextualError.cause = error;
36
+ throw contextualError;
37
+ }
38
+ },
39
+ formatResult: (result) => `Person created: ${getPersonName(result)} (ID: ${result.id?.record_id || result.id || 'unknown'})`,
40
+ },
41
+ search: {
42
+ name: 'search-people',
43
+ handler: searchPeople,
44
+ formatResult: (results) => {
45
+ return results
46
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
47
+ .join('\n');
48
+ },
49
+ },
50
+ searchByEmail: {
51
+ name: 'search-people-by-email',
52
+ handler: searchPeopleByEmail,
53
+ formatResult: (results) => {
54
+ return results
55
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
56
+ .join('\n');
57
+ },
58
+ },
59
+ searchByPhone: {
60
+ name: 'search-people-by-phone',
61
+ handler: searchPeopleByPhone,
62
+ formatResult: (results) => {
63
+ return results
64
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
65
+ .join('\n');
66
+ },
67
+ },
68
+ advancedSearch: {
69
+ name: 'advanced-search-people',
70
+ handler: advancedSearchPeople,
71
+ formatResult: (response) => {
72
+ const results = response.results || response;
73
+ return results
74
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
75
+ .join('\n');
76
+ },
77
+ },
78
+ details: {
79
+ name: 'get-person-details',
80
+ handler: getPersonDetails,
81
+ /**
82
+ * Formats a person record into a human-readable string representation
83
+ *
84
+ * This function takes a Person object from the Attio API and formats it into a
85
+ * well-structured, human-readable markdown text. It organizes person details into
86
+ * logical sections (basic info, contact, professional, additional attributes) and
87
+ * handles edge cases like missing or empty values.
88
+ *
89
+ * @param person - The person record to format
90
+ * @returns A formatted string with person details in markdown format
91
+ */
92
+ formatResult: (person) => {
93
+ if (!person || !person.id || !person.values) {
94
+ return 'No person details found.';
95
+ }
96
+ const personId = person.id.record_id || 'unknown';
97
+ const name = person.values.name?.[0]?.value || 'Unnamed';
98
+ // Define fields that are displayed in specific sections to avoid duplicating them
99
+ const DISPLAYED_FIELDS = [
100
+ 'name',
101
+ 'email_addresses',
102
+ 'phone_numbers',
103
+ 'job_title',
104
+ 'company',
105
+ ];
106
+ // Build sections of the output
107
+ const sections = [];
108
+ // Basic information section
109
+ sections.push(`# Person Details: ${name} (ID: ${personId})`);
110
+ // Contact information section
111
+ const contactInfo = [];
112
+ if (person.values.email_addresses?.length) {
113
+ contactInfo.push(`Email: ${person.values.email_addresses
114
+ .map((e) => e.email_address || e.value || 'N/A')
115
+ .join(', ')}`);
116
+ }
117
+ if (person.values.phone_numbers?.length) {
118
+ contactInfo.push(`Phone: ${person.values.phone_numbers
119
+ .map((p) => p.phone_number || p.value || 'N/A')
120
+ .join(', ')}`);
121
+ }
122
+ if (contactInfo.length) {
123
+ sections.push(`## Contact Information\n${contactInfo.join('\n')}`);
124
+ }
125
+ // Professional information section
126
+ const professionalInfo = [];
127
+ if (person.values.job_title?.[0]?.value) {
128
+ professionalInfo.push(`Job Title: ${person.values.job_title[0].value}`);
129
+ }
130
+ if (person.values.company?.[0]?.value) {
131
+ professionalInfo.push(`Company: ${person.values.company[0].value}`);
132
+ }
133
+ if (professionalInfo.length) {
134
+ sections.push(`## Professional Information\n${professionalInfo.join('\n')}`);
135
+ }
136
+ // Additional attributes section - show all other attributes
137
+ const additionalAttributes = [];
138
+ for (const [key, values] of Object.entries(person.values)) {
139
+ // Skip already displayed attributes
140
+ if (DISPLAYED_FIELDS.includes(key)) {
141
+ continue;
142
+ }
143
+ if (Array.isArray(values) && values.length > 0) {
144
+ // Format different value types appropriately
145
+ const formattedValues = values
146
+ .map((v) => {
147
+ if (v.value === undefined)
148
+ return 'N/A';
149
+ if (typeof v.value === 'object')
150
+ return JSON.stringify(v.value);
151
+ return String(v.value);
152
+ })
153
+ .join(', ');
154
+ // Convert snake_case to Title Case for display
155
+ const displayKey = key
156
+ .replace(/_/g, ' ')
157
+ .replace(/\b\w/g, (c) => c.toUpperCase());
158
+ additionalAttributes.push(`${displayKey}: ${formattedValues}`);
159
+ }
160
+ }
161
+ if (additionalAttributes.length) {
162
+ sections.push(`## Additional Attributes\n${additionalAttributes.join('\n')}`);
163
+ }
164
+ // Timestamps section
165
+ const timestamps = [];
166
+ if (person.values.created_at?.[0]?.value) {
167
+ timestamps.push(`Created: ${person.values.created_at[0].value}`);
168
+ }
169
+ if (person.values.updated_at?.[0]?.value) {
170
+ timestamps.push(`Updated: ${person.values.updated_at[0].value}`);
171
+ }
172
+ if (timestamps.length) {
173
+ sections.push(`## Timestamps\n${timestamps.join('\n')}`);
174
+ }
175
+ return sections.join('\n\n');
176
+ },
177
+ },
178
+ notes: {
179
+ name: 'get-person-notes',
180
+ handler: getPersonNotes,
181
+ formatResult: (notes) => {
182
+ if (!notes || notes.length === 0) {
183
+ return 'No notes found for this person.';
184
+ }
185
+ return `Found ${notes.length} notes:\n${notes
186
+ .map((note) => `- ${note.title || 'Untitled'} (Created: ${note.timestamp || 'unknown'})\n ${note.content ? note.content.substring(0, 100) + '...' : 'No content'}`)
187
+ .join('\n\n')}`;
188
+ },
189
+ },
190
+ createNote: {
191
+ name: 'create-person-note',
192
+ handler: createPersonNote,
193
+ idParam: 'personId',
194
+ },
195
+ // Advanced search and activity filtering tools
196
+ searchByCreationDate: {
197
+ name: 'search-people-by-creation-date',
198
+ handler: searchPeopleByCreationDate,
199
+ formatResult: (results) => {
200
+ return `Found ${results.length} people created in the specified date range:\n${results
201
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Created: ${person.values?.created_at || 'unknown'})`)
202
+ .join('\n')}`;
203
+ },
204
+ },
205
+ searchByModificationDate: {
206
+ name: 'search-people-by-modification-date',
207
+ handler: searchPeopleByModificationDate,
208
+ formatResult: (results) => {
209
+ return `Found ${results.length} people modified in the specified date range:\n${results
210
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Modified: ${person.values?.updated_at || 'unknown'})`)
211
+ .join('\n')}`;
212
+ },
213
+ },
214
+ searchByLastInteraction: {
215
+ name: 'search-people-by-last-interaction',
216
+ handler: searchPeopleByLastInteraction,
217
+ formatResult: (results) => {
218
+ return `Found ${results.length} people with interactions in the specified date range:\n${results
219
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Last Interaction: ${person.values?.last_interaction?.interacted_at || 'unknown'})`)
220
+ .join('\n')}`;
221
+ },
222
+ },
223
+ searchByActivity: {
224
+ name: 'search-people-by-activity',
225
+ handler: searchPeopleByActivity,
226
+ formatResult: (results) => {
227
+ return `Found ${results.length} people with matching activity:\n${results
228
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'}, Last Interaction: ${person.values?.last_interaction?.interacted_at || 'unknown'})`)
229
+ .join('\n')}`;
230
+ },
231
+ },
232
+ // Relationship-based filtering tools
233
+ searchByCompany: {
234
+ name: 'search-people-by-company',
235
+ /**
236
+ * Handler for searching people by company affiliation
237
+ *
238
+ * This handler transforms the filter to match Attio API expectations
239
+ * for record reference attributes (company.target_record_id)
240
+ */
241
+ handler: async (args) => {
242
+ // Extract companyFilter from arguments
243
+ const { companyFilter } = args;
244
+ // Log the incoming request for debugging
245
+ if (process.env.NODE_ENV === 'development') {
246
+ console.log('[search-people-by-company] Received filter:', JSON.stringify(companyFilter, null, 2));
247
+ }
248
+ // Validate filter structure
249
+ if (!companyFilter?.filters ||
250
+ !Array.isArray(companyFilter.filters) ||
251
+ companyFilter.filters.length === 0) {
252
+ throw new Error('Invalid companyFilter format. Expected filters array with at least one filter');
253
+ }
254
+ // Process filters to handle company ID and name lookups
255
+ const filters = [];
256
+ for (const filter of companyFilter.filters) {
257
+ const slug = filter.attribute?.slug;
258
+ if (slug === 'companies.id') {
259
+ // Direct company ID filter - use correct Attio structure
260
+ const recordId = filter.value?.record_id || filter.value;
261
+ // Transform to Attio API structure for record reference
262
+ // API expects shorthand format: { company: { target_record_id: { $eq: "id" } } }
263
+ filters.push({
264
+ company: {
265
+ target_record_id: {
266
+ $eq: recordId,
267
+ },
268
+ },
269
+ });
270
+ }
271
+ else if (slug === 'companies.name') {
272
+ // Company name filter - need to look up company ID first
273
+ try {
274
+ const companies = await searchCompanies(filter.value);
275
+ if (companies.length === 0) {
276
+ throw new Error(`No company found with name: ${filter.value}`);
277
+ }
278
+ // Use the first matching company's ID
279
+ const companyId = companies[0].id?.record_id;
280
+ filters.push({
281
+ company: {
282
+ target_record_id: {
283
+ $eq: companyId,
284
+ },
285
+ },
286
+ });
287
+ }
288
+ catch (error) {
289
+ const errorMessage = error instanceof Error ? error.message : String(error);
290
+ throw new Error(`Failed to find company by name: ${errorMessage}`);
291
+ }
292
+ }
293
+ else {
294
+ // Unknown filter type - throw error for better debugging
295
+ throw new Error(`Unsupported filter type: '${slug}'. ` +
296
+ `Supported filters are: 'companies.id' and 'companies.name'`);
297
+ }
298
+ }
299
+ // Create the final filter structure
300
+ const apiFilter = filters.length === 1
301
+ ? filters[0]
302
+ : companyFilter.matchAny
303
+ ? { $or: filters }
304
+ : { $and: filters };
305
+ if (process.env.NODE_ENV === 'development') {
306
+ console.log('[search-people-by-company] Final API filter:', JSON.stringify(apiFilter, null, 2));
307
+ }
308
+ // Use the Attio API directly to avoid filter transformation issues
309
+ const api = getAttioClient();
310
+ const response = await api.post('/objects/people/records/query', {
311
+ filter: apiFilter,
312
+ limit: 50,
313
+ });
314
+ return response.data.data || [];
315
+ },
316
+ formatResult: (results) => {
317
+ return `Found ${results.length} people matching the company filter:\n${results
318
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
319
+ .join('\n')}`;
320
+ },
321
+ },
322
+ searchByCompanyList: {
323
+ name: 'search-people-by-company-list',
324
+ handler: searchPeopleByCompanyList,
325
+ formatResult: (results) => {
326
+ return `Found ${results.length} people who work at companies in the specified list:\n${results
327
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
328
+ .join('\n')}`;
329
+ },
330
+ },
331
+ searchByNotes: {
332
+ name: 'search-people-by-notes',
333
+ handler: searchPeopleByNotes,
334
+ formatResult: (results) => {
335
+ return `Found ${results.length} people with matching notes:\n${results
336
+ .map((person) => `- ${getPersonName(person)} (ID: ${person.id?.record_id || 'unknown'})`)
337
+ .join('\n')}`;
338
+ },
339
+ },
340
+ };
341
+ // People tool definitions
342
+ export const peopleToolDefinitions = [
343
+ {
344
+ name: 'create-person',
345
+ description: 'Create a new person in Attio',
346
+ inputSchema: {
347
+ type: 'object',
348
+ properties: {
349
+ attributes: {
350
+ type: 'object',
351
+ description: 'Person attributes to set',
352
+ properties: {
353
+ name: {
354
+ type: 'string',
355
+ description: 'Person name',
356
+ },
357
+ email_addresses: {
358
+ type: 'array',
359
+ items: { type: 'string' },
360
+ description: 'Email address(es) - array of email strings. For single email, provide as single-item array.',
361
+ },
362
+ phone_numbers: {
363
+ type: 'array',
364
+ items: { type: 'string' },
365
+ description: 'Phone number(s) - array of phone strings. For single phone, provide as single-item array.',
366
+ },
367
+ job_title: {
368
+ type: 'string',
369
+ description: 'Job title',
370
+ },
371
+ company: {
372
+ type: 'string',
373
+ description: 'Company name',
374
+ },
375
+ },
376
+ },
377
+ },
378
+ required: ['attributes'],
379
+ },
380
+ },
381
+ {
382
+ name: 'search-people',
383
+ description: 'Search for people in Attio',
384
+ inputSchema: {
385
+ type: 'object',
386
+ properties: {
387
+ query: {
388
+ type: 'string',
389
+ description: 'Search query for people',
390
+ },
391
+ },
392
+ required: ['query'],
393
+ },
394
+ },
395
+ {
396
+ name: 'search-people-by-email',
397
+ description: 'Search for people by email in Attio',
398
+ inputSchema: {
399
+ type: 'object',
400
+ properties: {
401
+ email: {
402
+ type: 'string',
403
+ description: 'Email address to search for',
404
+ },
405
+ },
406
+ required: ['email'],
407
+ },
408
+ },
409
+ {
410
+ name: 'search-people-by-phone',
411
+ description: 'Search for people by phone number in Attio',
412
+ inputSchema: {
413
+ type: 'object',
414
+ properties: {
415
+ phone: {
416
+ type: 'string',
417
+ description: 'Phone number to search for',
418
+ },
419
+ },
420
+ required: ['phone'],
421
+ },
422
+ },
423
+ {
424
+ name: 'advanced-search-people',
425
+ description: 'Search for people using advanced filtering capabilities',
426
+ inputSchema: {
427
+ type: 'object',
428
+ properties: {
429
+ filters: {
430
+ type: 'object',
431
+ description: 'Complex filter object for advanced searching',
432
+ properties: {
433
+ filters: {
434
+ type: 'array',
435
+ description: 'Array of filter conditions',
436
+ items: {
437
+ type: 'object',
438
+ properties: {
439
+ attribute: {
440
+ type: 'object',
441
+ properties: {
442
+ slug: {
443
+ type: 'string',
444
+ description: "Attribute to filter on (e.g., 'name', 'email', 'phone')",
445
+ },
446
+ },
447
+ required: ['slug'],
448
+ },
449
+ condition: {
450
+ type: 'string',
451
+ description: "Condition to apply (e.g., 'equals', 'contains', 'starts_with')",
452
+ },
453
+ value: {
454
+ type: ['string', 'number', 'boolean'],
455
+ description: 'Value to filter by',
456
+ },
457
+ },
458
+ required: ['attribute', 'condition', 'value'],
459
+ },
460
+ },
461
+ matchAny: {
462
+ type: 'boolean',
463
+ description: 'When true, matches any filter (OR logic). When false, matches all filters (AND logic)',
464
+ },
465
+ },
466
+ required: ['filters'],
467
+ },
468
+ limit: {
469
+ type: 'number',
470
+ description: 'Maximum number of results to return (default: 20)',
471
+ },
472
+ offset: {
473
+ type: 'number',
474
+ description: 'Number of results to skip (default: 0)',
475
+ },
476
+ },
477
+ required: ['filters'],
478
+ },
479
+ },
480
+ {
481
+ name: 'get-person-details',
482
+ description: 'Get details of a person',
483
+ inputSchema: {
484
+ type: 'object',
485
+ properties: {
486
+ personId: {
487
+ type: 'string',
488
+ description: 'ID of the person to get details for',
489
+ },
490
+ },
491
+ required: ['personId'],
492
+ },
493
+ },
494
+ {
495
+ name: 'get-person-notes',
496
+ description: 'Get notes for a person',
497
+ inputSchema: {
498
+ type: 'object',
499
+ properties: {
500
+ personId: {
501
+ type: 'string',
502
+ description: 'ID of the person to get notes for',
503
+ },
504
+ },
505
+ required: ['personId'],
506
+ },
507
+ },
508
+ {
509
+ name: 'create-person-note',
510
+ description: 'Create a note for a specific person',
511
+ inputSchema: {
512
+ type: 'object',
513
+ properties: {
514
+ personId: {
515
+ type: 'string',
516
+ description: 'ID of the person to create a note for',
517
+ },
518
+ content: {
519
+ type: 'string',
520
+ description: 'Content of the note',
521
+ },
522
+ },
523
+ required: ['personId', 'content'],
524
+ },
525
+ },
526
+ // New activity and historical filtering tool definitions
527
+ {
528
+ name: 'search-people-by-creation-date',
529
+ description: 'Search for people by their creation date',
530
+ inputSchema: {
531
+ type: 'object',
532
+ properties: {
533
+ dateRange: {
534
+ type: 'object',
535
+ description: 'Date range for filtering',
536
+ properties: {
537
+ start: {
538
+ type: 'string',
539
+ description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
540
+ },
541
+ end: {
542
+ type: 'string',
543
+ description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
544
+ },
545
+ preset: {
546
+ type: 'string',
547
+ description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
548
+ },
549
+ },
550
+ },
551
+ limit: {
552
+ type: 'number',
553
+ description: 'Maximum number of results to return (default: 20)',
554
+ },
555
+ offset: {
556
+ type: 'number',
557
+ description: 'Number of results to skip (default: 0)',
558
+ },
559
+ },
560
+ required: ['dateRange'],
561
+ },
562
+ },
563
+ {
564
+ name: 'search-people-by-modification-date',
565
+ description: 'Search for people by their last modification date',
566
+ inputSchema: {
567
+ type: 'object',
568
+ properties: {
569
+ dateRange: {
570
+ type: 'object',
571
+ description: 'Date range for filtering',
572
+ properties: {
573
+ start: {
574
+ type: 'string',
575
+ description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
576
+ },
577
+ end: {
578
+ type: 'string',
579
+ description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
580
+ },
581
+ preset: {
582
+ type: 'string',
583
+ description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
584
+ },
585
+ },
586
+ },
587
+ limit: {
588
+ type: 'number',
589
+ description: 'Maximum number of results to return (default: 20)',
590
+ },
591
+ offset: {
592
+ type: 'number',
593
+ description: 'Number of results to skip (default: 0)',
594
+ },
595
+ },
596
+ required: ['dateRange'],
597
+ },
598
+ },
599
+ {
600
+ name: 'search-people-by-last-interaction',
601
+ description: 'Search for people by their last interaction date',
602
+ inputSchema: {
603
+ type: 'object',
604
+ properties: {
605
+ dateRange: {
606
+ type: 'object',
607
+ description: 'Date range for filtering',
608
+ properties: {
609
+ start: {
610
+ type: 'string',
611
+ description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
612
+ },
613
+ end: {
614
+ type: 'string',
615
+ description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
616
+ },
617
+ preset: {
618
+ type: 'string',
619
+ description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
620
+ },
621
+ },
622
+ },
623
+ interactionType: {
624
+ type: 'string',
625
+ description: 'Type of interaction to filter by (any, email, calendar, phone, meeting, custom)',
626
+ enum: ['any', 'email', 'calendar', 'phone', 'meeting', 'custom'],
627
+ },
628
+ limit: {
629
+ type: 'number',
630
+ description: 'Maximum number of results to return (default: 20)',
631
+ },
632
+ offset: {
633
+ type: 'number',
634
+ description: 'Number of results to skip (default: 0)',
635
+ },
636
+ },
637
+ required: ['dateRange'],
638
+ },
639
+ },
640
+ {
641
+ name: 'search-people-by-activity',
642
+ description: 'Search for people by their activity history',
643
+ inputSchema: {
644
+ type: 'object',
645
+ properties: {
646
+ activityFilter: {
647
+ type: 'object',
648
+ description: 'Activity filter configuration',
649
+ properties: {
650
+ dateRange: {
651
+ type: 'object',
652
+ description: 'Date range for filtering',
653
+ properties: {
654
+ start: {
655
+ type: 'string',
656
+ description: "Start date in ISO format or relative date expression (e.g., '2023-01-01')",
657
+ },
658
+ end: {
659
+ type: 'string',
660
+ description: "End date in ISO format or relative date expression (e.g., '2023-12-31')",
661
+ },
662
+ preset: {
663
+ type: 'string',
664
+ description: "Predefined date range (e.g., 'today', 'this_week', 'last_month')",
665
+ },
666
+ },
667
+ required: ['start', 'end'],
668
+ },
669
+ interactionType: {
670
+ type: 'string',
671
+ description: 'Type of interaction to filter by (any, email, calendar, phone, meeting, custom)',
672
+ enum: ['any', 'email', 'calendar', 'phone', 'meeting', 'custom'],
673
+ },
674
+ },
675
+ required: ['dateRange'],
676
+ },
677
+ limit: {
678
+ type: 'number',
679
+ description: 'Maximum number of results to return (default: 20)',
680
+ },
681
+ offset: {
682
+ type: 'number',
683
+ description: 'Number of results to skip (default: 0)',
684
+ },
685
+ },
686
+ required: ['activityFilter'],
687
+ },
688
+ },
689
+ // Relationship-based filtering tool definitions
690
+ {
691
+ name: 'search-people-by-company',
692
+ description: 'Search for people based on attributes of their associated companies',
693
+ /**
694
+ * @example
695
+ * Search by company ID:
696
+ * {
697
+ * companyFilter: {
698
+ * filters: [{
699
+ * attribute: { slug: 'companies.id' },
700
+ * condition: 'equals',
701
+ * value: { record_id: '0c472146-9c7b-5fde-96cd-5df8e5cf9575' }
702
+ * }]
703
+ * }
704
+ * }
705
+ *
706
+ * @example
707
+ * Search by company name:
708
+ * {
709
+ * companyFilter: {
710
+ * filters: [{
711
+ * attribute: { slug: 'companies.name' },
712
+ * condition: 'equals',
713
+ * value: 'Oakwood Precision Medicine'
714
+ * }]
715
+ * }
716
+ * }
717
+ */
718
+ inputSchema: {
719
+ type: 'object',
720
+ properties: {
721
+ companyFilter: {
722
+ type: 'object',
723
+ description: "Filter conditions to apply to companies. Supported slugs: 'companies.id', 'companies.name'",
724
+ properties: {
725
+ filters: {
726
+ type: 'array',
727
+ description: 'Array of filter conditions. The handler processes filters in order and uses the first valid one.',
728
+ items: {
729
+ type: 'object',
730
+ properties: {
731
+ attribute: {
732
+ type: 'object',
733
+ properties: {
734
+ slug: {
735
+ type: 'string',
736
+ description: "Company attribute to filter on. Currently supports: 'companies.id', 'companies.name'",
737
+ },
738
+ },
739
+ required: ['slug'],
740
+ },
741
+ condition: {
742
+ type: 'string',
743
+ description: "Condition to apply (e.g., 'equals', 'contains', 'starts_with')",
744
+ },
745
+ value: {
746
+ type: ['string', 'number', 'boolean', 'object'],
747
+ description: "Value to filter by. For company ID, use { record_id: 'id' }. For company name, use a string.",
748
+ },
749
+ },
750
+ required: ['attribute', 'condition', 'value'],
751
+ },
752
+ },
753
+ matchAny: {
754
+ type: 'boolean',
755
+ description: 'When true, matches any filter (OR logic). When false, matches all filters (AND logic)',
756
+ },
757
+ },
758
+ required: ['filters'],
759
+ },
760
+ limit: {
761
+ type: 'number',
762
+ description: 'Maximum number of results to return (default: 20)',
763
+ },
764
+ offset: {
765
+ type: 'number',
766
+ description: 'Number of results to skip (default: 0)',
767
+ },
768
+ },
769
+ required: ['companyFilter'],
770
+ },
771
+ },
772
+ {
773
+ name: 'search-people-by-company-list',
774
+ description: 'Search for people who work at companies in a specific list',
775
+ inputSchema: {
776
+ type: 'object',
777
+ properties: {
778
+ listId: {
779
+ type: 'string',
780
+ description: 'ID of the list containing companies',
781
+ },
782
+ limit: {
783
+ type: 'number',
784
+ description: 'Maximum number of results to return (default: 20)',
785
+ },
786
+ offset: {
787
+ type: 'number',
788
+ description: 'Number of results to skip (default: 0)',
789
+ },
790
+ },
791
+ required: ['listId'],
792
+ },
793
+ },
794
+ {
795
+ name: 'search-people-by-notes',
796
+ description: 'Search for people that have notes containing specific text',
797
+ inputSchema: {
798
+ type: 'object',
799
+ properties: {
800
+ searchText: {
801
+ type: 'string',
802
+ description: 'Text to search for in notes',
803
+ },
804
+ limit: {
805
+ type: 'number',
806
+ description: 'Maximum number of results to return (default: 20)',
807
+ },
808
+ offset: {
809
+ type: 'number',
810
+ description: 'Number of results to skip (default: 0)',
811
+ },
812
+ },
813
+ required: ['searchText'],
814
+ },
815
+ },
816
+ ];
817
+ //# sourceMappingURL=people.js.map