@leadbay/mcp 0.10.0 → 0.11.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/CHANGELOG.md +17 -0
- package/README.md +11 -11
- package/dist/bin.js +750 -56
- package/dist/{chunk-F3EWCHME.js → chunk-MZZMIZXA.js} +58 -54
- package/dist/{dist-BHLIJAIH.js → dist-JZ2FLLN6.js} +1 -1
- package/package.json +1 -1
|
@@ -934,9 +934,17 @@ Contact: **[Irving Enciso](<linkedin URL>)**, Regional Operations Manager \xB7 \
|
|
|
934
934
|
|
|
935
935
|
Keep it short \u2014 1 lead per ~3 lines, top 3\u20135 most relevant. The LinkedIn-linked contact name lives here (chat markdown works), the channels are listed as \` \xB7 \`-separated pills. **Do NOT enumerate the same leads as a markdown table** \u2014 this list-form summary is the chat-side detail surface.
|
|
936
936
|
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
937
|
+
## Linking a contact's name
|
|
938
|
+
|
|
939
|
+
**MANDATORY: every contact name in your output \u2014 table cells, prose, headers, "Reach <Name>" callouts \u2014 MUST be wrapped in markdown link syntax \`[Name](URL)\`. Never render a contact name as bare text. A plain-text name is a broken contact card; the underlined name is the user's primary affordance for "take me to this person's profile". No "no URL available" exception \u2014 the search URL below is always constructable from name + company.**
|
|
940
|
+
|
|
941
|
+
URL priority (first applicable wins):
|
|
942
|
+
|
|
943
|
+
1. **Real profile** \u2014 \`contact.linkedin_page\` when it's a string starting with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it).
|
|
944
|
+
2. **Constructed people-search** \u2014 \`https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>\`. URL-encode params. Strip Inc / LLC / Corp / Ltd / GmbH / Co / S.A. / S.L. / PLC / AG / SAS / SARL suffixes from the company. Append a trailing \` \xB0\` to the rendered name ONLY when this fallback is in use AND \`social_presence.linkedin == false\`. Never append \`\xB0\` when a real \`linkedin_page\` was used.
|
|
945
|
+
|
|
946
|
+
Never link a person's name to the company's LinkedIn page (and vice versa) \u2014 the two surfaces are different and conflating them quietly degrades the workflow.
|
|
947
|
+
|
|
940
948
|
|
|
941
949
|
Open with **one short intro sentence** in chat ("Five lead visits across NYC for your trip next week \u2014 three in Midtown, plus Long Island and one in NJ.") and then invoke the widget, then the chat-side list above. **No markdown table.**
|
|
942
950
|
|
|
@@ -1546,19 +1554,14 @@ One line: \`+N more contacts at this company \u2014 [see them all](leadbay_resea
|
|
|
1546
1554
|
|
|
1547
1555
|
## Linking a contact's name
|
|
1548
1556
|
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
When the response carries a real contact LinkedIn URL \u2014 \`contact.linkedin_page\` is a string that starts with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it) \u2014 link the contact's name to that URL.
|
|
1552
|
-
|
|
1553
|
-
Otherwise fall back to a LinkedIn people-search URL:
|
|
1557
|
+
**MANDATORY: every contact name in your output \u2014 table cells, prose, headers, "Reach <Name>" callouts \u2014 MUST be wrapped in markdown link syntax \`[Name](URL)\`. Never render a contact name as bare text. A plain-text name is a broken contact card; the underlined name is the user's primary affordance for "take me to this person's profile". No "no URL available" exception \u2014 the search URL below is always constructable from name + company.**
|
|
1554
1558
|
|
|
1555
|
-
|
|
1556
|
-
https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>
|
|
1557
|
-
\`\`\`
|
|
1559
|
+
URL priority (first applicable wins):
|
|
1558
1560
|
|
|
1559
|
-
|
|
1561
|
+
1. **Real profile** \u2014 \`contact.linkedin_page\` when it's a string starting with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it).
|
|
1562
|
+
2. **Constructed people-search** \u2014 \`https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>\`. URL-encode params. Strip Inc / LLC / Corp / Ltd / GmbH / Co / S.A. / S.L. / PLC / AG / SAS / SARL suffixes from the company. Append a trailing \` \xB0\` to the rendered name ONLY when this fallback is in use AND \`social_presence.linkedin == false\`. Never append \`\xB0\` when a real \`linkedin_page\` was used.
|
|
1560
1563
|
|
|
1561
|
-
Never link a person's name to the company's LinkedIn page (and vice versa)
|
|
1564
|
+
Never link a person's name to the company's LinkedIn page (and vice versa) \u2014 the two surfaces are different and conflating them quietly degrades the workflow.
|
|
1562
1565
|
|
|
1563
1566
|
## Linking the company
|
|
1564
1567
|
|
|
@@ -1752,19 +1755,14 @@ Markers: \`\u2605\` recommended, \`\u{1F48E}\` hot in web_insights key_people. C
|
|
|
1752
1755
|
|
|
1753
1756
|
## Linking a contact's name
|
|
1754
1757
|
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
When the response carries a real contact LinkedIn URL \u2014 \`contact.linkedin_page\` is a string that starts with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it) \u2014 link the contact's name to that URL.
|
|
1758
|
-
|
|
1759
|
-
Otherwise fall back to a LinkedIn people-search URL:
|
|
1758
|
+
**MANDATORY: every contact name in your output \u2014 table cells, prose, headers, "Reach <Name>" callouts \u2014 MUST be wrapped in markdown link syntax \`[Name](URL)\`. Never render a contact name as bare text. A plain-text name is a broken contact card; the underlined name is the user's primary affordance for "take me to this person's profile". No "no URL available" exception \u2014 the search URL below is always constructable from name + company.**
|
|
1760
1759
|
|
|
1761
|
-
|
|
1762
|
-
https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>
|
|
1763
|
-
\`\`\`
|
|
1760
|
+
URL priority (first applicable wins):
|
|
1764
1761
|
|
|
1765
|
-
|
|
1762
|
+
1. **Real profile** \u2014 \`contact.linkedin_page\` when it's a string starting with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it).
|
|
1763
|
+
2. **Constructed people-search** \u2014 \`https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>\`. URL-encode params. Strip Inc / LLC / Corp / Ltd / GmbH / Co / S.A. / S.L. / PLC / AG / SAS / SARL suffixes from the company. Append a trailing \` \xB0\` to the rendered name ONLY when this fallback is in use AND \`social_presence.linkedin == false\`. Never append \`\xB0\` when a real \`linkedin_page\` was used.
|
|
1766
1764
|
|
|
1767
|
-
Never link a person's name to the company's LinkedIn page (and vice versa)
|
|
1765
|
+
Never link a person's name to the company's LinkedIn page (and vice versa) \u2014 the two surfaces are different and conflating them quietly degrades the workflow.
|
|
1768
1766
|
|
|
1769
1767
|
## Linking the company
|
|
1770
1768
|
|
|
@@ -1916,25 +1914,20 @@ If \`qualification_summary.answered == 0\` or \`avg_qualification_boost\` is nul
|
|
|
1916
1914
|
|
|
1917
1915
|
**Column 3 \u2014 Contact**
|
|
1918
1916
|
|
|
1919
|
-
\`[Contact name](LINK) \xB7 short job title\`. See linking/contact-linkedin for
|
|
1917
|
+
\`[Contact name](LINK) \xB7 short job title\`. The \`[Contact name](LINK)\` markdown link wrapping is mandatory \u2014 never render the name as plain text. See linking/contact-linkedin for the URL priority (real profile \u2192 constructed people-search) and the \xB0-flag fallback.
|
|
1920
1918
|
|
|
1921
1919
|
**Hide from the user (never include in any cell):** \`id\`, \`location.pos\`, \`location.country\` (unless city/state both missing), \`sector_id\`, \`is_hq\`, \`web_fetch_in_progress\`, \`enrichment_in_progress\`, \`highlighted_fields\`, \`custom_fields\`, \`contacts_count\` when 0, \`notes_count\` / \`epilogue_actions_count\` / \`prospecting_actions_count\` when 0, \`stale_at\`, \`deal_insights\`, \`social_presence\` booleans (except as the \xB0-flag signal), \`need_attention\` flags, any field whose value is the string \`"null"\`.
|
|
1922
1920
|
|
|
1923
1921
|
## Linking a contact's name
|
|
1924
1922
|
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
When the response carries a real contact LinkedIn URL \u2014 \`contact.linkedin_page\` is a string that starts with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it) \u2014 link the contact's name to that URL.
|
|
1928
|
-
|
|
1929
|
-
Otherwise fall back to a LinkedIn people-search URL:
|
|
1923
|
+
**MANDATORY: every contact name in your output \u2014 table cells, prose, headers, "Reach <Name>" callouts \u2014 MUST be wrapped in markdown link syntax \`[Name](URL)\`. Never render a contact name as bare text. A plain-text name is a broken contact card; the underlined name is the user's primary affordance for "take me to this person's profile". No "no URL available" exception \u2014 the search URL below is always constructable from name + company.**
|
|
1930
1924
|
|
|
1931
|
-
|
|
1932
|
-
https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>
|
|
1933
|
-
\`\`\`
|
|
1925
|
+
URL priority (first applicable wins):
|
|
1934
1926
|
|
|
1935
|
-
|
|
1927
|
+
1. **Real profile** \u2014 \`contact.linkedin_page\` when it's a string starting with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it).
|
|
1928
|
+
2. **Constructed people-search** \u2014 \`https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>\`. URL-encode params. Strip Inc / LLC / Corp / Ltd / GmbH / Co / S.A. / S.L. / PLC / AG / SAS / SARL suffixes from the company. Append a trailing \` \xB0\` to the rendered name ONLY when this fallback is in use AND \`social_presence.linkedin == false\`. Never append \`\xB0\` when a real \`linkedin_page\` was used.
|
|
1936
1929
|
|
|
1937
|
-
Never link a person's name to the company's LinkedIn page (and vice versa)
|
|
1930
|
+
Never link a person's name to the company's LinkedIn page (and vice versa) \u2014 the two surfaces are different and conflating them quietly degrades the workflow.
|
|
1938
1931
|
|
|
1939
1932
|
## Linking the company
|
|
1940
1933
|
|
|
@@ -2161,19 +2154,14 @@ If \`qualification[]\` is non-empty, append one collapsed line: \`"Qualification
|
|
|
2161
2154
|
|
|
2162
2155
|
## Linking a contact's name
|
|
2163
2156
|
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
When the response carries a real contact LinkedIn URL \u2014 \`contact.linkedin_page\` is a string that starts with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it) \u2014 link the contact's name to that URL.
|
|
2167
|
-
|
|
2168
|
-
Otherwise fall back to a LinkedIn people-search URL:
|
|
2157
|
+
**MANDATORY: every contact name in your output \u2014 table cells, prose, headers, "Reach <Name>" callouts \u2014 MUST be wrapped in markdown link syntax \`[Name](URL)\`. Never render a contact name as bare text. A plain-text name is a broken contact card; the underlined name is the user's primary affordance for "take me to this person's profile". No "no URL available" exception \u2014 the search URL below is always constructable from name + company.**
|
|
2169
2158
|
|
|
2170
|
-
|
|
2171
|
-
https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>
|
|
2172
|
-
\`\`\`
|
|
2159
|
+
URL priority (first applicable wins):
|
|
2173
2160
|
|
|
2174
|
-
|
|
2161
|
+
1. **Real profile** \u2014 \`contact.linkedin_page\` when it's a string starting with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it).
|
|
2162
|
+
2. **Constructed people-search** \u2014 \`https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>\`. URL-encode params. Strip Inc / LLC / Corp / Ltd / GmbH / Co / S.A. / S.L. / PLC / AG / SAS / SARL suffixes from the company. Append a trailing \` \xB0\` to the rendered name ONLY when this fallback is in use AND \`social_presence.linkedin == false\`. Never append \`\xB0\` when a real \`linkedin_page\` was used.
|
|
2175
2163
|
|
|
2176
|
-
Never link a person's name to the company's LinkedIn page (and vice versa)
|
|
2164
|
+
Never link a person's name to the company's LinkedIn page (and vice versa) \u2014 the two surfaces are different and conflating them quietly degrades the workflow.
|
|
2177
2165
|
|
|
2178
2166
|
## Linking the company
|
|
2179
2167
|
|
|
@@ -2354,19 +2342,14 @@ If \`qualification[]\` is non-empty, append one collapsed line: \`"Qualification
|
|
|
2354
2342
|
|
|
2355
2343
|
## Linking a contact's name
|
|
2356
2344
|
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
When the response carries a real contact LinkedIn URL \u2014 \`contact.linkedin_page\` is a string that starts with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it) \u2014 link the contact's name to that URL.
|
|
2360
|
-
|
|
2361
|
-
Otherwise fall back to a LinkedIn people-search URL:
|
|
2345
|
+
**MANDATORY: every contact name in your output \u2014 table cells, prose, headers, "Reach <Name>" callouts \u2014 MUST be wrapped in markdown link syntax \`[Name](URL)\`. Never render a contact name as bare text. A plain-text name is a broken contact card; the underlined name is the user's primary affordance for "take me to this person's profile". No "no URL available" exception \u2014 the search URL below is always constructable from name + company.**
|
|
2362
2346
|
|
|
2363
|
-
|
|
2364
|
-
https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>
|
|
2365
|
-
\`\`\`
|
|
2347
|
+
URL priority (first applicable wins):
|
|
2366
2348
|
|
|
2367
|
-
|
|
2349
|
+
1. **Real profile** \u2014 \`contact.linkedin_page\` when it's a string starting with \`https://\` (the MCP coerces the legacy literal \`"null"\` string to real null before you see it).
|
|
2350
|
+
2. **Constructed people-search** \u2014 \`https://www.linkedin.com/search/results/people/?keywords=<First>+<Last>+<Company>\`. URL-encode params. Strip Inc / LLC / Corp / Ltd / GmbH / Co / S.A. / S.L. / PLC / AG / SAS / SARL suffixes from the company. Append a trailing \` \xB0\` to the rendered name ONLY when this fallback is in use AND \`social_presence.linkedin == false\`. Never append \`\xB0\` when a real \`linkedin_page\` was used.
|
|
2368
2351
|
|
|
2369
|
-
Never link a person's name to the company's LinkedIn page (and vice versa)
|
|
2352
|
+
Never link a person's name to the company's LinkedIn page (and vice versa) \u2014 the two surfaces are different and conflating them quietly degrades the workflow.
|
|
2370
2353
|
|
|
2371
2354
|
## Linking the company
|
|
2372
2355
|
|
|
@@ -7601,6 +7584,27 @@ var accountStatus = {
|
|
|
7601
7584
|
_meta: {
|
|
7602
7585
|
type: "object",
|
|
7603
7586
|
properties: { region: { type: "string" } }
|
|
7587
|
+
},
|
|
7588
|
+
// Auto-update block. Populated by the MCP server wrapper (NOT this
|
|
7589
|
+
// composite) when a newer release is published on GitHub AND the
|
|
7590
|
+
// user hasn't suppressed it. When present, the agent should prompt
|
|
7591
|
+
// the user via ask_user_input_v0 with three options and route the
|
|
7592
|
+
// chosen action through leadbay_acknowledge_update.
|
|
7593
|
+
update_available: {
|
|
7594
|
+
type: ["object", "null"],
|
|
7595
|
+
properties: {
|
|
7596
|
+
current_version: { type: "string" },
|
|
7597
|
+
latest_version: { type: "string" },
|
|
7598
|
+
mcpb_url: {
|
|
7599
|
+
type: "string",
|
|
7600
|
+
description: "Direct download URL for the .mcpb installer asset."
|
|
7601
|
+
},
|
|
7602
|
+
release_url: {
|
|
7603
|
+
type: "string",
|
|
7604
|
+
description: "GitHub release page (changelog)."
|
|
7605
|
+
}
|
|
7606
|
+
},
|
|
7607
|
+
required: ["current_version", "latest_version", "mcpb_url", "release_url"]
|
|
7604
7608
|
}
|
|
7605
7609
|
},
|
|
7606
7610
|
required: ["user", "organization"]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leadbay/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"mcpName": "io.github.leadbay/leadbay-mcp",
|
|
5
5
|
"description": "Model Context Protocol (MCP) server for Leadbay — AI lead discovery, qualification, and enrichment for Claude Desktop, Cursor, and Claude Code.",
|
|
6
6
|
"type": "module",
|