theleadrouter-mcp 0.1.0 → 0.3.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 (455) hide show
  1. package/.claude/skills/admin-guide/SKILL.md +42 -0
  2. package/.claude/skills/buyer-guide/SKILL.md +40 -0
  3. package/.claude/skills/partner-guide/SKILL.md +72 -1
  4. package/.claude/skills/welcome/SKILL.md +10 -7
  5. package/CLAUDE.md +5 -5
  6. package/README.md +136 -4
  7. package/dist/index.d.ts +23 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +122 -6
  10. package/dist/index.js.map +1 -1
  11. package/dist/sensitive-tools.d.ts +9 -0
  12. package/dist/sensitive-tools.d.ts.map +1 -0
  13. package/dist/sensitive-tools.js +58 -0
  14. package/dist/sensitive-tools.js.map +1 -0
  15. package/dist/tools/composite.js +2 -2
  16. package/dist/tools/composite.js.map +1 -1
  17. package/dist/tools/generated/agent-connect.gen.d.ts +3 -0
  18. package/dist/tools/generated/agent-connect.gen.d.ts.map +1 -0
  19. package/dist/tools/generated/agent-connect.gen.js +410 -0
  20. package/dist/tools/generated/agent-connect.gen.js.map +1 -0
  21. package/dist/tools/generated/ai-dialer.gen.d.ts +3 -0
  22. package/dist/tools/generated/ai-dialer.gen.d.ts.map +1 -0
  23. package/dist/tools/generated/ai-dialer.gen.js +410 -0
  24. package/dist/tools/generated/ai-dialer.gen.js.map +1 -0
  25. package/dist/tools/generated/alerts.gen.d.ts +3 -0
  26. package/dist/tools/generated/alerts.gen.d.ts.map +1 -0
  27. package/dist/tools/generated/alerts.gen.js +87 -0
  28. package/dist/tools/generated/alerts.gen.js.map +1 -0
  29. package/dist/tools/generated/api-keys.gen.js +3 -3
  30. package/dist/tools/generated/api-keys.gen.js.map +1 -1
  31. package/dist/tools/generated/approvals.gen.d.ts +3 -0
  32. package/dist/tools/generated/approvals.gen.d.ts.map +1 -0
  33. package/dist/tools/generated/approvals.gen.js +66 -0
  34. package/dist/tools/generated/approvals.gen.js.map +1 -0
  35. package/dist/tools/generated/audit-logs.gen.d.ts.map +1 -1
  36. package/dist/tools/generated/audit-logs.gen.js +51 -16
  37. package/dist/tools/generated/audit-logs.gen.js.map +1 -1
  38. package/dist/tools/generated/auth.gen.d.ts.map +1 -1
  39. package/dist/tools/generated/auth.gen.js +244 -44
  40. package/dist/tools/generated/auth.gen.js.map +1 -1
  41. package/dist/tools/generated/bid-signals.gen.d.ts +3 -0
  42. package/dist/tools/generated/bid-signals.gen.d.ts.map +1 -0
  43. package/dist/tools/generated/bid-signals.gen.js +24 -0
  44. package/dist/tools/generated/bid-signals.gen.js.map +1 -0
  45. package/dist/tools/generated/billing.gen.d.ts +3 -0
  46. package/dist/tools/generated/billing.gen.d.ts.map +1 -0
  47. package/dist/tools/generated/billing.gen.js +168 -0
  48. package/dist/tools/generated/billing.gen.js.map +1 -0
  49. package/dist/tools/generated/blocked-lists.gen.d.ts.map +1 -1
  50. package/dist/tools/generated/blocked-lists.gen.js +24 -20
  51. package/dist/tools/generated/blocked-lists.gen.js.map +1 -1
  52. package/dist/tools/generated/buyer-skus.gen.d.ts +3 -0
  53. package/dist/tools/generated/buyer-skus.gen.d.ts.map +1 -0
  54. package/dist/tools/generated/buyer-skus.gen.js +323 -0
  55. package/dist/tools/generated/buyer-skus.gen.js.map +1 -0
  56. package/dist/tools/generated/buyers.gen.d.ts.map +1 -1
  57. package/dist/tools/generated/buyers.gen.js +217 -22
  58. package/dist/tools/generated/buyers.gen.js.map +1 -1
  59. package/dist/tools/generated/call-billing-rules.gen.d.ts +3 -0
  60. package/dist/tools/generated/call-billing-rules.gen.d.ts.map +1 -0
  61. package/dist/tools/generated/call-billing-rules.gen.js +143 -0
  62. package/dist/tools/generated/call-billing-rules.gen.js.map +1 -0
  63. package/dist/tools/generated/calls.gen.d.ts.map +1 -1
  64. package/dist/tools/generated/calls.gen.js +581 -39
  65. package/dist/tools/generated/calls.gen.js.map +1 -1
  66. package/dist/tools/generated/campaigns.gen.d.ts.map +1 -1
  67. package/dist/tools/generated/campaigns.gen.js +664 -100
  68. package/dist/tools/generated/campaigns.gen.js.map +1 -1
  69. package/dist/tools/generated/catalog.json +16462 -3462
  70. package/dist/tools/generated/compliance.gen.d.ts.map +1 -1
  71. package/dist/tools/generated/compliance.gen.js +116 -23
  72. package/dist/tools/generated/compliance.gen.js.map +1 -1
  73. package/dist/tools/generated/consent-certificates.gen.d.ts +3 -0
  74. package/dist/tools/generated/consent-certificates.gen.d.ts.map +1 -0
  75. package/dist/tools/generated/consent-certificates.gen.js +135 -0
  76. package/dist/tools/generated/consent-certificates.gen.js.map +1 -0
  77. package/dist/tools/generated/consent.gen.d.ts.map +1 -1
  78. package/dist/tools/generated/consent.gen.js +15 -13
  79. package/dist/tools/generated/consent.gen.js.map +1 -1
  80. package/dist/tools/generated/contacts.gen.d.ts.map +1 -1
  81. package/dist/tools/generated/contacts.gen.js +114 -19
  82. package/dist/tools/generated/contacts.gen.js.map +1 -1
  83. package/dist/tools/generated/contracts.gen.d.ts.map +1 -1
  84. package/dist/tools/generated/contracts.gen.js +575 -159
  85. package/dist/tools/generated/contracts.gen.js.map +1 -1
  86. package/dist/tools/generated/coupons.gen.d.ts +3 -0
  87. package/dist/tools/generated/coupons.gen.d.ts.map +1 -0
  88. package/dist/tools/generated/coupons.gen.js +139 -0
  89. package/dist/tools/generated/coupons.gen.js.map +1 -0
  90. package/dist/tools/generated/credits.gen.d.ts +3 -0
  91. package/dist/tools/generated/credits.gen.d.ts.map +1 -0
  92. package/dist/tools/generated/credits.gen.js +399 -0
  93. package/dist/tools/generated/credits.gen.js.map +1 -0
  94. package/dist/tools/generated/dedup.gen.d.ts +3 -0
  95. package/dist/tools/generated/dedup.gen.d.ts.map +1 -0
  96. package/dist/tools/generated/dedup.gen.js +28 -0
  97. package/dist/tools/generated/dedup.gen.js.map +1 -0
  98. package/dist/tools/generated/delivery-log.gen.d.ts +3 -0
  99. package/dist/tools/generated/delivery-log.gen.d.ts.map +1 -0
  100. package/dist/tools/generated/delivery-log.gen.js +167 -0
  101. package/dist/tools/generated/delivery-log.gen.js.map +1 -0
  102. package/dist/tools/generated/delivery-test.gen.d.ts.map +1 -1
  103. package/dist/tools/generated/delivery-test.gen.js +69 -2
  104. package/dist/tools/generated/delivery-test.gen.js.map +1 -1
  105. package/dist/tools/generated/delivery.gen.d.ts +3 -0
  106. package/dist/tools/generated/delivery.gen.d.ts.map +1 -0
  107. package/dist/tools/generated/delivery.gen.js +88 -0
  108. package/dist/tools/generated/delivery.gen.js.map +1 -0
  109. package/dist/tools/generated/discovery.gen.js +1 -1
  110. package/dist/tools/generated/discovery.gen.js.map +1 -1
  111. package/dist/tools/generated/disposition-codes.gen.d.ts.map +1 -1
  112. package/dist/tools/generated/disposition-codes.gen.js +11 -3
  113. package/dist/tools/generated/disposition-codes.gen.js.map +1 -1
  114. package/dist/tools/generated/disposition-log.gen.d.ts +3 -0
  115. package/dist/tools/generated/disposition-log.gen.d.ts.map +1 -0
  116. package/dist/tools/generated/disposition-log.gen.js +47 -0
  117. package/dist/tools/generated/disposition-log.gen.js.map +1 -0
  118. package/dist/tools/generated/disputes.gen.d.ts +3 -0
  119. package/dist/tools/generated/disputes.gen.d.ts.map +1 -0
  120. package/dist/tools/generated/disputes.gen.js +141 -0
  121. package/dist/tools/generated/disputes.gen.js.map +1 -0
  122. package/dist/tools/generated/distribution-log.gen.d.ts +3 -0
  123. package/dist/tools/generated/distribution-log.gen.d.ts.map +1 -0
  124. package/dist/tools/generated/distribution-log.gen.js +70 -0
  125. package/dist/tools/generated/distribution-log.gen.js.map +1 -0
  126. package/dist/tools/generated/docs.gen.d.ts +3 -0
  127. package/dist/tools/generated/docs.gen.d.ts.map +1 -0
  128. package/dist/tools/generated/docs.gen.js +29 -0
  129. package/dist/tools/generated/docs.gen.js.map +1 -0
  130. package/dist/tools/generated/email-templates.gen.d.ts.map +1 -1
  131. package/dist/tools/generated/email-templates.gen.js +27 -14
  132. package/dist/tools/generated/email-templates.gen.js.map +1 -1
  133. package/dist/tools/generated/engagements.gen.js +28 -28
  134. package/dist/tools/generated/engagements.gen.js.map +1 -1
  135. package/dist/tools/generated/enrollments.gen.d.ts.map +1 -1
  136. package/dist/tools/generated/enrollments.gen.js +82 -5
  137. package/dist/tools/generated/enrollments.gen.js.map +1 -1
  138. package/dist/tools/generated/events.gen.js +2 -2
  139. package/dist/tools/generated/events.gen.js.map +1 -1
  140. package/dist/tools/generated/export.gen.d.ts +3 -0
  141. package/dist/tools/generated/export.gen.d.ts.map +1 -0
  142. package/dist/tools/generated/export.gen.js +122 -0
  143. package/dist/tools/generated/export.gen.js.map +1 -0
  144. package/dist/tools/generated/index.d.ts.map +1 -1
  145. package/dist/tools/generated/index.js +184 -54
  146. package/dist/tools/generated/index.js.map +1 -1
  147. package/dist/tools/generated/intake-centers.gen.d.ts.map +1 -1
  148. package/dist/tools/generated/intake-centers.gen.js +88 -18
  149. package/dist/tools/generated/intake-centers.gen.js.map +1 -1
  150. package/dist/tools/generated/integrations.gen.d.ts.map +1 -1
  151. package/dist/tools/generated/integrations.gen.js +633 -144
  152. package/dist/tools/generated/integrations.gen.js.map +1 -1
  153. package/dist/tools/generated/invitations.gen.d.ts +3 -0
  154. package/dist/tools/generated/invitations.gen.d.ts.map +1 -0
  155. package/dist/tools/generated/invitations.gen.js +225 -0
  156. package/dist/tools/generated/invitations.gen.js.map +1 -0
  157. package/dist/tools/generated/ivr.gen.d.ts.map +1 -1
  158. package/dist/tools/generated/ivr.gen.js +28 -12
  159. package/dist/tools/generated/ivr.gen.js.map +1 -1
  160. package/dist/tools/generated/lead-import.gen.d.ts +3 -0
  161. package/dist/tools/generated/lead-import.gen.d.ts.map +1 -0
  162. package/dist/tools/generated/lead-import.gen.js +311 -0
  163. package/dist/tools/generated/lead-import.gen.js.map +1 -0
  164. package/dist/tools/generated/leads.gen.d.ts.map +1 -1
  165. package/dist/tools/generated/leads.gen.js +585 -166
  166. package/dist/tools/generated/leads.gen.js.map +1 -1
  167. package/dist/tools/generated/messaging-analytics.gen.d.ts +3 -0
  168. package/dist/tools/generated/messaging-analytics.gen.d.ts.map +1 -0
  169. package/dist/tools/generated/messaging-analytics.gen.js +248 -0
  170. package/dist/tools/generated/messaging-analytics.gen.js.map +1 -0
  171. package/dist/tools/generated/messaging-campaigns.gen.d.ts +3 -0
  172. package/dist/tools/generated/messaging-campaigns.gen.d.ts.map +1 -0
  173. package/dist/tools/generated/messaging-campaigns.gen.js +257 -0
  174. package/dist/tools/generated/messaging-campaigns.gen.js.map +1 -0
  175. package/dist/tools/generated/messaging-contacts.gen.d.ts +3 -0
  176. package/dist/tools/generated/messaging-contacts.gen.d.ts.map +1 -0
  177. package/dist/tools/generated/messaging-contacts.gen.js +293 -0
  178. package/dist/tools/generated/messaging-contacts.gen.js.map +1 -0
  179. package/dist/tools/generated/messaging-flows-api.gen.d.ts +3 -0
  180. package/dist/tools/generated/messaging-flows-api.gen.d.ts.map +1 -0
  181. package/dist/tools/generated/messaging-flows-api.gen.js +168 -0
  182. package/dist/tools/generated/messaging-flows-api.gen.js.map +1 -0
  183. package/dist/tools/generated/messaging-flows.gen.d.ts +3 -0
  184. package/dist/tools/generated/messaging-flows.gen.d.ts.map +1 -0
  185. package/dist/tools/generated/messaging-flows.gen.js +392 -0
  186. package/dist/tools/generated/messaging-flows.gen.js.map +1 -0
  187. package/dist/tools/generated/messaging-lists.gen.d.ts +3 -0
  188. package/dist/tools/generated/messaging-lists.gen.d.ts.map +1 -0
  189. package/dist/tools/generated/messaging-lists.gen.js +141 -0
  190. package/dist/tools/generated/messaging-lists.gen.js.map +1 -0
  191. package/dist/tools/generated/messaging-log.gen.d.ts +3 -0
  192. package/dist/tools/generated/messaging-log.gen.d.ts.map +1 -0
  193. package/dist/tools/generated/messaging-log.gen.js +51 -0
  194. package/dist/tools/generated/messaging-log.gen.js.map +1 -0
  195. package/dist/tools/generated/messaging-messages.gen.d.ts +3 -0
  196. package/dist/tools/generated/messaging-messages.gen.d.ts.map +1 -0
  197. package/dist/tools/generated/messaging-messages.gen.js +24 -0
  198. package/dist/tools/generated/messaging-messages.gen.js.map +1 -0
  199. package/dist/tools/generated/messaging-profiles.gen.d.ts +3 -0
  200. package/dist/tools/generated/messaging-profiles.gen.d.ts.map +1 -0
  201. package/dist/tools/generated/messaging-profiles.gen.js +88 -0
  202. package/dist/tools/generated/messaging-profiles.gen.js.map +1 -0
  203. package/dist/tools/generated/messaging-providers.gen.d.ts +3 -0
  204. package/dist/tools/generated/messaging-providers.gen.d.ts.map +1 -0
  205. package/dist/tools/generated/messaging-providers.gen.js +164 -0
  206. package/dist/tools/generated/messaging-providers.gen.js.map +1 -0
  207. package/dist/tools/generated/messaging-segments.gen.d.ts +3 -0
  208. package/dist/tools/generated/messaging-segments.gen.d.ts.map +1 -0
  209. package/dist/tools/generated/messaging-segments.gen.js +199 -0
  210. package/dist/tools/generated/messaging-segments.gen.js.map +1 -0
  211. package/dist/tools/generated/messaging-send.gen.d.ts +3 -0
  212. package/dist/tools/generated/messaging-send.gen.d.ts.map +1 -0
  213. package/dist/tools/generated/messaging-send.gen.js +22 -0
  214. package/dist/tools/generated/messaging-send.gen.js.map +1 -0
  215. package/dist/tools/generated/messaging-settings.gen.d.ts +3 -0
  216. package/dist/tools/generated/messaging-settings.gen.d.ts.map +1 -0
  217. package/dist/tools/generated/messaging-settings.gen.js +93 -0
  218. package/dist/tools/generated/messaging-settings.gen.js.map +1 -0
  219. package/dist/tools/generated/messaging-suppression.gen.d.ts +3 -0
  220. package/dist/tools/generated/messaging-suppression.gen.d.ts.map +1 -0
  221. package/dist/tools/generated/messaging-suppression.gen.js +93 -0
  222. package/dist/tools/generated/messaging-suppression.gen.js.map +1 -0
  223. package/dist/tools/generated/messaging-templates.gen.d.ts +3 -0
  224. package/dist/tools/generated/messaging-templates.gen.d.ts.map +1 -0
  225. package/dist/tools/generated/messaging-templates.gen.js +349 -0
  226. package/dist/tools/generated/messaging-templates.gen.js.map +1 -0
  227. package/dist/tools/generated/notification-subscriptions.gen.d.ts +3 -0
  228. package/dist/tools/generated/notification-subscriptions.gen.d.ts.map +1 -0
  229. package/dist/tools/generated/notification-subscriptions.gen.js +99 -0
  230. package/dist/tools/generated/notification-subscriptions.gen.js.map +1 -0
  231. package/dist/tools/generated/notifications.gen.d.ts +3 -0
  232. package/dist/tools/generated/notifications.gen.d.ts.map +1 -0
  233. package/dist/tools/generated/notifications.gen.js +65 -0
  234. package/dist/tools/generated/notifications.gen.js.map +1 -0
  235. package/dist/tools/generated/number-pool.gen.js +4 -4
  236. package/dist/tools/generated/number-pool.gen.js.map +1 -1
  237. package/dist/tools/generated/offers.gen.d.ts.map +1 -1
  238. package/dist/tools/generated/offers.gen.js +366 -96
  239. package/dist/tools/generated/offers.gen.js.map +1 -1
  240. package/dist/tools/generated/onboarding.gen.d.ts +3 -0
  241. package/dist/tools/generated/onboarding.gen.d.ts.map +1 -0
  242. package/dist/tools/generated/onboarding.gen.js +63 -0
  243. package/dist/tools/generated/onboarding.gen.js.map +1 -0
  244. package/dist/tools/generated/optimization.gen.d.ts +3 -0
  245. package/dist/tools/generated/optimization.gen.d.ts.map +1 -0
  246. package/dist/tools/generated/optimization.gen.js +42 -0
  247. package/dist/tools/generated/optimization.gen.js.map +1 -0
  248. package/dist/tools/generated/organizations.gen.d.ts.map +1 -1
  249. package/dist/tools/generated/organizations.gen.js +20 -117
  250. package/dist/tools/generated/organizations.gen.js.map +1 -1
  251. package/dist/tools/generated/partners.gen.d.ts.map +1 -1
  252. package/dist/tools/generated/partners.gen.js +110 -18
  253. package/dist/tools/generated/partners.gen.js.map +1 -1
  254. package/dist/tools/generated/payouts.gen.d.ts.map +1 -1
  255. package/dist/tools/generated/payouts.gen.js +40 -20
  256. package/dist/tools/generated/payouts.gen.js.map +1 -1
  257. package/dist/tools/generated/people.gen.d.ts.map +1 -1
  258. package/dist/tools/generated/people.gen.js +173 -114
  259. package/dist/tools/generated/people.gen.js.map +1 -1
  260. package/dist/tools/generated/ping-log.gen.d.ts +3 -0
  261. package/dist/tools/generated/ping-log.gen.d.ts.map +1 -0
  262. package/dist/tools/generated/ping-log.gen.js +225 -0
  263. package/dist/tools/generated/ping-log.gen.js.map +1 -0
  264. package/dist/tools/generated/postback-log.gen.d.ts +3 -0
  265. package/dist/tools/generated/postback-log.gen.d.ts.map +1 -0
  266. package/dist/tools/generated/postback-log.gen.js +83 -0
  267. package/dist/tools/generated/postback-log.gen.js.map +1 -0
  268. package/dist/tools/generated/posting-log.gen.d.ts.map +1 -1
  269. package/dist/tools/generated/posting-log.gen.js +132 -27
  270. package/dist/tools/generated/posting-log.gen.js.map +1 -1
  271. package/dist/tools/generated/products.gen.d.ts +3 -0
  272. package/dist/tools/generated/products.gen.d.ts.map +1 -0
  273. package/dist/tools/generated/products.gen.js +155 -0
  274. package/dist/tools/generated/products.gen.js.map +1 -0
  275. package/dist/tools/generated/providers.gen.d.ts +3 -0
  276. package/dist/tools/generated/providers.gen.d.ts.map +1 -0
  277. package/dist/tools/generated/providers.gen.js +140 -0
  278. package/dist/tools/generated/providers.gen.js.map +1 -0
  279. package/dist/tools/generated/public.gen.d.ts +3 -0
  280. package/dist/tools/generated/public.gen.d.ts.map +1 -0
  281. package/dist/tools/generated/public.gen.js +551 -0
  282. package/dist/tools/generated/public.gen.js.map +1 -0
  283. package/dist/tools/generated/referrer-portal.gen.d.ts +3 -0
  284. package/dist/tools/generated/referrer-portal.gen.d.ts.map +1 -0
  285. package/dist/tools/generated/referrer-portal.gen.js +98 -0
  286. package/dist/tools/generated/referrer-portal.gen.js.map +1 -0
  287. package/dist/tools/generated/referrers.gen.d.ts +3 -0
  288. package/dist/tools/generated/referrers.gen.d.ts.map +1 -0
  289. package/dist/tools/generated/referrers.gen.js +134 -0
  290. package/dist/tools/generated/referrers.gen.js.map +1 -0
  291. package/dist/tools/generated/refunds.gen.d.ts.map +1 -1
  292. package/dist/tools/generated/refunds.gen.js +110 -23
  293. package/dist/tools/generated/refunds.gen.js.map +1 -1
  294. package/dist/tools/generated/report-folders.gen.d.ts +3 -0
  295. package/dist/tools/generated/report-folders.gen.d.ts.map +1 -0
  296. package/dist/tools/generated/report-folders.gen.js +80 -0
  297. package/dist/tools/generated/report-folders.gen.js.map +1 -0
  298. package/dist/tools/generated/reports.gen.d.ts.map +1 -1
  299. package/dist/tools/generated/reports.gen.js +1891 -11
  300. package/dist/tools/generated/reports.gen.js.map +1 -1
  301. package/dist/tools/generated/saved-reports.gen.d.ts +3 -0
  302. package/dist/tools/generated/saved-reports.gen.d.ts.map +1 -0
  303. package/dist/tools/generated/saved-reports.gen.js +86 -0
  304. package/dist/tools/generated/saved-reports.gen.js.map +1 -0
  305. package/dist/tools/generated/scoring-models.gen.d.ts +3 -0
  306. package/dist/tools/generated/scoring-models.gen.d.ts.map +1 -0
  307. package/dist/tools/generated/scoring-models.gen.js +221 -0
  308. package/dist/tools/generated/scoring-models.gen.js.map +1 -0
  309. package/dist/tools/generated/search.gen.d.ts +3 -0
  310. package/dist/tools/generated/search.gen.d.ts.map +1 -0
  311. package/dist/tools/generated/search.gen.js +22 -0
  312. package/dist/tools/generated/search.gen.js.map +1 -0
  313. package/dist/tools/generated/security.gen.d.ts +3 -0
  314. package/dist/tools/generated/security.gen.d.ts.map +1 -0
  315. package/dist/tools/generated/security.gen.js +118 -0
  316. package/dist/tools/generated/security.gen.js.map +1 -0
  317. package/dist/tools/generated/sessions.gen.d.ts.map +1 -1
  318. package/dist/tools/generated/sessions.gen.js +9 -11
  319. package/dist/tools/generated/sessions.gen.js.map +1 -1
  320. package/dist/tools/generated/settings.gen.d.ts.map +1 -1
  321. package/dist/tools/generated/settings.gen.js +687 -125
  322. package/dist/tools/generated/settings.gen.js.map +1 -1
  323. package/dist/tools/generated/signups.gen.d.ts +3 -0
  324. package/dist/tools/generated/signups.gen.d.ts.map +1 -0
  325. package/dist/tools/generated/signups.gen.js +43 -0
  326. package/dist/tools/generated/signups.gen.js.map +1 -0
  327. package/dist/tools/generated/skus-checkout.gen.d.ts +3 -0
  328. package/dist/tools/generated/skus-checkout.gen.d.ts.map +1 -0
  329. package/dist/tools/generated/skus-checkout.gen.js +177 -0
  330. package/dist/tools/generated/skus-checkout.gen.js.map +1 -0
  331. package/dist/tools/generated/skus.gen.d.ts +3 -0
  332. package/dist/tools/generated/skus.gen.d.ts.map +1 -0
  333. package/dist/tools/generated/skus.gen.js +319 -0
  334. package/dist/tools/generated/skus.gen.js.map +1 -0
  335. package/dist/tools/generated/sms-templates.gen.d.ts +3 -0
  336. package/dist/tools/generated/sms-templates.gen.d.ts.map +1 -0
  337. package/dist/tools/generated/sms-templates.gen.js +103 -0
  338. package/dist/tools/generated/sms-templates.gen.js.map +1 -0
  339. package/dist/tools/generated/softphone.gen.d.ts +3 -0
  340. package/dist/tools/generated/softphone.gen.d.ts.map +1 -0
  341. package/dist/tools/generated/softphone.gen.js +263 -0
  342. package/dist/tools/generated/softphone.gen.js.map +1 -0
  343. package/dist/tools/generated/subscriptions.gen.d.ts +3 -0
  344. package/dist/tools/generated/subscriptions.gen.d.ts.map +1 -0
  345. package/dist/tools/generated/subscriptions.gen.js +86 -0
  346. package/dist/tools/generated/subscriptions.gen.js.map +1 -0
  347. package/dist/tools/generated/support.gen.d.ts +3 -0
  348. package/dist/tools/generated/support.gen.d.ts.map +1 -0
  349. package/dist/tools/generated/support.gen.js +93 -0
  350. package/dist/tools/generated/support.gen.js.map +1 -0
  351. package/dist/tools/generated/team.gen.d.ts +3 -0
  352. package/dist/tools/generated/team.gen.d.ts.map +1 -0
  353. package/dist/tools/generated/team.gen.js +424 -0
  354. package/dist/tools/generated/team.gen.js.map +1 -0
  355. package/dist/tools/generated/teams.gen.d.ts +3 -0
  356. package/dist/tools/generated/teams.gen.d.ts.map +1 -0
  357. package/dist/tools/generated/teams.gen.js +397 -0
  358. package/dist/tools/generated/teams.gen.js.map +1 -0
  359. package/dist/tools/generated/telephony.gen.d.ts.map +1 -1
  360. package/dist/tools/generated/telephony.gen.js +112 -92
  361. package/dist/tools/generated/telephony.gen.js.map +1 -1
  362. package/dist/tools/generated/tracking-numbers.gen.d.ts.map +1 -1
  363. package/dist/tools/generated/tracking-numbers.gen.js +70 -15
  364. package/dist/tools/generated/tracking-numbers.gen.js.map +1 -1
  365. package/dist/tools/generated/transactions.gen.d.ts.map +1 -1
  366. package/dist/tools/generated/transactions.gen.js +9 -18
  367. package/dist/tools/generated/transactions.gen.js.map +1 -1
  368. package/dist/tools/generated/users.gen.d.ts.map +1 -1
  369. package/dist/tools/generated/users.gen.js +336 -208
  370. package/dist/tools/generated/users.gen.js.map +1 -1
  371. package/dist/tools/generated/vertical-catalog.gen.d.ts +3 -0
  372. package/dist/tools/generated/vertical-catalog.gen.d.ts.map +1 -0
  373. package/dist/tools/generated/vertical-catalog.gen.js +199 -0
  374. package/dist/tools/generated/vertical-catalog.gen.js.map +1 -0
  375. package/dist/tools/generated/vertical-groups.gen.d.ts.map +1 -1
  376. package/dist/tools/generated/vertical-groups.gen.js +39 -22
  377. package/dist/tools/generated/vertical-groups.gen.js.map +1 -1
  378. package/dist/tools/generated/verticals.gen.d.ts.map +1 -1
  379. package/dist/tools/generated/verticals.gen.js +338 -28
  380. package/dist/tools/generated/verticals.gen.js.map +1 -1
  381. package/dist/tools/generated/webhook-log.gen.d.ts +3 -0
  382. package/dist/tools/generated/webhook-log.gen.d.ts.map +1 -0
  383. package/dist/tools/generated/webhook-log.gen.js +85 -0
  384. package/dist/tools/generated/webhook-log.gen.js.map +1 -0
  385. package/dist/tools/generated/webhooks.gen.d.ts +3 -0
  386. package/dist/tools/generated/webhooks.gen.d.ts.map +1 -0
  387. package/dist/tools/generated/webhooks.gen.js +1873 -0
  388. package/dist/tools/generated/webhooks.gen.js.map +1 -0
  389. package/dist/tools/generated/wizard.gen.d.ts +3 -0
  390. package/dist/tools/generated/wizard.gen.d.ts.map +1 -0
  391. package/dist/tools/generated/wizard.gen.js +81 -0
  392. package/dist/tools/generated/wizard.gen.js.map +1 -0
  393. package/dist/tools/generated/wizards.gen.d.ts +3 -0
  394. package/dist/tools/generated/wizards.gen.d.ts.map +1 -0
  395. package/dist/tools/generated/wizards.gen.js +150 -0
  396. package/dist/tools/generated/wizards.gen.js.map +1 -0
  397. package/dist/tools/ui.js +3 -3
  398. package/dist/tools/ui.js.map +1 -1
  399. package/package.json +8 -8
  400. package/dist/api-client.d.ts +0 -10
  401. package/dist/api-client.d.ts.map +0 -1
  402. package/dist/api-client.js +0 -64
  403. package/dist/api-client.js.map +0 -1
  404. package/dist/register.d.ts +0 -4
  405. package/dist/register.d.ts.map +0 -1
  406. package/dist/register.js +0 -23
  407. package/dist/register.js.map +0 -1
  408. package/dist/tools/buyers.d.ts +0 -4
  409. package/dist/tools/buyers.d.ts.map +0 -1
  410. package/dist/tools/buyers.js +0 -61
  411. package/dist/tools/buyers.js.map +0 -1
  412. package/dist/tools/campaigns.d.ts +0 -4
  413. package/dist/tools/campaigns.d.ts.map +0 -1
  414. package/dist/tools/campaigns.js +0 -45
  415. package/dist/tools/campaigns.js.map +0 -1
  416. package/dist/tools/compliance.d.ts +0 -4
  417. package/dist/tools/compliance.d.ts.map +0 -1
  418. package/dist/tools/compliance.js +0 -28
  419. package/dist/tools/compliance.js.map +0 -1
  420. package/dist/tools/contracts.d.ts +0 -4
  421. package/dist/tools/contracts.d.ts.map +0 -1
  422. package/dist/tools/contracts.js +0 -48
  423. package/dist/tools/contracts.js.map +0 -1
  424. package/dist/tools/generated/tenants.gen.d.ts +0 -3
  425. package/dist/tools/generated/tenants.gen.d.ts.map +0 -1
  426. package/dist/tools/generated/tenants.gen.js +0 -223
  427. package/dist/tools/generated/tenants.gen.js.map +0 -1
  428. package/dist/tools/leads.d.ts +0 -4
  429. package/dist/tools/leads.d.ts.map +0 -1
  430. package/dist/tools/leads.js +0 -69
  431. package/dist/tools/leads.js.map +0 -1
  432. package/dist/tools/offers.d.ts +0 -4
  433. package/dist/tools/offers.d.ts.map +0 -1
  434. package/dist/tools/offers.js +0 -33
  435. package/dist/tools/offers.js.map +0 -1
  436. package/dist/tools/partners.d.ts +0 -4
  437. package/dist/tools/partners.d.ts.map +0 -1
  438. package/dist/tools/partners.js +0 -30
  439. package/dist/tools/partners.js.map +0 -1
  440. package/dist/tools/people.d.ts +0 -4
  441. package/dist/tools/people.d.ts.map +0 -1
  442. package/dist/tools/people.js +0 -42
  443. package/dist/tools/people.js.map +0 -1
  444. package/dist/tools/reports.d.ts +0 -4
  445. package/dist/tools/reports.d.ts.map +0 -1
  446. package/dist/tools/reports.js +0 -67
  447. package/dist/tools/reports.js.map +0 -1
  448. package/dist/tools/verticals.d.ts +0 -4
  449. package/dist/tools/verticals.d.ts.map +0 -1
  450. package/dist/tools/verticals.js +0 -25
  451. package/dist/tools/verticals.js.map +0 -1
  452. package/dist/types.d.ts +0 -19
  453. package/dist/types.d.ts.map +0 -1
  454. package/dist/types.js +0 -2
  455. package/dist/types.js.map +0 -1
