hive-intelligence 1.11.1 → 1.12.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.
@@ -166,7 +166,7 @@ var HIVE_AGENT_SKILLS = [
166
166
  {
167
167
  name: "hive-wallet-investigation",
168
168
  label: "Wallet Investigation",
169
- description: "Inspect wallet balances, transfers, NFTs, PnL, DeFi positions, and notable activity.",
169
+ description: "Inspect wallet balances, transfers, NFTs, PnL, approvals, and notable activity.",
170
170
  path: "agent-skills/packs/hive-wallet-investigation/SKILL.md",
171
171
  toolsetIds: ["wallet_investigation"],
172
172
  useWhen: [
package/build/cli.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  import "./chunk-XN3T6YOG.js";
7
7
  import {
8
8
  NAMESPACE
9
- } from "./chunk-LBJL66AC.js";
9
+ } from "./chunk-CBFOVPLB.js";
10
10
  import "./chunk-RNVZIPNY.js";
11
11
  import "./chunk-RU6QOFHH.js";
12
12
  import {
@@ -3453,7 +3453,7 @@ program2.hook("preAction", (thisCommand) => {
3453
3453
  setCliFlags({ apiKey: opts.apiKey, noRetry: opts.retry === false });
3454
3454
  });
3455
3455
  program2.action(async () => {
3456
- const { startStdio } = await import("./serve-623KMREW.js");
3456
+ const { startStdio } = await import("./serve-JNZIXB55.js");
3457
3457
  await startStdio(program2.opts().envFile);
3458
3458
  });
3459
3459
  program2.command("serve").description(
@@ -3471,10 +3471,10 @@ program2.command("serve").description(
3471
3471
  );
3472
3472
  process.exit(ExitCode.INVALID_ARGS);
3473
3473
  }
3474
- const { startHttp } = await import("./serve-623KMREW.js");
3474
+ const { startHttp } = await import("./serve-JNZIXB55.js");
3475
3475
  await startHttp(port, program2.opts().envFile);
3476
3476
  } else {
3477
- const { startStdio } = await import("./serve-623KMREW.js");
3477
+ const { startStdio } = await import("./serve-JNZIXB55.js");
3478
3478
  await startStdio(program2.opts().envFile, { local: opts.local });
3479
3479
  }
3480
3480
  });
@@ -3561,15 +3561,15 @@ for (const domain of NAMESPACE) {
3561
3561
  }
3562
3562
  var toolsCmd = program2.command("tools").description("Discover and execute tools");
3563
3563
  toolsCmd.command("list").description("List all registered tools").option("--category <name>", "Filter by category").option("--provider <name>", "Filter by provider prefix").option("--limit <n>", "Max tools to show", "50").option("--offset <n>", "Skip first N tools", "0").action(async (opts) => {
3564
- const { listTools } = await import("./tools-CCMIU3SO.js");
3564
+ const { listTools } = await import("./tools-K2P77L4T.js");
3565
3565
  await listTools(opts);
3566
3566
  });
3567
3567
  toolsCmd.command("search <query>").description("Search tools by name or description").action(async (query) => {
3568
- const { searchTools } = await import("./tools-CCMIU3SO.js");
3568
+ const { searchTools } = await import("./tools-K2P77L4T.js");
3569
3569
  await searchTools(query);
3570
3570
  });
3571
3571
  toolsCmd.command("info <name>").description("Show a tool's parameters, response schema, and description").action(async (name) => {
3572
- const { toolInfo } = await import("./tools-CCMIU3SO.js");
3572
+ const { toolInfo } = await import("./tools-K2P77L4T.js");
3573
3573
  await toolInfo(name, RESERVED_OPTION_NAMES);
3574
3574
  });
3575
3575
  toolsCmd.command("call <name>").description("Execute a tool by name").option("--args <json>", "Tool arguments as JSON (or pipe JSON via stdin)").allowUnknownOption(true).allowExcessArguments(true).addHelpText(
@@ -3609,7 +3609,7 @@ Examples:
3609
3609
  stdinJson,
3610
3610
  reservedNames: RESERVED_OPTION_NAMES,
3611
3611
  lookupSchema: async (toolName) => {
3612
- const { loadToolCatalog } = await import("./tools-CCMIU3SO.js");
3612
+ const { loadToolCatalog } = await import("./tools-K2P77L4T.js");
3613
3613
  const catalog = await loadToolCatalog();
3614
3614
  return catalog.find((t) => t.name === toolName)?.inputSchema;
3615
3615
  }
@@ -3627,7 +3627,7 @@ Examples:
3627
3627
  await executeTool(plan.toolName, plan.args, timeout);
3628
3628
  });
