attio-mcp 1.3.6 → 1.4.1

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 (440) hide show
  1. package/CHANGELOG.md +284 -3
  2. package/README.md +143 -334
  3. package/dist/api/attio-client.d.ts +13 -3
  4. package/dist/api/attio-client.d.ts.map +1 -1
  5. package/dist/api/attio-client.js +37 -7
  6. package/dist/api/attio-client.js.map +1 -1
  7. package/dist/api/attribute-types.d.ts.map +1 -1
  8. package/dist/api/attribute-types.js +42 -20
  9. package/dist/api/attribute-types.js.map +1 -1
  10. package/dist/api/client-context.d.ts.map +1 -1
  11. package/dist/api/client-context.js +28 -42
  12. package/dist/api/client-context.js.map +1 -1
  13. package/dist/api/operations/batch.d.ts +3 -3
  14. package/dist/api/operations/batch.d.ts.map +1 -1
  15. package/dist/api/operations/batch.js.map +1 -1
  16. package/dist/api/operations/crud.d.ts.map +1 -1
  17. package/dist/api/operations/crud.js.map +1 -1
  18. package/dist/api/operations/search.d.ts.map +1 -1
  19. package/dist/api/operations/search.js.map +1 -1
  20. package/dist/cli/commands/generate-skill.d.ts +28 -0
  21. package/dist/cli/commands/generate-skill.d.ts.map +1 -0
  22. package/dist/cli/commands/generate-skill.js +101 -0
  23. package/dist/cli/commands/generate-skill.js.map +1 -0
  24. package/dist/cli/discover.js +65 -0
  25. package/dist/cli/discover.js.map +1 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/config/deal-defaults.d.ts +2 -2
  28. package/dist/config/deal-defaults.d.ts.map +1 -1
  29. package/dist/config/deal-defaults.js +15 -6
  30. package/dist/config/deal-defaults.js.map +1 -1
  31. package/dist/config/tool-aliases.d.ts +12 -0
  32. package/dist/config/tool-aliases.d.ts.map +1 -1
  33. package/dist/config/tool-aliases.js +213 -69
  34. package/dist/config/tool-aliases.js.map +1 -1
  35. package/dist/constants/tool-names.d.ts +84 -0
  36. package/dist/constants/tool-names.d.ts.map +1 -0
  37. package/dist/constants/tool-names.js +81 -0
  38. package/dist/constants/tool-names.js.map +1 -0
  39. package/dist/constants/universal.constants.d.ts +24 -0
  40. package/dist/constants/universal.constants.d.ts.map +1 -1
  41. package/dist/constants/universal.constants.js +81 -9
  42. package/dist/constants/universal.constants.js.map +1 -1
  43. package/dist/errors/value-match-error.js +1 -1
  44. package/dist/handlers/tool-configs/lists.d.ts +142 -19
  45. package/dist/handlers/tool-configs/lists.d.ts.map +1 -1
  46. package/dist/handlers/tool-configs/lists.js +319 -25
  47. package/dist/handlers/tool-configs/lists.js.map +1 -1
  48. package/dist/handlers/tool-configs/universal/batch-search.d.ts +1 -1
  49. package/dist/handlers/tool-configs/universal/batch-search.d.ts.map +1 -1
  50. package/dist/handlers/tool-configs/universal/batch-search.js +17 -13
  51. package/dist/handlers/tool-configs/universal/batch-search.js.map +1 -1
  52. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts +26 -4
  53. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts.map +1 -1
  54. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js +181 -21
  55. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js.map +1 -1
  56. package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts +4 -4
  57. package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts.map +1 -1
  58. package/dist/handlers/tool-configs/universal/core/crud-operations.js +37 -24
  59. package/dist/handlers/tool-configs/universal/core/crud-operations.js.map +1 -1
  60. package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js +3 -3
  61. package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js.map +1 -1
  62. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts +17 -0
  63. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts.map +1 -0
  64. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js +118 -0
  65. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js.map +1 -0
  66. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts +14 -0
  67. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts.map +1 -0
  68. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js +77 -0
  69. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js.map +1 -0
  70. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts +24 -0
  71. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts.map +1 -0
  72. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js +35 -0
  73. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js.map +1 -0
  74. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts +15 -0
  75. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts.map +1 -0
  76. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js +108 -0
  77. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js.map +1 -0
  78. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts +14 -0
  79. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts.map +1 -0
  80. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js +91 -0
  81. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js.map +1 -0
  82. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts +14 -0
  83. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts.map +1 -0
  84. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js +118 -0
  85. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js.map +1 -0
  86. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts +77 -0
  87. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts.map +1 -0
  88. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js +42 -0
  89. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js.map +1 -0
  90. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts +15 -0
  91. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts.map +1 -0
  92. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js +109 -0
  93. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js.map +1 -0
  94. package/dist/handlers/tool-configs/universal/core/index.d.ts +63 -22
  95. package/dist/handlers/tool-configs/universal/core/index.d.ts.map +1 -1
  96. package/dist/handlers/tool-configs/universal/core/index.js +24 -22
  97. package/dist/handlers/tool-configs/universal/core/index.js.map +1 -1
  98. package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts +43 -1
  99. package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts.map +1 -1
  100. package/dist/handlers/tool-configs/universal/core/metadata-operations.js +117 -11
  101. package/dist/handlers/tool-configs/universal/core/metadata-operations.js.map +1 -1
  102. package/dist/handlers/tool-configs/universal/core/notes-operations.js +12 -12
  103. package/dist/handlers/tool-configs/universal/core/notes-operations.js.map +1 -1
  104. package/dist/handlers/tool-configs/universal/core/record-details-operations.d.ts +6 -3
  105. package/dist/handlers/tool-configs/universal/core/record-details-operations.d.ts.map +1 -1
  106. package/dist/handlers/tool-configs/universal/core/record-details-operations.js +35 -10
  107. package/dist/handlers/tool-configs/universal/core/record-details-operations.js.map +1 -1
  108. package/dist/handlers/tool-configs/universal/core/search-operations.d.ts +4 -3
  109. package/dist/handlers/tool-configs/universal/core/search-operations.d.ts.map +1 -1
  110. package/dist/handlers/tool-configs/universal/core/search-operations.js +31 -12
  111. package/dist/handlers/tool-configs/universal/core/search-operations.js.map +1 -1
  112. package/dist/handlers/tool-configs/universal/core/utils.d.ts +1 -0
  113. package/dist/handlers/tool-configs/universal/core/utils.d.ts.map +1 -1
  114. package/dist/handlers/tool-configs/universal/core/utils.js +3 -0
  115. package/dist/handlers/tool-configs/universal/core/utils.js.map +1 -1
  116. package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.d.ts.map +1 -1
  117. package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js +32 -9
  118. package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js.map +1 -1
  119. package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.d.ts.map +1 -1
  120. package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js +45 -6
  121. package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js.map +1 -1
  122. package/dist/handlers/tool-configs/universal/field-mapper/constants/people.d.ts.map +1 -1
  123. package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js +36 -5
  124. package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js.map +1 -1
  125. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts +1 -1
  126. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts.map +1 -1
  127. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js +17 -1
  128. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js.map +1 -1
  129. package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.d.ts.map +1 -1
  130. package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js +3 -1
  131. package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js.map +1 -1
  132. package/dist/handlers/tool-configs/universal/index.d.ts +75 -34
  133. package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
  134. package/dist/handlers/tool-configs/universal/index.js +58 -58
  135. package/dist/handlers/tool-configs/universal/index.js.map +1 -1
  136. package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts +3 -3
  137. package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts.map +1 -1
  138. package/dist/handlers/tool-configs/universal/operations/advanced-search.js +17 -10
  139. package/dist/handlers/tool-configs/universal/operations/advanced-search.js.map +1 -1
  140. package/dist/handlers/tool-configs/universal/operations/batch-format.d.ts +1 -1
  141. package/dist/handlers/tool-configs/universal/operations/batch-format.d.ts.map +1 -1
  142. package/dist/handlers/tool-configs/universal/operations/batch-format.js +31 -10
  143. package/dist/handlers/tool-configs/universal/operations/batch-format.js.map +1 -1
  144. package/dist/handlers/tool-configs/universal/operations/batch-operations.js +3 -3
  145. package/dist/handlers/tool-configs/universal/operations/content-search.d.ts +3 -3
  146. package/dist/handlers/tool-configs/universal/operations/content-search.d.ts.map +1 -1
  147. package/dist/handlers/tool-configs/universal/operations/content-search.js +15 -9
  148. package/dist/handlers/tool-configs/universal/operations/content-search.js.map +1 -1
  149. package/dist/handlers/tool-configs/universal/operations/index.d.ts +10 -10
  150. package/dist/handlers/tool-configs/universal/operations/index.js +15 -15
  151. package/dist/handlers/tool-configs/universal/operations/relationship-search.d.ts +3 -3
  152. package/dist/handlers/tool-configs/universal/operations/relationship-search.d.ts.map +1 -1
  153. package/dist/handlers/tool-configs/universal/operations/relationship-search.js +11 -8
  154. package/dist/handlers/tool-configs/universal/operations/relationship-search.js.map +1 -1
  155. package/dist/handlers/tool-configs/universal/operations/timeframe-search.d.ts +3 -3
  156. package/dist/handlers/tool-configs/universal/operations/timeframe-search.d.ts.map +1 -1
  157. package/dist/handlers/tool-configs/universal/operations/timeframe-search.js +16 -10
  158. package/dist/handlers/tool-configs/universal/operations/timeframe-search.js.map +1 -1
  159. package/dist/handlers/tool-configs/universal/schemas/utility-schemas.d.ts.map +1 -1
  160. package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js +5 -2
  161. package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js.map +1 -1
  162. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts +29 -0
  163. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts.map +1 -1
  164. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js +28 -0
  165. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js.map +1 -1
  166. package/dist/handlers/tool-configs/universal/schemas.d.ts +1 -1
  167. package/dist/handlers/tool-configs/universal/schemas.d.ts.map +1 -1
  168. package/dist/handlers/tool-configs/universal/schemas.js +1 -1
  169. package/dist/handlers/tool-configs/universal/schemas.js.map +1 -1
  170. package/dist/handlers/tool-configs/universal/shared-handlers.d.ts +27 -7
  171. package/dist/handlers/tool-configs/universal/shared-handlers.d.ts.map +1 -1
  172. package/dist/handlers/tool-configs/universal/shared-handlers.js +221 -25
  173. package/dist/handlers/tool-configs/universal/shared-handlers.js.map +1 -1
  174. package/dist/handlers/tool-configs/universal/smithery-diagnostics.js +2 -2
  175. package/dist/handlers/tool-configs/universal/smithery-diagnostics.js.map +1 -1
  176. package/dist/handlers/tool-configs/universal/types.d.ts +17 -7
  177. package/dist/handlers/tool-configs/universal/types.d.ts.map +1 -1
  178. package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts +11 -0
  179. package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts.map +1 -1
  180. package/dist/handlers/tool-configs/universal/validators/schema-validator.js +80 -17
  181. package/dist/handlers/tool-configs/universal/validators/schema-validator.js.map +1 -1
  182. package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -1
  183. package/dist/handlers/tools/dispatcher/core.js +9 -2
  184. package/dist/handlers/tools/dispatcher/core.js.map +1 -1
  185. package/dist/handlers/tools/dispatcher/operations/lists.d.ts +20 -1
  186. package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -1
  187. package/dist/handlers/tools/dispatcher/operations/lists.js +366 -17
  188. package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -1
  189. package/dist/handlers/tools/formatters.d.ts +8 -1
  190. package/dist/handlers/tools/formatters.d.ts.map +1 -1
  191. package/dist/handlers/tools/formatters.js +30 -14
  192. package/dist/handlers/tools/formatters.js.map +1 -1
  193. package/dist/handlers/tools/registry.d.ts +409 -122
  194. package/dist/handlers/tools/registry.d.ts.map +1 -1
  195. package/dist/handlers/tools/registry.js +14 -9
  196. package/dist/handlers/tools/registry.js.map +1 -1
  197. package/dist/handlers/tools/standards/index.d.ts.map +1 -1
  198. package/dist/handlers/tools/standards/index.js +19 -11
  199. package/dist/handlers/tools/standards/index.js.map +1 -1
  200. package/dist/objects/companies/attributes.d.ts +5 -0
  201. package/dist/objects/companies/attributes.d.ts.map +1 -1
  202. package/dist/objects/companies/attributes.js +45 -31
  203. package/dist/objects/companies/attributes.js.map +1 -1
  204. package/dist/objects/companies/basic.d.ts.map +1 -1
  205. package/dist/objects/companies/basic.js.map +1 -1
  206. package/dist/objects/lists/base.d.ts.map +1 -1
  207. package/dist/objects/lists/base.js +6 -2
  208. package/dist/objects/lists/base.js.map +1 -1
  209. package/dist/objects/lists/shared.d.ts.map +1 -1
  210. package/dist/objects/lists/shared.js +12 -1
  211. package/dist/objects/lists/shared.js.map +1 -1
  212. package/dist/objects/records/index.d.ts.map +1 -1
  213. package/dist/objects/records/index.js.map +1 -1
  214. package/dist/server/createServer.d.ts.map +1 -1
  215. package/dist/server/createServer.js +4 -3
  216. package/dist/server/createServer.js.map +1 -1
  217. package/dist/services/ErrorService.js +3 -3
  218. package/dist/services/ErrorService.js.map +1 -1
  219. package/dist/services/OpenAiCompatibilityService.d.ts.map +1 -1
  220. package/dist/services/OpenAiCompatibilityService.js +12 -8
  221. package/dist/services/OpenAiCompatibilityService.js.map +1 -1
  222. package/dist/services/UniversalCreateService.d.ts +3 -3
  223. package/dist/services/UniversalCreateService.d.ts.map +1 -1
  224. package/dist/services/UniversalCreateService.js +162 -38
  225. package/dist/services/UniversalCreateService.js.map +1 -1
  226. package/dist/services/UniversalMetadataService.d.ts +8 -0
  227. package/dist/services/UniversalMetadataService.d.ts.map +1 -1
  228. package/dist/services/UniversalMetadataService.js +21 -0
  229. package/dist/services/UniversalMetadataService.js.map +1 -1
  230. package/dist/services/UniversalRetrievalService.d.ts +7 -5
  231. package/dist/services/UniversalRetrievalService.d.ts.map +1 -1
  232. package/dist/services/UniversalRetrievalService.js +31 -29
  233. package/dist/services/UniversalRetrievalService.js.map +1 -1
  234. package/dist/services/UniversalSearchService.d.ts +8 -27
  235. package/dist/services/UniversalSearchService.d.ts.map +1 -1
  236. package/dist/services/UniversalSearchService.js +19 -327
  237. package/dist/services/UniversalSearchService.js.map +1 -1
  238. package/dist/services/UniversalUpdateService.d.ts +25 -7
  239. package/dist/services/UniversalUpdateService.d.ts.map +1 -1
  240. package/dist/services/UniversalUpdateService.js +132 -157
  241. package/dist/services/UniversalUpdateService.js.map +1 -1
  242. package/dist/services/UniversalUtilityService.d.ts +9 -1
  243. package/dist/services/UniversalUtilityService.d.ts.map +1 -1
  244. package/dist/services/UniversalUtilityService.js +13 -0
  245. package/dist/services/UniversalUtilityService.js.map +1 -1
  246. package/dist/services/ValidationService.js +4 -4
  247. package/dist/services/ValidationService.js.map +1 -1
  248. package/dist/services/create/attio-create.service.d.ts.map +1 -1
  249. package/dist/services/create/attio-create.service.js +2 -1
  250. package/dist/services/create/attio-create.service.js.map +1 -1
  251. package/dist/services/create/creators/company-creator.js.map +1 -1
  252. package/dist/services/create/creators/note-creator.d.ts.map +1 -1
  253. package/dist/services/create/creators/note-creator.js +4 -2
  254. package/dist/services/create/creators/note-creator.js.map +1 -1
  255. package/dist/services/create/factory.d.ts.map +1 -1
  256. package/dist/services/create/factory.js +2 -1
  257. package/dist/services/create/factory.js.map +1 -1
  258. package/dist/services/create/mock-create.service.d.ts.map +1 -1
  259. package/dist/services/create/mock-create.service.js.map +1 -1
  260. package/dist/services/create/strategies/BaseCreateStrategy.d.ts +2 -2
  261. package/dist/services/create/strategies/BaseCreateStrategy.d.ts.map +1 -1
  262. package/dist/services/create/strategies/ListCreateStrategy.d.ts +3 -3
  263. package/dist/services/create/strategies/ListCreateStrategy.d.ts.map +1 -1
  264. package/dist/services/create/strategies/ListCreateStrategy.js +2 -16
  265. package/dist/services/create/strategies/ListCreateStrategy.js.map +1 -1
  266. package/dist/services/create/strategies/TaskCreateStrategy.d.ts.map +1 -1
  267. package/dist/services/create/strategies/TaskCreateStrategy.js.map +1 -1
  268. package/dist/services/metadata/AttributeOptionsService.d.ts +38 -0
  269. package/dist/services/metadata/AttributeOptionsService.d.ts.map +1 -0
  270. package/dist/services/metadata/AttributeOptionsService.js +92 -0
  271. package/dist/services/metadata/AttributeOptionsService.js.map +1 -0
  272. package/dist/services/metadata/MetadataDiscoveryService.d.ts.map +1 -1
  273. package/dist/services/metadata/MetadataDiscoveryService.js.map +1 -1
  274. package/dist/services/metadata/MetadataTransformService.d.ts.map +1 -1
  275. package/dist/services/metadata/MetadataTransformService.js.map +1 -1
  276. package/dist/services/metadata/index.d.ts +1 -0
  277. package/dist/services/metadata/index.d.ts.map +1 -1
  278. package/dist/services/metadata/index.js +1 -0
  279. package/dist/services/metadata/index.js.map +1 -1
  280. package/dist/services/search/QueryApiService.d.ts +27 -0
  281. package/dist/services/search/QueryApiService.d.ts.map +1 -0
  282. package/dist/services/search/QueryApiService.js +144 -0
  283. package/dist/services/search/QueryApiService.js.map +1 -0
  284. package/dist/services/search/RecordsSearchService.d.ts +27 -0
  285. package/dist/services/search/RecordsSearchService.d.ts.map +1 -0
  286. package/dist/services/search/RecordsSearchService.js +122 -0
  287. package/dist/services/search/RecordsSearchService.js.map +1 -0
  288. package/dist/services/search/SearchCoordinator.d.ts +41 -0
  289. package/dist/services/search/SearchCoordinator.d.ts.map +1 -0
  290. package/dist/services/search/SearchCoordinator.js +83 -0
  291. package/dist/services/search/SearchCoordinator.js.map +1 -0
  292. package/dist/services/search/StrategyFactory.d.ts +31 -0
  293. package/dist/services/search/StrategyFactory.d.ts.map +1 -0
  294. package/dist/services/search/StrategyFactory.js +100 -0
  295. package/dist/services/search/StrategyFactory.js.map +1 -0
  296. package/dist/services/search-strategies/BaseSearchStrategy.d.ts +5 -5
  297. package/dist/services/search-strategies/BaseSearchStrategy.d.ts.map +1 -1
  298. package/dist/services/search-strategies/BaseSearchStrategy.js.map +1 -1
  299. package/dist/services/search-strategies/CompanySearchStrategy.d.ts +4 -4
  300. package/dist/services/search-strategies/CompanySearchStrategy.d.ts.map +1 -1
  301. package/dist/services/search-strategies/CompanySearchStrategy.js +1 -1
  302. package/dist/services/search-strategies/CompanySearchStrategy.js.map +1 -1
  303. package/dist/services/search-strategies/DealSearchStrategy.d.ts +4 -4
  304. package/dist/services/search-strategies/DealSearchStrategy.d.ts.map +1 -1
  305. package/dist/services/search-strategies/DealSearchStrategy.js +1 -1
  306. package/dist/services/search-strategies/DealSearchStrategy.js.map +1 -1
  307. package/dist/services/search-strategies/ListSearchStrategy.d.ts +34 -7
  308. package/dist/services/search-strategies/ListSearchStrategy.d.ts.map +1 -1
  309. package/dist/services/search-strategies/ListSearchStrategy.js +65 -24
  310. package/dist/services/search-strategies/ListSearchStrategy.js.map +1 -1
  311. package/dist/services/search-strategies/NoteSearchStrategy.d.ts +4 -4
  312. package/dist/services/search-strategies/NoteSearchStrategy.d.ts.map +1 -1
  313. package/dist/services/search-strategies/NoteSearchStrategy.js +6 -7
  314. package/dist/services/search-strategies/NoteSearchStrategy.js.map +1 -1
  315. package/dist/services/search-strategies/PeopleSearchStrategy.d.ts +4 -4
  316. package/dist/services/search-strategies/PeopleSearchStrategy.d.ts.map +1 -1
  317. package/dist/services/search-strategies/PeopleSearchStrategy.js +1 -1
  318. package/dist/services/search-strategies/PeopleSearchStrategy.js.map +1 -1
  319. package/dist/services/search-strategies/TaskSearchStrategy.d.ts +4 -4
  320. package/dist/services/search-strategies/TaskSearchStrategy.d.ts.map +1 -1
  321. package/dist/services/search-strategies/TaskSearchStrategy.js +7 -8
  322. package/dist/services/search-strategies/TaskSearchStrategy.js.map +1 -1
  323. package/dist/services/search-strategies/interfaces.d.ts +7 -6
  324. package/dist/services/search-strategies/interfaces.d.ts.map +1 -1
  325. package/dist/services/search-utilities/SearchUtilities.d.ts +22 -7
  326. package/dist/services/search-utilities/SearchUtilities.d.ts.map +1 -1
  327. package/dist/services/search-utilities/SearchUtilities.js +52 -4
  328. package/dist/services/search-utilities/SearchUtilities.js.map +1 -1
  329. package/dist/services/skill-generator/OutputWriterService.d.ts +41 -0
  330. package/dist/services/skill-generator/OutputWriterService.d.ts.map +1 -0
  331. package/dist/services/skill-generator/OutputWriterService.js +100 -0
  332. package/dist/services/skill-generator/OutputWriterService.js.map +1 -0
  333. package/dist/services/skill-generator/SchemaFormatterService.d.ts +61 -0
  334. package/dist/services/skill-generator/SchemaFormatterService.d.ts.map +1 -0
  335. package/dist/services/skill-generator/SchemaFormatterService.js +168 -0
  336. package/dist/services/skill-generator/SchemaFormatterService.js.map +1 -0
  337. package/dist/services/skill-generator/WorkspaceSchemaService.d.ts +84 -0
  338. package/dist/services/skill-generator/WorkspaceSchemaService.d.ts.map +1 -0
  339. package/dist/services/skill-generator/WorkspaceSchemaService.js +292 -0
  340. package/dist/services/skill-generator/WorkspaceSchemaService.js.map +1 -0
  341. package/dist/services/skill-generator/index.d.ts +12 -0
  342. package/dist/services/skill-generator/index.d.ts.map +1 -0
  343. package/dist/services/skill-generator/index.js +11 -0
  344. package/dist/services/skill-generator/index.js.map +1 -0
  345. package/dist/services/skill-generator/types.d.ts +137 -0
  346. package/dist/services/skill-generator/types.d.ts.map +1 -0
  347. package/dist/services/skill-generator/types.js +10 -0
  348. package/dist/services/skill-generator/types.js.map +1 -0
  349. package/dist/services/update/FieldPersistenceHandler.d.ts +101 -0
  350. package/dist/services/update/FieldPersistenceHandler.d.ts.map +1 -0
  351. package/dist/services/update/FieldPersistenceHandler.js +207 -0
  352. package/dist/services/update/FieldPersistenceHandler.js.map +1 -0
  353. package/dist/services/update/FieldValidationHandler.d.ts +77 -0
  354. package/dist/services/update/FieldValidationHandler.d.ts.map +1 -0
  355. package/dist/services/update/FieldValidationHandler.js +157 -0
  356. package/dist/services/update/FieldValidationHandler.js.map +1 -0
  357. package/dist/services/update/MetadataResolver.d.ts +50 -0
  358. package/dist/services/update/MetadataResolver.d.ts.map +1 -0
  359. package/dist/services/update/MetadataResolver.js +110 -0
  360. package/dist/services/update/MetadataResolver.js.map +1 -0
  361. package/dist/services/update/ResponseNormalizer.d.ts +4 -4
  362. package/dist/services/update/ResponseNormalizer.d.ts.map +1 -1
  363. package/dist/services/update/ResponseNormalizer.js +18 -9
  364. package/dist/services/update/ResponseNormalizer.js.map +1 -1
  365. package/dist/services/update/UpdateOrchestrator.d.ts +37 -0
  366. package/dist/services/update/UpdateOrchestrator.d.ts.map +1 -0
  367. package/dist/services/update/UpdateOrchestrator.js +58 -0
  368. package/dist/services/update/UpdateOrchestrator.js.map +1 -0
  369. package/dist/services/update/UpdateValidation.d.ts +7 -3
  370. package/dist/services/update/UpdateValidation.d.ts.map +1 -1
  371. package/dist/services/update/UpdateValidation.js +56 -32
  372. package/dist/services/update/UpdateValidation.js.map +1 -1
  373. package/dist/services/update/strategies/BaseUpdateStrategy.d.ts +2 -2
  374. package/dist/services/update/strategies/BaseUpdateStrategy.d.ts.map +1 -1
  375. package/dist/services/update/strategies/ListUpdateStrategy.d.ts +3 -3
  376. package/dist/services/update/strategies/ListUpdateStrategy.d.ts.map +1 -1
  377. package/dist/services/update/strategies/ListUpdateStrategy.js +4 -14
  378. package/dist/services/update/strategies/ListUpdateStrategy.js.map +1 -1
  379. package/dist/services/value-transformer/index.d.ts +57 -0
  380. package/dist/services/value-transformer/index.d.ts.map +1 -0
  381. package/dist/services/value-transformer/index.js +326 -0
  382. package/dist/services/value-transformer/index.js.map +1 -0
  383. package/dist/services/value-transformer/multi-select-transformer.d.ts +63 -0
  384. package/dist/services/value-transformer/multi-select-transformer.d.ts.map +1 -0
  385. package/dist/services/value-transformer/multi-select-transformer.js +144 -0
  386. package/dist/services/value-transformer/multi-select-transformer.js.map +1 -0
  387. package/dist/services/value-transformer/record-reference-transformer.d.ts +43 -0
  388. package/dist/services/value-transformer/record-reference-transformer.d.ts.map +1 -0
  389. package/dist/services/value-transformer/record-reference-transformer.js +245 -0
  390. package/dist/services/value-transformer/record-reference-transformer.js.map +1 -0
  391. package/dist/services/value-transformer/select-transformer.d.ts +48 -0
  392. package/dist/services/value-transformer/select-transformer.d.ts.map +1 -0
  393. package/dist/services/value-transformer/select-transformer.js +232 -0
  394. package/dist/services/value-transformer/select-transformer.js.map +1 -0
  395. package/dist/services/value-transformer/status-transformer.d.ts +32 -0
  396. package/dist/services/value-transformer/status-transformer.d.ts.map +1 -0
  397. package/dist/services/value-transformer/status-transformer.js +329 -0
  398. package/dist/services/value-transformer/status-transformer.js.map +1 -0
  399. package/dist/services/value-transformer/types.d.ts +100 -0
  400. package/dist/services/value-transformer/types.d.ts.map +1 -0
  401. package/dist/services/value-transformer/types.js +6 -0
  402. package/dist/services/value-transformer/types.js.map +1 -0
  403. package/dist/templates/skill/SKILL.template.md +78 -0
  404. package/dist/templates/skill/attribute-reference.template.md +126 -0
  405. package/dist/templates/skill/complex-types.template.md +255 -0
  406. package/dist/types/attio.d.ts +55 -0
  407. package/dist/types/attio.d.ts.map +1 -1
  408. package/dist/types/attio.js +36 -0
  409. package/dist/types/attio.js.map +1 -1
  410. package/dist/utils/client-resolver.d.ts.map +1 -1
  411. package/dist/utils/client-resolver.js +8 -16
  412. package/dist/utils/client-resolver.js.map +1 -1
  413. package/dist/utils/complex-type-validation.d.ts +16 -0
  414. package/dist/utils/complex-type-validation.d.ts.map +1 -0
  415. package/dist/utils/complex-type-validation.js +196 -0
  416. package/dist/utils/complex-type-validation.js.map +1 -0
  417. package/dist/utils/error-response-utils.js +3 -3
  418. package/dist/utils/error-response-utils.js.map +1 -1
  419. package/dist/utils/error-utilities.d.ts.map +1 -1
  420. package/dist/utils/error-utilities.js +16 -9
  421. package/dist/utils/error-utilities.js.map +1 -1
  422. package/dist/utils/location-normalizer.d.ts +26 -0
  423. package/dist/utils/location-normalizer.d.ts.map +1 -0
  424. package/dist/utils/location-normalizer.js +39 -0
  425. package/dist/utils/location-normalizer.js.map +1 -0
  426. package/dist/utils/metadata-utils.d.ts +27 -0
  427. package/dist/utils/metadata-utils.d.ts.map +1 -0
  428. package/dist/utils/metadata-utils.js +59 -0
  429. package/dist/utils/metadata-utils.js.map +1 -0
  430. package/dist/utils/normalization/record-data-normalization.d.ts +47 -0
  431. package/dist/utils/normalization/record-data-normalization.d.ts.map +1 -0
  432. package/dist/utils/normalization/record-data-normalization.js +103 -0
  433. package/dist/utils/normalization/record-data-normalization.js.map +1 -0
  434. package/dist/utils/personal-name-parser.d.ts.map +1 -1
  435. package/dist/utils/personal-name-parser.js +26 -17
  436. package/dist/utils/personal-name-parser.js.map +1 -1
  437. package/dist/validators/company/field_detector.d.ts.map +1 -1
  438. package/dist/validators/company/field_detector.js +5 -0
  439. package/dist/validators/company/field_detector.js.map +1 -1
  440. package/package.json +35 -33