@@ -337,6 +337,48 @@ When a lead arrives:
337
337
  | `GET /api/v1/campaigns/{id}/posting` | Get posting spec |
338
338
  | `POST /api/v1/leads/submit` | Submit test lead |
339
339
 
340
+ ## People (CRM)
341
+
342
+ The People section is a person-level CRM. Every lead creates or updates a person record (matched by email/phone). People aggregate all activity for a contact across leads, calls, and engagements.
343
+
344
+ | Feature | Description |
345
+ |---------|-------------|
346
+ | Person timeline | Full activity history (leads, deliveries, calls, dispositions) |
347
+ | Person leads | All leads associated with a person |
348
+ | Person calls | All calls for a person |
349
+ | Person notes | Internal notes attached to a contact |
350
+ | Merge | Merge duplicate person records |
351
+
352
+ ## Sessions (Multi-Step Capture)
353
+
354
+ Sessions enable multi-step lead capture funnels. Partners collect data across multiple form steps, then submit on the final step.
355
+
356
+ **Flow:** Create session → PATCH data at each step → Submit on final step (triggers routing)
357
+
358
+ Sessions expire after 24 hours. Each PATCH merges data (doesn't replace). The lead is only created on final submit.
359
+
360
+ **Co-Registration (Coreg):** Submit the same contact through multiple campaigns in a single session. Primary lead submits first, then coreg leads are linked via `parentLeadId`.
361
+
362
+ ## Engagements
363
+
364
+ Engagements track CPA-eligible events across leads. When a contract has CPA configured (cpaAmount + cpaWindowDays), the system monitors for conversion dispositions within the window.
365
+
366
+ ## Consent
367
+
368
+ Consent verification accounts provide TCPA compliance tracking. Certificates document that consent was collected properly for each lead.
369
+
370
+ ## Posting Log
371
+
372
+ The posting log records every lead submission and delivery attempt with full request/response payloads. Use it for:
373
+ - Debugging submission failures
374
+ - Verifying delivery payloads
375
+ - Troubleshooting integration issues
376
+ - Auditing partner submissions
377
+
378
+ ## Onboarding
379
+
380
+ The `setup_partner_onboarding` tool provides a guided multi-step partner onboarding flow — creates the partner, campaign, and links to an offer in one workflow.
381
+
340
382
  ## Gotchas
341
383
 
342
384
  1. **Vertical mismatch** — Campaign, contract, and offer must all reference the SAME vertical
@@ -331,6 +331,8 @@ GET /api/buyer/leads
331
331
  Authorization: Bearer lr_your_buyer_api_key
332
332
  ```
333
333
 
334
+ To use this key with Claude Code (the MCP server), set `ISCALE_MCP_ROLE` to `buyer` in `.mcp.json`. You then get the buyer portal tools only.
335
+
334
336
  ## Ping-Post (Auction Model)
335
337
 
336
338
  If your contract uses ping-post pricing, here's how it works:
@@ -403,3 +405,41 @@ Or to decline:
403
405
  1. Make a payment to reduce your balance
404
406
  2. Ask your admin to increase your creditLimit
405
407
  3. Consider enabling autoRecharge to automatically fund your account
408
+
409
+ ## People & Contacts
410
+
411
+ The People section shows contacts from leads you've received. You can search by name, email, or phone and view a contact's full timeline.
412
+
413
+ ### Contact Timeline
414
+
415
+ Each contact has a timeline showing:
416
+ - Lead submissions
417
+ - Delivery events
418
+ - Disposition updates
419
+ - Call records
420
+
421
+ Use `get_person_timeline` or browse People in the buyer portal to see the full history for any contact.
422
+
423
+ ## Engagements
424
+
425
+ Engagements track CPA-eligible events on your leads. When configured, the system monitors whether leads convert within the CPA window and triggers payouts.
426
+
427
+ View your engagements in the portal or via `list_buyer_engagements`.
428
+
429
+ ## Calls
430
+
431
+ If your contracts include call tracking, you can view call records in the Calls section. Each call shows:
432
+ - Duration and recording (if available)
433
+ - Disposition status
434
+ - Which contract/campaign it came through
435
+
436
+ Use `set_call_disposition` to update call outcomes and `trigger_call_conversion` to trigger CPA payouts on calls.
437
+
438
+ ## Posting Log
439
+
440
+ The posting log shows every delivery attempt to your endpoints. Use it to:
441
+ - Debug delivery failures (see request/response payloads)
442
+ - Verify leads were delivered correctly
443
+ - Check timing of deliveries
444
+
445
+ Access via `get_buyer_posting_log` or the Posting Log page in the buyer portal.
@@ -39,7 +39,7 @@ Your System → POST /api/v1/leads/submit → iSCALE Routing Engine → Buyer(s)
39
39
 
40
40
  ## Submitting Leads
41
41
 
42
- ### Endpoint
42
+ ### Standard Submission
43
43
 
44
44
  ```
45
45
  POST /api/v1/leads/submit
@@ -153,6 +153,45 @@ Some campaigns have additional fields beyond the vertical. Check the posting spe
153
153
  | TCPA consent required | tcpaConsent must be `true` |
154
154
  | Missing TrustedForm certificate | trustedFormCertUrl is required |
155
155
 
156
+ ### Ping-Post (Real-Time Bidding)
157
+
158
+ Some campaigns support ping-post, where buyers bid on leads before committing. As a partner, the flow is:
159
+
160
+ 1. **Ping** — submit lead attributes (no PII) to see which buyers match and at what price
161
+ 2. **Review bids** — see the best available price
162
+ 3. **Post** — commit the lead and deliver PII to the winning buyer(s)
163
+
164
+ ```
165
+ POST /api/v1/leads/ping
166
+ Authorization: Bearer lr_xxx
167
+
168
+ {
169
+ "campaignId": "abc-123",
170
+ "state": "CA",
171
+ "zipCode": "90210",
172
+ "homeOwner": true,
173
+ "utilityBill": 150
174
+ }
175
+ ```
176
+
177
+ Response includes matched contracts and bid prices. Then convert to a sale:
178
+
179
+ ```
180
+ POST /api/v1/leads/post
181
+ Authorization: Bearer lr_xxx
182
+
183
+ {
184
+ "pingId": "ping-uuid-from-response",
185
+ "firstName": "Jane",
186
+ "lastName": "Smith",
187
+ "email": "jane@example.com",
188
+ "phone": "5551234567",
189
+ ...
190
+ }
191
+ ```
192
+
193
+ Ping-post lets you check demand and price before submitting PII. Not all campaigns support it — check your campaign's posting spec.
194
+
156
195
  ## Getting Your Posting Spec
157
196
 
158
197
  The posting spec tells you exactly what fields to send for a specific campaign.
@@ -214,6 +253,30 @@ Go to **People > Leads tab** to see all submitted leads with:
214
253
 
215
254
  Click a lead to see full details including delivery status.
216
255
 
256
+ ## Offer Enrollment
257
+
258
+ Offers define which campaigns feed leads to which buyers. As a partner, you can browse available offers and request enrollment.
259
+
260
+ ### Browsing Offers
261
+
262
+ Go to **Offers** in the partner portal to see:
263
+ - **Available Offers** — offers you can enroll in (public visibility)
264
+ - **My Campaigns** — your active campaigns and which offers they're linked to
265
+
266
+ ### Requesting Enrollment
267
+
268
+ 1. Find an offer that matches your lead type and volume
269
+ 2. Click **Request Enrollment** (or use the API: `request_offer_enrollment`)
270
+ 3. Your admin reviews and approves the enrollment
271
+ 4. Once approved, a campaign is created and linked to the offer
272
+
273
+ ### Offer Stats
274
+
275
+ For offers you're enrolled in, you can view performance stats:
276
+ - Lead volume and acceptance rate
277
+ - Revenue generated
278
+ - Top-performing campaigns
279
+
217
280
  ## API Keys
218
281
 
219
282
  You can access the partner portal API programmatically using API keys.
@@ -233,6 +296,8 @@ GET /api/partner/leads
233
296
  Authorization: Bearer lr_your_partner_api_key
234
297
  ```
235
298
 
299
+ To use this key with Claude Code (the MCP server), set `ISCALE_MCP_ROLE` to `partner` in `.mcp.json`. You then get the partner portal tools only.
300
+
236
301
  ### Partner API Endpoints
237
302
 
238
303
  | Endpoint | Method | Description |
@@ -248,6 +313,12 @@ Authorization: Bearer lr_your_partner_api_key
248
313
  | `/api/partner/settings` | GET/PUT | Your profile |
249
314
  | `/api/partner/api-keys` | GET/POST | List/create API keys |
250
315
  | `/api/partner/api-keys/{id}` | DELETE | Revoke an API key |
316
+ | `/api/partner/consent/accounts` | GET | Consent verification accounts |
317
+ | `/api/partner/calls` | GET | Calls from your campaigns |
318
+ | `/api/partner/engagements` | GET | Your engagements |
319
+ | `/api/partner/people` | GET | Search your lead contacts |
320
+ | `/api/partner/people/{id}` | GET | Contact detail |
321
+ | `/api/partner/people/{id}/timeline` | GET | 90-day activity timeline |
251
322
 
252
323
  ## Sessions — Multi-Step Lead Capture
253
324
 
@@ -47,20 +47,23 @@ After role selection, check if the MCP server is configured:
47
47
  To connect Claude Code to your iSCALE instance, I need two things:
48
48
 
49
49
  1. **Your iSCALE URL** — the URL where you access iSCALE
50
- (e.g., https://leads.iscale.com or https://your-company.iscale.com)
50
+ (e.g., https://theleadrouter.com)
51
51
 
52
- 2. **An API key** — you can get one from Settings > API Keys in the admin dashboard
53
- (it starts with lr_)
52
+ 2. **An API key that matches your role.** It starts with lr_.
53
+ - Admins: a System key from System → API Keys in the admin dashboard.
54
+ - Partners: a partner key from Settings in the partner portal.
55
+ - Buyers: a buyer key from Settings in the buyer portal.
56
+ Do NOT use a campaign posting key (pk_…). See the README for screenshots.
54
57
 
55
58
  Do you have these ready?
56
59
  ```
57
60
 
58
- If they have the info, write the `.mcp.json` config and tell them to restart Claude Code.
61
+ If they have the info, write the `.mcp.json` config (`ISCALE_API_URL` = `https://theleadrouter.com`, `ISCALE_API_KEY` = their `lr_` key) and tell them to restart Claude Code. Set `ISCALE_MCP_ROLE` to match the key: leave it out for a System key (it defaults to `admin`), `partner` for a partner key, `buyer` for a buyer key. The role decides which tools they get.
59
62
 
60
63
  If they don't have an API key yet:
61
- - **Admins:** "Go to Settings > API Keys in your admin dashboard and create one."
62
- - **Partners:** "Ask your admin to create a partner API key for you, or go to Settings in your partner portal."
63
- - **Buyers:** "Ask your admin to create a buyer API key for you, or go to Settings in your buyer portal."
64
+ - **Admins:** Point them at the README screenshot (`docs/create-api-key.png`) and say: "Go to **System → API Keys** (not Settings). Click Create API Key. Key Type = **System**. Select **admin** plus the app scopes you need (`routing`, `messaging`, `calls`). Copy the `lr_` value — it is shown once. A posting key (`pk_`) will not work."
65
+ - **Partners:** "Ask your admin to create a partner API key for you, or go to Settings in your partner portal. Do not use a campaign posting key. In `.mcp.json`, set `ISCALE_MCP_ROLE` to `partner`."
66
+ - **Buyers:** "Ask your admin to create a buyer API key for you, or go to Settings in your buyer portal. In `.mcp.json`, set `ISCALE_MCP_ROLE` to `buyer`."
64
67
 
65
68
  ## Step 3: Role-Specific Walkthrough
66
69
 
package/CLAUDE.md CHANGED
@@ -205,7 +205,7 @@ A buyer's CRM or backend system for lead delivery.
205
205
  ## Common Gotchas
206
206
 
207
207
  1. **Vertical mismatch** — Campaign, contract, and offer must reference the SAME vertical
208
- 2. **Posting key vs API key** — postingKey (lr_xxx on campaign) is for lead submission, not the same as admin/partner API keys
208
+ 2. **Posting key vs API key** — a campaign posting key (`pk_…`, shown on Posting Specs) is for `POST /api/v1/leads/submit` only. Claude Code / MCP takes an `lr_…` key plus `ISCALE_MCP_ROLE` to match it. Admins: a **System** key minted at **System → API Keys** with Key Type = System and the `admin` scope; role `admin` is the default. Partners: a partner portal key with `ISCALE_MCP_ROLE=partner`. Buyers: a buyer portal key with `ISCALE_MCP_ROLE=buyer`. A posting key never works, and a partner or buyer key left on the default `admin` role fails on admin tools. Screenshot of the real dialog: `docs/create-api-key.png`.
209
209
  3. **Buyer balance** — if balance exceeds creditLimit, contracts are skipped during routing
210
210
  4. **Cap resets** — caps reset at midnight in the contract's scheduleTimezone, not UTC
211
211
  5. **Inactive cascades** — pausing a buyer pauses all their contracts; pausing an offer can cascade to campaigns
@@ -232,7 +232,7 @@ A buyer's CRM or backend system for lead delivery.
232
232
  ## Auth
233
233
 
234
234
  - **Admin dashboard:** Session-based (JWT in `lr_session` cookie)
235
- - **Partner lead submission:** `Authorization: Bearer lr_xxx` (campaign postingKey)
236
- - **Partner portal API:** Session cookie or partner API key
237
- - **Buyer portal API:** Session cookie or buyer API key
238
- - **Admin API:** `Authorization: Bearer lr_xxx` (admin API key)
235
+ - **Partner lead submission:** `Authorization: Bearer pk_xxx` (campaign posting key)
236
+ - **Partner portal API:** Session cookie or partner API key (`lr_xxx`)
237
+ - **Buyer portal API:** Session cookie or buyer API key (`lr_xxx`)
238
+ - **Admin API / Claude Code MCP:** `Authorization: Bearer lr_xxx` (System key with `admin` scope, minted at System → API Keys — not Settings). Partner and buyer portal keys also work with the MCP server when `ISCALE_MCP_ROLE` is `partner` or `buyer`.
package/README.md CHANGED
@@ -78,11 +78,44 @@ The MCP server lets Claude Code interact with your theLeadRouter instance direct
78
78
 
79
79
  ### 1. Generate an API key
80
80
 
81
- Go to **Settings > API Keys** in your admin dashboard and create an API key. It will start with `lr_`.
81
+ Pick the key that matches who you are. The key decides which tools you get, so set `ISCALE_MCP_ROLE` to match it.
82
+
83
+ | You are | Key | `ISCALE_MCP_ROLE` |
84
+ |---|---|---|
85
+ | A tenant admin | **System** key from **System → API Keys** (steps below) | `admin` (the default) |
86
+ | A partner | Partner portal key (`lr_…`, scope `routing`). Make it in **Partner portal → Settings**, or an admin makes it on the partner's **API Keys** tab. | `partner` |
87
+ | A buyer | Buyer portal key (`lr_…`). Make it in **Buyer portal → Settings**. | `buyer` |
88
+
89
+ A campaign posting key (`pk_…`) never works here. It only submits leads.
90
+
91
+ #### System key (admins)
92
+
93
+ 1. In the admin dashboard go to **System → API Keys** (`/admin/api-keys`). This is **not** Settings, and it is **not** the API Keys tab on a partner or buyer.
94
+ 2. Click **Create API Key**.
95
+ 3. Fill the dialog like this — the screenshot below is the real form:
96
+
97
+ | Field | What to pick |
98
+ |---|---|
99
+ | **Key Name** | Anything you'll recognize (e.g. `Claude Code`) |
100
+ | **Key Type** | **System** — leave Buyer and Partner unselected |
101
+ | **Scopes** | **admin** plus every app this key needs (`routing`, `messaging`, `calls`, `calls_rtb`). There is no "all" shortcut; `admin` is never implied by the app scopes. |
102
+ | **Allow billing operations** | Leave **off** unless Claude must move money |
103
+ | **Read-only key** | Leave **off** if you want Claude to create or update things |
104
+ | **Allow PII access** | On if you want unmasked names, emails, and phones |
105
+
106
+ <p align="left">
107
+ <img src="docs/create-api-key.png" alt="Create API Key dialog. Key Type is System. Scopes admin, routing, messaging, calls, and calls_rtb are selected. Allow billing operations is off. Read-only is off. Allow PII access is on." width="420" />
108
+ </p>
109
+
110
+ 4. Click **Create Key** and copy the value immediately. It starts with `lr_` and is shown **once**.
111
+
112
+ **Wrong keys people have used:** a campaign posting key (`pk_…`, from an offer's Posting Specs page), or a System key that only has `routing` and not `admin`. Those authenticate, then fail on admin tools. A Partner or Buyer key with the default role (`admin`) fails the same way; set `ISCALE_MCP_ROLE` to `partner` or `buyer`.
82
113
 
83
114
  ### 2. Add to your Claude Code config
84
115
 
85
- Add the following to your `.mcp.json` file. Replace `lr_your_key_here` with your actual key.
116
+ Add the following to your `.mcp.json` file. Replace `lr_your_key_here` with the key you just copied.
117
+
118
+ **Admin (System key).** No role needed; `admin` is the default.
86
119
 
87
120
  ```json
88
121
  {
@@ -91,7 +124,7 @@ Add the following to your `.mcp.json` file. Replace `lr_your_key_here` with your
91
124
  "command": "npx",
92
125
  "args": ["-y", "theleadrouter-mcp@latest"],
93
126
  "env": {
94
- "ISCALE_API_URL": "https://leads.iscale.com",
127
+ "ISCALE_API_URL": "https://theleadrouter.com",
95
128
  "ISCALE_API_KEY": "lr_your_key_here"
96
129
  }
97
130
  }
@@ -99,6 +132,74 @@ Add the following to your `.mcp.json` file. Replace `lr_your_key_here` with your
99
132
  }
100
133
  ```
101
134
 
135
+ **Partner (partner portal key).**
136
+
137
+ ```json
138
+ {
139
+ "mcpServers": {
140
+ "theleadrouter": {
141
+ "command": "npx",
142
+ "args": ["-y", "theleadrouter-mcp@latest"],
143
+ "env": {
144
+ "ISCALE_API_URL": "https://theleadrouter.com",
145
+ "ISCALE_API_KEY": "lr_your_key_here",
146
+ "ISCALE_MCP_ROLE": "partner"
147
+ }
148
+ }
149
+ }
150
+ }
151
+ ```
152
+
153
+ **Buyer (buyer portal key).**
154
+
155
+ ```json
156
+ {
157
+ "mcpServers": {
158
+ "theleadrouter": {
159
+ "command": "npx",
160
+ "args": ["-y", "theleadrouter-mcp@latest"],
161
+ "env": {
162
+ "ISCALE_API_URL": "https://theleadrouter.com",
163
+ "ISCALE_API_KEY": "lr_your_key_here",
164
+ "ISCALE_MCP_ROLE": "buyer"
165
+ }
166
+ }
167
+ }
168
+ }
169
+ ```
170
+
171
+ #### Role and scope filters
172
+
173
+ The role picks your tool set: about 900 tools for `admin`, 93 for `buyer`, 84 for `partner` (reads and writes; [sensitive tools](#sensitive-tools) excluded). You can narrow it further to reduce context usage:
174
+
175
+ | Env var | Values | Effect |
176
+ |---|---|---|
177
+ | `ISCALE_MCP_ROLE` | `admin` (default) \| `buyer` \| `partner` | Which key you are using. Only tools that role may call are registered. Any other value stops the server with an error. |
178
+ | `ISCALE_MCP_SCOPE` | `read` \| `write` \| `all` (default) | Filter by write flag |
179
+ | `ISCALE_MCP_DOMAINS` | comma list, e.g. `verticals,campaigns,buyers` | Restrict to specific domains |
180
+ | `ISCALE_MCP_INCLUDE_UI` | `true` (default `false`) | Include admin-UI navigation tools (only useful inside the in-app agent) |
181
+ | `ISCALE_MCP_ALLOW_SENSITIVE` | `true` (default: hidden) | Register the [sensitive tools](#sensitive-tools). Only the exact value `true` enables them. |
182
+
183
+ #### Sensitive tools
184
+
185
+ Tools that mint, reveal, rotate or redeem a credential, token or secret, or that impersonate another user, are **not registered by default**. An agent cannot call a tool it was never given, so a prompt-injected or confused agent cannot mint an API key, read a provider credential or start impersonation through this server.
186
+
187
+ Hidden by default (full list in [`src/sensitive-tools.ts`](src/sensitive-tools.ts)):
188
+
189
+ - API keys: admin, messaging, buyer and partner key create / list / get / update / revoke
190
+ - Posting keys and spec / setup tokens: rotate, regenerate, create, list, revoke
191
+ - Passwords, impersonation, sign-in codes, Stripe billing-portal sessions
192
+ - Provider credentials and intake credential propagation, the Zoho OAuth callback
193
+ - Signed recording URLs, softphone tokens, invitation bearer links
194
+
195
+ To enable them set `ISCALE_MCP_ALLOW_SENSITIVE=true`. Any other value (`1`, `yes`, `TRUE`, unset) keeps them hidden. Enable it only for a session that needs it.
196
+
197
+ Recommendations:
198
+
199
+ - **Least privilege.** Use a key whose role and scopes cover only what you need. Combine `ISCALE_MCP_SCOPE=read` with a read-only key when you only need to look things up.
200
+ - **https only.** Point `ISCALE_API_URL` at an `https://` URL. The server prints a warning to stderr at startup when the URL is not https and not `localhost` / `127.0.0.1` / `[::1]`. It does not refuse to start.
201
+ - **Treat the key as a password.** Keep it in your MCP config's `env`, never in a prompt, and revoke it at System → API Keys if it leaks.
202
+
102
203
  ### 3. Restart Claude Code
103
204
 
104
205
  Close and reopen Claude Code so it picks up the new MCP server config.
@@ -109,7 +210,7 @@ Try asking: `"Use search_leads to show me recent leads"`
109
210
 
110
211
  ## MCP Server Tools
111
212
 
112
- Once connected, Claude Code can use 300+ tools across these categories:
213
+ Once connected with a System key, Claude Code can use about 900 tools across these categories (partner and buyer keys get the tools for their own portal):
113
214
 
114
215
  | Category | Examples |
115
216
  |----------|----------|
@@ -153,6 +254,37 @@ Once connected, Claude Code can use 300+ tools across these categories:
153
254
  "How many leads am I getting per day this week?"
154
255
  ```
155
256
 
257
+ ## Regenerating the Tool Catalog (maintainers)
258
+
259
+ Tools are generated from three spec snapshots committed in `spec/`. They are the same specs
260
+ the platform serves for each API-key role:
261
+
262
+ | File | Used for |
263
+ |---|---|
264
+ | `spec/openapi-customer.yaml` | Every tool definition (the tenant/admin surface; no superadmin ops) |
265
+ | `spec/openapi-partner.yaml` | Which tools get the `partner` role |
266
+ | `spec/openapi-buyer.yaml` | Which tools get the `buyer` role |
267
+
268
+ A tool gets `admin` when it is in the customer spec and its path is not under `/api/buyer/`,
269
+ `/api/partner/`, `/api/referrer/` or `/api/v1/buyer/me/`. An op under one of those portal paths that is missing from
270
+ that portal's spec gets no role; the generator skips it and lists it in its warnings.
271
+ The generator fails (exit 1) if any `/api/superadmin/` or `x-superadmin-only` op shows up.
272
+
273
+ ```bash
274
+ # 1. Refresh the snapshots from the monorepo (regen there first if schema changed)
275
+ cp /path/to/theLeadRouter/apps/routing/generated/docs/openapi-{customer,partner,buyer}.yaml spec/
276
+
277
+ # 2. Regenerate src/tools/generated/*
278
+ npm run generate
279
+
280
+ # 3. Verify catalog ↔ spec parity + run the suite
281
+ npm test
282
+ ```
283
+
284
+ `SPEC_DIR=/path/to/dir npm run generate` reads the three files from another directory.
285
+ The spec-parity test (`src/spec-parity.test.ts`) fails if the catalog drifts from the
286
+ committed specs — regenerate rather than hand-editing anything under `src/tools/generated/`.
287
+
156
288
  ## About
157
289
 
158
290
  theLeadRouter is a B2B lead distribution platform that routes leads from partners to buyers through offer-based contracts. Learn more at [theleadrouter.com](https://theleadrouter.com).
package/dist/index.d.ts CHANGED
@@ -1,12 +1,35 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { ApiKeyAuthAdapter } from './auth-adapter.js';
3
+ import type { ToolDefinition, ToolRegistry } from './registry.js';
2
4
  export { ToolRegistry, type ToolDefinition, type ToolMetadata } from './registry.js';
3
5
  export { SessionAuthAdapter, ApiKeyAuthAdapter, type AuthAdapter } from './auth-adapter.js';
4
6
  export { registerUiTools } from './tools/ui.js';
5
7
  export { registerCompositeTools } from './tools/composite.js';
6
8
  export { buildRegistry } from './build-registry.js';
9
+ export { SENSITIVE_TOOL_NAMES } from './sensitive-tools.js';
10
+ export declare const ROLES: readonly ["admin", "buyer", "partner"];
11
+ export type Role = (typeof ROLES)[number];
12
+ export type ScopeFilter = {
13
+ scope?: 'read' | 'write' | 'all';
14
+ domains?: string[];
15
+ includeUi?: boolean;
16
+ /** Which API key the server runs with. Defaults to admin (a System key). */
17
+ role?: Role;
18
+ /** Register SENSITIVE_TOOL_NAMES (credential/token/impersonation tools). Defaults to false. */
19
+ allowSensitive?: boolean;
20
+ };
21
+ export declare function filterTools(registry: ToolRegistry, filter?: ScopeFilter): ToolDefinition[];
22
+ export declare function mountRegistryOnServer(server: McpServer, registry: ToolRegistry, auth: ApiKeyAuthAdapter, filter?: ScopeFilter): number;
23
+ /** ISCALE_MCP_ROLE: unset → admin; anything other than the three roles is an error. */
24
+ export declare function parseRole(value: string | undefined): Role;
25
+ /** ISCALE_MCP_ALLOW_SENSITIVE: only the exact string 'true' enables; anything else keeps them hidden. */
26
+ export declare function parseAllowSensitive(value: string | undefined): boolean;
27
+ /** Warning text when ISCALE_API_URL is neither https nor a local host. Never includes the URL itself. */
28
+ export declare function apiUrlWarning(value: string): string | null;
7
29
  export declare function createServer(config: {
8
30
  baseUrl: string;
9
31
  apiKey: string;
32
+ filter?: ScopeFilter;
10
33
  }): McpServer;
11
34
  export declare function startServer(): Promise<void>;
12
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAKnE,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,wBAAgB,YAAY,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,aAQvE;AAED,wBAAsB,WAAW,kBAgBhC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjE,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D,eAAO,MAAM,KAAK,wCAAyC,CAAA;AAC3D,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAA;AAEzC,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,+FAA+F;IAC/F,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAE,WAAgB,GAAG,cAAc,EAAE,CAiB9F;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,GAAE,WAAgB,GACvB,MAAM,CAuCR;AAOD,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAIzD;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEtE;AAID,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1D;AAQD,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,aASA;AAED,wBAAsB,WAAW,kBAmChC"}
package/dist/index.js CHANGED
@@ -1,19 +1,117 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
- import { ApiClient } from './api-client.js';
4
- import { registerAllTools } from './register.js';
3
+ import { z } from 'zod';
4
+ import { ApiKeyAuthAdapter } from './auth-adapter.js';
5
+ import { buildRegistry } from './build-registry.js';
6
+ import { SENSITIVE_TOOL_NAMES } from './sensitive-tools.js';
5
7
  export { ToolRegistry } from './registry.js';
6
8
  export { SessionAuthAdapter, ApiKeyAuthAdapter } from './auth-adapter.js';
7
9
  export { registerUiTools } from './tools/ui.js';
8
10
  export { registerCompositeTools } from './tools/composite.js';
9
11
  export { buildRegistry } from './build-registry.js';
12
+ export { SENSITIVE_TOOL_NAMES } from './sensitive-tools.js';
13
+ export const ROLES = ['admin', 'buyer', 'partner'];
14
+ export function filterTools(registry, filter = {}) {
15
+ const scope = filter.scope ?? 'all';
16
+ const includeUi = filter.includeUi ?? false;
17
+ const domains = filter.domains?.length ? new Set(filter.domains) : null;
18
+ const role = filter.role ?? 'admin';
19
+ const allowSensitive = filter.allowSensitive ?? false;
20
+ return registry.getAll().filter(tool => {
21
+ // A tool that declares no roles is admin-only, so it can never leak into a portal scope.
22
+ if (!(tool.metadata.allowedRoles ?? ['admin']).includes(role))
23
+ return false;
24
+ if (!allowSensitive && SENSITIVE_TOOL_NAMES.has(tool.name))
25
+ return false;
26
+ if (!includeUi && tool.metadata.domain === 'ui')
27
+ return false;
28
+ if (domains && !domains.has(tool.metadata.domain))
29
+ return false;
30
+ if (scope === 'read' && tool.metadata.isWrite)
31
+ return false;
32
+ if (scope === 'write' && !tool.metadata.isWrite)
33
+ return false;
34
+ return true;
35
+ });
36
+ }
37
+ export function mountRegistryOnServer(server, registry, auth, filter = {}) {
38
+ const tools = filterTools(registry, filter);
39
+ for (const tool of tools) {
40
+ const shape = tool.zodSchema instanceof z.ZodObject ? tool.zodSchema.shape : {};
41
+ const description = tool.metadata.confirmRequired && tool.metadata.isWrite
42
+ ? `${tool.description}\n\n⚠️ Write operation — this mutates live data.`
43
+ : tool.description;
44
+ const annotations = {
45
+ readOnlyHint: !tool.metadata.isWrite,
46
+ destructiveHint: tool.metadata.isWrite && (tool.metadata.method === 'DELETE' || tool.metadata.confirmRequired),
47
+ idempotentHint: tool.metadata.method === 'GET' || tool.metadata.method === 'PUT' || tool.metadata.method === 'DELETE',
48
+ openWorldHint: true,
49
+ };
50
+ server.registerTool(tool.name, { description, inputSchema: shape, annotations }, async (args) => {
51
+ try {
52
+ const result = await tool.handler(args, auth);
53
+ const text = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
54
+ const isError = result !== null &&
55
+ typeof result === 'object' &&
56
+ 'error' in result &&
57
+ result.error === true;
58
+ return { content: [{ type: 'text', text }], isError: isError || undefined };
59
+ }
60
+ catch (err) {
61
+ const msg = err instanceof Error ? err.message : String(err);
62
+ return { content: [{ type: 'text', text: `Error: ${msg}` }], isError: true };
63
+ }
64
+ });
65
+ }
66
+ return tools.length;
67
+ }
68
+ function parseScope(value) {
69
+ if (value === 'read' || value === 'write' || value === 'all')
70
+ return value;
71
+ return 'all';
72
+ }
73
+ /** ISCALE_MCP_ROLE: unset → admin; anything other than the three roles is an error. */
74
+ export function parseRole(value) {
75
+ if (value === undefined)
76
+ return 'admin';
77
+ if (ROLES.includes(value))
78
+ return value;
79
+ throw new Error(`Invalid ISCALE_MCP_ROLE ${JSON.stringify(value)}. Valid values: ${ROLES.join(', ')}.`);
80
+ }
81
+ /** ISCALE_MCP_ALLOW_SENSITIVE: only the exact string 'true' enables; anything else keeps them hidden. */
82
+ export function parseAllowSensitive(value) {
83
+ return value === 'true';
84
+ }
85
+ const LOCAL_HOSTS = new Set(['localhost', '127.0.0.1', '[::1]']);
86
+ /** Warning text when ISCALE_API_URL is neither https nor a local host. Never includes the URL itself. */
87
+ export function apiUrlWarning(value) {
88
+ let url;
89
+ try {
90
+ url = new URL(value);
91
+ }
92
+ catch {
93
+ return 'Warning: ISCALE_API_URL is not a valid URL.';
94
+ }
95
+ if (url.protocol === 'https:')
96
+ return null;
97
+ if (url.protocol === 'http:' && LOCAL_HOSTS.has(url.hostname))
98
+ return null;
99
+ return 'Warning: ISCALE_API_URL is not https; the API key will be sent unencrypted. Use an https:// URL.';
100
+ }
101
+ function parseDomains(value) {
102
+ if (!value)
103
+ return undefined;
104
+ const list = value.split(',').map(s => s.trim()).filter(Boolean);
105
+ return list.length ? list : undefined;
106
+ }
10
107
  export function createServer(config) {
11
108
  const server = new McpServer({
12
109
  name: 'iscale-lead-routing',
13
- version: '0.1.0',
110
+ version: '0.3.1',
14
111
  });
15
- const api = new ApiClient(config);
16
- registerAllTools(server, api);
112
+ const auth = new ApiKeyAuthAdapter(config.apiKey, config.baseUrl);
113
+ const registry = buildRegistry();
114
+ mountRegistryOnServer(server, registry, auth, config.filter);
17
115
  return server;
18
116
  }
19
117
  export async function startServer() {
@@ -27,7 +125,25 @@ export async function startServer() {
27
125
  console.error('ISCALE_API_KEY environment variable is required');
28
126
  process.exit(1);
29
127
  }
30
- const server = createServer({ baseUrl, apiKey });
128
+ const urlWarning = apiUrlWarning(baseUrl);
129
+ if (urlWarning)
130
+ console.error(urlWarning);
131
+ let role;
132
+ try {
133
+ role = parseRole(process.env.ISCALE_MCP_ROLE);
134
+ }
135
+ catch (err) {
136
+ console.error(err instanceof Error ? err.message : String(err));
137
+ process.exit(1);
138
+ }
139
+ const filter = {
140
+ role,
141
+ scope: parseScope(process.env.ISCALE_MCP_SCOPE),
142
+ domains: parseDomains(process.env.ISCALE_MCP_DOMAINS),
143
+ includeUi: process.env.ISCALE_MCP_INCLUDE_UI === 'true',
144
+ allowSensitive: parseAllowSensitive(process.env.ISCALE_MCP_ALLOW_SENSITIVE),
145
+ };
146
+ const server = createServer({ baseUrl, apiKey, filter });
31
147
  const transport = new StdioServerTransport();
32
148
  await server.connect(transport);
33
149
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,YAAY,EAA0C,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAoB,MAAM,mBAAmB,CAAA;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,UAAU,YAAY,CAAC,MAA2C;IACtE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAA;IACjC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;IAChD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}