@bxetech/bpe-mcp 0.1.0 → 0.2.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
@@ -5,9 +5,11 @@ API. Lets Claude Desktop, Cursor, Goose, and other MCP-enabled agents query
5
5
  consolidated Bitcoin pricing, ML signals, funding-rate skew, and
6
6
  natural-language market briefings — without writing any HTTP boilerplate.
7
7
 
8
- > **Status:** v0.1 prototype. Four tools, local stdio transport, no LLM
8
+ > **Status:** v0.2 five tools, local stdio transport, no LLM
9
9
  > calls inside the briefing endpoint (template-rendered). API key required.
10
10
 
11
+ Listed in the [official MCP Server Registry](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.bxetech/bpe-mcp) as `io.github.bxetech/bpe-mcp`. Install via `npm install -g @bxetech/bpe-mcp` or `npx -y @bxetech/bpe-mcp`.
12
+
11
13
  ## Why use it
12
14
 
13
15
  If you're building an agent that touches Bitcoin markets, you have two
@@ -23,14 +25,15 @@ options today:
23
25
  This MCP server is option 2 dressed up as native tools your agent can
24
26
  discover and call.
25
27
 
26
- ## Tools (v0.1)
28
+ ## Tools (v0.2)
27
29
 
28
30
  | Tool | What it does |
29
31
  |---|---|
30
32
  | `get_consolidated_price` | Current BTC price aggregated across the BPE network |
31
- | `get_market_briefing` | 5–8 line natural-language market summary (price, funding, ML, sentiment, anomalies) |
33
+ | `get_market_briefing` | ~4 lines (brief) or 6–8 (detailed) natural-language summary price, funding skew, ML signal, sentiment, anomalies |
32
34
  | `get_funding_skew` | Per-venue annualised funding rates + max-spread pair |
33
- | `get_ml_signal` | Current ML prediction across configurable time horizons |
35
+ | `get_ml_signal` | Current ML prediction (direction, probability, confidence) at the requested horizon |
36
+ | `get_sentiment_snapshot` | Crypto Fear & Greed index, news sentiment, mempool stress |
34
37
 
35
38
  ## Install
36
39
 
@@ -55,7 +58,7 @@ Or use `npx` with no install (recommended for Claude Desktop):
55
58
  }
