@agifyai/leadify-mcp 3.6.1 → 3.6.3

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/dist/server.js CHANGED
@@ -16,7 +16,7 @@ import { registerPipelineTools } from "./tools/pipeline.js";
16
16
  export function createServer() {
17
17
  const server = new McpServer({
18
18
  name: "leadify",
19
- version: "3.6.1",
19
+ version: "3.6.2",
20
20
  });
21
21
  registerAuthTools(server);
22
22
  registerOrganizationTools(server);
@@ -242,6 +242,11 @@ async function mergeAndPut(organizationId, dry_run, patcher, validationHint) {
242
242
  return toolResult(data);
243
243
  }
244
244
  // ─── Tool registrations ────────────────────────────────────────────────────
245
+ // ── get_outreach_context ─────────────────────────────────────────────────
246
+ // Dedicated tool for the outreach pipeline Phase 0. Single call replaces the
247
+ // old multi-step dance (get_data_room + org resolution + get_lead_group_persona)
248
+ // and eliminates the cross-org footgun by accepting lead_group_id instead of
249
+ // organization_id. The backend resolves the org server-side.
245
250
  export function registerDataRoomTools(server) {
246
251
  // ── get_data_room ──────────────────────────────────────────────────────
247
252
  server.tool("get_data_room", "Retrieve the organization's data room: company info (v2 schema) and all documents. " +
@@ -270,6 +275,27 @@ export function registerDataRoomTools(server) {
270
275
  return handleToolError(error);
271
276
  }
272
277
  });
278
+ // ── get_outreach_context ──────────────────────────────────────────────
279
+ server.tool("get_outreach_context", "Get a curated outreach context for a lead group: the outreach-relevant slice " +
280
+ "of companyInfo (identity, pitch, constraints, curated products, economics " +
281
+ "triggers/baseline, product ICP roles, proof wording) PLUS the full persona. " +
282
+ "Takes a lead_group_id (NOT organization_id) — the org is resolved server-side, " +
283
+ "eliminating the cross-org footgun of get_data_room. " +
284
+ "Returns a HARD error if no persona is linked to the group. " +
285
+ "Use this instead of get_data_room + get_lead_group_persona in the outreach " +
286
+ "pipeline Phase 0.", {
287
+ lead_group_id: z.string().describe("ID of the lead group to resolve context for."),
288
+ }, async ({ lead_group_id }) => {
289
+ try {
290
+ const params = new URLSearchParams();
291
+ params.set("lead_group_id", lead_group_id);
292
+ const data = await getClient().get("/api/outreach-context", params);
293
+ return toolResult(data);
294
+ }
295
+ catch (error) {
296
+ return handleToolError(error);
297
+ }
298
+ });
273
299
  // ── describe_company_info_schema ───────────────────────────────────────
274
300
  server.tool("describe_company_info_schema", "Return the companyInfo v2 schema mirrored at the MCP layer: all sections, enums, " +
275
301
  "max-length caps, required fields, and which patch tool owns each section. Call this " +
@@ -21,7 +21,7 @@ export function registerPipelineTools(server) {
21
21
  "`get_lead` call); the caller only needs `lead_id`. " +
22
22
  "The response is decorated with a Trigger.dev `traceUrl` deep-link when missing " +
23
23
  "(https://cloud.trigger.dev/runs/{runId}), so you can always jump to the trace. " +
24
- "Waits up to 120s for the remote agent to complete.", {
24
+ "Waits up to 300s for the remote agent to complete.", {
25
25
  lead_id: z.string().describe("ID of the lead to generate a message for."),
26
26
  dryrun: z
27
27
  .boolean()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agifyai/leadify-mcp",
3
- "version": "3.6.1",
3
+ "version": "3.6.3",
4
4
  "description": "MCP server for Leadify lead management API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",