@agifyai/leadify-mcp 9.8.0 → 9.9.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.
package/README.md
CHANGED
|
@@ -581,7 +581,9 @@ Gmail confirmé, sans message Gmail en attente ou inconnu. Les invitations sont
|
|
|
581
581
|
comptées séparément. `replies_to_handle` sélectionne les réponses à traiter dans
|
|
582
582
|
leur propre fil. `filters.signal_filter` accepte `detected_since`,
|
|
583
583
|
`detected_before`, `levels` (`STRONG`, `GOLDEN`, `CRITICAL`) et `scope`
|
|
584
|
-
(`PERSON`, `COMPANY`, `BOTH`).
|
|
584
|
+
(`PERSON`, `COMPANY`, `BOTH`). `filters.qualified: true` garde les personnes
|
|
585
|
+
dont la qualification est terminée ; `filters.qualification_levels` (`hot`,
|
|
586
|
+
`warm`, `cold`, de une à trois valeurs) filtre la température (PRD-2650). L'absence d'historique connu n'est pas la preuve
|
|
585
587
|
qu'une personne n'a jamais été contactée.
|
|
586
588
|
|
|
587
589
|
La sélection expire après dix minutes. Passer son `nextCursor` dans `cursor` avec
|
|
@@ -91,7 +91,7 @@ export function registerAgentOutreachTools(server, client = getClient()) {
|
|
|
91
91
|
}
|
|
92
92
|
register("list_outreach_programs", "List compact accessible autonomous outreach programs and the server contract version. Pagination: pass nextCursor unchanged as after_id.", z.object({ organization_id: identifier, after_id: identifier.optional(), limit: z.number().int().min(1).max(50).default(25) }).strict(), async (v) => requireOutreachVersion(await client.get("/api/agent-outreach/programs", params(v.organization_id, { afterId: v.after_id, limit: v.limit })), "1.0.0"));
|
|
93
93
|
register("get_outreach_program_context", "Read one program's rules, authorization revision and permitted sender identities. Cannot authorize, resume, raise caps, grant rights or change senders.", z.object(scope).strict(), async (v) => requireOutreachVersion(await client.get(programPath(v.program_id), params(v.organization_id)), "1.0.0"));
|
|
94
|
-
register("query_outreach_prospects", "Select canonical people server-side before pagination. Recipes: followup_due = seven days without pending/unknown/reply; channel_gap = LinkedIn messages >=2 and Gmail=0; replies_to_handle. For 72 hours set filters.last_confirmed_outbound_before.before to an explicit ISO timestamp. Signal filters support detection dates, levels and person/company scope. Keep cursor, filters and limit identical on continuation; selections expire after ten minutes. An incomplete history never proves no previous contact.", querySchema, async (v) => requireOutreachVersion(await client.post(postPath(`${programPath(v.program_id)}/prospects/query`, v.organization_id), queryBody(v)), "1.0.0"));
|
|
94
|
+
register("query_outreach_prospects", "Select canonical people server-side before pagination. Recipes: followup_due = seven days without pending/unknown/reply; channel_gap = LinkedIn messages >=2 and Gmail=0; replies_to_handle. For 72 hours set filters.last_confirmed_outbound_before.before to an explicit ISO timestamp. Signal filters support detection dates, levels and person/company scope. filters.qualified:true keeps the people whose qualification is finished; filters.qualification_levels (hot, warm, cold; 1 to 3 values) filters the temperature. Keep cursor, filters and limit identical on continuation; selections expire after ten minutes. An incomplete history never proves no previous contact.", querySchema, async (v) => requireOutreachVersion(await client.post(postPath(`${programPath(v.program_id)}/prospects/query`, v.organization_id), queryBody(v)), "1.0.0"));
|
|
95
95
|
const personSchema = z.object({ ...scope, lead_id: identifier }).strict();
|
|
96
96
|
register("get_outreach_prospect_summary", "Read a selected person's compact identity, contact counts and selection reasons. This is NOT the writing context: use get_outreach_prospect_context before drafting.", personSchema, v => client.get(`${programPath(v.program_id)}/prospects/${encoded(v.lead_id)}`, params(v.organization_id)));
|
|
97
97
|
register("get_outreach_contact_history", "Read confirmed contact evidence for one person across accessible accounts, including pending, unknown and manual activity. Coverage limits remain explicit.", personSchema, v => client.get(`${programPath(v.program_id)}/contacts/${encoded(v.lead_id)}`, params(v.organization_id)));
|
|
@@ -99,6 +99,8 @@ export declare const filters: z.ZodObject<{
|
|
|
99
99
|
unknown: z.ZodOptional<z.ZodBoolean>;
|
|
100
100
|
reply: z.ZodOptional<z.ZodEnum<["TO_HANDLE", "WAITING", "NONE"]>>;
|
|
101
101
|
excluded: z.ZodOptional<z.ZodBoolean>;
|
|
102
|
+
qualified: z.ZodOptional<z.ZodBoolean>;
|
|
103
|
+
qualification_levels: z.ZodOptional<z.ZodArray<z.ZodEnum<["hot", "warm", "cold"]>, "many">>;
|
|
102
104
|
}, "strict", z.ZodTypeAny, {
|
|
103
105
|
group_id?: string | undefined;
|
|
104
106
|
unknown?: boolean | undefined;
|
|
@@ -125,6 +127,8 @@ export declare const filters: z.ZodObject<{
|
|
|
125
127
|
pending?: boolean | undefined;
|
|
126
128
|
reply?: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
127
129
|
excluded?: boolean | undefined;
|
|
130
|
+
qualified?: boolean | undefined;
|
|
131
|
+
qualification_levels?: ("hot" | "warm" | "cold")[] | undefined;
|
|
128
132
|
}, {
|
|
129
133
|
group_id?: string | undefined;
|
|
130
134
|
unknown?: boolean | undefined;
|
|
@@ -151,6 +155,8 @@ export declare const filters: z.ZodObject<{
|
|
|
151
155
|
pending?: boolean | undefined;
|
|
152
156
|
reply?: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
153
157
|
excluded?: boolean | undefined;
|
|
158
|
+
qualified?: boolean | undefined;
|
|
159
|
+
qualification_levels?: ("hot" | "warm" | "cold")[] | undefined;
|
|
154
160
|
}>;
|
|
155
161
|
export declare const contextModules: z.ZodObject<{
|
|
156
162
|
prospect: z.ZodString;
|
|
@@ -970,6 +976,8 @@ export declare const querySchema: z.ZodObject<{
|
|
|
970
976
|
unknown: z.ZodOptional<z.ZodBoolean>;
|
|
971
977
|
reply: z.ZodOptional<z.ZodEnum<["TO_HANDLE", "WAITING", "NONE"]>>;
|
|
972
978
|
excluded: z.ZodOptional<z.ZodBoolean>;
|
|
979
|
+
qualified: z.ZodOptional<z.ZodBoolean>;
|
|
980
|
+
qualification_levels: z.ZodOptional<z.ZodArray<z.ZodEnum<["hot", "warm", "cold"]>, "many">>;
|
|
973
981
|
}, "strict", z.ZodTypeAny, {
|
|
974
982
|
group_id?: string | undefined;
|
|
975
983
|
unknown?: boolean | undefined;
|
|
@@ -996,6 +1004,8 @@ export declare const querySchema: z.ZodObject<{
|
|
|
996
1004
|
pending?: boolean | undefined;
|
|
997
1005
|
reply?: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
998
1006
|
excluded?: boolean | undefined;
|
|
1007
|
+
qualified?: boolean | undefined;
|
|
1008
|
+
qualification_levels?: ("hot" | "warm" | "cold")[] | undefined;
|
|
999
1009
|
}, {
|
|
1000
1010
|
group_id?: string | undefined;
|
|
1001
1011
|
unknown?: boolean | undefined;
|
|
@@ -1022,6 +1032,8 @@ export declare const querySchema: z.ZodObject<{
|
|
|
1022
1032
|
pending?: boolean | undefined;
|
|
1023
1033
|
reply?: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
1024
1034
|
excluded?: boolean | undefined;
|
|
1035
|
+
qualified?: boolean | undefined;
|
|
1036
|
+
qualification_levels?: ("hot" | "warm" | "cold")[] | undefined;
|
|
1025
1037
|
}>>;
|
|
1026
1038
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
1027
1039
|
cursor: z.ZodOptional<z.ZodString>;
|
|
@@ -1054,6 +1066,8 @@ export declare const querySchema: z.ZodObject<{
|
|
|
1054
1066
|
pending?: boolean | undefined;
|
|
1055
1067
|
reply?: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
1056
1068
|
excluded?: boolean | undefined;
|
|
1069
|
+
qualified?: boolean | undefined;
|
|
1070
|
+
qualification_levels?: ("hot" | "warm" | "cold")[] | undefined;
|
|
1057
1071
|
};
|
|
1058
1072
|
limit: number;
|
|
1059
1073
|
organization_id: string;
|
|
@@ -1090,6 +1104,8 @@ export declare const querySchema: z.ZodObject<{
|
|
|
1090
1104
|
pending?: boolean | undefined;
|
|
1091
1105
|
reply?: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
1092
1106
|
excluded?: boolean | undefined;
|
|
1107
|
+
qualified?: boolean | undefined;
|
|
1108
|
+
qualification_levels?: ("hot" | "warm" | "cold")[] | undefined;
|
|
1093
1109
|
} | undefined;
|
|
1094
1110
|
limit?: number | undefined;
|
|
1095
1111
|
cursor?: string | undefined;
|
|
@@ -1761,6 +1777,8 @@ export declare function queryBody(v: z.infer<typeof querySchema>): {
|
|
|
1761
1777
|
unknown: boolean | undefined;
|
|
1762
1778
|
reply: "TO_HANDLE" | "WAITING" | "NONE" | undefined;
|
|
1763
1779
|
excluded: boolean | undefined;
|
|
1780
|
+
qualified: boolean | undefined;
|
|
1781
|
+
qualificationLevels: ("hot" | "warm" | "cold")[] | undefined;
|
|
1764
1782
|
};
|
|
1765
1783
|
};
|
|
1766
1784
|
export declare function decisionBody(d: z.infer<typeof decision>): {
|
|
@@ -21,6 +21,8 @@ export const filters = z.object({
|
|
|
21
21
|
last_confirmed_outbound_before: z.object({ channel: z.enum(["any", "GMAIL", "LINKEDIN"]), before: date }).strict().optional(),
|
|
22
22
|
counts: z.array(count).max(6).optional(), never_on: z.array(target).max(3).optional(),
|
|
23
23
|
pending: z.boolean().optional(), unknown: z.boolean().optional(), reply: z.enum(["TO_HANDLE", "WAITING", "NONE"]).optional(), excluded: z.boolean().optional(),
|
|
24
|
+
// PRD-2650 (server: PRD-2649): qualification finished, and its temperature.
|
|
25
|
+
qualified: z.boolean().optional(), qualification_levels: z.array(z.enum(["hot", "warm", "cold"])).min(1).max(3).optional(),
|
|
24
26
|
}).strict();
|
|
25
27
|
// PRD-2632 : one fingerprint per module, copied from get_outreach_context_summary.decisionContext.modules.
|
|
26
28
|
export const contextModules = z.object({ prospect: version, company: version, workspace: version, company_brain: version, vertical: version, offers: version,
|
|
@@ -89,6 +91,7 @@ export function queryBody(v) {
|
|
|
89
91
|
groupId: f.group_id, signalFilter: f.signal_filter && { detectedSince: f.signal_filter.detected_since, detectedBefore: f.signal_filter.detected_before, levels: f.signal_filter.levels, scope: f.signal_filter.scope },
|
|
90
92
|
lastConfirmedOutboundBefore: f.last_confirmed_outbound_before, counts: f.counts, neverOn: f.never_on,
|
|
91
93
|
pending: f.pending, unknown: f.unknown, reply: f.reply, excluded: f.excluded,
|
|
94
|
+
qualified: f.qualified, qualificationLevels: f.qualification_levels,
|
|
92
95
|
} };
|
|
93
96
|
}
|
|
94
97
|
export function decisionBody(d) {
|