@leadbay/mcp 0.37.0 → 0.38.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 CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog — @leadbay/mcp
2
2
 
3
+ ## 0.38.0 — 2026-09-10
4
+
5
+ `leadbay_account_status` now returns `mcp_version`, the version of the server
6
+ answering the call, on every call and on both the stdio and hosted servers.
7
+
8
+ Before this, an agent asked "what version of Leadbay are you running" had no
9
+ answer. The version reached the host only in `initialize`'s `serverInfo`, which
10
+ hosts keep out of the model's context, and in
11
+ `update_available.current_version`, which exists only while an update is
12
+ pending and never on hosted (`http-server.ts` wires no update store).
13
+
14
+ The server wrapper sets the field next to `update_available`; the composite's
15
+ `outputSchema` declares it, and the description gains a routing trigger and one
16
+ sentence telling the agent to answer version questions with it.
17
+
3
18
  ## 0.37.0 — 2026-09-08
4
19
 
5
20
  Expose the backend MCP-first delivery endpoints (`POST /1.6/mcp/search`,
package/dist/bin.js CHANGED
@@ -1599,7 +1599,7 @@ account resurfaced:
1599
1599
  `;
1600
1600
  leadbay_account_status = `## WHEN TO USE
1601
1601
 
1602
- Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits".
1602
+ Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits", "what version of Leadbay am I running".
1603
1603
 
1604
1604
  Do NOT use for: "show me leads" \u2192 \`leadbay_pull_leads\`.
1605
1605
 
@@ -1608,6 +1608,7 @@ Prefer when: meta question about account, quota, active lens, or top-up recovery
1608
1608
  Examples that SHOULD invoke this tool:
1609
1609
  - "What's my account status?"
1610
1610
  - "How much quota do I have left this week?"
1611
+ - "Which version of the Leadbay connector is this?"
1611
1612
 
1612
1613
  Examples that should NOT invoke this tool (sound similar, route elsewhere):
1613
1614
  - "Show me today's leads."
@@ -1633,6 +1634,8 @@ Show the user's account state \u2014 admin rights, language, last-active lens, q
1633
1634
 
1634
1635
  **After a user tops up, do NOT keep refusing \u2014 RETRY.** If the user signals they topped up / bought credits / added credits, the previous QUOTA_EXCEEDED is invalidated the moment the Stripe webhook lands. RE-CALL \`leadbay_account_status\` to pick up the new state AND retry the originally failed call. The retry itself does not require a successful account_status check first \u2014 a topped-up user has cleared the throttle whether or not your cached snapshot reflects it yet. If the retry hits the wall again, only then re-offer top-up / wait. **A stale quota snapshot is never a reason to gate-keep a topped-up user.**
1635
1636
 
1637
+ **\`mcp_version\`** is the version of the Leadbay MCP server answering the call. When the user asks which Leadbay version they are running, answer with it.
1638
+
1636
1639
  **\`notifications\` block.** The response now includes a top-level \`notifications\` array listing background work the user (or agent) initiated that has since completed (\`bulk_enrich\`, \`bulk_qualify\`, \`import\`). These are signals to revise prior agent outputs the just-finished work might have made stale \u2014 they're NOT a pending-task list for the user. After revising (or confirming nothing is affected), call \`leadbay_acknowledge_notification(notification_id)\`. Full handling protocol below.
1637
1640
 
1638
1641
  ## GATE \u2014 INSPECT \`_meta.notifications\` ON EVERY RESPONSE
@@ -6946,7 +6949,7 @@ This tool MUTATES state. The caller (agent or human-in-the-loop) is responsible
6946
6949
  NO_COMMERCE_TOOL_DESCRIPTIONS = {
6947
6950
  leadbay_account_status: `## WHEN TO USE
6948
6951
 
6949
- Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits".
6952
+ Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits", "what version of Leadbay am I running".
6950
6953
 
6951
6954
  Do NOT use for: "show me leads" \u2192 \`leadbay_pull_leads\`.
6952
6955
 
@@ -6955,6 +6958,7 @@ Prefer when: meta question about account, quota, active lens, or top-up recovery
6955
6958
  Examples that SHOULD invoke this tool:
6956
6959
  - "What's my account status?"
6957
6960
  - "How much quota do I have left this week?"
6961
+ - "Which version of the Leadbay connector is this?"
6958
6962
 
6959
6963
  Examples that should NOT invoke this tool (sound similar, route elsewhere):
6960
6964
  - "Show me today's leads."
@@ -6976,6 +6980,8 @@ Show the user's account state \u2014 admin rights, language, last-active lens, q
6976
6980
 
6977
6981
  **After a user tops up, do NOT keep refusing \u2014 RETRY.** If the user signals they topped up / bought credits / added credits, the previous QUOTA_EXCEEDED is invalidated the moment the Stripe webhook lands. RE-CALL \`leadbay_account_status\` to pick up the new state AND retry the originally failed call. The retry itself does not require a successful account_status check first \u2014 a topped-up user has cleared the throttle whether or not your cached snapshot reflects it yet. **A stale quota snapshot is never a reason to gate-keep a topped-up user.**
6978
6982
 
6983
+ **\`mcp_version\`** is the version of the Leadbay MCP server answering the call. When the user asks which Leadbay version they are running, answer with it.
6984
+
6979
6985
  **\`notifications\` block.** The response now includes a top-level \`notifications\` array listing background work the user (or agent) initiated that has since completed (\`bulk_enrich\`, \`bulk_qualify\`, \`import\`). These are signals to revise prior agent outputs the just-finished work might have made stale \u2014 they're NOT a pending-task list for the user. After revising (or confirming nothing is affected), call \`leadbay_acknowledge_notification(notification_id)\`. Full handling protocol below.
6980
6986
 
6981
6987
  ## GATE \u2014 INSPECT \`_meta.notifications\` ON EVERY RESPONSE
@@ -17796,6 +17802,11 @@ var init_account_status = __esm({
17796
17802
  agent_memory: { type: "object" }
17797
17803
  }
17798
17804
  },
17805
+ // Set by the MCP server wrapper (NOT this composite) on every call.
17806
+ mcp_version: {
17807
+ type: "string",
17808
+ description: "Version of the Leadbay MCP server answering this call. Answer 'what version of Leadbay are you running' with this value."
17809
+ },
17799
17810
  // Auto-update block. Populated by the MCP server wrapper (NOT this
17800
17811
  // composite) when a newer release is published on GitHub AND the
17801
17812
  // user hasn't suppressed it. When present, the agent should prompt
@@ -29136,6 +29147,9 @@ ${url}
29136
29147
  }) === true
29137
29148
  }));
29138
29149
  await maybeAttachUpdate(name, result);
29150
+ if (name === "leadbay_account_status" && result !== null && typeof result === "object" && !Array.isArray(result) && result.error !== true) {
29151
+ result.mcp_version = serverVersion;
29152
+ }
29139
29153
  maybeAttachNotifications(result);
29140
29154
  if (result && typeof result === "object" && result.error === true) {
29141
29155
  const envText = formatErrorForLLM(result);
@@ -30787,7 +30801,7 @@ var OAUTH_BASE_URLS = {
30787
30801
  fr: "https://staging.api.leadbay.app"
30788
30802
  }
30789
30803
  };
30790
- var VERSION = "0.37.0";
30804
+ var VERSION = "0.38.0";
30791
30805
  var HELP = `
30792
30806
  leadbay-mcp ${VERSION} \u2014 Leadbay Model Context Protocol server
30793
30807
 
@@ -4545,7 +4545,7 @@ account resurfaced:
4545
4545
  `;
4546
4546
  var leadbay_account_status = `## WHEN TO USE
4547
4547
 
4548
- Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits".
4548
+ Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits", "what version of Leadbay am I running".
4549
4549
 
4550
4550
  Do NOT use for: "show me leads" \u2192 \`leadbay_pull_leads\`.
4551
4551
 
@@ -4554,6 +4554,7 @@ Prefer when: meta question about account, quota, active lens, or top-up recovery
4554
4554
  Examples that SHOULD invoke this tool:
4555
4555
  - "What's my account status?"
4556
4556
  - "How much quota do I have left this week?"
4557
+ - "Which version of the Leadbay connector is this?"
4557
4558
 
4558
4559
  Examples that should NOT invoke this tool (sound similar, route elsewhere):
4559
4560
  - "Show me today's leads."
@@ -4579,6 +4580,8 @@ Show the user's account state \u2014 admin rights, language, last-active lens, q
4579
4580
 
4580
4581
  **After a user tops up, do NOT keep refusing \u2014 RETRY.** If the user signals they topped up / bought credits / added credits, the previous QUOTA_EXCEEDED is invalidated the moment the Stripe webhook lands. RE-CALL \`leadbay_account_status\` to pick up the new state AND retry the originally failed call. The retry itself does not require a successful account_status check first \u2014 a topped-up user has cleared the throttle whether or not your cached snapshot reflects it yet. If the retry hits the wall again, only then re-offer top-up / wait. **A stale quota snapshot is never a reason to gate-keep a topped-up user.**
4581
4582
 
4583
+ **\`mcp_version\`** is the version of the Leadbay MCP server answering the call. When the user asks which Leadbay version they are running, answer with it.
4584
+
4582
4585
  **\`notifications\` block.** The response now includes a top-level \`notifications\` array listing background work the user (or agent) initiated that has since completed (\`bulk_enrich\`, \`bulk_qualify\`, \`import\`). These are signals to revise prior agent outputs the just-finished work might have made stale \u2014 they're NOT a pending-task list for the user. After revising (or confirming nothing is affected), call \`leadbay_acknowledge_notification(notification_id)\`. Full handling protocol below.
4583
4586
 
4584
4587
  ## GATE \u2014 INSPECT \`_meta.notifications\` ON EVERY RESPONSE
@@ -9892,7 +9895,7 @@ This tool MUTATES state. The caller (agent or human-in-the-loop) is responsible
9892
9895
  var NO_COMMERCE_TOOL_DESCRIPTIONS = {
9893
9896
  leadbay_account_status: `## WHEN TO USE
9894
9897
 
9895
- Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits".
9898
+ Trigger phrases: "what's my account status", "how much quota do I have", "what lens am I on", "I topped up / I bought credits / I added credits", "what version of Leadbay am I running".
9896
9899
 
9897
9900
  Do NOT use for: "show me leads" \u2192 \`leadbay_pull_leads\`.
9898
9901
 
@@ -9901,6 +9904,7 @@ Prefer when: meta question about account, quota, active lens, or top-up recovery
9901
9904
  Examples that SHOULD invoke this tool:
9902
9905
  - "What's my account status?"
9903
9906
  - "How much quota do I have left this week?"
9907
+ - "Which version of the Leadbay connector is this?"
9904
9908
 
9905
9909
  Examples that should NOT invoke this tool (sound similar, route elsewhere):
9906
9910
  - "Show me today's leads."
@@ -9922,6 +9926,8 @@ Show the user's account state \u2014 admin rights, language, last-active lens, q
9922
9926
 
9923
9927
  **After a user tops up, do NOT keep refusing \u2014 RETRY.** If the user signals they topped up / bought credits / added credits, the previous QUOTA_EXCEEDED is invalidated the moment the Stripe webhook lands. RE-CALL \`leadbay_account_status\` to pick up the new state AND retry the originally failed call. The retry itself does not require a successful account_status check first \u2014 a topped-up user has cleared the throttle whether or not your cached snapshot reflects it yet. **A stale quota snapshot is never a reason to gate-keep a topped-up user.**
9924
9928
 
9929
+ **\`mcp_version\`** is the version of the Leadbay MCP server answering the call. When the user asks which Leadbay version they are running, answer with it.
9930
+
9925
9931
  **\`notifications\` block.** The response now includes a top-level \`notifications\` array listing background work the user (or agent) initiated that has since completed (\`bulk_enrich\`, \`bulk_qualify\`, \`import\`). These are signals to revise prior agent outputs the just-finished work might have made stale \u2014 they're NOT a pending-task list for the user. After revising (or confirming nothing is affected), call \`leadbay_acknowledge_notification(notification_id)\`. Full handling protocol below.
9926
9932
 
9927
9933
  ## GATE \u2014 INSPECT \`_meta.notifications\` ON EVERY RESPONSE
@@ -20075,6 +20081,11 @@ var accountStatus = {
20075
20081
  agent_memory: { type: "object" }
20076
20082
  }
20077
20083
  },
20084
+ // Set by the MCP server wrapper (NOT this composite) on every call.
20085
+ mcp_version: {
20086
+ type: "string",
20087
+ description: "Version of the Leadbay MCP server answering this call. Answer 'what version of Leadbay are you running' with this value."
20088
+ },
20078
20089
  // Auto-update block. Populated by the MCP server wrapper (NOT this
20079
20090
  // composite) when a newer release is published on GitHub AND the
20080
20091
  // user hasn't suppressed it. When present, the agent should prompt
@@ -27716,6 +27727,9 @@ ${url}
27716
27727
  }) === true
27717
27728
  }));
27718
27729
  await maybeAttachUpdate(name, result);
27730
+ if (name === "leadbay_account_status" && result !== null && typeof result === "object" && !Array.isArray(result) && result.error !== true) {
27731
+ result.mcp_version = serverVersion;
27732
+ }
27719
27733
  maybeAttachNotifications(result);
27720
27734
  if (result && typeof result === "object" && result.error === true) {
27721
27735
  const envText = formatErrorForLLM(result);
@@ -28112,7 +28126,7 @@ function parseWriteEnv(env = process.env) {
28112
28126
  }
28113
28127
 
28114
28128
  // src/http-server.ts
28115
- var VERSION = true ? "0.37.0" : "0.0.0-dev";
28129
+ var VERSION = true ? "0.38.0" : "0.0.0-dev";
28116
28130
  var PORT = Number(process.env.PORT ?? 8080);
28117
28131
  var HOST = process.env.HOST ?? "0.0.0.0";
28118
28132
  var logger = {
@@ -1805,7 +1805,7 @@ var init_installer_gui = __esm({
1805
1805
  init_install_dxt();
1806
1806
  init_install_shared();
1807
1807
  init_oauth();
1808
- VERSION = true ? "0.37.0" : "0.0.0-dev";
1808
+ VERSION = true ? "0.38.0" : "0.0.0-dev";
1809
1809
  MESSAGES = {
1810
1810
  en: {
1811
1811
  installer: {
@@ -1068,7 +1068,7 @@ async function oauthLogin(opts) {
1068
1068
  }
1069
1069
 
1070
1070
  // installer/installer-gui.ts
1071
- var VERSION = true ? "0.37.0" : "0.0.0-dev";
1071
+ var VERSION = true ? "0.38.0" : "0.0.0-dev";
1072
1072
  var MESSAGES = {
1073
1073
  en: {
1074
1074
  installer: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leadbay/mcp",
3
- "version": "0.37.0",
3
+ "version": "0.38.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",