@finchagentic/mcp 4.7.0 → 4.7.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/dist/cli.js CHANGED
@@ -64,7 +64,7 @@ const CORE_TOOL_COUNT = (() => {
64
64
  process.env.FINCH_TOOLS = prev;
65
65
  }
66
66
  })();
67
- const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://befitting-porcupine-276.convex.site";
67
+ const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://valuable-fish-533.convex.site";
68
68
  const PKG_VERSION = (() => {
69
69
  try {
70
70
  const raw = fs.readFileSync(path.join(__dirname, "..", "package.json"), "utf8");
@@ -896,7 +896,7 @@ async function doctorFlow() {
896
896
  checks.push({
897
897
  name: "Backend reachable", status: "✗",
898
898
  detail: `${CONVEX_SITE} → ${err.message}`,
899
- fix: `Network issue or wrong URL. Default: https://befitting-porcupine-276.convex.site`,
899
+ fix: `Network issue or wrong URL. Default: https://valuable-fish-533.convex.site`,
900
900
  });
901
901
  }
902
902
  // 3. Auth state
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  const config_js_1 = require("./config.js");
3
+ const convex_js_1 = require("./convex.js");
3
4
  exports.FINCH_STATUS_TOOL = {
4
5
  name: "finch_status",
5
6
  description: "Check Finch MCP is working - no sign-in needed. Returns the version, how many tools are available, whether the session token is configured, and a ready-to-paste MCP client config snippet. Run this FIRST if anything feels off: it tells you instantly whether the problem is auth (missing token), network (backend unreachable), or the tool itself.",
@@ -7,13 +8,35 @@ exports.FINCH_STATUS_TOOL = {
7
8
  annotations: { title: "Finch status", readOnlyHint: true, openWorldHint: false },
8
9
  };
9
10
 
10
- // `finch_status` handler - fully local, never touches the backend, never auths.
11
+ // `finch_status` handler - never throws on auth; when a token is configured
12
+ // it makes ONE cheap authed call (/memory/profile) and reports the REAL
13
+ // auth state instead of a fake-healthy dashboard (the old Promise.allSettled
14
+ // version swallowed 401s and showed empty-but-healthy, which hid expired
15
+ // credentials entirely).
11
16
  exports.handleFinchStatus = async function handleFinchStatus() {
12
17
  const pkg = require("./../package.json");
13
18
  let tokenSet = false;
19
+ let authState = "none";
20
+ let authDetail = "";
14
21
  try {
15
22
  tokenSet = Boolean((0, config_js_1.getSavedToken)());
16
23
  } catch { tokenSet = false; }
24
+ if (tokenSet) {
25
+ try {
26
+ const data = await (0, convex_js_1.callConvex)("/memory/profile", "GET", undefined, "finch_status", 8000, true);
27
+ authState = (data?.status === "ok") ? "valid" : "rejected";
28
+ if (authState === "rejected") authDetail = "the session token was rejected by the backend - re-copy it from app.finchagentic.com";
29
+ } catch (err) {
30
+ const msg = String(err?.message ?? err);
31
+ if (msg.includes("Authentication required")) {
32
+ authState = "invalid";
33
+ authDetail = "the backend rejected the token as expired or invalid - re-copy it from app.finchagentic.com";
34
+ } else {
35
+ authState = "unreachable";
36
+ authDetail = msg.slice(0, 120);
37
+ }
38
+ }
39
+ }
17
40
  const configJson = JSON.stringify({
18
41
  mcpServers: {
19
42
  finch: {
@@ -23,16 +46,25 @@ exports.handleFinchStatus = async function handleFinchStatus() {
23
46
  },
24
47
  },
25
48
  }, null, 2);
26
- const lines = tokenSet
49
+ const lines = tokenSet && authState === "valid"
27
50
  ? [
28
51
  "**Finch MCP v" + pkg.version + "** - runtime layer for agentic AI", "",
29
- "- Session token: \u2705 configured",
52
+ "- Session token: \u2705 valid (verified against the backend)",
30
53
  "- Tools: **116** registered (surface depends on FINCH_TOOLS filter)",
31
54
  "- Resources: finch://vault/<key> - Prompts: crypto-thesis and friends",
32
55
  "- Tool presets: FINCH_PRESET=core|defi|research|memory (default core) - FINCH_TOOLS=all for everything",
33
56
  "",
34
57
  "All set. Good first calls: `memory_add` (persist a note instantly), `get_market` (live prices), `deep_research` (multi-step reports, streaming progress).",
35
58
  ]
59
+ : tokenSet
60
+ ? [
61
+ "**Finch MCP v" + pkg.version + "** - runtime layer for agentic AI", "",
62
+ `- Session token: \u26a0\ufe0f configured but **${authState}**`,
63
+ authDetail ? `- ${authDetail}` : "",
64
+ "- Tools are registered, but every backend-backed call will fail until the token is replaced.",
65
+ "",
66
+ "**Fix:** re-copy a fresh token from app.finchagentic.com, update FINCH_SESSION_TOKEN in your MCP config, restart the client.",
67
+ ]
36
68
  : [
37
69
  "**Finch MCP v" + pkg.version + "** - runtime layer for agentic AI", "",
38
70
  "- Session token: \u274c not set", "",
package/dist/index.js CHANGED
@@ -54,7 +54,7 @@ const PKG_VERSION = (() => {
54
54
  return "unknown";
55
55
  }
56
56
  })();
57
- const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://befitting-porcupine-276.convex.site";
57
+ const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://valuable-fish-533.convex.site";
58
58
  // ── ANSI helpers ──────────────────────────────────────────────────────────────
59
59
  const C = {
60
60
  cyan: "\x1b[36m",
package/dist/server.js CHANGED
@@ -132,7 +132,8 @@ exports.ALL_TOOLS = [
132
132
  ...rh_orders_js_1.RH_ORDER_TOOLS, // 5 - rh_dca_create, rh_bracket_create, rh_orders_list, rh_order_cancel, rh_orders_tick (RH automated DCA/TP/SL)
133
133
  ...rh_bridge_js_1.BRIDGE_TOOLS, // 1 - rh_stock_bridge (tokenized stock vs real equity)
134
134
  ...memory_js_1.MEMORY_TOOLS, // 9 - memory_add, memory_search, memory_context, memory_profile, memory_list, memory_delete, memory_insight, memory_extract, memory_consolidate. memory_publish removed - promised a "Memory Marketplace" that doesn't exist at any layer (no browse route, no query, no UI), see tools/memory.ts
135
- ...os_js_1.OS_TOOLS, // 3 - finch_status, finch_diagnostics, finch_shell_chat
135
+ ...os_js_1.OS_TOOLS.filter((t) => t.name !== "finch_status"), // finch_status lives in finch-status.js (dedup)
136
+ // 2 - finch_diagnostics, finch_shell_chat
136
137
  ...research_js_1.RESEARCH_TOOLS, // 2 - web_scrape, web_search
137
138
  ...deep_research_js_1.DEEP_RESEARCH_TOOLS, // 1 - deep_research (search → scrape → rank → cited evidence pack; caller synthesises)
138
139
  ...research_compare_js_1.RESEARCH_COMPARE_TOOLS, // 1 - research_compare (diff two reports across time)
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MIROSHARK_TOOLS = void 0;
4
4
  exports.handleMirosharkTool = handleMirosharkTool;
5
5
  const config_js_1 = require("../config.js");
6
- const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://befitting-porcupine-276.convex.site";
6
+ const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://valuable-fish-533.convex.site";
7
7
  exports.MIROSHARK_TOOLS = [
8
8
  {
9
9
  name: "miroshark_simulate",
package/dist/tools/os.js CHANGED
@@ -7,7 +7,7 @@ const token_gate_js_1 = require("../token-gate.js");
7
7
  const wallet_js_1 = require("../wallet.js");
8
8
  const local_memory_js_1 = require("../local-memory.js");
9
9
  const config_js_1 = require("../config.js");
10
- const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://befitting-porcupine-276.convex.site";
10
+ const CONVEX_SITE = process.env.FINCH_CONVEX_URL ?? "https://valuable-fish-533.convex.site";
11
11
  exports.OS_TOOLS = [
12
12
  {
13
13
  name: "finch_status",
@@ -114,7 +114,7 @@ async function handleOsTool(name, args) {
114
114
  return { content: [{ type: "text", text: lines.join("\n") }] };
115
115
  }
116
116
  case "finch_diagnostics": {
117
- const CONVEX_URL = process.env.FINCH_CONVEX_URL ?? "https://befitting-porcupine-276.convex.site";
117
+ const CONVEX_URL = process.env.FINCH_CONVEX_URL ?? "https://valuable-fish-533.convex.site";
118
118
  // Ping root of each service — any non-5xx means the host is up
119
119
  const FC_URL = "https://api.firecrawl.dev";
120
120
  const SM_URL = "https://api.supermemory.ai";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@finchagentic/mcp",
3
- "version": "4.7.0",
3
+ "version": "4.7.1",
4
4
  "description": "The runtime layer for Agentic AI. Persistent memory, autonomous agents, and workflows that survive every session.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {