@agifyai/leadify-mcp 8.1.0 → 8.1.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/README.md CHANGED
@@ -179,6 +179,8 @@ Conséquences pratiques :
179
179
  | Tool | Description |
180
180
  |------|-------------|
181
181
  | `test_api_key` | Vérifier que la clé API configurée est valide (health check). |
182
+ | `list_lead_groups` | Lister les groupes accessibles d'une organisation explicitement sélectionnée, en vue compacte. |
183
+ | `get_lead_group` | Consulter les métadonnées compactes d'un groupe accessible par son ID. |
182
184
  | `add_leads` | Ajouter un ou plusieurs leads à un groupe. |
183
185
  | `get_leads` | Rechercher et lister des leads avec filtres, recherche et pagination. |
184
186
  | `get_lead` | Récupérer les détails complets d'un lead par son ID. |
package/dist/server.js CHANGED
@@ -16,7 +16,7 @@ import { registerContextWorkspaceTools } from "./tools/context_workspace.js";
16
16
  export function createServer() {
17
17
  const server = new McpServer({
18
18
  name: "leadify",
19
- version: "8.1.0",
19
+ version: "8.1.1",
20
20
  });
21
21
  registerAuthTools(server);
22
22
  registerOrganizationTools(server);
@@ -1,3 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  export declare function assertLeadGroupsBelongToOrganization(data: unknown, organizationId: string): Array<Record<string, unknown>>;
3
+ /** Keep group reads navigable: never return schema, profiles, or lead data. */
4
+ export declare function compactLeadGroup(group: unknown): Record<string, unknown>;
3
5
  export declare function registerOrganizationTools(server: McpServer): void;
@@ -22,6 +22,28 @@ export function assertLeadGroupsBelongToOrganization(data, organizationId) {
22
22
  }
23
23
  return leadGroups;
24
24
  }
25
+ /** Keep group reads navigable: never return schema, profiles, or lead data. */
26
+ export function compactLeadGroup(group) {
27
+ const source = group && typeof group === "object" ? group : {};
28
+ const count = source._count && typeof source._count === "object"
29
+ ? source._count
30
+ : {};
31
+ return {
32
+ id: source.id,
33
+ name: source.name,
34
+ description: source.description ?? null,
35
+ organizationId: source.organizationId,
36
+ entityKind: source.entityKind ?? "GENERIC",
37
+ personaTypes: Array.isArray(source.personaTypes) ? source.personaTypes : [],
38
+ hasPersona: Boolean(source.personaId),
39
+ disabledTools: Array.isArray(source.disabledTools) ? source.disabledTools : [],
40
+ leadCount: typeof count.leads === "number" ? count.leads : 0,
41
+ published: source.published ?? false,
42
+ refreshEnabled: source.refreshEnabled ?? false,
43
+ refreshFrequencyDays: source.refreshFrequencyDays ?? null,
44
+ createdAt: source.createdAt ?? null,
45
+ };
46
+ }
25
47
  export function registerOrganizationTools(server) {
26
48
  // ── list_organizations ─────────────────────────────────────────────────
27
49
  server.tool("list_organizations", "List every organization accessible to the caller, returning each with id, name, and " +
@@ -64,6 +86,21 @@ export function registerOrganizationTools(server) {
64
86
  return handleToolError(error);
65
87
  }
66
88
  });
89
+ server.tool("get_lead_group", "Read the compact metadata of one accessible lead group by ID. Use this after list_lead_groups " +
90
+ "or discover_leadify_context to confirm its type and operational state. Returns only navigation " +
91
+ "metadata (no lead records, schema, company profile, or persona payload) and reports inaccessible " +
92
+ "groups as not found, without revealing their organization.", {
93
+ lead_group_id: z.string().describe("Lead group ID returned by Leadify discovery or another authorized Leadify response."),
94
+ }, async ({ lead_group_id }) => {
95
+ try {
96
+ const data = await getClient().get(`/api/lead-group/${encodeURIComponent(lead_group_id)}`);
97
+ const source = data && typeof data === "object" ? data : {};
98
+ return toolResult({ leadGroup: compactLeadGroup(source.leadGroup) });
99
+ }
100
+ catch (error) {
101
+ return handleToolError(error);
102
+ }
103
+ });
67
104
  server.tool("discover_leadify_context", "Safe zero-ID entry point for Leadify. With no organization_id, lists accessible organizations " +
68
105
  "and never chooses one when several are available. With an explicit organization_id, returns " +
69
106
  "a compact list of its lead groups. Use the returned lead_group_id with lead, campaign, persona " +
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agifyai/leadify-mcp",
3
- "version": "8.1.0",
3
+ "version": "8.1.1",
4
4
  "description": "MCP server for Leadify lead management API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",