@cognilead/mcp-server 0.1.0 → 0.3.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 (105) hide show
  1. package/README.md +27 -15
  2. package/dist/api-client.d.ts +3 -1
  3. package/dist/api-client.d.ts.map +1 -1
  4. package/dist/api-client.js +8 -2
  5. package/dist/api-client.js.map +1 -1
  6. package/dist/auth.js +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +127 -12
  9. package/dist/index.js.map +1 -1
  10. package/dist/prompts.d.ts +24 -0
  11. package/dist/prompts.d.ts.map +1 -0
  12. package/dist/prompts.js +99 -0
  13. package/dist/prompts.js.map +1 -0
  14. package/dist/rate-limit.d.ts.map +1 -1
  15. package/dist/rate-limit.js +0 -1
  16. package/dist/rate-limit.js.map +1 -1
  17. package/dist/resources.d.ts +15 -0
  18. package/dist/resources.d.ts.map +1 -0
  19. package/dist/resources.js +75 -0
  20. package/dist/resources.js.map +1 -0
  21. package/dist/schemas.d.ts +152 -49
  22. package/dist/schemas.d.ts.map +1 -1
  23. package/dist/schemas.js +98 -20
  24. package/dist/schemas.js.map +1 -1
  25. package/dist/tools/check-deliverability.d.ts +2 -0
  26. package/dist/tools/check-deliverability.d.ts.map +1 -0
  27. package/dist/tools/check-deliverability.js +165 -0
  28. package/dist/tools/check-deliverability.js.map +1 -0
  29. package/dist/tools/create-topup-link.d.ts +2 -0
  30. package/dist/tools/create-topup-link.d.ts.map +1 -0
  31. package/dist/tools/create-topup-link.js +15 -0
  32. package/dist/tools/create-topup-link.js.map +1 -0
  33. package/dist/tools/get-billing-usage.d.ts +2 -0
  34. package/dist/tools/get-billing-usage.d.ts.map +1 -0
  35. package/dist/tools/get-billing-usage.js +12 -0
  36. package/dist/tools/get-billing-usage.js.map +1 -0
  37. package/dist/tools/get-deliverability.d.ts +2 -0
  38. package/dist/tools/get-deliverability.d.ts.map +1 -0
  39. package/dist/tools/get-deliverability.js +12 -0
  40. package/dist/tools/get-deliverability.js.map +1 -0
  41. package/dist/tools/get-subscription.d.ts +2 -0
  42. package/dist/tools/get-subscription.d.ts.map +1 -0
  43. package/dist/tools/get-subscription.js +12 -0
  44. package/dist/tools/get-subscription.js.map +1 -0
  45. package/dist/tools/health.d.ts +2 -0
  46. package/dist/tools/health.d.ts.map +1 -0
  47. package/dist/tools/health.js +12 -0
  48. package/dist/tools/health.js.map +1 -0
  49. package/dist/tools/ingest-lead.js +1 -1
  50. package/dist/tools/ingest-lead.js.map +1 -1
  51. package/dist/tools/list-api-keys.d.ts +2 -0
  52. package/dist/tools/list-api-keys.d.ts.map +1 -0
  53. package/dist/tools/list-api-keys.js +13 -0
  54. package/dist/tools/list-api-keys.js.map +1 -0
  55. package/dist/tools/list-leads.d.ts +2 -0
  56. package/dist/tools/list-leads.d.ts.map +1 -0
  57. package/dist/tools/list-leads.js +19 -0
  58. package/dist/tools/list-leads.js.map +1 -0
  59. package/dist/tools/list-sends.d.ts +2 -0
  60. package/dist/tools/list-sends.d.ts.map +1 -0
  61. package/dist/tools/list-sends.js +18 -0
  62. package/dist/tools/list-sends.js.map +1 -0
  63. package/dist/tools/list-suppressions.d.ts +2 -0
  64. package/dist/tools/list-suppressions.d.ts.map +1 -0
  65. package/dist/tools/list-suppressions.js +19 -0
  66. package/dist/tools/list-suppressions.js.map +1 -0
  67. package/dist/tools/list-webhooks.d.ts +2 -0
  68. package/dist/tools/list-webhooks.d.ts.map +1 -0
  69. package/dist/tools/list-webhooks.js +12 -0
  70. package/dist/tools/list-webhooks.js.map +1 -0
  71. package/dist/tools/run-campaign.d.ts.map +1 -1
  72. package/dist/tools/run-campaign.js +8 -2
  73. package/dist/tools/run-campaign.js.map +1 -1
  74. package/dist/tools/score-signal.d.ts.map +1 -1
  75. package/dist/tools/score-signal.js +0 -1
  76. package/dist/tools/score-signal.js.map +1 -1
  77. package/package.json +4 -3
  78. package/dist/tools/check-registry-flags.d.ts +0 -2
  79. package/dist/tools/check-registry-flags.d.ts.map +0 -1
  80. package/dist/tools/check-registry-flags.js +0 -31
  81. package/dist/tools/check-registry-flags.js.map +0 -1
  82. package/dist/tools/evidence-export.d.ts +0 -7
  83. package/dist/tools/evidence-export.d.ts.map +0 -1
  84. package/dist/tools/evidence-export.js +0 -42
  85. package/dist/tools/evidence-export.js.map +0 -1
  86. package/dist/tools/find-companies-with-triggers.d.ts +0 -2
  87. package/dist/tools/find-companies-with-triggers.d.ts.map +0 -1
  88. package/dist/tools/find-companies-with-triggers.js +0 -29
  89. package/dist/tools/find-companies-with-triggers.js.map +0 -1
  90. package/dist/tools/generate-seo-content.d.ts +0 -2
  91. package/dist/tools/generate-seo-content.d.ts.map +0 -1
  92. package/dist/tools/generate-seo-content.js +0 -14
  93. package/dist/tools/generate-seo-content.js.map +0 -1
  94. package/dist/tools/get-business-sheet.d.ts +0 -2
  95. package/dist/tools/get-business-sheet.d.ts.map +0 -1
  96. package/dist/tools/get-business-sheet.js +0 -24
  97. package/dist/tools/get-business-sheet.js.map +0 -1
  98. package/dist/tools/rank-companies-in-vertical.d.ts +0 -2
  99. package/dist/tools/rank-companies-in-vertical.d.ts.map +0 -1
  100. package/dist/tools/rank-companies-in-vertical.js +0 -33
  101. package/dist/tools/rank-companies-in-vertical.js.map +0 -1
  102. package/dist/tools/score-dd-risk.d.ts +0 -2
  103. package/dist/tools/score-dd-risk.d.ts.map +0 -1
  104. package/dist/tools/score-dd-risk.js +0 -22
  105. package/dist/tools/score-dd-risk.js.map +0 -1