56
59
  ```
57
60
 
58
- Restart Claude Desktop. The four tools appear under the MCP server picker.
61
+ Restart Claude Desktop. The five tools appear under the MCP server picker.
59
62
 
60
63
  ## Configuration
61
64
 
@@ -94,8 +97,8 @@ To dogfood in Claude Desktop while iterating, point at the local build:
94
97
 
95
98
  ## Roadmap
96
99
 
97
- - **v0.2** — `get_basis`, `get_sentiment_snapshot`, `subscribe_alert` (webhook subscription)
98
- - **v0.3** — Hosted HTTP transport for non-developer install (Cursor extension, ChatGPT Desktop)
100
+ - **v0.2** — `get_sentiment_snapshot` ✅, friendly tier-aware errors ✅, timestamped briefings ✅
101
+ - **v0.3** — `get_basis`, `subscribe_alert` (webhook subscription), hosted HTTP transport for non-developer install (Cursor extension, ChatGPT Desktop)
99
102
  - **v0.4** — Optional LLM-rendered briefing via Haiku (richer prose, with per-call cost)
100
103
 
101
104
  See [`docs/research/AGENT_INTEGRATION_AND_MONETISATION_2026-04-27.md`](../docs/research/AGENT_INTEGRATION_AND_MONETISATION_2026-04-27.md) for the broader product / monetisation plan.
@@ -1,3 +1,5 @@
1
1
  import type { BpeClient } from "./client.js";
2
2
  export type BriefingVerbosity = "brief" | "detailed";
3
3
  export declare function buildBriefing(client: BpeClient, verbosity: BriefingVerbosity): Promise<string>;
4
+ export declare function formatAge(ageMs: number | null): string;
5
+ export declare function formatIsoUtc(ms: number): string;
package/dist/briefing.js CHANGED
@@ -36,12 +36,18 @@ export async function buildBriefing(client, verbosity) {
36
36
  const preds = wrap(bundle.predictions);
37
37
  const sent = wrap(bundle.sentiment);
38
38
  const lines = [];
39
+ // Header: explicit UTC timestamp so the caller can reason about staleness
40
+ // and distinguish two briefings taken seconds apart.
41
+ const ts = price.status === "fulfilled" && price.value?.timestamp_ms
42
+ ? price.value.timestamp_ms
43
+ : Date.now();
44
+ lines.push(`As of ${formatIsoUtc(ts)}.`);
39
45
  // Price line
40
46
  if (price.status === "fulfilled" && price.value?.price) {
41
47
  const p = price.value;
42
48
  const venues = p.exchange_count ?? "?";
43
49
  const ageMs = p.timestamp_ms != null ? Math.max(0, Date.now() - p.timestamp_ms) : null;
44
- const ageStr = ageMs == null ? "fresh" : ageMs < 1000 ? `${ageMs} ms old` : `${(ageMs / 1000).toFixed(1)}s old`;
50
+ const ageStr = formatAge(ageMs);
45
51
  lines.push(`BTC: $${formatPrice(p.price)} (consolidated across ${venues} exchanges, ${ageStr}).`);
46
52
  }
47
53
  else {
@@ -72,17 +78,30 @@ export async function buildBriefing(client, verbosity) {
72
78
  }
73
79
  // ML signal — server returns a single prediction snapshot (whichever
74
80
  // horizon the upstream pricing-service most recently emitted).
81
+ // In brief mode, show probability only (less confusing than dual
82
+ // probability + confidence). In detailed mode, expose both labelled
83
+ // for the quant-minded reader.
75
84
  if (preds.status === "fulfilled" && preds.value?.direction) {
76
85
  const p = preds.value;
77
86
  const horizon = p.horizon_secs != null ? `${p.horizon_secs}s` : "?";
78
- const conf = p.confidence != null ? ` (${(p.confidence * 100).toFixed(0)}% confidence)` : "";
79
- const prob = p.probability != null ? `, p=${(p.probability * 100).toFixed(0)}%` : "";
80
- lines.push(`ML ${horizon}: ${p.direction}${conf}${prob}.`);
81
- if (verbosity === "detailed" && p.models?.length) {
82
- const detail = p.models
83
- .map((m) => `${m.name}${m.signal != null ? `=${m.signal.toFixed(3)}` : ""}`)
84
- .join(", ");
85
- lines.push(` Sub-models: ${detail}.`);
87
+ if (verbosity === "detailed") {
88
+ const conf = p.confidence != null ? `, ${(p.confidence * 100).toFixed(0)}% model confidence` : "";
89
+ const prob = p.probability != null ? `${(p.probability * 100).toFixed(0)}% probability` : "no probability";
90
+ lines.push(`ML ${horizon}: ${p.direction} (${prob}${conf}).`);
91
+ if (p.models?.length) {
92
+ const detail = p.models
93
+ .map((m) => `${m.name}${m.signal != null ? `=${m.signal.toFixed(3)}` : ""}`)
94
+ .join(", ");
95
+ lines.push(` Sub-models: ${detail}.`);
96
+ }
97
+ }
98
+ else {
99
+ // Brief: pick the single most informative number (probability if
100
+ // available, else confidence). Skip both labels to keep the line
101
+ // short — agents can re-read the description if they want the math.
102
+ const pct = p.probability ?? p.confidence;
103
+ const pctStr = pct != null ? ` (${(pct * 100).toFixed(0)}% probability)` : "";
104
+ lines.push(`ML ${horizon}: ${p.direction}${pctStr}.`);
86
105
  }
87
106
  }
88
107
  // Sentiment
@@ -114,8 +133,10 @@ function detectAnomaly(derivs, preds) {
114
133
  .filter((x) => Number.isFinite(x));
115
134
  const max = ann.length ? Math.max(...ann) : 0;
116
135
  const min = ann.length ? Math.min(...ann) : 0;
117
- if (max - min > 0.25)
118
- return `funding spread ${formatPct(max - min)} APR (>25% basis or perp-perp arb opportunity).`;
136
+ // 15% APR spread is already meaningful for perp-perp arb after fees +
137
+ // borrow; raised noise floor above this would miss real opportunities.
138
+ if (max - min > 0.15)
139
+ return `funding spread ${formatPct(max - min)} APR — basis or perp-perp arb opportunity (long lowest, short highest).`;
119
140
  if (Math.abs(max) > 0.5)
120
141
  return `extreme funding ${formatPct(max)} APR — perp positioning stretched.`;
121
142
  }
@@ -134,4 +155,20 @@ function formatPrice(n) {
134
155
  function formatPct(frac) {
135
156
  return `${(frac * 100).toFixed(2)}%`;
136
157
  }
158
+ // Age formatter shared between briefing and per-tool callers.
159
+ // Sub-100ms is reported as "live" — exact ms ("0 ms old") reads oddly to
160
+ // non-technical users and obscures that the data IS effectively realtime.
161
+ export function formatAge(ageMs) {
162
+ if (ageMs == null)
163
+ return "fresh";
164
+ if (ageMs < 100)
165
+ return "live";
166
+ if (ageMs < 1000)
167
+ return `${ageMs} ms old`;
168
+ return `${(ageMs / 1000).toFixed(1)}s old`;
169
+ }
170
+ // "2026-05-13 11:53:42 UTC" — readable, sortable, unambiguous.
171
+ export function formatIsoUtc(ms) {
172
+ return new Date(ms).toISOString().slice(0, 19).replace("T", " ") + " UTC";
173
+ }
137
174
  //# sourceMappingURL=briefing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"briefing.js","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"briefing.js","sourceRoot":"","sources":["../src/briefing.ts"],"names":[],"mappings":"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"}
package/dist/tools.js CHANGED
@@ -8,7 +8,9 @@
8
8
  //
9
9
  // Stretch (v0.2): get_basis, get_sentiment_snapshot, subscribe_alert.
10
10
  import { z } from "zod";
11
+ import { BpeApiError, } from "./client.js";
11
12
  import { buildBriefing } from "./briefing.js";
13
+ import { formatAge } from "./briefing.js";
12
14
  // All tools return a single text content block. Returning structured JSON
13
15
  // would also work, but text is the most agent-portable shape — every model
14
16
  // handles it natively, and we can always graduate to structured output later.
@@ -18,6 +20,28 @@ function asText(text) {
18
20
  function asError(text) {
19
21
  return { content: [{ type: "text", text }], isError: true };
20
22
  }
23
+ // Translate API errors into actionable messages a calling agent (or human
24
+ // reading the agent's transcript) can act on. Recognises the common HTTP
25
+ // status codes and emits an upgrade / retry / config hint instead of a raw
26
+ // stack-trace-shaped string.
27
+ function friendlyError(err, channel) {
28
+ if (err instanceof BpeApiError) {
29
+ if (err.status === 401) {
30
+ return "Invalid or missing API key. Set BPE_API_KEY in your MCP client config (see https://github.com/bxetech/bpe-mcp#install) or request one at https://bxetech.com/contact.";
31
+ }
32
+ if (err.status === 403) {
33
+ const ch = channel ? ` (requires the '${channel}' channel)` : "";
34
+ return `This tool needs Agent tier or higher${ch}. Free tier does not include it — see https://bxetech.com/agents for plans, or contact contact@bxetech.com to upgrade.`;
35
+ }
36
+ if (err.status === 429) {
37
+ return "Rate limit exceeded. Wait a few seconds and retry, or upgrade your tier at https://bxetech.com/agents for higher limits.";
38
+ }
39
+ if (err.status && err.status >= 500) {
40
+ return `BPE backend error (${err.status}). Try again in a moment. If this persists, email contact@bxetech.com.`;
41
+ }
42
+ }
43
+ return err instanceof Error ? err.message : String(err);
44
+ }
21
45
  export function registerTools(server, client) {
22
46
  // ── 1. get_consolidated_price ────────────────────────────────────────────
23
47
  server.tool("get_consolidated_price", "Get the current consolidated Bitcoin price aggregated across the BPE exchange network. Returns price in USD, the number of contributing exchanges, and freshness in milliseconds. Use this when an agent or user asks 'what's the BTC price right now?' — it's faster and more authoritative than calling any individual exchange.", {
@@ -30,22 +54,22 @@ export function registerTools(server, client) {
30
54
  const r = await client.get("price");
31
55
  const venues = r.exchange_count ?? "?";
32
56
  const ageMs = r.timestamp_ms != null ? Math.max(0, Date.now() - r.timestamp_ms) : null;
33
- const ageStr = ageMs == null ? "n/a" : ageMs < 1000 ? `${ageMs}ms` : `${(ageMs / 1000).toFixed(1)}s`;
57
+ const ageStr = formatAge(ageMs);
34
58
  const lines = [`${symbol}: $${formatPrice(r.price)}`];
35
59
  if (r.best_bid != null && r.best_ask != null) {
36
60
  lines.push(`Bid/Ask: $${formatPrice(r.best_bid)} / $${formatPrice(r.best_ask)}` +
37
61
  (r.spread_bps != null ? ` (${r.spread_bps.toFixed(1)} bps spread)` : ""));
38
62
  }
39
- lines.push(`Source: ${venues} exchanges contributing, ${ageStr} old` +
63
+ lines.push(`Source: ${venues} exchanges contributing, ${ageStr}` +
40
64
  (r.confidence != null ? `, confidence ${(r.confidence * 100).toFixed(0)}%` : "") + ".");
41
65
  return asText(lines.join("\n"));
42
66
  }
43
67
  catch (err) {
44
- return asError(`Failed to fetch consolidated price: ${errMsg(err)}`);
68
+ return asError(`Failed to fetch consolidated price: ${friendlyError(err, "price")}`);
45
69
  }
46
70
  });
47
71
  // ── 2. get_market_briefing ───────────────────────────────────────────────
48
- server.tool("get_market_briefing", "Get a concise natural-language summary of the current Bitcoin market state. Synthesises consolidated price, funding-rate skew across major perpetual venues, current ML prediction, and sentiment indicators into a 5-8 line briefing. This is the most token-efficient way for an agent to get the 'what's happening right now' picture — replaces 4-5 raw data calls plus the reasoning to summarise them. Set verbosity='detailed' for per-venue funding breakdown and multi-horizon ML signals.", {
72
+ server.tool("get_market_briefing", "Get a concise natural-language summary of the current Bitcoin market state. Synthesises consolidated price, funding-rate skew across major perpetual venues, current ML prediction, and sentiment indicators. 'brief' mode returns roughly 4 lines (price, funding skew, ML signal, sentiment); 'detailed' adds per-venue funding breakdown and ML sub-model details — typically 6-8 lines. This is the most token-efficient way for an agent to get the 'what's happening right now' picture — replaces 4-5 raw data calls plus the reasoning to summarise them.", {
49
73
  verbosity: z
50
74
  .enum(["brief", "detailed"])
51
75
  .default("brief")
@@ -56,7 +80,7 @@ export function registerTools(server, client) {
56
80
  return asText(briefing);
57
81
  }
58
82
  catch (err) {
59
- return asError(`Failed to build market briefing: ${errMsg(err)}`);
83
+ return asError(`Failed to build market briefing: ${friendlyError(err, "predictions+sentiment+derivatives")}`);
60
84
  }
61
85
  });
62
86
  // ── 3. get_funding_skew ──────────────────────────────────────────────────
@@ -86,7 +110,7 @@ export function registerTools(server, client) {
86
110
  return asText(lines.join("\n"));
87
111
  }
88
112
  catch (err) {
89
- return asError(`Failed to fetch funding skew: ${errMsg(err)}`);
113
+ return asError(`Failed to fetch funding skew: ${friendlyError(err, "derivatives")}`);
90
114
  }
91
115
  });
92
116
  // ── 4. get_ml_signal ─────────────────────────────────────────────────────
@@ -135,7 +159,32 @@ export function registerTools(server, client) {
135
159
  return asText(lines.join("\n"));
136
160
  }
137
161
  catch (err) {
138
- return asError(`Failed to fetch ML signal: ${errMsg(err)}`);
162
+ return asError(`Failed to fetch ML signal: ${friendlyError(err, "predictions")}`);
163
+ }
164
+ });
165
+ // ── 5. get_sentiment_snapshot ───────────────────────────────────────────
166
+ server.tool("get_sentiment_snapshot", "Get current Bitcoin market sentiment indicators: Crypto Fear & Greed index (0-100, with label like 'Fear' / 'Neutral' / 'Greed'), news sentiment (-1 most bearish to +1 most bullish), and mempool stress (0 calm to 1 highly congested). Useful for contextualising price action, detecting positioning extremes that may precede reversals, and as a coarse macro filter for shorter-horizon ML signals.", {}, async () => {
167
+ try {
168
+ const r = await client.get("sentiment");
169
+ const lines = [];
170
+ if (r.fear_greed_index != null) {
171
+ lines.push(`Fear & Greed: ${r.fear_greed_index}/100` +
172
+ (r.fear_greed_label ? ` (${r.fear_greed_label})` : ""));
173
+ }
174
+ if (r.news_sentiment != null) {
175
+ const sign = r.news_sentiment > 0 ? "+" : "";
176
+ lines.push(`News sentiment: ${sign}${r.news_sentiment.toFixed(2)} (range -1 to +1)`);
177
+ }
178
+ if (r.mempool_stress != null) {
179
+ lines.push(`Mempool stress: ${r.mempool_stress.toFixed(2)} (range 0 to 1)`);
180
+ }
181
+ if (!lines.length) {
182
+ return asError("No sentiment data currently available — try again in a few seconds.");
183
+ }
184
+ return asText(lines.join("\n"));
185
+ }
186
+ catch (err) {
187
+ return asError(`Failed to fetch sentiment: ${friendlyError(err, "sentiment")}`);
139
188
  }
140
189
  });
141
190
  }
@@ -145,7 +194,4 @@ function formatPrice(n) {
145
194
  function formatPct(frac) {
146
195
  return `${(frac * 100).toFixed(2)}%`;
147
196
  }
148
- function errMsg(err) {
149
- return err instanceof Error ? err.message : String(err);
150
- }
151
197
  //# sourceMappingURL=tools.js.map
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@bxetech/bpe-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
+ "mcpName": "io.github.bxetech/bpe-mcp",
4
5
  "description": "MCP server for the BPE (Bitcoin Pricing Engine) market-data API. Lets Claude Desktop, Cursor, and other MCP-enabled agents query consolidated BTC pricing, ML signals, funding-rate skew, and natural-language market briefings.",
5
6
  "license": "MIT",
6
7
  "type": "module",