theleadrouter-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/.claude/skills/admin-guide/SKILL.md +351 -0
  2. package/.claude/skills/buyer-guide/SKILL.md +405 -0
  3. package/.claude/skills/partner-guide/SKILL.md +352 -0
  4. package/.claude/skills/welcome/SKILL.md +351 -0
  5. package/CLAUDE.md +238 -0
  6. package/LICENSE +21 -0
  7. package/README.md +166 -0
  8. package/dist/api-client.d.ts +10 -0
  9. package/dist/api-client.d.ts.map +1 -0
  10. package/dist/api-client.js +64 -0
  11. package/dist/api-client.js.map +1 -0
  12. package/dist/auth-adapter.d.ts +33 -0
  13. package/dist/auth-adapter.d.ts.map +1 -0
  14. package/dist/auth-adapter.js +87 -0
  15. package/dist/auth-adapter.js.map +1 -0
  16. package/dist/bin/iscale-mcp.d.ts +3 -0
  17. package/dist/bin/iscale-mcp.d.ts.map +1 -0
  18. package/dist/bin/iscale-mcp.js +7 -0
  19. package/dist/bin/iscale-mcp.js.map +1 -0
  20. package/dist/build-registry.d.ts +3 -0
  21. package/dist/build-registry.d.ts.map +1 -0
  22. package/dist/build-registry.js +15 -0
  23. package/dist/build-registry.js.map +1 -0
  24. package/dist/index.d.ts +12 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +34 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/register.d.ts +4 -0
  29. package/dist/register.d.ts.map +1 -0
  30. package/dist/register.js +23 -0
  31. package/dist/register.js.map +1 -0
  32. package/dist/registry.d.ts +50 -0
  33. package/dist/registry.d.ts.map +1 -0
  34. package/dist/registry.js +78 -0
  35. package/dist/registry.js.map +1 -0
  36. package/dist/tools/buyers.d.ts +4 -0
  37. package/dist/tools/buyers.d.ts.map +1 -0
  38. package/dist/tools/buyers.js +61 -0
  39. package/dist/tools/buyers.js.map +1 -0
  40. package/dist/tools/campaigns.d.ts +4 -0
  41. package/dist/tools/campaigns.d.ts.map +1 -0
  42. package/dist/tools/campaigns.js +45 -0
  43. package/dist/tools/campaigns.js.map +1 -0
  44. package/dist/tools/compliance.d.ts +4 -0
  45. package/dist/tools/compliance.d.ts.map +1 -0
  46. package/dist/tools/compliance.js +28 -0
  47. package/dist/tools/compliance.js.map +1 -0
  48. package/dist/tools/composite.d.ts +3 -0
  49. package/dist/tools/composite.d.ts.map +1 -0
  50. package/dist/tools/composite.js +337 -0
  51. package/dist/tools/composite.js.map +1 -0
  52. package/dist/tools/contracts.d.ts +4 -0
  53. package/dist/tools/contracts.d.ts.map +1 -0
  54. package/dist/tools/contracts.js +48 -0
  55. package/dist/tools/contracts.js.map +1 -0
  56. package/dist/tools/generated/api-keys.gen.d.ts +3 -0
  57. package/dist/tools/generated/api-keys.gen.d.ts.map +1 -0
  58. package/dist/tools/generated/api-keys.gen.js +49 -0
  59. package/dist/tools/generated/api-keys.gen.js.map +1 -0
  60. package/dist/tools/generated/audit-logs.gen.d.ts +3 -0
  61. package/dist/tools/generated/audit-logs.gen.d.ts.map +1 -0
  62. package/dist/tools/generated/audit-logs.gen.js +59 -0
  63. package/dist/tools/generated/audit-logs.gen.js.map +1 -0
  64. package/dist/tools/generated/auth.gen.d.ts +3 -0
  65. package/dist/tools/generated/auth.gen.d.ts.map +1 -0
  66. package/dist/tools/generated/auth.gen.js +195 -0
  67. package/dist/tools/generated/auth.gen.js.map +1 -0
  68. package/dist/tools/generated/blocked-lists.gen.d.ts +3 -0
  69. package/dist/tools/generated/blocked-lists.gen.d.ts.map +1 -0
  70. package/dist/tools/generated/blocked-lists.gen.js +146 -0
  71. package/dist/tools/generated/blocked-lists.gen.js.map +1 -0
  72. package/dist/tools/generated/buyers.gen.d.ts +3 -0
  73. package/dist/tools/generated/buyers.gen.d.ts.map +1 -0
  74. package/dist/tools/generated/buyers.gen.js +153 -0
  75. package/dist/tools/generated/buyers.gen.js.map +1 -0
  76. package/dist/tools/generated/calls.gen.d.ts +3 -0
  77. package/dist/tools/generated/calls.gen.d.ts.map +1 -0
  78. package/dist/tools/generated/calls.gen.js +106 -0
  79. package/dist/tools/generated/calls.gen.js.map +1 -0
  80. package/dist/tools/generated/campaigns.gen.d.ts +3 -0
  81. package/dist/tools/generated/campaigns.gen.d.ts.map +1 -0
  82. package/dist/tools/generated/campaigns.gen.js +274 -0
  83. package/dist/tools/generated/campaigns.gen.js.map +1 -0
  84. package/dist/tools/generated/catalog.json +7096 -0
  85. package/dist/tools/generated/compliance.gen.d.ts +3 -0
  86. package/dist/tools/generated/compliance.gen.d.ts.map +1 -0
  87. package/dist/tools/generated/compliance.gen.js +119 -0
  88. package/dist/tools/generated/compliance.gen.js.map +1 -0
  89. package/dist/tools/generated/consent.gen.d.ts +3 -0
  90. package/dist/tools/generated/consent.gen.d.ts.map +1 -0
  91. package/dist/tools/generated/consent.gen.js +109 -0
  92. package/dist/tools/generated/consent.gen.js.map +1 -0
  93. package/dist/tools/generated/contacts.gen.d.ts +3 -0
  94. package/dist/tools/generated/contacts.gen.d.ts.map +1 -0
  95. package/dist/tools/generated/contacts.gen.js +88 -0
  96. package/dist/tools/generated/contacts.gen.js.map +1 -0
  97. package/dist/tools/generated/contracts.gen.d.ts +3 -0
  98. package/dist/tools/generated/contracts.gen.d.ts.map +1 -0
  99. package/dist/tools/generated/contracts.gen.js +306 -0
  100. package/dist/tools/generated/contracts.gen.js.map +1 -0
  101. package/dist/tools/generated/delivery-test.gen.d.ts +3 -0
  102. package/dist/tools/generated/delivery-test.gen.d.ts.map +1 -0
  103. package/dist/tools/generated/delivery-test.gen.js +17 -0
  104. package/dist/tools/generated/delivery-test.gen.js.map +1 -0
  105. package/dist/tools/generated/discovery.gen.d.ts +3 -0
  106. package/dist/tools/generated/discovery.gen.d.ts.map +1 -0
  107. package/dist/tools/generated/discovery.gen.js +17 -0
  108. package/dist/tools/generated/discovery.gen.js.map +1 -0
  109. package/dist/tools/generated/disposition-codes.gen.d.ts +3 -0
  110. package/dist/tools/generated/disposition-codes.gen.d.ts.map +1 -0
  111. package/dist/tools/generated/disposition-codes.gen.js +30 -0
  112. package/dist/tools/generated/disposition-codes.gen.js.map +1 -0
  113. package/dist/tools/generated/email-templates.gen.d.ts +3 -0
  114. package/dist/tools/generated/email-templates.gen.d.ts.map +1 -0
  115. package/dist/tools/generated/email-templates.gen.js +108 -0
  116. package/dist/tools/generated/email-templates.gen.js.map +1 -0
  117. package/dist/tools/generated/engagements.gen.d.ts +3 -0
  118. package/dist/tools/generated/engagements.gen.d.ts.map +1 -0
  119. package/dist/tools/generated/engagements.gen.js +208 -0
  120. package/dist/tools/generated/engagements.gen.js.map +1 -0
  121. package/dist/tools/generated/enrollments.gen.d.ts +3 -0
  122. package/dist/tools/generated/enrollments.gen.d.ts.map +1 -0
  123. package/dist/tools/generated/enrollments.gen.js +82 -0
  124. package/dist/tools/generated/enrollments.gen.js.map +1 -0
  125. package/dist/tools/generated/events.gen.d.ts +3 -0
  126. package/dist/tools/generated/events.gen.d.ts.map +1 -0
  127. package/dist/tools/generated/events.gen.js +20 -0
  128. package/dist/tools/generated/events.gen.js.map +1 -0
  129. package/dist/tools/generated/index.d.ts +3 -0
  130. package/dist/tools/generated/index.d.ts.map +1 -0
  131. package/dist/tools/generated/index.js +86 -0
  132. package/dist/tools/generated/index.js.map +1 -0
  133. package/dist/tools/generated/intake-centers.gen.d.ts +3 -0
  134. package/dist/tools/generated/intake-centers.gen.d.ts.map +1 -0
  135. package/dist/tools/generated/intake-centers.gen.js +196 -0
  136. package/dist/tools/generated/intake-centers.gen.js.map +1 -0
  137. package/dist/tools/generated/integrations.gen.d.ts +3 -0
  138. package/dist/tools/generated/integrations.gen.d.ts.map +1 -0
  139. package/dist/tools/generated/integrations.gen.js +290 -0
  140. package/dist/tools/generated/integrations.gen.js.map +1 -0
  141. package/dist/tools/generated/ivr.gen.d.ts +3 -0
  142. package/dist/tools/generated/ivr.gen.d.ts.map +1 -0
  143. package/dist/tools/generated/ivr.gen.js +97 -0
  144. package/dist/tools/generated/ivr.gen.js.map +1 -0
  145. package/dist/tools/generated/leads.gen.d.ts +3 -0
  146. package/dist/tools/generated/leads.gen.d.ts.map +1 -0
  147. package/dist/tools/generated/leads.gen.js +592 -0
  148. package/dist/tools/generated/leads.gen.js.map +1 -0
  149. package/dist/tools/generated/number-pool.gen.d.ts +3 -0
  150. package/dist/tools/generated/number-pool.gen.d.ts.map +1 -0
  151. package/dist/tools/generated/number-pool.gen.js +62 -0
  152. package/dist/tools/generated/number-pool.gen.js.map +1 -0
  153. package/dist/tools/generated/offers.gen.d.ts +3 -0
  154. package/dist/tools/generated/offers.gen.d.ts.map +1 -0
  155. package/dist/tools/generated/offers.gen.js +407 -0
  156. package/dist/tools/generated/offers.gen.js.map +1 -0
  157. package/dist/tools/generated/organizations.gen.d.ts +3 -0
  158. package/dist/tools/generated/organizations.gen.d.ts.map +1 -0
  159. package/dist/tools/generated/organizations.gen.js +161 -0
  160. package/dist/tools/generated/organizations.gen.js.map +1 -0
  161. package/dist/tools/generated/partners.gen.d.ts +3 -0
  162. package/dist/tools/generated/partners.gen.d.ts.map +1 -0
  163. package/dist/tools/generated/partners.gen.js +121 -0
  164. package/dist/tools/generated/partners.gen.js.map +1 -0
  165. package/dist/tools/generated/payouts.gen.d.ts +3 -0
  166. package/dist/tools/generated/payouts.gen.d.ts.map +1 -0
  167. package/dist/tools/generated/payouts.gen.js +92 -0
  168. package/dist/tools/generated/payouts.gen.js.map +1 -0
  169. package/dist/tools/generated/people.gen.d.ts +3 -0
  170. package/dist/tools/generated/people.gen.d.ts.map +1 -0
  171. package/dist/tools/generated/people.gen.js +354 -0
  172. package/dist/tools/generated/people.gen.js.map +1 -0
  173. package/dist/tools/generated/posting-log.gen.d.ts +3 -0
  174. package/dist/tools/generated/posting-log.gen.d.ts.map +1 -0
  175. package/dist/tools/generated/posting-log.gen.js +150 -0
  176. package/dist/tools/generated/posting-log.gen.js.map +1 -0
  177. package/dist/tools/generated/refunds.gen.d.ts +3 -0
  178. package/dist/tools/generated/refunds.gen.d.ts.map +1 -0
  179. package/dist/tools/generated/refunds.gen.js +91 -0
  180. package/dist/tools/generated/refunds.gen.js.map +1 -0
  181. package/dist/tools/generated/reports.gen.d.ts +3 -0
  182. package/dist/tools/generated/reports.gen.d.ts.map +1 -0
  183. package/dist/tools/generated/reports.gen.js +38 -0
  184. package/dist/tools/generated/reports.gen.js.map +1 -0
  185. package/dist/tools/generated/sessions.gen.d.ts +3 -0
  186. package/dist/tools/generated/sessions.gen.d.ts.map +1 -0
  187. package/dist/tools/generated/sessions.gen.js +90 -0
  188. package/dist/tools/generated/sessions.gen.js.map +1 -0
  189. package/dist/tools/generated/settings.gen.d.ts +3 -0
  190. package/dist/tools/generated/settings.gen.d.ts.map +1 -0
  191. package/dist/tools/generated/settings.gen.js +473 -0
  192. package/dist/tools/generated/settings.gen.js.map +1 -0
  193. package/dist/tools/generated/telephony.gen.d.ts +3 -0
  194. package/dist/tools/generated/telephony.gen.d.ts.map +1 -0
  195. package/dist/tools/generated/telephony.gen.js +170 -0
  196. package/dist/tools/generated/telephony.gen.js.map +1 -0
  197. package/dist/tools/generated/tenants.gen.d.ts +3 -0
  198. package/dist/tools/generated/tenants.gen.d.ts.map +1 -0
  199. package/dist/tools/generated/tenants.gen.js +223 -0
  200. package/dist/tools/generated/tenants.gen.js.map +1 -0
  201. package/dist/tools/generated/tracking-numbers.gen.d.ts +3 -0
  202. package/dist/tools/generated/tracking-numbers.gen.d.ts.map +1 -0
  203. package/dist/tools/generated/tracking-numbers.gen.js +131 -0
  204. package/dist/tools/generated/tracking-numbers.gen.js.map +1 -0
  205. package/dist/tools/generated/transactions.gen.d.ts +3 -0
  206. package/dist/tools/generated/transactions.gen.d.ts.map +1 -0
  207. package/dist/tools/generated/transactions.gen.js +62 -0
  208. package/dist/tools/generated/transactions.gen.js.map +1 -0
  209. package/dist/tools/generated/users.gen.d.ts +3 -0
  210. package/dist/tools/generated/users.gen.d.ts.map +1 -0
  211. package/dist/tools/generated/users.gen.js +339 -0
  212. package/dist/tools/generated/users.gen.js.map +1 -0
  213. package/dist/tools/generated/vertical-groups.gen.d.ts +3 -0
  214. package/dist/tools/generated/vertical-groups.gen.d.ts.map +1 -0
  215. package/dist/tools/generated/vertical-groups.gen.js +243 -0
  216. package/dist/tools/generated/vertical-groups.gen.js.map +1 -0
  217. package/dist/tools/generated/verticals.gen.d.ts +3 -0
  218. package/dist/tools/generated/verticals.gen.d.ts.map +1 -0
  219. package/dist/tools/generated/verticals.gen.js +164 -0
  220. package/dist/tools/generated/verticals.gen.js.map +1 -0
  221. package/dist/tools/leads.d.ts +4 -0
  222. package/dist/tools/leads.d.ts.map +1 -0
  223. package/dist/tools/leads.js +69 -0
  224. package/dist/tools/leads.js.map +1 -0
  225. package/dist/tools/offers.d.ts +4 -0
  226. package/dist/tools/offers.d.ts.map +1 -0
  227. package/dist/tools/offers.js +33 -0
  228. package/dist/tools/offers.js.map +1 -0
  229. package/dist/tools/partners.d.ts +4 -0
  230. package/dist/tools/partners.d.ts.map +1 -0
  231. package/dist/tools/partners.js +30 -0
  232. package/dist/tools/partners.js.map +1 -0
  233. package/dist/tools/people.d.ts +4 -0
  234. package/dist/tools/people.d.ts.map +1 -0
  235. package/dist/tools/people.js +42 -0
  236. package/dist/tools/people.js.map +1 -0
  237. package/dist/tools/reports.d.ts +4 -0
  238. package/dist/tools/reports.d.ts.map +1 -0
  239. package/dist/tools/reports.js +67 -0
  240. package/dist/tools/reports.js.map +1 -0
  241. package/dist/tools/ui.d.ts +3 -0
  242. package/dist/tools/ui.d.ts.map +1 -0
  243. package/dist/tools/ui.js +108 -0
  244. package/dist/tools/ui.js.map +1 -0
  245. package/dist/tools/verticals.d.ts +4 -0
  246. package/dist/tools/verticals.d.ts.map +1 -0
  247. package/dist/tools/verticals.js +25 -0
  248. package/dist/tools/verticals.js.map +1 -0
  249. package/dist/types.d.ts +19 -0
  250. package/dist/types.d.ts.map +1 -0
  251. package/dist/types.js +2 -0
  252. package/dist/types.js.map +1 -0
  253. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-registry.d.ts","sourceRoot":"","sources":["../src/build-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAK5C,wBAAgB,aAAa,IAAI,YAAY,CAa5C"}
@@ -0,0 +1,15 @@
1
+ import { ToolRegistry } from './registry.js';
2
+ import { registerUiTools } from './tools/ui.js';
3
+ import { registerCompositeTools } from './tools/composite.js';
4
+ import { registerAllGeneratedTools } from './tools/generated/index.js';
5
+ export function buildRegistry() {
6
+ const registry = new ToolRegistry();
7
+ // 1. Hand-written overrides first (take priority — registry skips duplicates)
8
+ registerCompositeTools(registry);
9
+ // 2. Generated tools (skipped if name already registered)
10
+ registerAllGeneratedTools(registry);
11
+ // 3. UI tools (no API equivalent, always registered)
12
+ registerUiTools(registry);
13
+ return registry;
14
+ }
15
+ //# sourceMappingURL=build-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-registry.js","sourceRoot":"","sources":["../src/build-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;IAEnC,8EAA8E;IAC9E,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAEhC,0DAA0D;IAC1D,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAEnC,qDAAqD;IACrD,eAAe,CAAC,QAAQ,CAAC,CAAA;IAEzB,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export { ToolRegistry, type ToolDefinition, type ToolMetadata } from './registry.js';
3
+ export { SessionAuthAdapter, ApiKeyAuthAdapter, type AuthAdapter } from './auth-adapter.js';
4
+ export { registerUiTools } from './tools/ui.js';
5
+ export { registerCompositeTools } from './tools/composite.js';
6
+ export { buildRegistry } from './build-registry.js';
7
+ export declare function createServer(config: {
8
+ baseUrl: string;
9
+ apiKey: string;
10
+ }): McpServer;
11
+ export declare function startServer(): Promise<void>;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +1,34 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { ApiClient } from './api-client.js';
4
+ import { registerAllTools } from './register.js';
5
+ export { ToolRegistry } from './registry.js';
6
+ export { SessionAuthAdapter, ApiKeyAuthAdapter } from './auth-adapter.js';
7
+ export { registerUiTools } from './tools/ui.js';
8
+ export { registerCompositeTools } from './tools/composite.js';
9
+ export { buildRegistry } from './build-registry.js';
10
+ export function createServer(config) {
11
+ const server = new McpServer({
12
+ name: 'iscale-lead-routing',
13
+ version: '0.1.0',
14
+ });
15
+ const api = new ApiClient(config);
16
+ registerAllTools(server, api);
17
+ return server;
18
+ }
19
+ export async function startServer() {
20
+ const baseUrl = process.env.ISCALE_API_URL;
21
+ const apiKey = process.env.ISCALE_API_KEY;
22
+ if (!baseUrl) {
23
+ console.error('ISCALE_API_URL environment variable is required');
24
+ process.exit(1);
25
+ }
26
+ if (!apiKey) {
27
+ console.error('ISCALE_API_KEY environment variable is required');
28
+ process.exit(1);
29
+ }
30
+ const server = createServer({ baseUrl, apiKey });
31
+ const transport = new StdioServerTransport();
32
+ await server.connect(transport);
33
+ }
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ApiClient } from './api-client.js';
3
+ export declare function registerAllTools(server: McpServer, api: ApiClient): void;
4
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAYhD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,QAWjE"}
@@ -0,0 +1,23 @@
1
+ import { registerLeadTools } from './tools/leads.js';
2
+ import { registerBuyerTools } from './tools/buyers.js';
3
+ import { registerPartnerTools } from './tools/partners.js';
4
+ import { registerContractTools } from './tools/contracts.js';
5
+ import { registerCampaignTools } from './tools/campaigns.js';
6
+ import { registerOfferTools } from './tools/offers.js';
7
+ import { registerReportTools } from './tools/reports.js';
8
+ import { registerPeopleTools } from './tools/people.js';
9
+ import { registerComplianceTools } from './tools/compliance.js';
10
+ import { registerVerticalTools } from './tools/verticals.js';
11
+ export function registerAllTools(server, api) {
12
+ registerLeadTools(server, api);
13
+ registerBuyerTools(server, api);
14
+ registerPartnerTools(server, api);
15
+ registerContractTools(server, api);
16
+ registerCampaignTools(server, api);
17
+ registerOfferTools(server, api);
18
+ registerReportTools(server, api);
19
+ registerPeopleTools(server, api);
20
+ registerComplianceTools(server, api);
21
+ registerVerticalTools(server, api);
22
+ }
23
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,GAAc;IAChE,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAClC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC/B,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,uBAAuB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import type { AuthAdapter } from './auth-adapter.js';
3
+ export type ToolMetadata = {
4
+ domain: string;
5
+ entity?: string;
6
+ isWrite: boolean;
7
+ confirmRequired: boolean;
8
+ method: string;
9
+ path: string;
10
+ tags: string[];
11
+ summary: string;
12
+ allowedRoles?: string[];
13
+ annotations?: {
14
+ readOnly?: boolean;
15
+ destructive?: boolean;
16
+ openWorld?: boolean;
17
+ };
18
+ };
19
+ export type ToolDefinition = {
20
+ name: string;
21
+ description: string;
22
+ zodSchema: z.ZodType | object;
23
+ handler: (args: Record<string, unknown>, authAdapter: AuthAdapter) => Promise<unknown>;
24
+ metadata: ToolMetadata;
25
+ };
26
+ type AnthropicTool = {
27
+ name: string;
28
+ description: string;
29
+ input_schema: object;
30
+ };
31
+ type CatalogEntry = ToolMetadata & {
32
+ name: string;
33
+ };
34
+ export declare class ToolRegistry {
35
+ private tools;
36
+ private jsonSchemaCache;
37
+ register(tool: ToolDefinition): void;
38
+ getAll(): ToolDefinition[];
39
+ getByName(name: string): ToolDefinition | undefined;
40
+ getByDomain(domain: string): ToolDefinition[];
41
+ toAnthropicTools(names?: string[]): AnthropicTool[];
42
+ execute(name: string, args: unknown, auth: AuthAdapter): Promise<unknown>;
43
+ getCatalog(): CatalogEntry[];
44
+ getReadToolNames(): string[];
45
+ getWriteToolDefs(): AnthropicTool[];
46
+ private toJsonSchema;
47
+ private zodToBasicJsonSchema;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,CAAC,CAAC,OAAO,GAAG,MAAM,CAAA;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACtF,QAAQ,EAAE,YAAY,CAAA;CACvB,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,KAAK,YAAY,GAAG,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,eAAe,CAA4B;IAEnD,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKpC,MAAM,IAAI,cAAc,EAAE;IAI1B,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAInD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE;IAI7C,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE;IAY7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAM/E,UAAU,IAAI,YAAY,EAAE;IAO5B,gBAAgB,IAAI,MAAM,EAAE;IAI5B,gBAAgB,IAAI,aAAa,EAAE;IAKnC,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;CAU7B"}
@@ -0,0 +1,78 @@
1
+ import { z } from 'zod';
2
+ import { zodToJsonSchema } from 'zod-to-json-schema';
3
+ export class ToolRegistry {
4
+ tools = new Map();
5
+ jsonSchemaCache = new Map();
6
+ register(tool) {
7
+ if (this.tools.has(tool.name))
8
+ return;
9
+ this.tools.set(tool.name, tool);
10
+ }
11
+ getAll() {
12
+ return Array.from(this.tools.values());
13
+ }
14
+ getByName(name) {
15
+ return this.tools.get(name);
16
+ }
17
+ getByDomain(domain) {
18
+ return this.getAll().filter(t => t.metadata.domain === domain);
19
+ }
20
+ toAnthropicTools(names) {
21
+ const tools = names
22
+ ? names.map(n => this.tools.get(n)).filter((t) => t !== undefined)
23
+ : this.getAll();
24
+ return tools.map(t => ({
25
+ name: t.name,
26
+ description: t.description,
27
+ input_schema: this.toJsonSchema(t),
28
+ }));
29
+ }
30
+ async execute(name, args, auth) {
31
+ const tool = this.tools.get(name);
32
+ if (!tool)
33
+ throw new Error(`Tool not found: ${name}`);
34
+ return tool.handler(args, auth);
35
+ }
36
+ getCatalog() {
37
+ return this.getAll().map(t => ({
38
+ name: t.name,
39
+ ...t.metadata,
40
+ }));
41
+ }
42
+ getReadToolNames() {
43
+ return this.getAll().filter(t => !t.metadata.isWrite).map(t => t.name);
44
+ }
45
+ getWriteToolDefs() {
46
+ const writeNames = this.getAll().filter(t => t.metadata.isWrite).map(t => t.name);
47
+ return this.toAnthropicTools(writeNames);
48
+ }
49
+ toJsonSchema(tool) {
50
+ if (this.jsonSchemaCache.has(tool.name)) {
51
+ return this.jsonSchemaCache.get(tool.name);
52
+ }
53
+ let schema;
54
+ if (tool.zodSchema instanceof z.ZodType) {
55
+ // Convert Zod schema to JSON Schema
56
+ const jsonSchema = this.zodToBasicJsonSchema(tool.zodSchema);
57
+ schema = jsonSchema;
58
+ }
59
+ else {
60
+ // Already a plain object schema — passthrough
61
+ schema = tool.zodSchema;
62
+ }
63
+ this.jsonSchemaCache.set(tool.name, schema);
64
+ return schema;
65
+ }
66
+ zodToBasicJsonSchema(zodSchema) {
67
+ try {
68
+ const result = zodToJsonSchema(zodSchema, { target: 'openApi3' });
69
+ const { $schema, ...rest } = result;
70
+ return rest;
71
+ }
72
+ catch (err) {
73
+ console.warn(`zodToJsonSchema failed:`, err instanceof Error ? err.message : err);
74
+ return { type: 'object', properties: {} };
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ApiClient } from '../api-client.js';
3
+ export declare function registerBuyerTools(server: McpServer, api: ApiClient): void;
4
+ //# sourceMappingURL=buyers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buyers.d.ts","sourceRoot":"","sources":["../../src/tools/buyers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,QAoFnE"}
@@ -0,0 +1,61 @@
1
+ import { z } from 'zod';
2
+ export function registerBuyerTools(server, api) {
3
+ server.tool('list_buyers', 'List buyers with optional filters for status and keyword search.', {
4
+ status: z.string().optional().describe('Filter by buyer status'),
5
+ search: z.string().optional().describe('Keyword search'),
6
+ limit: z.number().default(20).describe('Max results to return'),
7
+ offset: z.number().default(0).describe('Offset for pagination'),
8
+ }, async (args) => {
9
+ const params = {};
10
+ if (args.status)
11
+ params.status = args.status;
12
+ if (args.search)
13
+ params.search = args.search;
14
+ params.limit = String(args.limit);
15
+ params.offset = String(args.offset);
16
+ const res = await api.get('/api/v1/buyers', params);
17
+ if (res.error) {
18
+ return { content: [{ type: 'text', text: `Error: ${res.error.message}` }], isError: true };
19
+ }
20
+ const buyers = res.data ?? [];
21
+ if (buyers.length === 0) {
22
+ return { content: [{ type: 'text', text: 'No buyers found.' }] };
23
+ }
24
+ const total = res.pagination?.total ?? buyers.length;
25
+ const lines = buyers.map((b) => `- **${b.name}** (#${b.displayId ?? b.id}) | ${b.status} | Balance: $${b.balance ?? 0}`);
26
+ const text = `Found ${total} buyers (showing ${buyers.length}):\n\n${lines.join('\n')}`;
27
+ return { content: [{ type: 'text', text }] };
28
+ });
29
+ server.tool('get_buyer_balance', 'Get the current balance and billing details for a buyer.', {
30
+ buyerId: z.string().describe('The buyer ID'),
31
+ }, async (args) => {
32
+ const res = await api.get(`/api/v1/buyers/${args.buyerId}/balance`);
33
+ if (res.error) {
34
+ return { content: [{ type: 'text', text: `Error: ${res.error.message}` }], isError: true };
35
+ }
36
+ const d = res.data;
37
+ if (!d) {
38
+ return { content: [{ type: 'text', text: 'No balance data returned.' }] };
39
+ }
40
+ const text = [
41
+ `Buyer Balance:`,
42
+ ` Balance: $${d.balance}`,
43
+ ` Credit Limit: $${d.creditLimit ?? 'N/A'}`,
44
+ ` Available: $${d.available ?? 'N/A'}`,
45
+ ].join('\n');
46
+ return { content: [{ type: 'text', text }] };
47
+ });
48
+ server.tool('update_buyer_status', 'Update a buyer\'s status (e.g. active, paused, disabled).', {
49
+ buyerId: z.string().describe('The buyer ID'),
50
+ status: z.string().describe('New status value'),
51
+ }, async (args) => {
52
+ const res = await api.patch(`/api/v1/buyers/${args.buyerId}/status`, {
53
+ status: args.status,
54
+ });
55
+ if (res.error) {
56
+ return { content: [{ type: 'text', text: `Error: ${res.error.message}` }], isError: true };
57
+ }
58
+ return { content: [{ type: 'text', text: `Buyer ${args.buyerId} status updated to "${args.status}".` }] };
59
+ });
60
+ }
61
+ //# sourceMappingURL=buyers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buyers.js","sourceRoot":"","sources":["../../src/tools/buyers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ApiClient } from '../api-client.js';
3
+ export declare function registerCampaignTools(server: McpServer, api: ApiClient): void;
4
+ //# sourceMappingURL=campaigns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,QAyDtE"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ export function registerCampaignTools(server, api) {
3
+ server.tool('list_campaigns', 'List campaigns with optional filters for partner, vertical, status, and keyword search.', {
4
+ partnerId: z.string().optional().describe('Filter by partner ID'),
5
+ verticalId: z.string().optional().describe('Filter by vertical ID'),
6
+ status: z.string().optional().describe('Filter by campaign status'),
7
+ search: z.string().optional().describe('Keyword search'),
8
+ limit: z.number().default(20).describe('Max results to return'),
9
+ offset: z.number().default(0).describe('Offset for pagination'),
10
+ }, async (args) => {
11
+ const params = {};
12
+ if (args.partnerId)
13
+ params.partnerId = args.partnerId;
14
+ if (args.verticalId)
15
+ params.verticalId = args.verticalId;
16
+ if (args.status)
17
+ params.status = args.status;
18
+ if (args.search)
19
+ params.search = args.search;
20
+ params.limit = String(args.limit);
21
+ params.offset = String(args.offset);
22
+ const res = await api.get('/api/v1/campaigns', params);
23
+ if (res.error) {
24
+ return { content: [{ type: 'text', text: `Error: ${res.error.message}` }], isError: true };
25
+ }
26
+ const campaigns = res.data ?? [];
27
+ if (campaigns.length === 0) {
28
+ return { content: [{ type: 'text', text: 'No campaigns found.' }] };
29
+ }
30
+ const total = res.pagination?.total ?? campaigns.length;
31
+ const lines = campaigns.map((c) => `- **${c.name}** | Partner: ${c.partnerName ?? c.partnerId} | ${c.status}`);
32
+ const text = `Found ${total} campaigns (showing ${campaigns.length}):\n\n${lines.join('\n')}`;
33
+ return { content: [{ type: 'text', text }] };
34
+ });
35
+ server.tool('get_posting_instructions', 'Get posting instructions for a campaign (URL, posting key, required fields).', {
36
+ campaignId: z.string().describe('The campaign ID'),
37
+ }, async (args) => {
38
+ const res = await api.get(`/api/v1/campaigns/${args.campaignId}/posting`);
39
+ if (res.error) {
40
+ return { content: [{ type: 'text', text: `Error: ${res.error.message}` }], isError: true };
41
+ }
42
+ return { content: [{ type: 'text', text: JSON.stringify(res.data, null, 2) }] };
43
+ });
44
+ }
45
+ //# sourceMappingURL=campaigns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ApiClient } from '../api-client.js';
3
+ export declare function registerComplianceTools(server: McpServer, api: ApiClient): void;
4
+ //# sourceMappingURL=compliance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.d.ts","sourceRoot":"","sources":["../../src/tools/compliance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,QAkCxE"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ export function registerComplianceTools(server, api) {
3
+ server.tool('check_suppression', 'Check if an email or phone number is on any suppression list.', {
4
+ type: z.enum(['email', 'phone']).describe('Type of value to check'),
5
+ value: z.string().describe('The email or phone number to check'),
6
+ }, async (args) => {
7
+ const res = await api.post('/api/v1/suppression/check', {
8
+ type: args.type,
9
+ value: args.value,
10
+ });
11
+ if (res.error) {
12
+ return { content: [{ type: 'text', text: `Error: ${res.error.message}` }], isError: true };
13
+ }
14
+ const d = res.data;
15
+ if (!d) {
16
+ return { content: [{ type: 'text', text: 'Error: No response data.' }], isError: true };
17
+ }
18
+ if (d.suppressed) {
19
+ return {
20
+ content: [{ type: 'text', text: `SUPPRESSED: ${args.value} is on suppression list "${d.listName}".` }],
21
+ };
22
+ }
23
+ return {
24
+ content: [{ type: 'text', text: `NOT SUPPRESSED: ${args.value} is not on any suppression list.` }],
25
+ };
26
+ });
27
+ }
28
+ //# sourceMappingURL=compliance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../src/tools/compliance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,GAAc;IACvE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,+DAA+D,EAC/D;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACnE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KACjE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAA0B,2BAA2B,EAAE;YAC/E,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAA;QAEF,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACrG,CAAC;QAED,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAA;QAClB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAClG,CAAC;QAED,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,IAAI,CAAC,KAAK,4BAA4B,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;aAChH,CAAA;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,IAAI,CAAC,KAAK,kCAAkC,EAAE,CAAC;SAC5G,CAAA;IACH,CAAC,CACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolRegistry } from '../registry.js';
2
+ export declare function registerCompositeTools(registry: ToolRegistry): void;
3
+ //# sourceMappingURL=composite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/tools/composite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGlD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,QAmV5D"}