The Problem
Financial data APIs (Alpha Vantage, Polygon, Finnhub) provide price data but not the news, analysis, and sentiment that drive price movements. Dedicated financial news APIs cost $100-500/mo. AI agents acting as research assistants need both price data and news context to be useful for investment research. No single MCP server covers both.
The Scavio Solution
Add Scavio's MCP server to your financial AI agent alongside your market data source. The agent uses the market data MCP for prices and the Scavio MCP for news, Reddit sentiment, and YouTube analysis on any ticker. One MCP config change gives the agent web search, Reddit discussion monitoring, and YouTube earnings call analysis.
Before
Financial AI agent has a market data MCP for prices. User asks 'Why did NVDA drop 5% today?' Agent can confirm the price drop but cannot explain why. No news context, no Reddit sentiment, no analyst commentary.
After
Agent queries Scavio MCP for 'NVDA stock news today', 'NVDA reddit wallstreetbets', and 'NVDA earnings analysis youtube'. Returns news articles, Reddit discussion threads, and YouTube analysis videos alongside the price data. Complete answer with cited sources.
Who It Is For
Developers building financial AI agents or research assistants that need news and sentiment context alongside market price data.
Key Benefits
- News and sentiment context complements price-only market data APIs
- Reddit monitoring catches retail sentiment shifts early
- YouTube search surfaces earnings call analyses and expert commentary
- Single MCP server covers web news, Reddit, and YouTube
- Each search costs $0.005 -- daily monitoring of 10 tickers costs $0.15
Python Example
import requests, os
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
def stock_news(ticker: str) -> dict:
"""Get news, Reddit sentiment, and YouTube analysis for a ticker."""
sources = {}
# Web news
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": f"{ticker} stock news today", "country_code": "us"},
timeout=10,
)
sources["news"] = [
{"title": r["title"], "url": r["link"], "snippet": r["snippet"]}
for r in resp.json().get("organic_results", [])[:5]
]
# Reddit sentiment
resp2 = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": f"{ticker} stock", "platform": "reddit", "country_code": "us"},
timeout=10,
)
sources["reddit"] = [
{"title": r["title"], "url": r["link"]}
for r in resp2.json().get("organic_results", [])[:5]
]
# YouTube analysis
resp3 = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": f"{ticker} stock analysis 2026", "platform": "youtube", "country_code": "us"},
timeout=10,
)
sources["youtube"] = [
{"title": r["title"], "url": r["link"]}
for r in resp3.json().get("organic_results", [])[:5]
]
return sources
# 3 API calls = $0.015 per ticker
intel = stock_news("NVDA")
print(f"News: {len(intel['news'])} articles")
print(f"Reddit: {len(intel['reddit'])} discussions")
print(f"YouTube: {len(intel['youtube'])} videos")JavaScript Example
const API_KEY = process.env.SCAVIO_API_KEY;
const H = {"x-api-key": API_KEY, "Content-Type": "application/json"};
async function stockNews(ticker) {
const sources = {};
const [newsRes, redditRes, ytRes] = await Promise.all([
fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({ query: `${ticker} stock news today`, country_code: "us" }),
}),
fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({ query: `${ticker} stock`, platform: "reddit", country_code: "us" }),
}),
fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({ query: `${ticker} stock analysis 2026`, platform: "youtube", country_code: "us" }),
}),
]);
const [news, reddit, yt] = await Promise.all([newsRes.json(), redditRes.json(), ytRes.json()]);
sources.news = (news.organic_results || []).slice(0, 5).map(r => ({ title: r.title, url: r.link, snippet: r.snippet }));
sources.reddit = (reddit.organic_results || []).slice(0, 5).map(r => ({ title: r.title, url: r.link }));
sources.youtube = (yt.organic_results || []).slice(0, 5).map(r => ({ title: r.title, url: r.link }));
return sources;
}
const intel = await stockNews("NVDA");
console.log(`News: ${intel.news.length} articles`);
console.log(`Reddit: ${intel.reddit.length} discussions`);
console.log(`YouTube: ${intel.youtube.length} videos`);Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit
YouTube
Video search with transcripts and metadata