@coldleads/mcp-server 1.0.0 → 1.0.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ ## 1.0.1 (2026-10-13)
4
+
5
+ - `serverInfo.version` and the `User-Agent` header now report the real package version from one constant; a test keeps it equal to `package.json`.
6
+ - Without `COLDLEADS_API_KEY`, the `missing_api_key` error and the server instructions point to the no-key demo server `https://coldleads.app/api/mcp/demo` (sample data, never sends e-mail).
7
+ - Published from GitHub Actions with npm trusted publishing (signed provenance, no stored npm token).
8
+
9
+ ## 1.0.0 (2026-10-13)
10
+
11
+ - First npm release: stdio proxy for the hosted Cold Leads MCP tools (contacts, imports, verification, templates, campaign drafts and launch with approval, conversations, lead context, next actions, follow-ups, activity log, website capture) plus keyless agent onboarding.
package/dist/api.d.ts CHANGED
@@ -16,7 +16,7 @@ export declare const DEFAULT_BASE = "https://coldleads.app";
16
16
  export declare const VERIFY_SERVER_BUDGET_MS = 4000;
17
17
  export declare const VERIFY_CLIENT_TIMEOUT_MS = 4900;
18
18
  export declare const DEFAULT_TIMEOUT_MS = 15000;
19
- export declare const USER_AGENT = "coldleads-mcp-server/1.0.0";
19
+ export declare const USER_AGENT = "coldleads-mcp-server/1.0.1";
20
20
  export declare class ColdLeadsClient {
21
21
  readonly baseUrl: string;
22
22
  private readonly fetchImpl;
package/dist/api.js CHANGED
@@ -1,8 +1,11 @@
1
+ // Thin client for the Cold Leads REST API v1 (https://coldleads.app/api/v1). No business logic here: limits,
2
+ // credits, verification and search all run on the server.
3
+ import { VERSION } from "./version.js";
1
4
  export const DEFAULT_BASE = "https://coldleads.app";
2
5
  export const VERIFY_SERVER_BUDGET_MS = 4000;
3
6
  export const VERIFY_CLIENT_TIMEOUT_MS = 4900;
4
7
  export const DEFAULT_TIMEOUT_MS = 15_000;
5
- export const USER_AGENT = "coldleads-mcp-server/1.0.0";
8
+ export const USER_AGENT = `coldleads-mcp-server/${VERSION}`;
6
9
  export class ColdLeadsClient {
7
10
  baseUrl;
8
11
  fetchImpl;
@@ -80,7 +83,7 @@ export class ColdLeadsClient {
80
83
  }
81
84
  async callHostedTool(name, args) {
82
85
  if (!this.hasKey())
83
- return { content: [{ type: "text", text: JSON.stringify({ status: "error", error: "missing_api_key", message: "Set COLDLEADS_API_KEY to a secret key (sk_…) to use workspace tools." }) }], isError: true };
86
+ return { content: [{ type: "text", text: JSON.stringify({ status: "error", error: "missing_api_key", message: "Set COLDLEADS_API_KEY to a secret key (sk_…) to use workspace tools. To try the tools without a key first, connect an MCP client to the no-key demo server https://coldleads.app/api/mcp/demo (sample data, never sends e-mail)." }) }], isError: true };
84
87
  if (!this.hostedNames && !(await this.hostedTools()).length)
85
88
  return { content: [{ type: "text", text: JSON.stringify({ status: "error", error: "unknown_tool", message: `Unknown Cold Leads tool: ${name}` }) }], isError: true };
86
89
  if (!this.hostedNames?.has(name))
package/dist/server.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
2
  import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
3
3
  import { LEADS_DEFAULT, LEADS_MAX, TOOLS } from "./tools.js";
4
- export const SERVER_INFO = { name: "coldleads", title: "Cold Leads", version: "1.0.0" };
5
- const INSTRUCTIONS = "Cold Leads tools: search and verify leads; import and manage workspace contacts; read conversations; send one message only after explicit user confirmation; manage templates and campaign drafts; launch campaigns only after human review and confirmation; check non-secret workspace settings; and set up website lead forms. Only authenticated workspace data is accessible. Never e-mail opted-out, bounced or do-not-contact addresses. Verification is not consent; the user needs a lawful basis to contact each person. Website forms create inquiry contacts and do not establish cold-outreach consent. Without an API key, provision_account_and_get_payment_link creates a payment link for the human owner to approve; check_provisioning_status then returns the key once.";
4
+ import { VERSION } from "./version.js";
5
+ export const SERVER_INFO = { name: "coldleads", title: "Cold Leads", version: VERSION };
6
+ const INSTRUCTIONS = "Cold Leads tools: search and verify leads; import and manage workspace contacts; read conversations; send one message only after explicit user confirmation; manage templates and campaign drafts; launch campaigns only after human review and confirmation; check non-secret workspace settings; and set up website lead forms. Only authenticated workspace data is accessible. Never e-mail opted-out, bounced or do-not-contact addresses. Verification is not consent; the user needs a lawful basis to contact each person. Website forms create inquiry contacts and do not establish cold-outreach consent. Without an API key, provision_account_and_get_payment_link creates a payment link for the human owner to approve; check_provisioning_status then returns the key once. To try the tools on sample data without a key, the user can connect the demo server https://coldleads.app/api/mcp/demo (never sends e-mail).";
6
7
  const text = (obj, isError = false) => ({ content: [{ type: "text", text: JSON.stringify(obj) }], ...(isError ? { isError: true } : {}) });
7
8
  const toolError = (error, message, extra = {}) => text({ status: "error", error, message, ...extra }, true);
8
9
  const MESSAGES = {
9
- missing_api_key: "COLDLEADS_API_KEY is not set. Create a secret key (sk_…) in Cold Leads → Settings → API keys (Business plan) and add it to the MCP server environment.",
10
+ missing_api_key: "COLDLEADS_API_KEY is not set. Create a secret key (sk_…) in Cold Leads → Settings → API keys (Business plan) and add it to the MCP server environment. To try the tools without a key first, connect an MCP client to the no-key demo server https://coldleads.app/api/mcp/demo (sample data, never sends e-mail).",
10
11
  bad_api_key: "The Cold Leads API key was rejected. Check COLDLEADS_API_KEY (a secret key starting with sk_).",
11
12
  publishable_key_not_allowed: "A publishable key (lk_…) cannot call the API; use a secret key (sk_…).",
12
13
  api_not_in_plan: "This Cold Leads plan does not include the API (Business plan required).",
@@ -0,0 +1 @@
1
+ export declare const VERSION = "1.0.1";
@@ -0,0 +1,2 @@
1
+ // Version reported to MCP clients (serverInfo) and in the User-Agent; test/version.test.ts keeps it equal to package.json.
2
+ export const VERSION = "1.0.1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coldleads/mcp-server",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Model Context Protocol server for Cold Leads (coldleads.app), the B2B outreach CRM: contacts, imports, e-mail verification, templates, campaign drafts, conversations, reply queue and follow-ups in your own workspace; sending needs explicit approval. Includes keyless agent onboarding.",
5
5
  "mcpName": "io.github.anttka4cz/mcp-server-coldleads",
6
6
  "type": "module",
@@ -11,7 +11,8 @@
11
11
  "files": [
12
12
  "dist",
13
13
  "README.md",
14
- "LICENSE"
14
+ "LICENSE",
15
+ "CHANGELOG.md"
15
16
  ],
16
17
  "engines": {
17
18
  "node": ">=20"