3629
3629
  toolsCmd.command("refresh").description("Force-refresh the tool catalog cache").action(async () => {
3630
- const { refreshTools } = await import("./tools-CCMIU3SO.js");
3630
+ const { refreshTools } = await import("./tools-K2P77L4T.js");
3631
3631
  await refreshTools();
3632
3632
  });
3633
3633
  var configCmd = program2.command("config").description("Generate configuration for MCP clients");
@@ -3686,7 +3686,7 @@ program2.command("init").description(
3686
3686
  await runSetup();
3687
3687
  return;
3688
3688
  }
3689
- const { runInitAll } = await import("./init-all-SPEWION5.js");
3689
+ const { runInitAll } = await import("./init-all-UDWHV2ER.js");
3690
3690
  const exitCode = await runInitAll({
3691
3691
  all: Boolean(opts.all),
3692
3692
  browser: Boolean(opts.browser),
@@ -3704,7 +3704,7 @@ program2.command("uninstall").description(
3704
3704
  "--all",
3705
3705
  "Clean every known client (default; explicit flag for symmetry with `init --all`)"
3706
3706
  ).option("--dry-run", "Preview removals without changing anything").action(async (opts) => {
3707
- const { runUninstall } = await import("./uninstall-4TJ4SZLU.js");
3707
+ const { runUninstall } = await import("./uninstall-I6ERJ2ED.js");
3708
3708
  const exitCode = await runUninstall({
3709
3709
  all: opts.all !== false,
3710
3710
  dryRun: Boolean(opts.dryRun),
@@ -3742,7 +3742,7 @@ program2.command("doctor").description("Diagnose environment and server connecti
3742
3742
  "--fix",
3743
3743
  "Rewrite stale Hive entries in MCP client configs (backs each file up first)"
3744
3744
  ).action(async (opts) => {
3745
- const { runDoctor } = await import("./doctor-ZKIR44V4.js");
3745
+ const { runDoctor } = await import("./doctor-SKJANP76.js");
3746
3746
  await runDoctor(opts);
3747
3747
  });
3748
3748
  program2.command("upgrade").description("Update Hive to the latest published version").action(async () => {
@@ -3751,10 +3751,10 @@ program2.command("upgrade").description("Update Hive to the latest published ver
3751
3751
  });
3752
3752
  program2.command("completion <shell>").description("Generate shell completion script (bash, zsh, fish, powershell)").option("--install", "Auto-install to shell rc file").action(async (shell, opts) => {
3753
3753
  if (opts.install) {
3754
- const { installCompletion } = await import("./completion-LFOLLOPU.js");
3754
+ const { installCompletion } = await import("./completion-DCZIPROK.js");
3755
3755
  await installCompletion(shell);
3756
3756
  } else {
3757
- const { generateCompletion } = await import("./completion-LFOLLOPU.js");
3757
+ const { generateCompletion } = await import("./completion-DCZIPROK.js");
3758
3758
  await generateCompletion(shell);
3759
3759
  }
3760
3760
  });
@@ -3790,7 +3790,7 @@ program2.command("usage").description("Show your API usage and plan limits").act
3790
3790
  await runUsage();
3791
3791
  });
3792
3792
  program2.command("status").description("Quick health and version check").action(async () => {
3793
- const { runStatus } = await import("./doctor-ZKIR44V4.js");
3793
+ const { runStatus } = await import("./doctor-SKJANP76.js");
3794
3794
  await runStatus();
3795
3795
  });
3796
3796
  program2.command("open [target]").description("Open Hive dashboard, docs, status, or GitHub in browser").action(async (target) => {
@@ -1,7 +1,7 @@
1
1
  import { createRequire } from 'node:module'; const require = createRequire(import.meta.url);
2
2
  import {
3
3
  NAMESPACE
4
- } from "./chunk-LBJL66AC.js";
4
+ } from "./chunk-CBFOVPLB.js";
5
5
  import "./chunk-OMO7XLC5.js";
6
6
 
7
7
  // src/cli/completion.ts
@@ -296,7 +296,7 @@ ${fails === 0 ? "All checks passed" : `${fails} issues found`}${warns ? ` (${war
296
296
  if (fails > 0) process.exit(1);
297
297
  }
298
298
  async function runStatus() {
299
- const { SERVER_VERSION } = await import("./mcpServer-466JRLWK.js");
299
+ const { SERVER_VERSION } = await import("./mcpServer-TKLG6IOW.js");
300
300
  const { resolveApiKey, resolveApiUrl } = await import("./config-dir-2QLA5PXD.js");
301
301
  const { getActiveProfile, maskKey } = await import("./auth-6XVL5CE3.js");
302
302
  const apiUrl = resolveApiUrl();
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  detectClients,
7
7
  installSkillsForClients
8
- } from "./chunk-FQNW6SZ6.js";
8
+ } from "./chunk-5J4CWTI5.js";
9
9
  import {
10
10
  browserLogin
11
11
  } from "./chunk-BDO27NIP.js";
@@ -27,7 +27,7 @@ import {
27
27
  writeWindsurfConfig
28
28
  } from "./chunk-QDZ7MAVN.js";
29
29
  import "./chunk-M6REON2I.js";
30
- import "./chunk-4QDGA6GP.js";
30
+ import "./chunk-QYK3EWTE.js";
31
31
  import "./chunk-ZXKFJQDE.js";
32
32
  import {
33
33
  bold,
@@ -9,8 +9,8 @@ import {
9
9
  getToolsForScope,
10
10
  memoizedJsonSchemaToZodInputSchema,
11
11
  memoizedJsonSchemaToZodOutputSchema
12
- } from "./chunk-FZ77S2XY.js";
13
- import "./chunk-4QDGA6GP.js";
12
+ } from "./chunk-PFX4AJNR.js";
13
+ import "./chunk-QYK3EWTE.js";
14
14
  import "./chunk-EPF36Q3Z.js";
15
15
  import {
16
16
  PUBLIC_MCP_REGISTRY_ID,
@@ -4,7 +4,7 @@ import {
4
4
  executeToolByName,
5
5
  refundCredits,
6
6
  refundSettled
7
- } from "./chunk-5MSFC2HD.js";
7
+ } from "./chunk-4GBOUVUD.js";
8
8
  import {
9
9
  HyperliquidAPI,
10
10
  MIN_MONITOR_CADENCE_MS,
@@ -17,8 +17,8 @@ import {
17
17
  monitorCadenceIntervalMs,
18
18
  runScheduledHealthCanaries,
19
19
  secureLogger
20
- } from "./chunk-FZ77S2XY.js";
21
- import "./chunk-4QDGA6GP.js";
20
+ } from "./chunk-PFX4AJNR.js";
21
+ import "./chunk-QYK3EWTE.js";
22
22
  import "./chunk-EPF36Q3Z.js";
23
23
  import "./chunk-ZXKFJQDE.js";
24
24
  import "./chunk-OMO7XLC5.js";
@@ -3,7 +3,7 @@ import {
3
3
  NAMESPACE,
4
4
  getAllDomainCommands,
5
5
  resolveCommand
6
- } from "./chunk-LBJL66AC.js";
6
+ } from "./chunk-CBFOVPLB.js";
7
7
  import "./chunk-OMO7XLC5.js";
8
8
  export {
9
9
  NAMESPACE,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "package": "hive-intelligence",
3
- "version": "1.11.1",
4
- "buildSha": "725c389c9fc80099fcac18b4c3b727623298ea32",
5
- "imageDigest": "sha256:94704e1a36d9521f7380bbd8b634e17402d83a7810f85a55de8fe45b77c9e292",
3
+ "version": "1.12.1",
4
+ "buildSha": "bb47e637ee6445ab8d7a79280b71bf8fdec93b92",
5
+ "imageDigest": "sha256:fb28943da2081be56b56b5086361f6dd4c41ade2c8b5c1ea3e9ea46c605fd92c",
6
6
  "deployedUrl": "https://mcp.hiveintelligence.xyz",
7
- "manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.11.1/releases/v1.11.1.json"
7
+ "manifest": "https://raw.githubusercontent.com/hive-intel/hive-sdk/v1.12.1/releases/v1.12.1.json"
8
8
  }
@@ -49,7 +49,7 @@ async function startStdio(envFile, opts = {}) {
49
49
  console.log = (...args) => console.error("[LOG]", ...args);
50
50
  if (resolveStdioMode(opts) === "proxy") return startStdioProxy();
51
51
  const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
52
- const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-466JRLWK.js");
52
+ const { createHiveMcpServer, SERVER_NAME, SERVER_VERSION } = await import("./mcpServer-TKLG6IOW.js");
53
53
  const { getPendingUpdateVersion } = await import("./update-check-36QU6PKA.js");
54
54
  const transport = new StdioServerTransport();
55
55
  const pendingUpdate = getPendingUpdateVersion();
@@ -98,7 +98,7 @@ async function startStdioProxy() {
98
98
  notice: () => updateNotice(getPendingUpdateVersion(), SERVER_VERSION)
99
99
  });
100
100
  if (Object.keys(process.env).some(
101
- (k) => /^(COINGECKO|ALCHEMY|GOPLUS|HELIUS|MORALIS|TENDERLY)_/.test(k)
101
+ (k) => /^(COINGECKO|ALCHEMY|GOPLUS|HELIUS|TENDERLY)_/.test(k)
102
102
  )) {
103
103
  console.error(
104
104
  "Hive: provider keys found in env but ignored; hosted Hive serves every provider. Set HIVE_STDIO_MODE=local to run providers with your own keys."
package/build/server.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  getWalletStatus,
9
9
  refundCredits,
10
10
  refundSettled
11
- } from "./chunk-5MSFC2HD.js";
11
+ } from "./chunk-4GBOUVUD.js";
12
12
  import {
13
13
  CategoryEndpoints,
14
14
  HERO_TOOL_NAMES,
@@ -62,6 +62,7 @@ import {
62
62
  getSupabaseAdmin,
63
63
  getTaskCanaryCatalog,
64
64
  getTaskCanaryHistory,
65
+ getUserPlanId,
65
66
  getWorkflowRegressionCatalog,
66
67
  getWorkflowRegressionHistory,
67
68
  hasSubjectSigningSecret,
@@ -104,10 +105,10 @@ import {
104
105
  validateEndpointArgs,
105
106
  verifyApiKey,
106
107
  waitForRedisAvailability
107
- } from "./chunk-FZ77S2XY.js";
108
+ } from "./chunk-PFX4AJNR.js";
108
109
  import {
109
110
  HIVE_AGENT_SKILLS
110
- } from "./chunk-4QDGA6GP.js";
111
+ } from "./chunk-QYK3EWTE.js";
111
112
  import "./chunk-EPF36Q3Z.js";
112
113
  import {
113
114
  PUBLIC_MCP_REGISTRY_ID,
@@ -2572,10 +2573,9 @@ function attachVerifiedContext(req, res, key, result, quotaRemaining, rateDecisi
2572
2573
  authReq.apiKey = key;
2573
2574
  authReq.apiKeyEnvironment = getKeyEnvironment(key);
2574
2575
  authReq.userId = result.userId;
2575
- authReq.planId = result.planId;
2576
2576
  authReq.unkeyKeyId = result.keyId;
2577
2577
  authReq.quotaRemaining = quotaRemaining ?? void 0;
2578
- authReq.ratelimitRemaining = rateDecision?.remaining ?? result.ratelimit?.remaining;
2578
+ authReq.ratelimitRemaining = rateDecision.remaining;
2579
2579
  authReq.unkeyResult = result;
2580
2580
  if (quotaRemaining !== void 0) {
2581
2581
  res.setHeader(
@@ -2583,12 +2583,8 @@ function attachVerifiedContext(req, res, key, result, quotaRemaining, rateDecisi
2583
2583
  quotaRemaining === null ? "unlimited" : String(quotaRemaining)
2584
2584
  );
2585
2585
  }
2586
- const limit = rateDecision?.limit ?? result.ratelimit?.limit;
2587
- const remaining = rateDecision?.remaining ?? result.ratelimit?.remaining;
2588
- if (limit !== void 0 && remaining !== void 0) {
2589
- res.setHeader("X-RateLimit-Remaining", String(remaining));
2590
- res.setHeader("X-RateLimit-Limit", String(limit));
2591
- }
2586
+ res.setHeader("X-RateLimit-Remaining", String(rateDecision.remaining));
2587
+ res.setHeader("X-RateLimit-Limit", String(rateDecision.limit));
2592
2588
  }
2593
2589
  function deferApiKeyCreditDebit(req, _res, next) {
2594
2590
  req.deferCreditDebit = true;
@@ -3427,7 +3423,6 @@ router4.get(
3427
3423
  "/",
3428
3424
  asyncHandler(async (req, res) => {
3429
3425
  let userId;
3430
- let planId;
3431
3426
  let credentialRejected = false;
3432
3427
  const authHeader = req.headers.authorization;
3433
3428
  if (authHeader?.startsWith("Bearer ")) {
@@ -3436,7 +3431,6 @@ router4.get(
3436
3431
  const result = await verifyApiKey(token);
3437
3432
  if (result.valid) {
3438
3433
  userId = result.userId;
3439
- planId = result.planId;
3440
3434
  } else {
3441
3435
  credentialRejected = true;
3442
3436
  }
@@ -3454,7 +3448,6 @@ router4.get(
3454
3448
  const result = await verifyApiKey(apiKeyHeader);
3455
3449
  if (result.valid) {
3456
3450
  userId = result.userId;
3457
- planId = result.planId;
3458
3451
  credentialRejected = false;
3459
3452
  } else {
3460
3453
  credentialRejected = true;
@@ -3475,11 +3468,7 @@ router4.get(
3475
3468
  )
3476
3469
  );
3477
3470
  }
3478
- if (!planId) {
3479
- const { data: profile } = await getSupabaseAdmin().from("user_profiles").select("plan_id").eq("id", userId).single();
3480
- planId = profile?.plan_id ?? "demo";
3481
- }
3482
- const resolvedPlanId = planId ?? "demo";
3471
+ const resolvedPlanId = await getUserPlanId(userId);
3483
3472
  const { data: plan } = await getSupabaseAdmin().from("plans").select("*").eq("id", resolvedPlanId).single();
3484
3473
  await ensureWallet(userId, resolvedPlanId);
3485
3474
  const wallet = await getWalletStatus(userId);
@@ -3563,11 +3552,10 @@ function buildB2BReadinessPayload(args) {
3563
3552
  valid: true,
3564
3553
  ...args.verifyResult?.keyId ? { key_id: args.verifyResult.keyId } : {},
3565
3554
  ...args.verifyResult?.userId ? { owner_user_id: args.verifyResult.userId } : {},
3566
- ...args.verifyResult?.planId ? { plan_id: args.verifyResult.planId } : {},
3555
+ ...args.planId ? { plan_id: args.planId } : {},
3567
3556
  ...args.verifyResult?.name ? { name: args.verifyResult.name } : {},
3568
3557
  b2b_subjects_enabled: b2bEnabled,
3569
- subject_signing_secret_configured: secretConfigured,
3570
- ...args.verifyResult?.ratelimit ? { ratelimit_remaining: args.verifyResult.ratelimit.remaining } : {}
3558
+ subject_signing_secret_configured: secretConfigured
3571
3559
  },
3572
3560
  state: {
3573
3561
  stateful_tools_supported: args.authBackend === "unkey",
@@ -3665,7 +3653,10 @@ router5.get(
3665
3653
  ok: true,
3666
3654
  data: buildB2BReadinessPayload({
3667
3655
  authBackend: "unkey",
3668
- verifyResult: result
3656
+ verifyResult: result,
3657
+ // Optional in the payload: a plan lookup failure must not fail the
3658
+ // readiness check, so it omits plan_id instead.
3659
+ planId: await getUserPlanId(result.userId).catch(() => void 0)
3669
3660
  })
3670
3661
  });
3671
3662
  }
@@ -6962,8 +6953,9 @@ async function debitMcpCredits(args) {
6962
6953
  };
6963
6954
  }
6964
6955
  if (debit.code === "insufficient") {
6956
+ const planId = await getUserPlanId(args.userId).catch(() => void 0);
6965
6957
  const copy = buildMcpQuotaExhaustedCopy({
6966
- planId: args.planId,
6958
+ planId,
6967
6959
  cycleEnd: debit.cycleEnd
6968
6960
  });
6969
6961
  return {
@@ -7754,8 +7746,7 @@ function createStatelessMcpHandler(scope) {
7754
7746
  const debit = await debitMcpCredits({
7755
7747
  userId: keyedAuth.userId,
7756
7748
  keyId: keyedAuth.keyId,
7757
- requestId: req.requestId,
7758
- planId: typeof keyedAuth.keyMeta?.plan === "string" ? keyedAuth.keyMeta.plan : void 0
7749
+ requestId: req.requestId
7759
7750
  });
7760
7751
  if (!debit.ok) {
7761
7752
  if (debit.noWallet) {
@@ -8775,7 +8766,6 @@ async function setupServer() {
8775
8766
  "GOPLUS_APP_KEY",
8776
8767
  "GOPLUS_APP_SECRET",
8777
8768
  "ALCHEMY_API_KEY",
8778
- "MORALIS_API_KEY",
8779
8769
  "TENDERLY_API_KEY",
8780
8770
  "HELIUS_API_KEY"
8781
8771
  ];
package/build/stdio.js CHANGED
@@ -6,8 +6,8 @@ import {
6
6
  import {
7
7
  createHiveMcpServer,
8
8
  secureLogger
9
- } from "./chunk-FZ77S2XY.js";
10
- import "./chunk-4QDGA6GP.js";
9
+ } from "./chunk-PFX4AJNR.js";
10
+ import "./chunk-QYK3EWTE.js";
11
11
  import "./chunk-EPF36Q3Z.js";
12
12
  import {
13
13
  SERVER_NAME,
@@ -42,7 +42,7 @@ async function listTools(opts) {
42
42
  tools = tools.filter((t) => t.name.toLowerCase().startsWith(prefix + "_"));
43
43
  }
44
44
  if (opts.category) {
45
- const { NAMESPACE } = await import("./namespace-EU47MWAP.js");
45
+ const { NAMESPACE } = await import("./namespace-E4EPVXJ3.js");
46
46
  const cat = opts.category.toLowerCase();
47
47
  const ns = NAMESPACE.find(
48
48
  (d) => d.name === cat || d.description.toLowerCase().includes(cat)
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module'; const require = createRequire(impor
2
2
  import {
3
3
  detectClients,
4
4
  removeSkillsForClients
5
- } from "./chunk-FQNW6SZ6.js";
5
+ } from "./chunk-5J4CWTI5.js";
6
6
  import {
7
7
  removeRecordedRoutingBlocks
8
8
  } from "./chunk-APBLB62S.js";
@@ -16,7 +16,7 @@ import {
16
16
  removeWindsurfConfig
17
17
  } from "./chunk-QDZ7MAVN.js";
18
18
  import "./chunk-ZSPPJW4G.js";
19
- import "./chunk-4QDGA6GP.js";
19
+ import "./chunk-QYK3EWTE.js";
20
20
  import {
21
21
  bold,
22
22
  dim,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hive-intelligence",
3
- "version": "1.11.1",
3
+ "version": "1.12.1",
4
4
  "description": "Evidence-backed crypto due diligence for AI agents, with sources, freshness, and a runtime receipt on every call.",
5
5
  "mcpName": "xyz.hiveintelligence/mcp",
6
6
  "type": "module",
@@ -70,7 +70,7 @@
70
70
  "verify:workflows": "github-actionlint ../.github/workflows/*.yml .github/workflows/*.yml public-repos/hive-sdk/.github/workflows/*.yml",
71
71
  "verify:bundles": "node --check build/server.js && node --check build/stdio.js && node --check build/cli.js && node --check build/monitor-worker.js",
72
72
  "verify:endpoints": "tsx scripts/validate-endpoints.ts",
73
- "export:toolsets": "tsx scripts/export-task-toolsets.ts",
73
+ "facts:write": "tsx scripts/catalog-facts.ts --write",
74
74
  "skills:sync": "tsx scripts/sync-public-skills.ts",
75
75
  "sdk:sync": "tsx scripts/sync-public-sdk.ts",
76
76
  "monitors:run": "tsx src/monitor-worker.ts",
@@ -96,7 +96,6 @@
96
96
  "solana",
97
97
  "coingecko",
98
98
  "defillama",
99
- "moralis",
100
99
  "helius",
101
100
  "goplus",
102
101
  "tenderly",