@@ -0,0 +1,165 @@
1
+ // cognilead.check_deliverability — FREE, local, no API key.
2
+ //
3
+ // Reads SPF + DMARC TXT records for a domain via Node's resolver and grades
4
+ // them. No network beyond DNS, no hosted API call — this is a top-of-funnel
5
+ // acquisition tool an agent can run for any domain. Mirrors the logic behind
6
+ // the public web tools at /tools/spf-checker and /tools/dmarc-checker.
7
+ import { promises as dns } from 'node:dns';
8
+ import { CheckDeliverabilityInput } from '../schemas.js';
9
+ function normalizeDomain(raw) {
10
+ let d = raw.trim().toLowerCase();
11
+ d = d.replace(/^https?:\/\//, '').replace(/^mailto:/, '');
12
+ d = d.split('/')[0].split('?')[0].split('@').pop() ?? d;
13
+ d = d.replace(/\.$/, '');
14
+ if (d.length > 253)
15
+ return null;
16
+ if (!/^(?=.{1,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/.test(d)) {
17
+ return null;
18
+ }
19
+ return d;
20
+ }
21
+ async function resolveTxtJoined(name) {
22
+ try {
23
+ const records = await dns.resolveTxt(name);
24
+ return records.map((chunks) => chunks.join(''));
25
+ }
26
+ catch {
27
+ return [];
28
+ }
29
+ }
30
+ const worst = (a, b) => {
31
+ const rank = { pass: 0, warn: 1, fail: 2 };
32
+ return rank[a] >= rank[b] ? a : b;
33
+ };
34
+ const rollup = (findings) => findings.reduce((v, f) => worst(v, f.level), 'pass');
35
+ async function spf(domain) {
36
+ const spfs = (await resolveTxtJoined(domain)).filter((t) => t.toLowerCase().startsWith('v=spf1'));
37
+ if (spfs.length === 0) {
38
+ return {
39
+ verdict: 'fail',
40
+ record: null,
41
+ findings: [{ level: 'fail', text: 'No SPF record found — add a v=spf1 TXT record.' }],
42
+ };
43
+ }
44
+ const findings = [];
45
+ if (spfs.length > 1) {
46
+ findings.push({ level: 'fail', text: `Multiple SPF records (${spfs.length}); RFC 7208 allows one — receivers permerror.` });
47
+ }
48
+ const record = spfs[0];
49
+ const all = record.match(/[~\-?+]all\b/);
50
+ if (!all)
51
+ findings.push({ level: 'warn', text: 'No "all" mechanism — end with -all or ~all.' });
52
+ else if (all[0] === '+all')
53
+ findings.push({ level: 'fail', text: '"+all" lets anyone send as you — disables SPF.' });
54
+ else if (all[0] === '?all')
55
+ findings.push({ level: 'warn', text: '"?all" is neutral — prefer ~all or -all.' });
56
+ else
57
+ findings.push({ level: 'pass', text: `Ends with "${all[0]}".` });
58
+ const lookups = (record.match(/\b(include|a|mx|ptr|exists|redirect)[:=]/g) ?? []).length;
59
+ if (lookups > 10)
60
+ findings.push({ level: 'fail', text: `~${lookups} DNS lookups — over the limit of 10 (permerror).` });
61
+ else if (lookups >= 8)
62
+ findings.push({ level: 'warn', text: `~${lookups} DNS lookups — close to the limit of 10.` });
63
+ return { verdict: rollup(findings), record, findings };
64
+ }
65
+ async function dmarc(domain) {
66
+ const recs = (await resolveTxtJoined(`_dmarc.${domain}`)).filter((t) => t.toLowerCase().startsWith('v=dmarc1'));
67
+ if (recs.length === 0) {
68
+ return {
69
+ verdict: 'fail',
70
+ record: null,
71
+ findings: [{ level: 'fail', text: `No DMARC record at _dmarc.${domain} — Gmail/Yahoo require it for bulk senders.` }],
72
+ };
73
+ }
74
+ const findings = [];
75
+ if (recs.length > 1)
76
+ findings.push({ level: 'fail', text: 'Multiple DMARC records — receivers ignore the policy.' });
77
+ const record = recs[0];
78
+ const tags = Object.fromEntries(record
79
+ .split(';')
80
+ .map((p) => p.trim())
81
+ .filter(Boolean)
82
+ .map((p) => {
83
+ const i = p.indexOf('=');
84
+ return [p.slice(0, i).trim().toLowerCase(), p.slice(i + 1).trim()];
85
+ }));
86
+ const policy = (tags.p ?? '').toLowerCase();
87
+ if (policy === 'reject')
88
+ findings.push({ level: 'pass', text: 'p=reject — strongest policy.' });
89
+ else if (policy === 'quarantine')
90
+ findings.push({ level: 'warn', text: 'p=quarantine — spoofed mail to spam; move to reject.' });
91
+ else if (policy === 'none')
92
+ findings.push({ level: 'warn', text: 'p=none — monitoring only, no enforcement.' });
93
+ else
94
+ findings.push({ level: 'fail', text: 'Missing/invalid p= policy — record ignored.' });
95
+ if (!tags.rua)
96
+ findings.push({ level: 'warn', text: 'No rua= — no aggregate-report visibility.' });
97
+ else
98
+ findings.push({ level: 'pass', text: 'Aggregate reports (rua) configured.' });
99
+ if (tags.pct && tags.pct !== '100')
100
+ findings.push({ level: 'warn', text: `pct=${tags.pct} — applies to only ${tags.pct}% of mail.` });
101
+ return { verdict: rollup(findings), record, findings };
102
+ }
103
+ // Spamhaus DBL. Mirrors lib/pipeline/stages/blocklist-check.ts in the app
104
+ // (this package can't import it): NXDOMAIN = clean, 127.0.x.x = listed, and
105
+ // 127.255.255.x = Spamhaus REFUSED the query (public resolver / rate limit /
106
+ // bad key) — `unknown`, never a listing, and kept out of the overall verdict.
107
+ // SPAMHAUS_DQS_KEY (optional) switches to the DQS zone; it never reaches the
108
+ // output.
109
+ async function dbl(domain) {
110
+ const key = process.env.SPAMHAUS_DQS_KEY;
111
+ const zone = key ? `${key}.dbl.dq.spamhaus.net` : 'dbl.spamhaus.org';
112
+ const publicZone = key ? 'dbl.dq.spamhaus.net' : zone;
113
+ let answers;
114
+ try {
115
+ answers = await dns.resolve4(`${domain}.${zone}`);
116
+ }
117
+ catch (err) {
118
+ const code = err.code;
119
+ if (code === 'ENOTFOUND' || code === 'ENODATA') {
120
+ return { status: 'clean', zone: publicZone, verdict: 'pass', record: null, findings: [{ level: 'pass', text: `Not listed on ${publicZone}.` }] };
121
+ }
122
+ return { status: 'unknown', zone: publicZone, verdict: 'warn', record: null, findings: [{ level: 'warn', text: `Could not check ${publicZone} (${code ?? 'lookup failed'}) — not a listing.` }] };
123
+ }
124
+ const refused = answers.filter((a) => a.startsWith('127.255.255.'));
125
+ if (refused.length) {
126
+ return { status: 'unknown', zone: publicZone, verdict: 'warn', record: null, findings: [{ level: 'warn', text: `Could not check ${publicZone} (query refused by list (${refused.join(',')})) — not a listing.` }] };
127
+ }
128
+ const listed = answers.filter((a) => a.startsWith('127.'));
129
+ if (!listed.length) {
130
+ return { status: 'clean', zone: publicZone, verdict: 'pass', record: null, findings: [{ level: 'pass', text: `Not listed on ${publicZone}.` }] };
131
+ }
132
+ return {
133
+ status: 'listed',
134
+ zone: publicZone,
135
+ verdict: 'fail',
136
+ record: listed.join(','),
137
+ findings: [{ level: 'fail', text: `Listed on ${publicZone} (${listed.join(', ')}) — mail linking this domain is widely blocked; delist before sending.` }],
138
+ };
139
+ }
140
+ export async function checkDeliverability(rawInput) {
141
+ const input = CheckDeliverabilityInput.parse(rawInput);
142
+ const domain = normalizeDomain(input.domain);
143
+ if (!domain) {
144
+ return {
145
+ error: {
146
+ code: 'mcp.invalid_domain',
147
+ message: `Not a valid domain: "${input.domain}". Pass a bare domain like example.com.`,
148
+ },
149
+ };
150
+ }
151
+ const [spfSection, dmarcSection, dblSection] = await Promise.all([spf(domain), dmarc(domain), dbl(domain)]);
152
+ // An `unknown` blocklist result never moves the overall verdict.
153
+ const overall = worst(worst(spfSection.verdict, dmarcSection.verdict), dblSection.status === 'unknown' ? 'pass' : dblSection.verdict);
154
+ return {
155
+ domain,
156
+ overall_verdict: overall,
157
+ spf: spfSection,
158
+ dmarc: dmarcSection,
159
+ blocklist: dblSection,
160
+ note: overall === 'pass'
161
+ ? 'DNS auth looks healthy. CogniLead manages warmed pools + reputation on top of this.'
162
+ : 'Fix the findings above before sending cold — or let CogniLead provision and monitor it for you.',
163
+ };
164
+ }
165
+ //# sourceMappingURL=check-deliverability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-deliverability.js","sourceRoot":"","sources":["../../src/tools/check-deliverability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function createTopupLink(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=create-topup-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-topup-link.d.ts","sourceRoot":"","sources":["../../src/tools/create-topup-link.ts"],"names":[],"mappings":"AAWA,wBAAsB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzE"}
@@ -0,0 +1,15 @@
1
+ // cognilead.create_topup_link — gated.
2
+ //
3
+ // POSTs to ${COGNILEAD_API_URL}/api/v1/customers/:id/topup and returns the
4
+ // Stripe Checkout { url }. The LLM discovers this tool and hands its human a
5
+ // funding link; the human pays, and the webhook credits the customer's
6
+ // prepaid balance (credit_ledger). Requires a CogniLead API key.
7
+ import { CreateTopupLinkInput } from '../schemas.js';
8
+ import { apiPost } from '../api-client.js';
9
+ import { assertGatedAccess } from '../auth.js';
10
+ export async function createTopupLink(rawInput) {
11
+ assertGatedAccess();
12
+ const { customer_id, amount_usd } = CreateTopupLinkInput.parse(rawInput);
13
+ return apiPost(`/api/v1/customers/${encodeURIComponent(customer_id)}/topup`, { amount_usd });
14
+ }
15
+ //# sourceMappingURL=create-topup-link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-topup-link.js","sourceRoot":"","sources":["../../src/tools/create-topup-link.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,uEAAuE;AACvE,iEAAiE;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAiB;IACrD,iBAAiB,EAAE,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACxE,OAAO,OAAO,CACZ,qBAAqB,kBAAkB,CAAC,WAAW,CAAC,QAAQ,EAC5D,EAAE,UAAU,EAAE,CACf,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getBillingUsage(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=get-billing-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-billing-usage.d.ts","sourceRoot":"","sources":["../../src/tools/get-billing-usage.ts"],"names":[],"mappings":"AAQA,wBAAsB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAIzE"}
@@ -0,0 +1,12 @@
1
+ // cognilead.get_billing_usage — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/billing/usage with Bearer auth.
4
+ import { EmptyInput } from '../schemas.js';
5
+ import { apiGet } from '../api-client.js';
6
+ import { assertGatedAccess } from '../auth.js';
7
+ export async function getBillingUsage(rawInput) {
8
+ assertGatedAccess();
9
+ EmptyInput.parse(rawInput ?? {});
10
+ return apiGet('/api/v1/billing/usage');
11
+ }
12
+ //# sourceMappingURL=get-billing-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-billing-usage.js","sourceRoot":"","sources":["../../src/tools/get-billing-usage.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAiB;IACrD,iBAAiB,EAAE,CAAA;IACnB,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,uBAAuB,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getDeliverability(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=get-deliverability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-deliverability.d.ts","sourceRoot":"","sources":["../../src/tools/get-deliverability.ts"],"names":[],"mappings":"AAQA,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAI3E"}
@@ -0,0 +1,12 @@
1
+ // cognilead.get_deliverability — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/deliverability with Bearer auth.
4
+ import { EmptyInput } from '../schemas.js';
5
+ import { apiGet } from '../api-client.js';
6
+ import { assertGatedAccess } from '../auth.js';
7
+ export async function getDeliverability(rawInput) {
8
+ assertGatedAccess();
9
+ EmptyInput.parse(rawInput ?? {});
10
+ return apiGet('/api/v1/deliverability');
11
+ }
12
+ //# sourceMappingURL=get-deliverability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-deliverability.js","sourceRoot":"","sources":["../../src/tools/get-deliverability.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,oEAAoE;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAiB;IACvD,iBAAiB,EAAE,CAAA;IACnB,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,wBAAwB,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getSubscription(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=get-subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-subscription.d.ts","sourceRoot":"","sources":["../../src/tools/get-subscription.ts"],"names":[],"mappings":"AAQA,wBAAsB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAIzE"}
@@ -0,0 +1,12 @@
1
+ // cognilead.get_subscription — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/billing/subscription with Bearer auth.
4
+ import { EmptyInput } from '../schemas.js';
5
+ import { apiGet } from '../api-client.js';
6
+ import { assertGatedAccess } from '../auth.js';
7
+ export async function getSubscription(rawInput) {
8
+ assertGatedAccess();
9
+ EmptyInput.parse(rawInput ?? {});
10
+ return apiGet('/api/v1/billing/subscription');
11
+ }
12
+ //# sourceMappingURL=get-subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-subscription.js","sourceRoot":"","sources":["../../src/tools/get-subscription.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,0EAA0E;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAiB;IACrD,iBAAiB,EAAE,CAAA;IACnB,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,8BAA8B,CAAC,CAAA;AAC/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function health(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AASA,wBAAsB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhE"}
@@ -0,0 +1,12 @@
1
+ // cognilead.health — FREE, public, no API key.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/health without auth headers — mirrors the
4
+ // free/local tool pattern so an agent can probe service availability before
5
+ // configuring a key.
6
+ import { EmptyInput } from '../schemas.js';
7
+ import { apiGet } from '../api-client.js';
8
+ export async function health(rawInput) {
9
+ EmptyInput.parse(rawInput ?? {});
10
+ return apiGet('/api/v1/health', { auth: false });
11
+ }
12
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/tools/health.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,qBAAqB;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAiB;IAC5C,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;AAClD,CAAC"}
@@ -2,7 +2,7 @@
2
2
  //
3
3
  // POSTs to ${COGNILEAD_API_URL}/api/v1/leads with Bearer auth. The hosted
4
4
  // endpoint runs the same `intersect` stage we'd run locally (suppression,
5
- // dedup, Chainlog anchor). 409 with a suppression reason is the most
5
+ // dedup). 409 with a suppression reason is the most
6
6
  // likely failure path — we re-surface it as a structured message.
7
7
  import { IngestLeadInput } from '../schemas.js';
8
8
  import { apiPost } from '../api-client.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ingest-lead.js","sourceRoot":"","sources":["../../src/tools/ingest-lead.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,qEAAqE;AACrE,kEAAkE;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAiB;IAChD,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE7C,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAA0D,CAAA;QACtE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,CAAC,OAAO,IAAI,gBAAgB,IAAI;gBACrE,qEAAqE;gBACrE,0EAA0E,CAC7E,CAAA;QACH,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"ingest-lead.js","sourceRoot":"","sources":["../../src/tools/ingest-lead.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,oDAAoD;AACpD,kEAAkE;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAiB;IAChD,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE7C,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAA0D,CAAA;QACtE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,oCAAoC,GAAG,CAAC,OAAO,IAAI,gBAAgB,IAAI;gBACrE,qEAAqE;gBACrE,0EAA0E,CAC7E,CAAA;QACH,CAAC;QACD,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listApiKeys(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=list-api-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-api-keys.d.ts","sourceRoot":"","sources":["../../src/tools/list-api-keys.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAIrE"}
@@ -0,0 +1,13 @@
1
+ // cognilead.list_api_keys — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/keys with Bearer auth. The hosted API
4
+ // returns metadata only — hashes/secrets are stripped server-side.
5
+ import { EmptyInput } from '../schemas.js';
6
+ import { apiGet } from '../api-client.js';
7
+ import { assertGatedAccess } from '../auth.js';
8
+ export async function listApiKeys(rawInput) {
9
+ assertGatedAccess();
10
+ EmptyInput.parse(rawInput ?? {});
11
+ return apiGet('/api/v1/keys');
12
+ }
13
+ //# sourceMappingURL=list-api-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-api-keys.js","sourceRoot":"","sources":["../../src/tools/list-api-keys.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,yEAAyE;AACzE,mEAAmE;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAiB;IACjD,iBAAiB,EAAE,CAAA;IACnB,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,cAAc,CAAC,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listLeads(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=list-leads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-leads.d.ts","sourceRoot":"","sources":["../../src/tools/list-leads.ts"],"names":[],"mappings":"AASA,wBAAsB,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnE"}
@@ -0,0 +1,19 @@
1
+ // cognilead.list_leads — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/leads with Bearer auth. Optional
4
+ // limit/cursor become query params. Returns { leads, next_cursor } verbatim.
5
+ import { ListLeadsInput } from '../schemas.js';
6
+ import { apiGet } from '../api-client.js';
7
+ import { assertGatedAccess } from '../auth.js';
8
+ export async function listLeads(rawInput) {
9
+ assertGatedAccess();
10
+ const input = ListLeadsInput.parse(rawInput);
11
+ const qs = new URLSearchParams();
12
+ if (input.limit != null)
13
+ qs.set('limit', String(input.limit));
14
+ if (input.cursor)
15
+ qs.set('cursor', input.cursor);
16
+ const suffix = qs.toString() ? `?${qs.toString()}` : '';
17
+ return apiGet(`/api/v1/leads${suffix}`);
18
+ }
19
+ //# sourceMappingURL=list-leads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-leads.js","sourceRoot":"","sources":["../../src/tools/list-leads.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,oEAAoE;AACpE,6EAA6E;AAE7E,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAiB;IAC/C,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;IAChC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,IAAI,KAAK,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,OAAO,MAAM,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listSends(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=list-sends.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sends.d.ts","sourceRoot":"","sources":["../../src/tools/list-sends.ts"],"names":[],"mappings":"AASA,wBAAsB,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE"}
@@ -0,0 +1,18 @@
1
+ // cognilead.list_sends — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/sends?lead_id=... with Bearer auth.
4
+ // lead_id is REQUIRED. Returns { sends, next_cursor } verbatim.
5
+ import { ListSendsInput } from '../schemas.js';
6
+ import { apiGet } from '../api-client.js';
7
+ import { assertGatedAccess } from '../auth.js';
8
+ export async function listSends(rawInput) {
9
+ assertGatedAccess();
10
+ const input = ListSendsInput.parse(rawInput);
11
+ const qs = new URLSearchParams({ lead_id: input.lead_id });
12
+ if (input.limit != null)
13
+ qs.set('limit', String(input.limit));
14
+ if (input.cursor)
15
+ qs.set('cursor', input.cursor);
16
+ return apiGet(`/api/v1/sends?${qs.toString()}`);
17
+ }
18
+ //# sourceMappingURL=list-sends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-sends.js","sourceRoot":"","sources":["../../src/tools/list-sends.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,uEAAuE;AACvE,gEAAgE;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAiB;IAC/C,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,IAAI,KAAK,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,OAAO,MAAM,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACjD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listSuppressions(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=list-suppressions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-suppressions.d.ts","sourceRoot":"","sources":["../../src/tools/list-suppressions.ts"],"names":[],"mappings":"AASA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ1E"}
@@ -0,0 +1,19 @@
1
+ // cognilead.list_suppressions — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/suppressions with Bearer auth. Optional
4
+ // limit/cursor become query params.
5
+ import { ListSuppressionsInput } from '../schemas.js';
6
+ import { apiGet } from '../api-client.js';
7
+ import { assertGatedAccess } from '../auth.js';
8
+ export async function listSuppressions(rawInput) {
9
+ assertGatedAccess();
10
+ const input = ListSuppressionsInput.parse(rawInput);
11
+ const qs = new URLSearchParams();
12
+ if (input.limit != null)
13
+ qs.set('limit', String(input.limit));
14
+ if (input.cursor)
15
+ qs.set('cursor', input.cursor);
16
+ const suffix = qs.toString() ? `?${qs.toString()}` : '';
17
+ return apiGet(`/api/v1/suppressions${suffix}`);
18
+ }
19
+ //# sourceMappingURL=list-suppressions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-suppressions.js","sourceRoot":"","sources":["../../src/tools/list-suppressions.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,2EAA2E;AAC3E,oCAAoC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAiB;IACtD,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAA;IAChC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,IAAI,KAAK,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,OAAO,MAAM,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function listWebhooks(rawInput: unknown): Promise<unknown>;
2
+ //# sourceMappingURL=list-webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-webhooks.d.ts","sourceRoot":"","sources":["../../src/tools/list-webhooks.ts"],"names":[],"mappings":"AAQA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAItE"}
@@ -0,0 +1,12 @@
1
+ // cognilead.list_webhooks — gated, read-only.
2
+ //
3
+ // GETs ${COGNILEAD_API_URL}/api/v1/webhooks with Bearer auth.
4
+ import { EmptyInput } from '../schemas.js';
5
+ import { apiGet } from '../api-client.js';
6
+ import { assertGatedAccess } from '../auth.js';
7
+ export async function listWebhooks(rawInput) {
8
+ assertGatedAccess();
9
+ EmptyInput.parse(rawInput ?? {});
10
+ return apiGet('/api/v1/webhooks');
11
+ }
12
+ //# sourceMappingURL=list-webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-webhooks.js","sourceRoot":"","sources":["../../src/tools/list-webhooks.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,EAAE;AACF,8DAA8D;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAiB;IAClD,iBAAiB,EAAE,CAAA;IACnB,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAA;AACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-campaign.d.ts","sourceRoot":"","sources":["../../src/tools/run-campaign.ts"],"names":[],"mappings":"AAUA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrE"}
1
+ {"version":3,"file":"run-campaign.d.ts","sourceRoot":"","sources":["../../src/tools/run-campaign.ts"],"names":[],"mappings":"AAgBA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrE"}
@@ -2,7 +2,13 @@
2
2
  //
3
3
  // POSTs to ${COGNILEAD_API_URL}/api/v1/campaigns/:id/run with Bearer
4
4
  // auth. Returns the API's dispatch result verbatim. lead_ids is optional —
5
- // when omitted the API picks the next ready batch.
5
+ // when omitted the API dispatches every due step queued for the campaign.
6
+ //
7
+ // The endpoint reuses the CogniLead scheduler: it re-checks suppression,
8
+ // reply, and quota gates before delivering each step, activates a
9
+ // draft/paused campaign so the cadence keeps advancing, and returns a
10
+ // dispatch summary ({ campaign_id, status, processed, sent, skipped, ... }).
11
+ // A 202 means the campaign was enqueued but nothing was immediately due.
6
12
  import { RunCampaignInput } from '../schemas.js';
7
13
  import { apiPost } from '../api-client.js';
8
14
  import { assertGatedAccess } from '../auth.js';
@@ -10,6 +16,6 @@ export async function runCampaign(rawInput) {
10
16
  assertGatedAccess();
11
17
  const input = RunCampaignInput.parse(rawInput);
12
18
  const path = `/api/v1/campaigns/${encodeURIComponent(input.campaign_id)}/run`;
13
- return apiPost(path, { lead_ids: input.lead_ids ?? null });
19
+ return await apiPost(path, { lead_ids: input.lead_ids ?? null });
14
20
  }
15
21
  //# sourceMappingURL=run-campaign.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-campaign.js","sourceRoot":"","sources":["../../src/tools/run-campaign.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,qEAAqE;AACrE,2EAA2E;AAC3E,mDAAmD;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAiB;IACjD,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE9C,MAAM,IAAI,GAAG,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAA;IAC7E,OAAO,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"run-campaign.js","sourceRoot":"","sources":["../../src/tools/run-campaign.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,qEAAqE;AACrE,2EAA2E;AAC3E,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,kEAAkE;AAClE,sEAAsE;AACtE,6EAA6E;AAC7E,yEAAyE;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAiB;IACjD,iBAAiB,EAAE,CAAA;IACnB,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE9C,MAAM,IAAI,GAAG,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAA;IAC7E,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAA;AAClE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"score-signal.d.ts","sourceRoot":"","sources":["../../src/tools/score-signal.ts"],"names":[],"mappings":"AAyEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC/C,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,CAAA;QACtB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;IACD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,GAAG,WAAW,CAAA;CACtC;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0D/E"}
1
+ {"version":3,"file":"score-signal.d.ts","sourceRoot":"","sources":["../../src/tools/score-signal.ts"],"names":[],"mappings":"AAwEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC/C,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,CAAA;QACtB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;IACD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,GAAG,WAAW,CAAA;CACtC;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0D/E"}
@@ -27,7 +27,6 @@ const TOOL = 'cognilead.score_signal';
27
27
  // Product-keyword maps — when a target_product matches a row, those
28
28
  // keywords are the ones the scorer looks for in the signal description.
29
29
  const PRODUCT_KEYWORDS = {
30
- chainlog: ['audit', 'audit log', 'compliance', 'sox', 'gdpr', 'soc 2', 'evidence', 'tamper'],
31
30
  payprimitives: ['iso 20022', 'pain.008', 'sepa', 'payment', 'reconciliation', 'card', 'acquirer'],
32
31
  medisuisse: ['fhir', 'hipaa', 'patient', 'ehr', 'epic', 'cerner', 'health record'],
33
32
  agentgate: ['llm', 'agent', 'guardrail', 'prompt injection', 'safety'],
@@ -1 +1 @@
1
- {"version":3,"file":"score-signal.js","sourceRoot":"","sources":["../../src/tools/score-signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"score-signal.js","sourceRoot":"","sources":["../../src/tools/score-signal.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cognilead/mcp-server",
3
- "version": "0.1.0",
4
- "description": "Model Context Protocol server for CogniLead — exposes draft_pitch, score_signal, ingest_lead, run_campaign, suppress, and evidence_export tools to Cursor, Claude Desktop, Windsurf.",
3
+ "version": "0.3.0",
4
+ "description": "Model Context Protocol server for CogniLead — tools (draft_pitch, score_signal, check_deliverability, ingest_lead, run_campaign, suppress, create_topup_link), Resources (sends, suppressions, warmed-pool, docs), and Prompts (cold-outbound-sequence, deliverability-triage, warmup-plan) for Cursor, Claude Desktop, Windsurf.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "cognilead-mcp": "./dist/index.js"
@@ -21,7 +21,8 @@
21
21
  "LICENSE"
22
22
  ],
23
23
  "scripts": {
24
- "build": "tsc",
24
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
25
+ "build": "npm run clean && tsc",
25
26
  "dev": "tsx src/index.ts",
26
27
  "typecheck": "tsc --noEmit",
27
28
  "start": "node dist/index.js",
@@ -1,2 +0,0 @@
1
- export declare function checkRegistryFlags(input: unknown): Promise<unknown>;
2
- //# sourceMappingURL=check-registry-flags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-registry-flags.d.ts","sourceRoot":"","sources":["../../src/tools/check-registry-flags.ts"],"names":[],"mappings":"AAWA,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBzE"}