DEV Community

connerlambden
connerlambden

Posted on

I probed my own MCP server — here's what 7 live API calls actually return

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())
Enter fullscreen mode Exit fullscreen mode

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"}
Enter fullscreen mode Exit fullscreen mode

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:

  1. The model thinks IV is too high. (Helium thinks realized vol will undershoot implied — a short-premium-into-strength view.)
  2. 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)
Enter fullscreen mode Exit fullscreen mode

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())
Enter fullscreen mode Exit fullscreen mode

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())
Enter fullscreen mode Exit fullscreen mode

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]}
Enter fullscreen mode Exit fullscreen mode

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})
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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"})
Enter fullscreen mode Exit fullscreen mode

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)