moltalyzer-mcp 1.1.1 → 1.3.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
@@ -1,35 +1,44 @@
1
1
  # moltalyzer-mcp
2
2
 
3
- MCP server for [Moltalyzer](https://moltalyzer.xyz) — crypto intelligence, GitHub trends, prediction market signals, and token analysis via x402 micropayments.
3
+ MCP server for [Moltalyzer](https://moltalyzer.xyz) — crypto intelligence, GitHub trends, prediction market signals, and token analysis.
4
4
 
5
5
  Works with Claude Desktop, Claude Code, ChatGPT, Cursor, and any MCP-compatible client.
6
6
 
7
- ## Setup
7
+ **16 tools total.** 4 free tools (no setup needed). 12 paid tools via x402 micropayments ($0.005–$0.05 per call).
8
8
 
9
- ### 1. Get a wallet with USDC on Base
9
+ ## Quick Start
10
10
 
11
- You need an EVM wallet private key with USDC on Base Mainnet. Each tool call costs $0.005–$0.05.
11
+ ### Option A: Free tier (no wallet needed)
12
12
 
13
- ### 2. Add to your MCP client
13
+ 4 tools available immediately: health check, API info, intelligence sample, Moltbook sample.
14
14
 
15
- **Claude Desktop** (`claude_desktop_config.json`):
15
+ **Claude Code:**
16
+ ```bash
17
+ claude mcp add moltalyzer -- npx -y moltalyzer-mcp
18
+ ```
16
19
 
20
+ Or add to `.claude/settings.json`:
17
21
  ```json
18
22
  {
19
23
  "mcpServers": {
20
24
  "moltalyzer": {
21
25
  "command": "npx",
22
- "args": ["-y", "moltalyzer-mcp"],
23
- "env": {
24
- "EVM_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY_HERE"
25
- }
26
+ "args": ["-y", "moltalyzer-mcp"]
26
27
  }
27
28
  }
28
29
  }
29
30
  ```
30
31
 
31
- **Claude Code** (`.claude/settings.json`):
32
+ ### Option B: Full access via x402 micropayments
32
33
 
34
+ All 16 tools. Pay per call with USDC on Base Mainnet (~$0.005–$0.05 per call). No subscription.
35
+
36
+ **Claude Code:**
37
+ ```bash
38
+ claude mcp add moltalyzer -e EVM_PRIVATE_KEY=0xYOUR_KEY -- npx -y moltalyzer-mcp
39
+ ```
40
+
41
+ **Claude Desktop** (`claude_desktop_config.json`):
33
42
  ```json
34
43
  {
35
44
  "mcpServers": {
@@ -45,7 +54,6 @@ You need an EVM wallet private key with USDC on Base Mainnet. Each tool call cos
45
54
  ```
46
55
 
47
56
  **Cursor** (`.cursor/mcp.json`):
48
-
49
57
  ```json
50
58
  {
51
59
  "mcpServers": {
@@ -60,16 +68,34 @@ You need an EVM wallet private key with USDC on Base Mainnet. Each tool call cos
60
68
  }
61
69
  ```
62
70
 
71
+ To get USDC on Base: [Coinbase](https://coinbase.com), [Bridge from other chains](https://bridge.base.org/).
72
+
63
73
  ## Tools
64
74
 
65
- ### Moltbook (Crypto Community Intelligence)
75
+ ### Free Tools (no wallet needed)
76
+
77
+ | Tool | Description |
78
+ |------|-------------|
79
+ | `get_health` | API health check — status, job statuses, x402 connectivity |
80
+ | `get_api_info` | All endpoints, pricing, changelog, and rate limits |
81
+ | `get_intelligence_sample` | Free sample of the Master Intelligence Digest (rate limited: 1/20min) |
82
+ | `get_moltbook_sample` | Free sample of the Moltbook community digest (rate limited: 1/20min) |
83
+
84
+ ### Moltbook — Crypto Community Intelligence
66
85
 
67
86
  | Tool | Description | Price |
68
87
  |------|-------------|-------|
69
88
  | `get_moltbook_digest` | Latest hourly community sentiment digest — topics, narratives, hot discussions | $0.005 |
70
89
  | `get_moltbook_history` | Historical hourly digests (1-24h lookback) | $0.02 |
71
90
 
72
- ### GitHub (Trending Repos)
91
+ ### Master Intelligence Digest — Cross-Domain Synthesis
92
+
93
+ | Tool | Description | Price |
94
+ |------|-------------|-------|
95
+ | `get_intelligence_digest` | Latest 4-hourly synthesis of all feeds — crypto, GitHub, Polymarket, tokens, macro | $0.01 |
96
+ | `get_intelligence_history` | Historical master digests (1-168h lookback) | $0.03 |
97
+
98
+ ### GitHub — Trending Repos
73
99
 
74
100
  | Tool | Description | Price |
75
101
  |------|-------------|-------|
@@ -77,14 +103,14 @@ You need an EVM wallet private key with USDC on Base Mainnet. Each tool call cos
77
103
  | `get_github_history` | Historical daily digests (1-30 days) | $0.05 |
78
104
  | `get_github_repos` | Top trending repos, filterable by language | $0.01 |
79
105
 
80
- ### Polymarket (Predetermined Outcome Detection)
106
+ ### Polymarket Predetermined Outcome Detection
81
107
 
82
108
  | Tool | Description | Price |
83
109
  |------|-------------|-------|
84
110
  | `get_polymarket_signal` | Single signal — markets where outcome is already known by insiders | $0.01 |
85
111
  | `get_polymarket_signals` | Batch of up to 20 signals, with polling support | $0.03 |
86
112
 
87
- ### Tokens (Real-Time Token Intelligence)
113
+ ### Tokens Real-Time Token Intelligence
88
114
 
89
115
  | Tool | Description | Price |
90
116
  |------|-------------|-------|
@@ -92,31 +118,24 @@ You need an EVM wallet private key with USDC on Base Mainnet. Each tool call cos
92
118
  | `get_token_signals` | Batch of up to 20 signals, filter by chain/tier/score | $0.05 |
93
119
  | `get_token_history` | Historical signals by date range (max 7 days, paginated) | $0.03 |
94
120
 
95
- ### Master Intelligence Digest (Cross-Domain Synthesis)
96
-
97
- | Tool | Description | Price |
98
- |------|-------------|-------|
99
- | `get_intelligence_digest` | Latest cross-domain synthesis of all data sources — executive summary, narratives, signals | $0.01 |
100
- | `get_intelligence_history` | Historical master digests (1-168 hours lookback) | $0.03 |
101
-
102
121
  ## Environment Variables
103
122
 
104
123
  | Variable | Required | Description |
105
124
  |----------|----------|-------------|
106
- | `EVM_PRIVATE_KEY` | Yes | Wallet private key (0x-prefixed) with USDC on Base Mainnet |
125
+ | `EVM_PRIVATE_KEY` | No | Wallet private key (0x-prefixed) with USDC on Base Mainnet. Required for paid tools. |
107
126
  | `MOLTALYZER_API_URL` | No | Override API base URL (default: `https://api.moltalyzer.xyz`) |
108
127
 
109
- ## How it works
128
+ ## How Payments Work
110
129
 
111
- This MCP server wraps the [Moltalyzer x402 API](https://api.moltalyzer.xyz/api). When an AI agent calls a tool, the server:
130
+ When an AI agent calls a paid tool, the server:
112
131
 
113
132
  1. Makes an HTTP request to the API endpoint
114
- 2. Receives a 402 Payment Required response
133
+ 2. Receives a `402 Payment Required` response
115
134
  3. Automatically signs a USDC payment on Base using your wallet
116
135
  4. Retries the request with the payment signature
117
136
  5. Returns the data to the agent
118
137
 
119
- All payments use the [x402 protocol](https://www.x402.org/) — sub-cent micropayments with no API keys, accounts, or subscriptions.
138
+ All payments use the [x402 protocol](https://www.x402.org/) — sub-cent micropayments with no API keys, accounts, or subscriptions required.
120
139
 
121
140
  ## License
122
141
 
package/build/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ export declare function createSandboxServer(): McpServer;
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwEpE,wBAAgB,mBAAmB,cAElC"}
package/build/index.js CHANGED
@@ -10,42 +10,64 @@ import { register as registerGithub } from "./tools/github.js";
10
10
  import { register as registerPolymarket } from "./tools/polymarket.js";
11
11
  import { register as registerTokens } from "./tools/tokens.js";
12
12
  import { register as registerIntelligence } from "./tools/intelligence.js";
13
- const __dirname = dirname(fileURLToPath(import.meta.url));
14
- const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf-8"));
13
+ import { register as registerFree } from "./tools/free.js";
14
+ import { register as registerPulse } from "./tools/pulse.js";
15
+ // Support both ESM (import.meta.url) and CJS (__dirname) for Smithery scanning
16
+ const __dirname_resolved = typeof import.meta?.url === 'string'
17
+ ? dirname(fileURLToPath(import.meta.url))
18
+ : typeof __dirname !== 'undefined' ? __dirname : process.cwd();
19
+ let pkg;
20
+ try {
21
+ pkg = JSON.parse(readFileSync(join(__dirname_resolved, "..", "package.json"), "utf-8"));
22
+ }
23
+ catch {
24
+ pkg = { version: "1.3.0" };
25
+ }
15
26
  // All logging to stderr (stdout reserved for MCP protocol)
16
27
  const log = (...args) => console.error("[moltalyzer-mcp]", ...args);
17
- // Validate env before starting
18
- if (!process.env.EVM_PRIVATE_KEY) {
19
- log("ERROR: EVM_PRIVATE_KEY environment variable is required.\n" +
20
- "Set it to your wallet private key (0x-prefixed hex string) " +
21
- "with USDC on Base Mainnet for x402 micropayments.\n\n" +
22
- "Example MCP config:\n" +
23
- JSON.stringify({
24
- mcpServers: {
25
- moltalyzer: {
26
- command: "npx",
27
- args: ["-y", "moltalyzer-mcp"],
28
- env: { EVM_PRIVATE_KEY: "0x..." },
29
- },
30
- },
31
- }, null, 2));
32
- process.exit(1);
33
- }
34
- async function main() {
35
- const fetchWithPayment = createFetchWithPayment();
28
+ function createServer() {
36
29
  const server = new McpServer({
37
30
  name: "moltalyzer-mcp",
38
31
  version: pkg.version,
39
32
  });
40
- // Register all tool modules
41
- registerMoltbook(server, fetchWithPayment);
42
- registerGithub(server, fetchWithPayment);
43
- registerPolymarket(server, fetchWithPayment);
44
- registerTokens(server, fetchWithPayment);
45
- registerIntelligence(server, fetchWithPayment);
33
+ // Free tools always available — no wallet or API key needed
34
+ registerFree(server);
35
+ const hasWallet = !!process.env.EVM_PRIVATE_KEY;
36
+ if (hasWallet) {
37
+ const fetchWithPayment = createFetchWithPayment();
38
+ registerMoltbook(server, fetchWithPayment);
39
+ registerGithub(server, fetchWithPayment);
40
+ registerPolymarket(server, fetchWithPayment);
41
+ registerTokens(server, fetchWithPayment);
42
+ registerIntelligence(server, fetchWithPayment);
43
+ registerPulse(server, fetchWithPayment);
44
+ log(`Server started with 23 tools (8 free + 15 paid via x402)`);
45
+ }
46
+ else {
47
+ log("WARNING: EVM_PRIVATE_KEY not set — running in free-tier mode (4 tools).\n" +
48
+ "To unlock all 16 tools with x402 micropayments, add your wallet private key:\n\n" +
49
+ JSON.stringify({
50
+ mcpServers: {
51
+ moltalyzer: {
52
+ command: "npx",
53
+ args: ["-y", "moltalyzer-mcp"],
54
+ env: { EVM_PRIVATE_KEY: "0x..." },
55
+ },
56
+ },
57
+ }, null, 2) +
58
+ "\n\nAlternatively, get a free API key at https://moltalyzer.xyz for 5 digests/day.");
59
+ log("Server started with 8 free tools");
60
+ }
61
+ return server;
62
+ }
63
+ // Smithery sandbox export — allows registry to scan tools without real credentials
64
+ export function createSandboxServer() {
65
+ return createServer();
66
+ }
67
+ async function main() {
68
+ const server = createServer();
46
69
  const transport = new StdioServerTransport();
47
70
  await server.connect(transport);
48
- log("Server started with 12 tools");
49
71
  }
50
72
  main().catch((err) => {
51
73
  log("Fatal error:", err);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE3E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,2DAA2D;AAC3D,MAAM,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;AAE/E,+BAA+B;AAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IACjC,GAAG,CACD,4DAA4D;QAC1D,6DAA6D;QAC7D,uDAAuD;QACvD,uBAAuB;QACvB,IAAI,CAAC,SAAS,CACZ;YACE,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC;oBAC9B,GAAG,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE;iBAClC;aACF;SACF,EACD,IAAI,EACJ,CAAC,CACF,CACJ,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,gBAAgB,GAAG,sBAAsB,EAAE,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,CAAC;IAEH,4BAA4B;IAC5B,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC3C,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,GAAG,CAAC,8BAA8B,CAAC,CAAC;AACtC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=free.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free.d.ts","sourceRoot":"","sources":["../../src/tools/free.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAgFzC"}
@@ -0,0 +1,77 @@
1
+ import { BASE_URL, fetchWithTimeout } from "../client.js";
2
+ import { errorResult } from "./error.js";
3
+ export function register(server) {
4
+ server.registerTool("get_health", {
5
+ description: "Check Moltalyzer API health and service status — returns overall status (ok/degraded), active job statuses, and x402 facilitator connectivity. Free, no payment or API key required.",
6
+ }, async () => {
7
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/health`);
8
+ if (!res.ok)
9
+ return errorResult(res);
10
+ const data = await res.json();
11
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
12
+ });
13
+ server.registerTool("get_api_info", {
14
+ description: "Get Moltalyzer API overview — all available endpoints, pricing per call, recent changelog, and rate limits. Use this to discover what tools and data feeds are available. Free, no payment or API key required.",
15
+ }, async () => {
16
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api`);
17
+ if (!res.ok)
18
+ return errorResult(res);
19
+ const data = await res.json();
20
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
21
+ });
22
+ server.registerTool("get_intelligence_sample", {
23
+ description: "Get a free sample of the Master Intelligence Digest — a cross-domain synthesis combining crypto community sentiment, GitHub trending repos, Polymarket prediction signals, token intelligence, BTC derivatives, Fear & Greed index, and macro data. Generated every 4 hours. Rate limited to 1 request per 20 minutes. No payment or API key required. To get live data, use get_intelligence_digest ($0.01 via x402) or sign up for a free API key at https://moltalyzer.xyz.",
24
+ }, async () => {
25
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api/intelligence/sample`);
26
+ if (!res.ok)
27
+ return errorResult(res);
28
+ const data = await res.json();
29
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
30
+ });
31
+ server.registerTool("get_moltbook_sample", {
32
+ description: "Get a free sample of the Moltbook community digest — AI-generated analysis of crypto community sentiment, trending topics, emerging narratives, and hot discussions. Updated hourly. Rate limited to 1 request per 20 minutes. No payment or API key required. To get live data, use get_moltbook_digest (free, 1 req/5min) or sign up for a free API key at https://moltalyzer.xyz.",
33
+ }, async () => {
34
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api/moltbook/sample`);
35
+ if (!res.ok)
36
+ return errorResult(res);
37
+ const data = await res.json();
38
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
39
+ });
40
+ server.registerTool("get_tokens_latest", {
41
+ description: "Get the most recent token intelligence signal — hybrid rule+LLM scoring across Ethereum, Base, and BSC. Returns symbol, score (0-100), tier (meme/longterm), liquidity, volume, and risk assessment. Free, rate limited to 1 request per 5 minutes. No payment or API key required.",
42
+ }, async () => {
43
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api/tokens/latest`);
44
+ if (!res.ok)
45
+ return errorResult(res);
46
+ const data = await res.json();
47
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
48
+ });
49
+ server.registerTool("get_polymarket_latest", {
50
+ description: "Get the most recent Polymarket predetermined outcome signal — detects markets where the outcome is already known by insiders. Returns question, confidence level, reasoning, and insider type. Free, rate limited to 1 request per 5 minutes. No payment or API key required.",
51
+ }, async () => {
52
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api/polymarket/latest`);
53
+ if (!res.ok)
54
+ return errorResult(res);
55
+ const data = await res.json();
56
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
57
+ });
58
+ server.registerTool("get_pulse_brief", {
59
+ description: "Get the latest Pulse narrative intelligence brief — cross-source AI/business narrative tracking from Reddit, HN, GitHub, and HuggingFace. Returns title, summary, top insights, and narrative count. Free, no payment or API key required.",
60
+ }, async () => {
61
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api/pulse/ai-business/digest/brief`);
62
+ if (!res.ok)
63
+ return errorResult(res);
64
+ const data = await res.json();
65
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
66
+ });
67
+ server.registerTool("get_pulse_latest", {
68
+ description: "Get the full Pulse narrative intelligence digest — narrativeArcs, actionableSignals, sourceMix, and all insights. Tracks how stories form across multiple sources. Free, rate limited to 1 request per 5 minutes. No payment or API key required.",
69
+ }, async () => {
70
+ const res = await fetchWithTimeout(fetch, `${BASE_URL}/api/pulse/ai-business/digest/latest`);
71
+ if (!res.ok)
72
+ return errorResult(res);
73
+ const data = await res.json();
74
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
75
+ });
76
+ }
77
+ //# sourceMappingURL=free.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"free.js","sourceRoot":"","sources":["../../src/tools/free.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer, fetchFn: typeof fetch): void;
3
+ //# sourceMappingURL=pulse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulse.d.ts","sourceRoot":"","sources":["../../src/tools/pulse.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,QAiChE"}
@@ -0,0 +1,36 @@
1
+ import { z } from "zod";
2
+ import { BASE_URL, fetchWithTimeout } from "../client.js";
3
+ import { errorResult } from "./error.js";
4
+ export function register(server, fetchFn) {
5
+ server.registerTool("get_pulse_digest", {
6
+ description: "Get the latest Pulse narrative intelligence digest — cross-source synthesis of AI/business narratives forming across Reddit, HN, GitHub, and HuggingFace. Tracks narrative lifecycle (emerging → developing → peak → fading). Includes narrativeArcs, actionableSignals, sourceMix, and topInsights. Updated every 4 hours. Costs $0.01 USDC via x402.",
7
+ }, async () => {
8
+ const res = await fetchWithTimeout(fetchFn, `${BASE_URL}/api/pulse/ai-business/digest/latest`);
9
+ if (!res.ok)
10
+ return errorResult(res);
11
+ const data = await res.json();
12
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
13
+ });
14
+ server.registerTool("get_pulse_narratives", {
15
+ description: "Get all active Pulse narratives with lifecycle stage, source count, and momentum. Narratives track specific stories gaining traction across 2+ sources. Costs $0.01 USDC via x402.",
16
+ }, async () => {
17
+ const res = await fetchWithTimeout(fetchFn, `${BASE_URL}/api/pulse/ai-business/narratives`);
18
+ if (!res.ok)
19
+ return errorResult(res);
20
+ const data = await res.json();
21
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
22
+ });
23
+ server.registerTool("get_pulse_narrative_detail", {
24
+ description: "Get detailed view of a specific Pulse narrative — full content items, source breakdown, and stage history. Costs $0.01 USDC via x402.",
25
+ inputSchema: {
26
+ id: z.number().int().describe("Narrative ID (from get_pulse_narratives)"),
27
+ },
28
+ }, async ({ id }) => {
29
+ const res = await fetchWithTimeout(fetchFn, `${BASE_URL}/api/pulse/ai-business/narratives/${id}`);
30
+ if (!res.ok)
31
+ return errorResult(res);
32
+ const data = await res.json();
33
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
34
+ });
35
+ }
36
+ //# sourceMappingURL=pulse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulse.js","sourceRoot":"","sources":["../../src/tools/pulse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,MAAiB,EAAE,OAAqB;IAC/D,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;QACtC,WAAW,EACT,wVAAwV;KAC3V,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,QAAQ,sCAAsC,CAAC,CAAC;QAC/F,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE;QAC1C,WAAW,EACT,oLAAoL;KACvL,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,QAAQ,mCAAmC,CAAC,CAAC;QAC5F,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,4BAA4B,EAAE;QAChD,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SAC1E;KACF,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,QAAQ,qCAAqC,EAAE,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "moltalyzer-mcp",
3
- "version": "1.1.1",
4
- "description": "MCP server for Moltalyzer — crypto intelligence, GitHub trends, and prediction market signals via x402 micropayments",
3
+ "version": "1.3.0",
4
+ "description": "MCP server for Moltalyzer — crypto intelligence, GitHub trends, prediction market signals, and cross-source narrative intelligence via x402 micropayments",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "moltalyzer-mcp": "build/index.js"
@@ -13,6 +13,7 @@
13
13
  "build": "tsc && chmod +x build/index.js",
14
14
  "prepare": "npm run build"
15
15
  },
16
+ "mcpName": "io.github.jcislo/moltalyzer-mcp",
16
17
  "keywords": [
17
18
  "mcp",
18
19
  "moltalyzer",