package/README.md CHANGED
@@ -4,7 +4,6 @@
4
4
  [![npm version](https://badge.fury.io/js/attio-mcp.svg)](https://badge.fury.io/js/attio-mcp)
5
5
  [![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)
6
6
  [![GitHub Release](https://img.shields.io/github/v/release/kesslerio/attio-mcp-server)](https://github.com/kesslerio/attio-mcp-server/releases)
7
- [![smithery badge](https://smithery.ai/badge/@kesslerio/attio-mcp-server)](https://smithery.ai/server/@kesslerio/attio-mcp-server)
8
7
  [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/kesslerio/attio-mcp-server)
9
8
 
10
9
  A comprehensive Model Context Protocol (MCP) server for [Attio](https://attio.com/), providing **complete CRM surface coverage**. This server enables AI assistants like Claude and ChatGPT to interact directly with your entire Attio workspace through natural language—manage Deals, Tasks, Lists, People, Companies, Records, and Notes without falling back to raw API calls.
@@ -17,14 +16,16 @@ Transform your CRM workflows with AI-powered automation. Instead of clicking thr
17
16
 
18
17
  > "Find all AI companies with 50+ employees that we haven't contacted in 30 days and add them to our Q1 outreach list"
19
18
 
20
- ## 🚀 **NEW: ChatGPT Developer Mode Integration**
19
+ ## 🚀 **ChatGPT Developer Mode Integration**
21
20
 
22
- **v1.0.0 introduces full ChatGPT compatibility!** ChatGPT Pro/Plus users can now access the entire Attio toolset through natural language via [Smithery marketplace](https://smithery.ai/server/@kesslerio/attio-mcp-server).
21
+ > **⚠️ Smithery Temporarily Unavailable**: Smithery has changed their deployment model to require external hosting. We're working on Cloudflare Worker hosting for ChatGPT users. In the meantime, use [Tier 4 (Cloudflare Worker)](#tier-4-cloudflare-worker-remote-deployment) for ChatGPT/remote access.
22
+
23
+ ChatGPT Pro/Plus users can access the Attio toolset through natural language using a self-hosted Cloudflare Worker:
23
24
 
24
25
  - **🔐 Built-in Approval Flows**: MCP safety annotations auto-approve read operations, request approval for writes
25
- - **🌐 OAuth Integration**: Seamless authentication via `https://server.smithery.ai/@kesslerio/attio-mcp-server/mcp`
26
+ - **🌐 OAuth Integration**: Self-hosted OAuth via Cloudflare Worker deployment
26
27
  - **💬 Natural Language CRM**: Manage your entire Attio workspace through conversational AI
27
- - **📖 Setup Guide**: See [ChatGPT Developer Mode docs](./docs/chatgpt-developer-mode.md) for complete configuration
28
+ - **📖 Setup Guide**: See [ChatGPT Developer Mode docs](./docs/chatgpt-developer-mode.md) and [Cloudflare Worker Guide](./examples/cloudflare-mcp-server/README.md)
28
29
 
29
30
  ## ✨ Core Features & Implementation Status
30
31
 
@@ -54,22 +55,28 @@ Transform your CRM workflows with AI-powered automation. Instead of clicking thr
54
55
 
55
56
  ### 📊 **Company Management**
56
57
 
57
- - **Universal Search**: Find companies with `search-records` and `advanced-search`
58
+ - **Universal Search**: Find companies with `search_records` and `search_records_advanced`
58
59
  - **Full CRUD**: Create, read, update, and delete with universal record operations
59
- - **Relationship Discovery**: Find companies through `search-by-relationship`
60
- - **Batch Operations**: Process hundreds of companies with `batch-operations`
61
- - **Detailed Information**: Get contact, business, and social info with `get-detailed-info`
60
+ - **Relationship Discovery**: Find companies through `search_records_by_relationship`
61
+ - **Batch Operations**: Process hundreds of companies with `batch_records`
62
+ - **Detailed Information**: Get contact, business, and social info with `get_record_info`
62
63
 
63
64
  ### 👥 **People Management**
64
65
 
65
66
  - **Universal Contact Search**: Find people by any criteria using universal search tools
66
- - **Relationship Tracking**: Link people to companies with `search-by-relationship`
67
- - **Activity Timeline**: Track interactions with `search-by-content` and `search-by-timeframe`
67
+ - **Relationship Tracking**: Link people to companies with `search_records_by_relationship`
68
+ - **Activity Timeline**: Track interactions with `search_records_by_content` and `search_records_by_timeframe`
68
69
  - **Advanced Filtering**: Multi-attribute search with universal filtering
69
70
  - **Bulk Operations**: Efficiently manage contacts with universal batch operations
70
71
 
71
- ### 📋 **Lists & Pipeline Management** (11 Tools)
72
+ ### 📋 **Lists & Pipeline Management** (4 Tools + 8 Deprecated)
72
73
 
74
+ - **Active Tools**: 4 consolidated tools with auto-mode detection ([Migration Guide](./docs/migration/v2-list-tools.md))
75
+ - `filter-list-entries` - Unified filtering with 4 modes
76
+ - `manage-list-entry` - Unified entry management with 3 modes
77
+ - `get-list-entries` - Retrieve list entries
78
+ - `get-record-list-memberships` - Find record's list memberships
79
+ - **Deprecated (v2.0.0 removal)**: 8 legacy tools replaced by consolidated versions
73
80
  - **Pipeline Operations**: Move deals through sales stages
74
81
  - **Smart Segmentation**: Create and manage targeted contact lists
75
82
  - **Advanced Filtering**: Complex multi-condition filtering with AND/OR logic
@@ -91,6 +98,25 @@ Transform your CRM workflows with AI-powered automation. Instead of clicking thr
91
98
  - **Data Export**: JSON serialization for integrations
92
99
  - **Real-time Updates**: Live data synchronization with Attio
93
100
 
101
+ ### 🧠 **Claude Skills**
102
+
103
+ Supercharge Claude's Attio knowledge with pre-built skills that prevent common errors and teach best practices.
104
+
105
+ | Skill | Purpose | Setup |
106
+ | -------------------------- | ---------------------------------------------- | ----------------------------------------------- |
107
+ | **attio-mcp-usage** | Error prevention + universal workflow patterns | Bundled - just use it |
108
+ | **attio-workspace-schema** | YOUR workspace's exact field names and options | `npx attio-discover generate-skill --all --zip` |
109
+ | **attio-skill-generator** | Create custom workflow skills (advanced) | Python + prompting |
110
+
111
+ **Quick Start** (solves "wrong field name" errors):
112
+
113
+ ```bash
114
+ npx attio-discover generate-skill --all --zip
115
+ # Import ZIP into Claude Desktop: Settings > Skills > Install Skill
116
+ ```
117
+
118
+ See [Skills Documentation](./docs/usage/skills/README.md) for complete setup and usage guides.
119
+
94
120
  ### 💬 **Pre-Built Prompts** (10 Prompts)
95
121
 
96
122
  Intelligent shortcuts that help Claude work faster with your CRM data:
@@ -177,7 +203,7 @@ For complete prompt documentation, see [docs/prompts/v1-catalog.md](./docs/promp
177
203
  ### 🤝 **OpenAI MCP Compatibility**
178
204
 
179
205
  - **Developer Mode Ready**: Every tool now publishes MCP safety annotations (`readOnlyHint`, `destructiveHint`) so OpenAI Developer Mode can auto-approve reads and request confirmation for writes.
180
- - **Full Tool Access (Default)**: All 33 universal tools are exposed by default. Do NOT set `ATTIO_MCP_TOOL_MODE` in Smithery configuration for full access.
206
+ - **Full Tool Access (Default)**: All 35 tools are exposed by default (21 universal + 11 list + 3 workspace member). Do NOT set `ATTIO_MCP_TOOL_MODE` in Smithery configuration for full access.
181
207
  - **Search-Only Mode**: To restrict to read-only tools (`search`, `fetch`, `aaa-health-check`), explicitly configure `ATTIO_MCP_TOOL_MODE: 'search'` in Smithery dashboard when Developer Mode is unavailable.
182
208
  - **Detailed Guide**: See [docs/chatgpt-developer-mode.md](./docs/chatgpt-developer-mode.md) for environment variables, approval flows, and validation tips.
183
209
  - **User Documentation**: See the [ChatGPT Developer Mode docs](./docs/chatgpt-developer-mode.md) for a complete walkthrough of approval flows and setup instructions.
@@ -190,189 +216,9 @@ For complete prompt documentation, see [docs/prompts/v1-catalog.md](./docs/promp
190
216
 
191
217
  For detailed troubleshooting and solutions, see [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) and [GitHub Issues](https://github.com/kesslerio/attio-mcp-server/issues).
192
218
 
193
- ## 🎯 **Mastering Advanced Search Filters**
194
-
195
- **The Power Behind Precise CRM Queries** - Stop wrestling with complex data searches. Our advanced filtering system lets you find exactly what you need with surgical precision.
196
-
197
- > _"Find all AI companies with 50+ employees that we haven't contacted in 30 days and add them to our Q1 outreach list"_ - This kind of complex query is exactly what advanced search filters excel at.
198
-
199
- ### 🏗️ **Filter Architecture**
200
-
201
- Every advanced search follows this proven pattern that's been battle-tested across thousands of CRM queries:
202
-
203
- ```json
204
- {
205
- "resource_type": "companies",
206
- "filters": {
207
- "filters": [
208
- {
209
- "attribute": { "slug": "field_name" },
210
- "condition": "operator",
211
- "value": "search_value"
212
- }
213
- ]
214
- }
215
- }
216
- ```
217
-
218
- ### ⚡ **Real-World Examples**
219
-
220
- **🔍 Single Criteria Search**
221
-
222
- ```json
223
- {
224
- "resource_type": "companies",
225
- "filters": {
226
- "filters": [
227
- {
228
- "attribute": { "slug": "name" },
229
- "condition": "contains",
230
- "value": "Tech"
231
- }
232
- ]
233
- }
234
- }
235
- ```
236
-
237
- **🎯 Multi-Criteria Power Search (AND Logic)**
238
-
239
- ```json
240
- {
241
- "resource_type": "companies",
242
- "filters": {
243
- "filters": [
244
- {
245
- "attribute": { "slug": "name" },
246
- "condition": "contains",
247
- "value": "Tech"
248
- },
249
- {
250
- "attribute": { "slug": "employee_count" },
251
- "condition": "greater_than",
252
- "value": 50
253
- },
254
- {
255
- "attribute": { "slug": "industry" },
256
- "condition": "equals",
257
- "value": "AI/Machine Learning"
258
- }
259
- ]
260
- }
261
- }
262
- ```
263
-
264
- **🚀 Flexible OR Logic**
265
-
266
- ```json
267
- {
268
- "resource_type": "companies",
269
- "filters": {
270
- "filters": [
271
- {
272
- "attribute": { "slug": "name" },
273
- "condition": "contains",
274
- "value": "Tech"
275
- },
276
- {
277
- "attribute": { "slug": "name" },
278
- "condition": "contains",
279
- "value": "AI"
280
- }
281
- ],
282
- "matchAny": true
283
- }
284
- }
285
- ```
286
-
287
- ### 🧠 **Smart Filter Operators**
288
-
289
- | Operator | Perfect For | Example Use Case |
290
- | -------------- | ------------------- | ------------------------------------- |
291
- | `contains` | Text searches | Finding companies with "Tech" in name |
292
- | `equals` | Exact matches | Specific industry classification |
293
- | `starts_with` | Prefix searches | Companies beginning with "Acme" |
294
- | `ends_with` | Suffix searches | Companies ending with "Inc" |
295
- | `greater_than` | Numerical analysis | Companies with 100+ employees |
296
- | `less_than` | Size filtering | Startups under 50 people |
297
- | `is_empty` | Data cleanup | Find records missing key information |
298
- | `is_not_empty` | Completeness checks | Records with populated fields |
299
-
300
- ### 💡 **Pro Tips for Different Teams**
219
+ ## 🎯 **Advanced Search Filters**
301
220
 
302
- **🎯 Sales Teams** - Use these field combinations:
303
-
304
- - **Companies**: `name`, `industry`, `employee_count`, `website`, `location`
305
- - **People**: `full_name`, `job_title`, `email`, `company`
306
-
307
- **📈 Marketing Teams** - Focus on engagement fields:
308
-
309
- - **Activity tracking**: `last_interaction`, `email_status`, `campaign_response`
310
- - **Segmentation**: `industry`, `company_size`, `location`, `engagement_score`
311
-
312
- **✅ Customer Success** - Monitor health metrics:
313
-
314
- - **Account health**: `renewal_date`, `support_tickets`, `usage_metrics`
315
- - **Risk indicators**: `last_contact`, `satisfaction_score`, `contract_value`
316
-
317
- ### 🚨 **Avoid These Common Mistakes**
318
-
319
- ❌ **Wrong** (Flat object structure):
320
-
321
- ```json
322
- {
323
- "filters": {
324
- "name": { "operator": "contains", "value": "Test" }
325
- }
326
- }
327
- ```
328
-
329
- ✅ **Correct** (Nested array structure):
330
-
331
- ```json
332
- {
333
- "filters": {
334
- "filters": [
335
- {
336
- "attribute": { "slug": "name" },
337
- "condition": "contains",
338
- "value": "Test"
339
- }
340
- ]
341
- }
342
- }
343
- ```
344
-
345
- ### 🔧 **Quick Troubleshooting**
346
-
347
- **Getting "Filters must include a 'filters' array property"?**
348
-
349
- 1. ✅ Ensure your filters object contains a `filters` array
350
- 2. ✅ Each array item needs `attribute`, `condition`, and `value`
351
- 3. ✅ The `attribute` must be an object with a `slug` property
352
- 4. ✅ Double-check your JSON structure matches the examples above
353
-
354
- **💬 Pro Tip**: Start with simple single-filter searches, then build complexity once you're comfortable with the structure.
355
-
356
- ## 🏆 Latest Updates - Critical Issues Resolved
357
-
358
- ✅ **100% Integration Test Pass Rate Achieved** - All critical API contract violations and build issues have been resolved:
359
-
360
- ### Recently Fixed Issues (August 2025)
361
-
362
- - **P0 Critical API Failures**: Fixed response data structure handling for robust fallback patterns
363
- - **Build Compilation Errors**: Created missing enhanced-validation module and resolved TypeScript compilation
364
- - **E2E Test Implementation**: Fixed JSON truncation, resource mappings, and email validation consistency
365
- - **Field Parameter Filtering**: Resolved tasks attribute handling with special case for missing `/objects/tasks/attributes` endpoint
366
- - **Email Validation Consistency**: Fixed batch validation and create/update operation alignment
367
- - **Pagination System**: Documented tasks pagination limitation with in-memory handling workaround
368
-
369
- ### Test Status
370
-
371
- - **Integration Tests**: 15/15 passing (100% pass rate)
372
- - **Build Status**: All TypeScript compilation successful
373
- - **API Contract**: All violations resolved with robust error handling
374
-
375
- See [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for detailed solutions to these resolved issues.
221
+ Build powerful CRM queries with multi-criteria AND/OR filtering. See the [Advanced Search Guide](./docs/usage/advanced-search.md) for complete examples and operator reference.
376
222
 
377
223
  ## 🚀 Installation
378
224
 
@@ -384,61 +230,23 @@ See [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for detailed solutions to these r
384
230
 
385
231
  ### Client Compatibility
386
232
 
387
- | Client | Smithery (Tier 1) | Local Install (Tier 2-3) | Cloudflare Worker (Tier 4) |
388
- | ------------------ | ----------------- | ------------------------ | -------------------------- |
389
- | Claude Desktop | ✅ Recommended | ✅ Full support | ✅ Full support |
390
- | Claude Web | ✅ Recommended | N/A | ✅ Full support |
391
- | ChatGPT (Pro/Plus) | ✅ Required | N/A | ✅ Full support |
392
- | Cursor IDE | ✅ Supported | ✅ Full support | ✅ Full support |
393
- | Claude Code (CLI) | Partial | ✅ Recommended | Partial |
233
+ | Client | Local Install (Tier 1-2) | Cloudflare Worker (Tier 3) |
234
+ | ------------------ | ------------------------ | -------------------------- |
235
+ | Claude Desktop | ✅ Recommended | ✅ Full support |
236
+ | Claude Web | N/A | ✅ Full support |
237
+ | ChatGPT (Pro/Plus) | N/A | ✅ Recommended |
238
+ | Cursor IDE | ✅ Full support | ✅ Full support |
239
+ | Claude Code (CLI) | ✅ Recommended | Partial |
394
240
 
395
241
  **Choose your installation method:**
396
242
 
397
- - **Most users**: Use [Tier 1 (Smithery)](#tier-1-smithery-one-click---recommended) - zero local config required
398
- - **Local control**: Use [Tier 2 (Shell Installers)](#tier-2-shell-installers) - one command, automatic setup
399
- - **Power users**: Use [Tier 3 (Manual)](#tier-3-manual-configuration) - full control over configuration
400
- - **Teams/Enterprise**: Use [Tier 4 (Cloudflare Worker)](#tier-4-cloudflare-worker-remote-deployment) - self-hosted, multi-user OAuth
243
+ - **Most users**: Use [Tier 1 (Shell Installers)](#tier-1-shell-installers) - one command, automatic setup
244
+ - **Power users**: Use [Tier 2 (Manual)](#tier-2-manual-configuration) - full control over configuration
245
+ - **ChatGPT/Teams/Enterprise**: Use [Tier 3 (Cloudflare Worker)](#tier-3-cloudflare-worker-remote-deployment) - self-hosted, multi-user OAuth
401
246
 
402
247
  ---
403
248
 
404
- ### Tier 1: Smithery (One-Click) - Recommended
405
-
406
- > **Best for**: Claude Desktop, Claude Web, ChatGPT, Cursor - zero local installation required.
407
-
408
- [Smithery](https://smithery.ai/server/@kesslerio/attio-mcp-server) handles OAuth, hosting, and configuration automatically.
409
-
410
- #### Claude Desktop via Smithery
411
-
412
- ```bash
413
- npx -y @smithery/cli install @kesslerio/attio-mcp-server --client claude
414
- ```
415
-
416
- #### Cursor IDE via Smithery
417
-
418
- ```bash
419
- npx -y @smithery/cli install @kesslerio/attio-mcp-server --client cursor
420
- ```
421
-
422
- #### ChatGPT Developer Mode
423
-
424
- ChatGPT requires Smithery for OAuth authentication. Direct server URLs are not supported.
425
-
426
- 1. Enable Developer Mode: **Settings → Connectors → Advanced → Developer Mode**
427
- 2. Add MCP Server URL: `https://server.smithery.ai/@kesslerio/attio-mcp-server/mcp`
428
- 3. Complete OAuth authorization when prompted
429
-
430
- See [ChatGPT Developer Mode Guide](./docs/chatgpt-developer-mode.md) for detailed setup instructions.
431
-
432
- #### Claude Web
433
-
434
- 1. Go to [Claude.ai](https://claude.ai) Settings → Connectors
435
- 2. Add new MCP connector
436
- 3. Select "Attio CRM" from Smithery marketplace
437
- 4. Authorize with your Attio account
438
-
439
- ---
440
-
441
- ### Tier 2: Shell Installers
249
+ ### Tier 1: Shell Installers
442
250
 
443
251
  > **Best for**: Developers who prefer local installations with automatic configuration.
444
252
 
@@ -472,7 +280,7 @@ These scripts will:
472
280
 
473
281
  ---
474
282
 
475
- ### Tier 3: Manual Configuration
283
+ ### Tier 2: Manual Configuration
476
284
 
477
285
  > **Best for**: Power users who prefer full control or use unsupported clients.
478
286
 
@@ -603,7 +411,7 @@ npm install attio-mcp
603
411
 
604
412
  ---
605
413
 
606
- ### Tier 4: Cloudflare Worker (Remote Deployment)
414
+ ### Tier 3: Cloudflare Worker (Remote Deployment)
607
415
 
608
416
  > **Best for**: Teams needing centralized OAuth, multi-user access, mobile access, or running MCP without local installation.
609
417
 
@@ -615,18 +423,18 @@ Deploy your own Attio MCP server on Cloudflare Workers with full OAuth 2.1 suppo
615
423
  - Claude mobile app (iOS/Android)
616
424
  - Any browser on any device
617
425
 
618
- #### Smithery vs. Cloudflare Worker
426
+ #### Cloudflare Worker Features
619
427
 
620
- | Feature | Smithery | Cloudflare Worker |
621
- | ----------------- | --------- | ----------------- |
622
- | Setup complexity | Very Low | Medium |
623
- | OAuth built-in | ✅ | ✅ |
624
- | Mobile app access | ✅ | ✅ |
625
- | Multi-user access | ❌ | ✅ |
626
- | Custom domain | ❌ | ✅ |
627
- | Self-hosted | ❌ | ✅ |
628
- | Team deployments | Limited | ✅ Full |
629
- | Cost | Free tier | Free tier |
428
+ | Feature | Cloudflare Worker |
429
+ | ----------------- | ----------------- |
430
+ | Setup complexity | Medium |
431
+ | OAuth built-in | ✅ |
432
+ | Mobile app access | ✅ |
433
+ | Multi-user access | ✅ |
434
+ | Custom domain | ✅ |
435
+ | Self-hosted | ✅ |
436
+ | Team deployments | ✅ Full |
437
+ | Cost | Free tier |
630
438
 
631
439
  #### Quick Deploy
632
440
 
@@ -655,6 +463,80 @@ See [Cloudflare Worker Deployment Guide](./examples/cloudflare-mcp-server/README
655
463
  - Production deployment checklist
656
464
  - Troubleshooting guide
657
465
 
466
+ ---
467
+
468
+ ## 🆕 What's New in v1.4.0
469
+
470
+ ### Major Features
471
+
472
+ - **🎯 Workspace Schema Skill Generator** (#983) - Auto-generate Claude Skills from your Attio workspace schema for error-free field names and options
473
+ - **🔍 Select-field Transformer** (#1019) - Case-insensitive matching, partial matching, and UUID pass-through for select/status fields
474
+ - **🛠️ Attio Skill Generator Meta-skill** (#1020) - Meta-skill for automatic workspace documentation
475
+ - **📚 Universal Usage Guide Skill** (#1018) - Hand-crafted workflow patterns and error prevention
476
+ - **⚙️ `get_record_attribute_options` tool** (#975) - Get valid options for select/status fields with enhanced error messages
477
+ - **📞 Phone validation** (#951) - Built-in phone number validation support
478
+ - **⏱️ Configurable option fetch delay** - Rate limiting control via `--option-fetch-delay` flag
479
+
480
+ ### Major Enhancements
481
+
482
+ - **🏷️ MCP-compliant tool naming** (#1039) - All tools now use `snake_case`, verb-first naming (old names work via aliases until v2.0.0)
483
+ - **🎨 Custom object display names** (#1017) - Fetch display names directly from Attio API
484
+ - **📖 Split integration patterns** (#1023) - Progressive discovery patterns by use case
485
+ - **💡 Enhanced attribute error messages** (#975) - Levenshtein distance suggestions for typos
486
+
487
+ ### Critical Fixes
488
+
489
+ - 📝 Note content line breaks preserved (#1052)
490
+ - 👤 People search "Unnamed" display fixed (#1051)
491
+ - ✅ Select field persistence (#1045)
492
+ - 🔗 Record-reference auto-transformation (#997)
493
+ - 📊 Multi-select array auto-transformation (#992)
494
+ - 🛡️ Complex attribute validation (#991)
495
+ - ⚠️ Field persistence false warnings (#995)
496
+ - 📦 SDK dependency pinning (#1025)
497
+ - 💼 Deal stage/UTM validation (#1043)
498
+ - 📍 Location field auto-normalization (#987)
499
+
500
+ ### Internal Improvements
501
+
502
+ - Tool alias system refactoring (#1041) - Type-safe constants with pattern-based generation
503
+ - Strategy Pattern for CRUD error handlers (#1001)
504
+ - Consolidated metadata fetching (#984)
505
+ - UniversalUpdateService modularization (#984)
506
+ - Select transformation type rename (#1055) - `select_title_to_array` for clarity
507
+
508
+ ## 🔄 Migration Guide
509
+
510
+ **Upgrading from v1.3.x or earlier?** Tool names have changed to follow MCP naming conventions.
511
+
512
+ **Old names still work** via backward-compatible aliases, but will be removed in **v2.0.0 (Q1 2026)**.
513
+
514
+ ### Tool Name Changes
515
+
516
+ | Old Name (Deprecated) | New Name (MCP-compliant) | Notes |
517
+ | -------------------------------- | -------------------------------- | ------------------ |
518
+ | `records_search` | `search_records` | Verb-first pattern |
519
+ | `records_get_details` | `get_record_details` | Verb-first pattern |
520
+ | `records_get_attributes` | `get_record_attributes` | Verb-first pattern |
521
+ | `records_discover_attributes` | `discover_record_attributes` | Verb-first pattern |
522
+ | `records_search_advanced` | `search_records_advanced` | Verb-first pattern |
523
+ | `records_search_by_relationship` | `search_records_by_relationship` | Verb-first pattern |
524
+ | `records_search_by_content` | `search_records_by_content` | Verb-first pattern |
525
+ | `records_search_by_timeframe` | `search_records_by_timeframe` | Verb-first pattern |
526
+ | `records_batch` | `batch_records` | Verb-first pattern |
527
+ | `search-records` | `search_records` | snake_case format |
528
+ | `get-record-details` | `get_record_details` | snake_case format |
529
+ | `create-record` | `create_record` | snake_case format |
530
+ | `update-record` | `update_record` | snake_case format |
531
+ | `delete-record` | `delete_record` | snake_case format |
532
+ | `create-note` | `create_note` | snake_case format |
533
+ | `list-notes` | `list_notes` | snake_case format |
534
+ | `smithery-debug-config` | `smithery_debug_config` | snake_case format |
535
+
536
+ **Action Required:** Update your integrations to use new tool names before Q1 2026. See [MIGRATION-GUIDE.md](docs/MIGRATION-GUIDE.md) for the complete migration table.
537
+
538
+ ---
539
+
658
540
  ## ⚡ Quick Start
659
541
 
660
542
  ### Prerequisites
@@ -921,87 +803,14 @@ See [docs/deployment/smithery-cli-setup.md](./docs/deployment/smithery-cli-setup
921
803
 
922
804
  ### **Testing**
923
805
 
924
- The project includes comprehensive testing at multiple levels with **100% E2E test pass rate**:
925
-
926
- #### **🚀 E2E Test Framework (100% Pass Rate)**
927
-
928
- Our comprehensive E2E test framework validates all universal tools with real Attio API integration:
929
-
930
806
  ```bash
931
- # E2E Tests (requires ATTIO_API_KEY in .env file)
932
- npm run e2e # Run complete E2E test suite (51 tests, 100% pass rate)
933
- npm test -- test/e2e/suites/universal-tools.e2e.test.ts # Universal tools E2E tests
934
-
935
- # Set up E2E environment
936
- echo "ATTIO_API_KEY=your_api_key_here" > .env
937
- npm run e2e # Should show 51/51 tests passing
938
- ```
939
-
940
- **✅ Comprehensive Coverage:**
941
-
942
- - **Pagination Testing**: Validates `offset` parameter across all universal tools
943
- - **Field Filtering**: Tests `fields` parameter for selective data retrieval
944
- - **Tasks Integration**: Complete lifecycle testing for tasks resource type
945
- - **Cross-Resource Validation**: Ensures consistent behavior across companies, people, lists, tasks
946
- - **Error Handling**: Validates graceful error responses and edge cases
947
- - **Performance Monitoring**: Tracks execution times and API response sizes
948
-
949
- **🛠️ Enhanced Assertions (7 New Methods):**
950
-
951
- ```typescript
952
- // Available in test/e2e/utils/assertions.ts
953
- expectValidPagination(result, params); // Validates pagination behavior
954
- expectFieldFiltering(result, fields); // Validates field selection
955
- expectValidTasksIntegration(result); // Tasks-specific validation
956
- expectSpecificError(result, errorType); // Typed error validation
957
- expectOptimalPerformance(result, budget); // Performance validation
958
- expectValidUniversalToolParams(params); // Parameter validation
959
- expectValidBatchOperation(result, records); // Batch operation validation
960
- ```
961
-
962
- **📊 Performance Benchmarks:**
963
-
964
- - **Search Operations**: < 1000ms per API call
965
- - **CRUD Operations**: < 1500ms per operation
966
- - **Batch Operations**: < 3000ms for 10 records
967
- - **Field Filtering**: < 500ms additional overhead
968
- - **Pagination**: < 200ms additional per offset
969
-
970
- #### **Unit & Integration Tests**
971
-
972
- ```bash
973
- # Unit Tests (no API required)
974
807
  npm test # Run all tests
975
- npm run test:offline # Run only offline tests (206 tests)
976
- npm run test:watch # Watch mode for development
977
-
978
- # Integration Tests (requires API key and test data)
979
- npm run test:integration # Run all integration tests (15 tests, 100% pass rate)
980
- npm run setup:test-data # Create test data in your workspace
981
- ```
982
-
983
- #### **Test Environment Setup**
984
-
985
- For E2E and integration tests, you need:
986
-
987
- 1. **Create `.env` file** in project root:
988
-
989
- ```bash
990
- # Required for E2E/Integration tests
991
- ATTIO_API_KEY=your_64_character_api_key_here
992
- PORT=3000
993
- LOG_LEVEL=debug
994
- NODE_ENV=development
995
- ```
996
-
997
- 2. **Verify API key** format (must be exactly 64 characters)
998
- 3. **Run tests** to validate setup:
999
-
1000
- ```bash
1001
- npm run build && npm run test:integration
808
+ npm run test:offline # Run only offline tests (no API required)
809
+ npm run test:integration # Integration tests (requires ATTIO_API_KEY)
810
+ npm run e2e # E2E tests (requires ATTIO_API_KEY)
1002
811
  ```
1003
812
 
1004
- See the [Testing Guide](./docs/testing.md) and [E2E Troubleshooting Guide](./docs/testing/e2e-troubleshooting.md) for detailed setup instructions.
813
+ For E2E/integration tests, create `.env` with your `ATTIO_API_KEY`. See the [Testing Guide](./docs/testing.md) for detailed setup.
1005
814
 
1006
815
  ### **Available Scripts**
1007
816
 
@@ -48,19 +48,29 @@ export declare function createLegacyAttioClient(apiKey: string): AxiosInstance;
48
48
  */
49
49
  export declare function getAttributeSchema(objectSlug: string, attributeSlug: string): Promise<AttioAttributeSchema>;
50
50
  /**
51
- * Lists the available options for a select attribute.
51
+ * Lists the available options for a select attribute on an object.
52
52
  * @param objectSlug - The slug of the object.
53
53
  * @param attributeSlug - The slug of the select attribute.
54
+ * @param showArchived - Whether to include archived options.
54
55
  * @returns A list of available select options.
55
56
  */
56
- export declare function getSelectOptions(objectSlug: string, attributeSlug: string): Promise<AttioSelectOption[]>;
57
+ export declare function getSelectOptions(objectSlug: string, attributeSlug: string, showArchived?: boolean): Promise<AttioSelectOption[]>;
58
+ /**
59
+ * Lists the available options for a select attribute on a list.
60
+ * @param listId - The ID or slug of the list.
61
+ * @param attributeSlug - The slug of the select attribute.
62
+ * @param showArchived - Whether to include archived options.
63
+ * @returns A list of available select options.
64
+ */
65
+ export declare function getListSelectOptions(listId: string, attributeSlug: string, showArchived?: boolean): Promise<AttioSelectOption[]>;
57
66
  /**
58
67
  * Lists the available statuses for a status attribute.
59
68
  * @param objectSlug - The slug of the object.
60
69
  * @param attributeSlug - The slug of the status attribute.
70
+ * @param showArchived - Whether to include archived statuses.
61
71
  * @returns A list of available statuses.
62
72
  */
63
- export declare function getStatusOptions(objectSlug: string, attributeSlug: string): Promise<AttioStatusOption[]>;
73
+ export declare function getStatusOptions(objectSlug: string, attributeSlug: string, showArchived?: boolean): Promise<AttioStatusOption[]>;
64
74
  /**
65
75
  * Initializes the global API client with the provided API key
66
76
  *
@@ -1 +1 @@
1
- {"version":3,"file":"attio-client.d.ts","sourceRoot":"","sources":["../../src/api/attio-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAa5B,eAAO,MAAM,eAAe,iBAAc,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAmCxC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;AACxE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;AAqEjE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,WAAW,CAqBd;AAID;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA0DrE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAe9B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAe9B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAInE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAoEzE"}
1
+ {"version":3,"file":"attio-client.d.ts","sourceRoot":"","sources":["../../src/api/attio-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAa5B,eAAO,MAAM,eAAe,iBAAc,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAmCxC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;AACxE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;AAqEjE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,WAAW,CAqBd;AAID;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA0DrE;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,CAAC,CAe/B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkB9B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkB9B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkB9B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAInE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAoEzE"}