I've been writing about MCP servers for a couple of months now. The most common (fair) reply I get is some version of "cool thesis, but show me what actually comes back when you call it." This post does exactly that. I sat down today, ran seven real calls against the Helium MCP + REST surface, and pasted the actual JSON below. No screenshots, no curated demos, no "imagine if." The numbers below are timestamped May 26, 2026, the same day I wrote this.
Helium is a free MCP server + plain REST API that combines two things people normally pay separate vendors for: (1) per-symbol ML-derived options pricing and (2) 31-dimensional structured news-bias scoring across ~5,000 sources. The REST surface is meant to be reachable from a five-line requests.get. The MCP surface is the same backend with tool-registration metadata on top. There's no signup, no API key, no SDK — just an IP-rate-limited free tier (50/day).
Let's see what it returns.
Probe 1: NVDA ticker (/mcp_ticker/)
import requests
r = requests.get("https://heliumtrades.com/mcp_ticker/", params={"ticker": "NVDA"})
print(r.json())
What came back today:
- Latest price: $215.33
- 37-day forecast: +6.0% (lower-bound +2%, upper-bound +10%)
-
Probability-weighted outcomes:
- 45% — NVDA above $230 within 45-90 days
- 25% — chop in $210-230 over 30-120 days
- 20% — drift to $190-210 within 45-120 days
- 7% — severe to $180-190 within 60-120 days
- 3% — ultra-bearish below $180
Each probability is supposed to be Brier-scoreable — if the model says "45% above $230 in 45 days," that's a falsifiable claim with a resolution date. You can backtest it against expiration.
Probe 2: AAPL options ML pricing (get_option_price)
This is the one I most wanted to test live. AAPL is at $308.33 today. I asked for the 30-DTE $310 call (close to ATM, June 26 expiration):
r = requests.get("https://heliumtrades.com/mcp_option_price/", params={
"symbol": "AAPL", "strike": 310,
"expiration": "2026-06-26", "option_type": "call",
})
print(r.json())
# {"symbol":"AAPL","strike":310.0,"expiration":"2026-06-26","option_type":"call",
# "predicted_price":6.53,"prob_itm":0.42,"options_data_date":"2026-05-26"}
The market mark on this contract today is $7.55. Helium's model says fair value is $6.53 — i.e., the contract is overpriced by ~$1, or ~13.5% above what the model thinks it should clear.
The contract's delta is 0.50 (market-implied probability of finishing in the money is ~50%). Helium's prob_itm is 0.42, meaningfully lower. Two ways to read it:
- The model thinks IV is too high. (Helium thinks realized vol will undershoot implied — a short-premium-into-strength view.)
- The model is wrong. (Always a live hypothesis.)
The point is the disagreement is concrete and testable. On June 26, this contract resolves. If AAPL closes below $310, the model wins one (or rather, gets a partial credit on the calibration test). The whole point of prob_itm being explicit is so you can score it. Compare with the put side:
# AAPL 295P 6/26 — market mark $3.09
# Helium predicted: $2.36 / prob_itm 0.23 (market-implied via delta: ~0.24)
The put case is funnier: Helium agrees with market-implied probability to within one percentage point, but disagrees on the price by ~24%. That can only happen if the model thinks the payoff conditional on ITM is smaller than what market IV would price it. That's a different bet from the call-side bet, and you can see both surfaces from the same endpoint.
Probe 3: Top trading strategies (get_top_trading_strategies)
r = requests.get("https://heliumtrades.com/mcp_top_strategies/")
print(r.json())
Today's output ranks long-vol and short-vol candidates across the whole equity universe. Top 5 of each:
| Short vol (likely overpriced IV) | Long vol (likely cheap IV) |
|---|---|
| SWK — Stanley Black & Decker ($78.94) | DUK — Duke Energy ($125.01) |
| UVV — Universal ($54.61) | KD — Kyndryl ($12.04) |
| ABCL — AbCellera Biologics ($5.20) | BEN — Franklin Resources ($31.02) |
| HAS — Hasbro ($87.99) | SNAP — Snapchat ($5.75) |
| BEN — Franklin Resources ($31.02) | OUST — Ouster ($42.70) |
Note that BEN appears on both sides — sometimes the long-vol model and the short-vol model disagree on the same name. That's a feature, not a bug; it signals the kind of name where the term structure is doing something interesting and a calendar/diagonal might be the actual edge.
Each name also comes back with full bullish-case / bearish-case / probability-weighted outcomes (same shape as the NVDA pull above). One call, top-N ranked candidate list, ready for further filtering.
Probe 4: News bias on a source (get_source_bias)
I picked WSJ:
r = requests.get("https://heliumtrades.com/mcp_source_bias/", params={"source": "Wall Street Journal"})
print(r.json())
Returned (excerpt of the 31 dimensions):
- Articles analyzed: 528
- Emotionality: 7 / 10
- Sensational: 3, Fearful: 4, Opinion: 4, Political: 3
- Anti-establishment ↔ Pro-establishment: +6 (pro)
- Dovish ↔ Hawkish: +2 (hawkish)
- Covering responses (defensive framing): 6 / 10
- Signature phrases: "hoover institution fellow", "jerome powell", "spirit airlines"
Notice how the signature phrases are doing real work. They're not generic — they're the multi-word expressions that appear at higher frequency than the cross-corpus baseline. That tells you the editorial fingerprint without you having to read 528 articles.
Probe 5: All source biases at once (get_all_source_biases)
This is the one I think is genuinely under-appreciated. One call, 216 sources, 113,253 articles' worth of aggregated 31-dim scoring:
r = requests.get("https://heliumtrades.com/mcp_all_source_biases/")
# Returns: {"sources": [216 entries with full bias profiles]}
Sorting today's snapshot by a single dimension, here's the bottom-and-top tail of the Fear score (0-30 scale):
| Most fearful | Score (out of 30) | Articles |
|---|---|---|
| World Socialist | 28 | 296 |
| Unz | 28 | 178 |
| American Thinker | 27 | 139 |
| Global Research | 26 | 109 |
| Common Dreams | 26 | 293 |
What's interesting is that "most fearful" cuts across the political spectrum — World Socialist (far-left), Unz (far-right), American Thinker (right), Common Dreams (left), Global Research (conspiratorial-left). High fear in framing isn't a partisan signature; it's a style. You couldn't see that without aggregated source-level scoring.
By the Credibility dimension instead:
| Highest credibility | Score (out of 50) | Articles |
|---|---|---|
| AP | 41 | 404 |
| Texas Tribune | 37 | 138 |
| Science Daily | 37 | 232 |
| medicalxpress.com | 36 | 133 |
| earth.com | 36 | 110 |
The corpus is big enough that the rankings are stable.
Probe 6: Balanced news synthesis (search_balanced_news)
r = requests.get("https://heliumtrades.com/mcp_balanced_search/", params={"query": "fed rate cuts", "limit": 1})
Output (excerpt):
"summary": "Fed signals potential rate cuts, affecting markets and mortgage rates.",
"takeaway": "Anticipated rate cuts indicate optimism for easing borrowing costs, but risks of inflation resurgence remain important.",
"context": "Federal Reserve's monetary policy decisions are highly consequential, impacting various economic sectors...",
"evidence": ["Cooling inflation and stable economic indicators...[16]",
"Anticipation of rate cuts has spurred refinancing activities...[8]"],
"potential_outcomes": [
"Rate cuts stimulate growth and stabilize housing — economic expansion (70%)",
"Premature rate cuts reignite inflation — economic instability (30%)"],
"relevant_tickers": "SPY,QQQ,NLY",
"num_sources": 4
That's a multi-source synthesis with probability-weighted falsifiable outcomes, citation indices, relevant tickers tagged out, and the synthesis assembled from 4 sources. One HTTP call. The "70% rate cuts stimulate growth" claim is again Brier-scoreable.
Probe 7: One source's tagged bias on a real URL (get_bias_from_url)
r = requests.get("https://heliumtrades.com/mcp_url_bias/", params={"url": "https://www.bbc.com/news"})
Returns: source identification, total social shares (338,183 for the BBC homepage), and per-URL bias metadata when the article has been scored. This one is the cheapest call to do at scale on a backlog of URLs you have lying around — paste a URL in, get a structured score back.
Top comments (0)