MoneySignals Documentation
Give your code — or your AI agent — the measured market edge: event-driven signals with a public, audited track record, ML predictions with honest realized accuracy, and full market context. Available as a REST API and as a one-file MCP server you can connect to any agent in a single step.
🤖 Building an AI agent?
Jump to Connect via MCP — one command, 21 tools, ready to pair with a broker for automated investing.
⚙️ Writing code?
Jump to the REST API — clean JSON over HTTPS, or the interactive API reference.
Overview
Everything MoneySignals knows is reachable two ways, over the same data:
- REST API —
https://api.moneysignals.us. JSON over HTTPS, one API key. - MCP server — a thin Model Context Protocol wrapper over that API, so Claude Desktop, Claude Code, or any MCP client can call it as tools.
The product is built around one finding: selective, event-driven signals carry a measured edge, while always-on per-ticker ML is near coin-flip out-of-sample. The API surfaces both — and is honest about which is which (see Where the edge is).
Quick start
1. Verify the edge — no key needed
The audited track record is public, so you can check it before signing up:
# live win rate, avg return, resolved-call count for the event signals
curl https://api.moneysignals.us/track-record
2. Get a free API key — it comes with the free email signup
Join the free daily email and confirm your address — your API key arrives in the
welcome email, no card required. It unlocks the ML predictions and every market-context endpoint.
Pass it as the X-API-Key header:
curl -H "X-API-Key: at_sk_your_key" \
https://api.moneysignals.us/api/v1/market/regime
Paid keys (from $49/mo) add the event signals — the measured edge — plus alt-data and higher limits.
3. Or connect an agent in one command — hosted MCP, nothing to install
claude mcp add --transport http moneysignals https://api.moneysignals.us/mcp \
--header "X-API-Key: at_sk_your_key"
Then ask your agent: “What’s the market regime, and how accurate were MoneySignals’ recent predictions?” — see Connect via MCP.
Authentication, tiers & limits
- Header:
X-API-Key: at_sk_…on every request except the public ones below. - Public (no key):
GET /track-recordandGET /demo/snapshot— so you can connect and verify immediately. - Free key: included with the free email signup — confirm your email and the key is in the welcome email. Lost it? Sign up again with the same address and confirm: the old key is revoked and a fresh one is emailed to you.
- Your key’s status:
GET /api/v1/account/meworks on every key and returns your tier, rate limits, and total usage. (Detailed 30-day analytics viaGET /api/v1/account/usageis API Pro.) A429means slow down or upgrade. - Errors come back as JSON:
401(missing/invalid key) and403(tier doesn’t include the endpoint) point you to pricing.
| Tier | Price | Unlocks | Limits |
|---|---|---|---|
| Free | $0 — email signup | ML predictions + realized accuracy, market regime, economic calendar, anomalies, fear/greed, put/call, OHLCV bars | 5/min · 100/day |
| API Starter | $49/mo | Everything in Free + event signals (best picks, daily brief, trade plan, performance, congress trades) + alt-data (flights, lobbying, hearings) | 10/min · 500/day |
| API Pro | $199/mo | Everything in Starter + social sentiment/trending + batch predictions + usage analytics | 30/min · 1,000/day |
Connect an AI agent (MCP)
Any MCP client (Claude Code, Claude Desktop, your own agent) gets all of MoneySignals as callable tools — no SDK to learn, no endpoints to wire up. Two ways to connect, same 21 tools either way: the hosted server (recommended — one command, nothing to install) or a downloadable one-file stdio server.
Hosted — one command, nothing to install
claude mcp add --transport http moneysignals https://api.moneysignals.us/mcp \
--header "X-API-Key: at_sk_your_key"
No Python, no download, always the latest tools. Your key rides on the connection as an HTTP header —
leave the --header off to connect keyless and try get_track_record first.
Any client that speaks MCP Streamable HTTP works the same way: point it at
https://api.moneysignals.us/mcp and send X-API-Key (or
Authorization: Bearer) on each request. Building your own agent? It’s plain JSON-RPC:
curl -X POST https://api.moneysignals.us/mcp \
-H "Content-Type: application/json" -H "X-API-Key: at_sk_your_key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_market_regime","arguments":{}}}'
Or run it locally (stdio)
Prefer a local process — or your client can’t send custom headers (Claude Desktop’s config, for one)? Download the one-file server:
pip install "mcp>=1.2" httpx
# download the one-file server (always the latest)
curl -O https://moneysignals.us/mcp/server.py
Claude Code — local stdio variant
claude mcp add moneysignals \
--env MONEYSIGNALS_API_KEY=at_sk_your_key \
-- python /path/to/server.py
Claude Desktop — config
Settings → Developer → Edit Config, then add:
{
"mcpServers": {
"moneysignals": {
"command": "python",
"args": ["/path/to/server.py"],
"env": { "MONEYSIGNALS_API_KEY": "at_sk_your_key" }
}
}
}
Restart the client. Without a key, only get_track_record works — enough to confirm the connection.
The free key unlocks predictions, market context and the ETF pullback signal; paid keys add the event signals.
Override the base URL with MONEYSIGNALS_API_BASE if needed.
The 21 tools
no key public. free key works with the free key from the email signup. starter / pro need a paid API plan (from $49/mo).
| Tool | Returns | |
|---|---|---|
get_track_record | no key | Live audited win rate, avg return, resolved-call count — wins and losses included. |
get_latest_predictions | free key | Latest daily ML predictions + the honest realized accuracy. |
get_ticker_prediction | free key | Latest prediction for one ticker. |
get_prediction_accuracy | free key | Realized out-of-sample model accuracy. |
get_market_regime | free key | RISK_ON/OFF, VIX, SPY vs 200MA, position multiplier — the risk gate. |
get_economic_calendar | free key | Upcoming US economic events (FOMC/CPI/NFP), impact-rated. |
get_anomalies | free key | Today’s statistical outliers (≥σ daily moves) + reversal context. |
get_market_character | free key | Dispersion gauge: how violent the single-name tape is right now vs every year since 2015 (2026 = record). |
get_fear_greed | free key | Fear & Greed index. |
get_put_call_ratio | free key | Put/call ratio (with a freshness flag). |
get_ohlcv | free key | Recent daily OHLCV bars for a ticker. |
get_etf_pullback_signal | free key | Mechanical ETF dip-buying rule (RSI2 + 200-day trend): live fire status + full measured track record vs the honest above-trend base rate. |
get_daily_brief | starter | One-call decision brief: regime gate + top signals + next macro event + guidance. |
get_best_signals | starter | Highest-conviction event signals — only types that clear our precision gates; honestly empty when none do. |
get_trade_plan | starter | Best signals reshaped as execution-ready buy/sell actions (pair with a broker). |
get_signal_performance | starter | Per-event-type historical win rates — which signal types to trust. |
get_event_signals | starter | All live event signals, each with its measured type win-rate. |
get_congress_trades | starter | Congressional disclosures (raw — historically an anti-signal). |
get_social_sentiment | pro | Reddit mention/upvote volume for a ticker. |
get_social_trending | pro | Tickers trending on social (finance-filtered). |
get_account_usage | pro | Your key’s usage / rate-limit status. |
Automated execution — pair with a broker
MCP servers don’t call each other; they’re both tools your agent uses. So automated investing is: connect both the MoneySignals MCP (for what to trade) and a broker MCP — e.g. Robinhood’s Agentic Trading MCP — (for execution), and let the agent orchestrate.
Two tools make this turnkey:
get_daily_brief— the whole gated decision in one call: is the regime safe, what are the top picks, is a macro event imminent.get_trade_plan— the picks already shaped as{action, ticker, conviction}so each item maps straight onto a broker order.
{
"count": 2,
"plan": [
{"action":"buy", "ticker":"SMH", "conviction":0.61, "type_win_rate":0.76},
{"action":"sell_or_short", "ticker":"QPQ", "conviction":0.48}
],
"disclaimer": "Model-derived suggestions — NOT financial advice."
}
Example agent prompt:
“Connect to both MoneySignals and Robinhood. Call get_daily_brief. If the regime isn’t
RISK_OFF and no high-impact event is within 1 day, place Robinhood market orders for each buy with
conviction ≥ 0.55, sized to 2% of buying power; skip anything I already hold. Summarize the orders.”
You own execution and risk. MoneySignals supplies measured-edge signals; your agent and broker place, size, and risk-manage every order. Cap position size, set stops, and review. Not financial advice.
REST API reference
Base URL https://api.moneysignals.us. All endpoints below are prefixed /api/v1 unless
noted, return JSON, and need the X-API-Key header. Try them live in the interactive
API reference (or ReDoc).
Signals — the edge
API Starter and up — except /track-record (public) and /signals/etf-pullback (free key).
| Method & path | What it does |
|---|---|
GET /signals/brief | One-call decision brief: regime + top signals + next macro event + guidance. |
GET /signals/etf-pullback free key | Mechanical ETF pullback-in-uptrend signal (RSI2 + 200-day trend): live fire status + full measured track record vs the honest base rate. |
GET /signals/best | Highest-conviction picks; only types that clear the precision gates, ranked by conviction. |
GET /signals/performance | Per-(event_type, second_order) realized win rates, labeled strong→anti-signal. |
GET /signals/events | All live event signals + each one’s historical type win-rate. |
GET /signals/congress-trades | Congressional disclosures (raw; an anti-signal historically). |
GET /track-record free | Audited cumulative performance of the event signals (no /api/v1 prefix). |
Predictions
Works with the free key (/predictions/batch is API Pro).
| Method & path | What it does |
|---|---|
GET /predictions/latest | Latest daily ML predictions + top-level realized_accuracy. |
GET /predictions/{ticker} | Latest predictions for one ticker, across timeframes. |
GET /predictions/accuracy | Realized out-of-sample accuracy by timeframe. Rows carry status: live (daily) or archived_sample (weekly/monthly — pipelines discontinued 2026-03-23; a closed Jan–Mar 2026 sample, not a live metric). |
GET /predictions/batch | Predictions for many tickers in one call (Pro). |
Market context
Works with the free key.
| Method & path | What it does |
|---|---|
GET /market/regime | Risk regime: VIX, SPY vs 200MA, position multiplier. |
GET /market/economic-calendar | Upcoming US economic events, impact-rated (?impact=high). |
GET /market/anomalies | Today’s ≥σ daily-move outliers + next-day reversal stats. |
GET /market/character | Market-character/dispersion gauge vs 2015–2025 full-year references (?window= trading days). |
GET /market/ohlcv/{ticker} | Recent daily/weekly/monthly bars. |
GET /market/fear-greed | Fear & Greed index history. |
GET /market/pcr | Market put/call ratio (carries a stale flag). |
Social, alt-data & account
Social is API Pro; alternative data is API Starter and up. /account/me works on
any key (/account/usage is API Pro).
| Method & path | What it does |
|---|---|
GET /social/trending | Trending tickers (finance-filtered; ?platform= for raw feeds). |
GET /social/sentiment?ticker= | Reddit mention/upvote volume for a ticker. |
GET /alternative/flights | DC-area corporate-jet signals with cross-validation. |
GET /alternative/lobbying · /hearings | Lobbying filings & congressional hearings by ticker. |
GET /account/me · /account/usage | Your key’s tier, limits, and usage. |
Where the edge is
We did the walk-forward homework so you don’t over-trust the wrong thing:
The candidate edge: second-order, event-driven signals — a catalyst whose indirect effect is
the trade. Their aggregate resolved performance is published live on the track record;
per-type win rates are noisier and can decay as samples grow, so get_best_signals only surfaces
types that clear our statistical precision gates (Wilson lower-bound win rate + signed expectancy) — and is
honestly empty when nothing currently does. get_signal_performance shows the live per-type map.
Context, not edge: per-ticker daily ML direction is near coin-flip out-of-sample — so
realized_accuracy is reported honestly (~0.48), and you should weight raw predictions accordingly.
Weekly/monthly prediction pipelines were discontinued 2026-03-23: their accuracy figures are an
archived Jan–Mar 2026 sample (flagged accuracy_status: "archived_sample" in the API) with
too few independent windows to establish skill.
An anti-signal: simply following congressional trades has underperformed. We label it so you don’t mistake the data feed for a recommendation.
Conviction ranks signals by a sample-size-shrunk type win-rate × the signal’s own confidence, so a lucky small-sample type can’t top the list.
Honesty & limits
- The track record is built from resolved signals (their stated horizon has elapsed) — no live-signal leakage, no cherry-picking. First-order types are included so the numbers aren’t flattering by selection.
- Aggregate returns are direction-signed P&L — a correct bearish call counts positive, so winning shorts aren’t averaged away. Ledger rows show the raw price move; direction + outcome carry the sign there.
- Win rates on small samples are noisy and can decay; treat any single number as evidence, not a guarantee.
- Some feeds lag (e.g. options-derived PCR carries a
staleflag); the API tells you when. - Nothing here is financial advice. Predictions and signals are automated, uncertain, and frequently wrong. See the Terms.