Originally published on medium.com

A friend of mine has had $10,000 sitting in a savings account for eight months.
Sheâs not indecisive by nature. She runs financial models for a living.
But every time she sits down to actually invest it, the same thing happens. Fifteen browser tabs. Two YouTube videos titled âbest stocks for 2026.â A note on her phone called âresearchâ that never gets past the second bullet point.
Last month she asked what Iâd do with it. I didnât give her an answer.
I opened Claude instead.
Not to ask âwhat should I buy.â That question gets you a hedge and a shrug from any honest source, human or AI. I asked something more specific: connect to real market data, pull actual fundamentals and technical readings across a handful of assets, and build a $10,000 allocation you can defend with numbers instead of a feeling.
Hereâs what came back, and why itâs a different exercise than what most people mean when they say âI asked AI where to invest.â
If youâre:
this is worth reading.
My friend had actually tried this already, weeks before she asked me. Sheâd typed âwhat should I invest $10,000 inâ into a chatbot and gotten three paragraphs back that sounded confident and said nothing she could act on.
Thatâs the default outcome. Ask ChatGPT or Claude the same question with no data connection, and youâll get an answer that sounds reasonable and means nothing.
The model doesnât know todayâs price. It doesnât know this weekâs earnings. It doesnât know whether the stock it just recommended is up 40% since its training cutoff or down 40%.
Itâs pattern-matching against a snapshot of the internet thatâs already stale.
Developers building financial tools run into this constantly:
None of that is a reasoning problem. Itâs a data problem.
Claude can reason well about markets. Sector rotation, valuation trade-offs, risk allocation, it understands the concepts fine.
What it canât do on its own is know what MSFT trades at today, or what Johnson & Johnsonâs current dividend payout ratio is, or how far gold has pulled back from its 2026 highs.
Connect it to a live data feed, and the reasoning suddenly has something real to work with.
For this, I used EODHDâs API, which exposes fundamentals, historical prices, and technical indicators for over 150,000 tickers through a set of REST endpoints (and, through MCP, directly callable by Claude inside a conversation).
Instead of asking Claude to ârecommend stocks,â I asked it to pull current fundamentals and technical readings for a shortlist of assets across different risk buckets, then build a $10,000 allocation from what it found.
Not a hot take. A structured pull of P/E ratios, dividend yields, revenue growth, 52-week ranges, and price trend, followed by an allocation decision that had to reference those specific numbers.
Before pulling any numbers, Claude needs a live connection to EODHD. Hereâs the setup:
That connector exposes 75 read-only tools: fundamentals, historical and intraday prices, technical indicators, options, macro data, news, and ESG scores, all sharing one schema instead of five.
Hereâs a simplified version of what a plain REST call looks like behind the scenes, in case youâre wiring this into your own script instead of a chat connector. Fundamentals and technical indicators, per ticker, through EODHDâs REST API:
import requests
API_TOKEN = "YOUR_API_KEY"
TICKERS = ["VOO.US", "MSFT.US", "JNJ.US", "SHY.US"]
def get_fundamentals(ticker):
url = f"https://eodhd.com/api/fundamentals/{ticker}"
params = {"api_token": API_TOKEN, "fmt": "json"}
return requests.get(url, params=params).json()
def get_rsi(ticker, period=14):
url = f"https://eodhd.com/api/technical/{ticker}"
params = {
"api_token": API_TOKEN,
"function": "rsi",
"period": period,
"fmt": "json",
}
return requests.get(url, params=params).json()
for ticker in TICKERS:
highlights = get_fundamentals(ticker).get("Highlights", {})
rsi = get_rsi(ticker)
print(ticker, "P/E:", highlights.get("PERatio"), "| latest RSI:", rsi[-1]["rsi"])
From here you can build:
Thatâs the actual unlock. Not âAI picks stocks,â but âAI reasons over verified, current data and shows its work.â
The script above works fine on its own. So why route through MCP at all?
Because with a plain REST call, you own the integration. You write the request, handle the response shape for each of EODHDâs endpoint categories, and update your code whenever a field changes.
With MCP, that work already lives on EODHDâs server. Claude sees a named tool with a defined schema, not a URL to remember. Ask for a stockâs fundamentals and technical indicators in the same sentence, and the model can call both tools and combine the results without you writing the orchestration logic.
Pros
Cons
Best for: conversational research and prototyping. If youâre building a backend service with strict latency or rate-limit requirements, calling the REST API directly still makes sense there. MCP is for the layer where Claude is doing the reasoning.
Fundamentals from one vendor, technicals from another, news sentiment from a third: thatâs the usual state of a DIY financial data stack, and itâs most of the integration work in a project like this.
EODHDâs pitch is one account covering fundamentals, historical and intraday prices, technical indicators, options, macro data, and news, across more than 150,000 tickers and 70+ exchanges, with 30+ years of history. For this article, that meant one API key instead of three.
The MCP server matters here too. Most alternative data providers donât expose one yet, so even with a cheaper API, youâd still be writing your own tool wrapper for Claude to use it.
Cons worth knowing: the free tier has rate limits, and true real-time US tick data sits behind a paid plan. If your use case is high-frequency trading infrastructure, this isnât that. If itâs AI-assisted research, screening, or the kind of allocation work in this article, the free tier is enough to start.
Hereâs what came out of it, built for a moderate risk tolerance and a multi-year horizon, not a trade.
1. Vanguard S&P 500 ETF (VOO): $3,500 (35%)
VOO closed the week near $702, inside a 52-week range of $578 to $716, and sitting close to its all-time high. Expense ratio: 0.03%. Trailing P/E around 27 to 28. Dividend yield near 1.1%.
The technical picture is a stock still in an uptrend but no longer cheap by any historical measure. The fundamental picture is unremarkable in the way a core holding should be: broad exposure to roughly 500 large US companies, no single-stock risk, and an expense ratio that barely registers.
Best for: the base of the portfolio, not the return driver.
2. Microsoft (MSFT): $2,000 (20%)
MSFT traded around $491, off its 52-week high of $554 but well above its 52-week low of $349. P/E near 28. Dividend yield under 1%, small but growing.
The fundamentals carry the case here: revenue growth projected near 18% this year and over 19% next year, driven by Azure and AI infrastructure demand. Analyst consensus sits at âStrong Buyâ with price targets clustered well above the current price.
Cons: a premium valuation that already prices in a lot of that growth, and full exposure to whatever happens to AI capex spending if the cycle cools.
Best for: growth exposure without single-product concentration risk.
3. Johnson & Johnson (JNJ): $2,000 (20%)
JNJ traded near $260, close to its 52-week high, with a P/E around 30, a dividend yield around 2%, and a payout ratio near 60%.
That last number matters more than it looks. JNJ has raised its dividend for 64 consecutive years. A 60% payout ratio means thereâs room to keep doing that even if earnings growth slows.
Best for: the defensive counterweight to MSFTâs growth bet. Healthcare demand doesnât move with the Nasdaq.
4. Gold, via a physically-backed ETF: $1,500 (15%)
This is the position the fundamentals canât fully explain, because gold doesnât have earnings or a P/E ratio. It has a price, and the price tells the story.
Spot gold spent 2026 on one of its sharpest runs in decades, pushing past $5,000 an ounce for the first time before shedding roughly $1,200 in two trading days, its worst two-day drop since 1983. It has since stabilized in the low $4,000s.
Central bank buying and rate-cut expectations are still supportive. But a chart that goes vertical and then falls 20% in 48 hours is not a chart you build a full position around.
Best for: a hedge sized small enough that a further correction doesnât wreck the portfolio, not a bet on $6,000 gold.
5. iShares 1â3 Year Treasury Bond ETF (SHY): $1,000 (10%)
SHY trades around $82 with a 30-day SEC yield near 4%, an effective duration under two years, and volatility close to zero relative to equities.
Thereâs no technical or fundamental debate to have here. Itâs the position that lets you rebalance into a drawdown instead of selling into one.
Best for: dry powder that earns a real yield while it waits.
If youâre building anything similar, the API tier that made this fast enough to actually run was EODHDâs, mostly because fundamentals, historical prices, and technical indicators live behind one consistent interface instead of three different providers.
â Get started with EODHDâs API
None of this is a prediction. Itâs the short list of numbers worth re-checking before the next rebalance, because each of these positions has a specific thing that would break its thesis.
Rate cuts are the biggest swing factor for the whole mix. Cuts tend to support equity valuations further and are part of why gold has stayed bid despite its pullback. Theyâd also lower SHYâs yield on reinvestment, which is the trade-off for holding something that safe.
MSFT is the position with the least room for error. Its case rests on Azure and AI infrastructure growth holding near the 18 to 19% analysts are currently projecting. A slowdown in that specific number matters more here than in any other position, because the valuation already assumes it happens.
JNJâs dividend math is the thing to watch, not the price. A 64-year increase streak and a 60% payout ratio give real room. A patent cliff or a major litigation headline would show up in the fundamentals before it shows up in the dividend.
Gold is the position to reassess first if it moves again. After a run past $5,000 and a 20% two-day drop, another leg down toward the low $4,000s wouldnât break the thesis at this sizing. A break below the support levels most technical desks are already watching would be the signal to look again, not to add more.
Two large, quality-tilted equity positions carrying most of the growth. One dividend aristocrat absorbing the volatility. A gold position sized like a hedge, not a conviction call. Cash-like treasuries doing nothing exciting on purpose.
None of it is a hot tip. All of it is a number Claude could point to and defend.
This is not financial advice, and Iâm not a financial advisor. Itâs a demonstration of what happens when you stop asking an AI to guess and start asking it to look something up first.
Need technical content for your fintech, API, or developer product?
I write data-backed tutorials like this one, grounded in real API calls instead of marketing copy.
â See my work
Looking for technical content for your company? I can help â LinkedIn · kevinmenesesgonzalez@gmail.com