Funda Data
Query Funda AI financial data via two surfaces: the MCP server at https://funda.ai/api/mcp for analyst-grade research synthesis (DCF, comps, earnings previews/recaps, sector deep-dives, SEC filings, transcripts, supply-chain mapping, ownership flow, macro framing) via the agent_chat tool — OR the REST API at https://api.funda.ai/v1 with FUNDA_API_KEY for raw data (real-time quotes, intraday candles, EOD prices, financial statements, options chains/greeks/GEX, supply-chain KG, social sentiment, news, calendars, FRED, ESG, congressional trades, AI hiring signals). Triggers: "funda", "funda.ai", real-time quote, stock price, intraday, balance sheet, income statement, options chain, DCF, comps, earnings preview/recap, analyst estimates, 10-K/10-Q/8-K, transcript, ownership flow, gamma exposure, supply chain, sector deep-dive, congressional trades, FRED. Prefer MCP for synthesis/analysis questions; use REST for raw structured data the MCP declines.
MCP get_skill({ skillId: "funda-data-8d115b98" })Use this skill with your agent
Create a free account and connect via MCP
# Funda AI Skill
Funda AI exposes two complementary surfaces backed by the same data:
| Surface | Best for | Auth | Output |
|---|---|---|---|
| **MCP** `agent_chat` at `https://funda.ai/api/mcp` | Research, analysis, synthesis | OAuth (auto via `claude mcp add`) | Synthesized text with disclaimer |
| **REST** `/v1/*` at `https://api.funda.ai` | Raw structured data | `FUNDA_API_KEY` Bearer | JSON |
Both require an active [Funda AI](https://funda.ai) subscription.
---
## Step 1: Decide Which Surface
| User wants | Surface |
|---|---|
| DCF / comps walkthrough, sector view, transcript synthesis, company primer | MCP |
| Earnings preview/recap with judgment, beat-miss decomposition, narrative framing | MCP |
| Real-time or intraday quote, EOD price history | REST |
| Raw options chain snapshot, greeks, GEX time series | REST |
| Specific line item from a financial statement (single number, JSON) | REST |
| 13F filings, insider trades, congressional trades as rows | REST |
| News with structured sentiment / event timeline (JSON) | REST |
| Bulk dataset downloads | REST |
| AI-company hiring signals (OpenAI, Anthropic, Google, xAI) | REST |
**Default to MCP** for ambiguous research-style questions. **Use REST** when
the user wants machine-readable structured data — or when the MCP refuses
(real-time prices, raw quotes).
The MCP also refuses buy/sell calls, price targets, personalized
portfolio advice, tax/legal advice, and trade execution. Those are out of
scope for both surfaces — decline politely and don't fall through to REST
hoping for a different answer.
---
## Step 2: MCP Flow (Research)
### 2a. Verify the MCP is connected
```
!`claude mcp list 2>/dev/null | grep -iE "^funda:" || echo "FUNDA_MCP_NOT_CONNECTED"`
```
- A line starting with `funda:` → registered. The tool is callable as `mcp__funda__agent_chat`. Continue.
- `FUNDA_MCP_NOT_CONNECTED` → ask the user to install:
```bash
claude mcp add --transport http funda https://funda.ai/api/mcp
```
A browser tab opens for OAuth approval (1-hour token + 30-day refresh, auto-managed). The Claude Code session may need to be restarted before the tool registers.
### 2b. Frame the question
`agent_chat` is a fresh research turn with **no cross-call memory** — bake
the ticker, time horizon, and assumptions into the question text itself.
| User wants | Question shape |
|---|---|
| Earnings preview | "Preview MSFT's Q3 print Thursday — segment trends, where consensus is aggressive/conservative, beat/miss pattern." |
| Earnings recap | "Walk through NVDA Q2: beat/miss by segment, guide vs consensus, transcript Q&A on data-center demand." |
| Sector deep-dive | "Summarize the 2026 hyperscaler capex cycle — spending tiers by name, supplier exposure, gross-margin implications." |
| Supply chain | "Map TSMC's customer concentration and N2 ramp risks — top three exposures by revenue." |
| Filing summary | "Diff the new risk factors in PLTR's latest 10-K versus the prior year." |
| DCF | "Walk through a DCF for NVDA assuming 25% data-center growth, 10% terminal margin, 9% WACC — surface the sensitivity table." |
| Macro | "Where in the Dalio long-term debt cycle is the US, and what does that imply for duration positioning?" |
| Ownership | "Has institutional ownership of CRWD shifted in the latest 13F filings — net buyers vs sellers?" |
If the user gave only a ticker, ask one clarifying question to scope the
turn (preview? recap? primer? DCF?) before calling — vague questions burn
a turn and return vague answers.
If the user is following up on a prior Funda response, quote the relevant
paragraph back inside the new question; the agent has no memory of prior
calls.
For more example questions per topic, see `references/research-topics.md`.
### 2c. Call the tool
```
mcp__funda__agent_chat(question: "<full research question>")
```
Typical run is 15–60 seconds; the server streams progress notifications
throughout, so the client doesn't time out.
Response shape:
- `content[0].text` — answer prefixed with `[Funda research output — fundamental analysis, informational only…]`. Keep the prefix.
- `_meta["funda.io/conversation_id"]` — UUID. The in-app history page is `https://funda.ai/agent-chat?c=<id>` (the `/agent-chat` route redirects to `/agent-chat-v2?c=<id>`).
- `_meta["funda.io/timed_out"]` — `true` if the agent hit its run budget. Answer is partial; offer to retry with a tighter scope.
If the call returns 403 `subscription_required`, the MCP is registered
but the account isn't subscribed — direct the user to https://funda.ai
to activate.
Each call costs a research turn. Don't speculatively re-call with a
rephrased question if the first answer was reasonable.
---
## Step 3: REST Flow (Raw Data)
### 3a. Resolve FUNDA_API_KEY
The skill resolves `FUNDA_API_KEY` in this order:
1. `FUNDA_API_KEY` environment variable
2. `FUNDA_API_KEY` in `.env` in the current directory
3. `FUNDA_API_KEY` in `.env` at the git repo root (so a worktree inherits the key from the main checkout)
```
!`if [ -n "$FUNDA_API_KEY" ]; then echo "KEY_FROM_ENV_VAR"; elif [ -f .env ] && grep -qE "^FUNDA_API_KEY=" .env; then echo "KEY_FROM_LOCAL_DOTENV:$(pwd)/.env"; else GIT_COMMON=$(git rev-parse --path-format=absolute --git-common-dir 2>/dev/null); if [ -n "$GIT_COMMON" ]; then ROOT=$(dirname "$GIT_COMMON"); if [ -f "$ROOT/.env" ] && grep -qE "^FUNDA_API_KEY=" "$ROOT/.env"; then echo "KEY_FROM_ROOT_DOTENV:$ROOT/.env"; else echo "KEY_NOT_SET"; fi; else echo "KEY_NOT_SET"; fi; fi`
```
Then act on the result:
- `KEY_FROM_ENV_VAR` — use `$FUNDA_API_KEY` directly in curl calls.
- `KEY_FROM_LOCAL_DOTENV:<path>` / `KEY_FROM_ROOT_DOTENV:<path>` — load once before calling:
```bash
export FUNDA_API_KEY=$(grep -E "^FUNDA_API_KEY=" <path> | head -1 | cut -d= -f2- | sed 's/^["'\'']//;s/["'\'']$//')
```
- `KEY_NOT_SET` — ask the user for their key. They can either `export FUNDA_API_KEY="..."` or add `FUNDA_API_KEY=...` to `.env` at the repo root (preferred for worktrees).
### 3b. Find the right endpoint
Match the user's request to a category and read the corresponding
reference file for full parameters and response schemas.
| Category | Endpoint family | Reference |
|---|---|---|
| Real-time / batch / aftermarket quotes | `/v1/quotes?type=...` | `references/market-data.md` |
| Historical EOD, intraday candles, technical indicators | `/v1/stock-price`, `/v1/charts` | `references/market-data.md` |
| Commodity / forex / crypto quotes | `/v1/quotes?type=commodity-quotes` | `references/market-data.md` |
| Income / balance / cash flow / metrics / ratios | `/v1/financial-statements` | `references/fundamentals.md` |
| Company profile, peers, shares float, search, screener, list | `/v1/company-profile`, `/v1/company-details`, `/v1/search`, `/v1/companies` | `references/fundamentals.md` |
| Analyst estimates, price targets, grades, DCF, ratings | `/v1/analyst?type=...` | `references/fundamentals.md` |
| Options chain, greeks, GEX, IV, max pain, flow, screener | `/v1/options/...` | `references/options.md` |
| Supply-chain KG: suppliers, customers, competitors, partners | `/v1/supply-chain/...` | `references/supply-chain.md` |
| Twitter, Reddit, Polymarket, government trading, ownership | `/v1/twitter-posts`, `/v1/reddit-posts`, `/v1/polymarket/...`, `/v1/government-trading`, `/v1/ownership` | `references/alternative-data.md` |
| AI-enriched news + aggregated sentiment + event timeline | `/v1/news/ticker`, `/v1/news/timeline`, `/v1/news/sentiment` | `references/news-enriched.md` |
| SEC filings, earnings/podcast transcripts, research reports | `/v1/sec-filings`, `/v1/transcripts`, `/v1/investment-research-reports` | `references/filings-transcripts.md` |
| Earnings / dividend / IPO / splits / economic calendar | `/v1/calendar?type=...` | `references/calendar-economics.md` |
| Treasury rates, GDP/CPI indicators, FRED, risk premium | `/v1/economics`, `/v1/fred` | `references/calendar-economics.md` |
| Stock news, gainers/losers, ETF holdings, ESG, COT, bulk, market hours | `/v1/news`, `/v1/market-performance`, `/v1/funds`, `/v1/esg`, `/v1/cot-report`, `/v1/bulk`, `/v1/market-hours` | `references/other-data.md` |
| AI-company hiring signals (OpenAI, Anthropic, Google, xAI, Mercor, SurgeAI) | `/v1/recruit-...` | `references/recruit.md` |
| Claude API proxy via Bedrock | `/v1/claude/v1/messages` | `references/claude-proxy.md` |
### 3c. Call the endpoint
```bash
curl -s -H "Authorization: Bearer $FUNDA_API_KEY" \
"https://api.funda.ai/v1/<endpoint>?<params>" | python3 -m json.tool
```
All responses are `{"code": "0", "message": "", "data": ...}`. A non-zero
`code` is an error — read `message`.
List endpoints paginate: `{"items": [...], "page": 0, "page_size": 20, "next_page": 1, "total_count": N}`. Pages are 0-based; `next_page` is `-1` when exhausted.
For broad ticker overviews ("tell me about AAPL"), combine a few REST
calls: `/v1/company-profile` for sector/CEO/mcap/price + `/v1/financial-statements?type=key-metrics-ttm` + `/v1/analyst?type=price-target-summary`.
---
## Step 4: Respond to the User
- For MCP synthesis: surface with structure (tables, bullets, headings) — don't dump the raw blob. Preserve the Funda disclaimer; never repackage analysis as a recommendation, price target, or trade signal.
- For MCP responses, cite `https://funda.ai/agent-chat?c={conversation_id}` so the user can inspect the agent's full timeline.
- For REST responses, format numbers cleanly (prices to 2 decimals, ratios to 2-4, large numbers with commas or abbreviations like `$2.8T`). Use tables for comparative data; summarize trends rather than dumping time series.
- For DCF / valuation work, surface the assumptions Funda used so the user can adjust them.
- Note the source: "Funda AI" (whether MCP or REST).
- Never provide trading recommendations — present the data and let the user draw conclusions.
---
## Reference Files
**MCP path:**
- `references/research-topics.md` — categorized example questions and tips for framing `agent_chat` queries.
**REST path:**
- `references/market-data.md` — quotes, historical prices, charts, technical indicators
- `references/fundamentals.md` — financial statements, company profile/details, search/screener, analyst, companies list
- `references/options.md` — chains, greeks, GEX, flow, IV, screener, contract-level data
- `references/supply-chain.md` — supply-chain KG, relationships, graph traversal
- `references/alternative-data.md` — Twitter, Reddit, Polymarket, government trading, ownership
- `references/news-enriched.md` — AI-enriched news, event timeline, aggregated sentiment
- `references/filings-transcripts.md` — SEC filings, earnings/podcast transcripts, research reports
- `references/calendar-economics.md` — calendars, economics, treasury, FRED
- `references/other-data.md` — news, market performance, funds, ESG, COT, bulk, market hours
- `references/recruit.md` — AI-company hiring signals, JD classifications, product clusters, launch probabilities
- `references/claude-proxy.md` — Claude API proxy via BedrockRelated Skills
More skills in Data, AI & Research
Ablation Planner
Use when main results pass result-to-claim (`claim_supported = yes` or `partial`) and ablation studies are needed for paper submission. A secondary Codex agent designs ablations from a reviewer's perspective; the local executor reviews feasibility and implements.
Ablation Planner
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission.
About
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its purpose, version, or capabilities.
Ab Test Analysis
Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop recommendations. Use when evaluating experiment results, checking if a test reached significance, interpreting split test data, or deciding whether to ship a variant.
Academic Search
Search and analyze academic literature. Find papers, understand research methodologies, and synthesize academic findings for research projects.
Adaptyv
How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.
Explore Other Categories
Skills from other categories with shared topics
Options Payoff
Generate an interactive options payoff curve chart with dynamic parameter controls. Use this skill whenever the user shares an options position screenshot, describes an options strategy, or asks to visualize how an options trade makes or loses money. Triggers include: any mention of butterfly, spread (vertical/calendar/diagonal/ratio), straddle, strangle, condor, covered call, protective put, iron condor, or any multi-leg options structure. Also triggers when a user pastes strike prices, premiums, expiry dates, or says things like "show me the payoff", "draw the P&L curve", "what does this trade look like", or uploads a screenshot from a broker (IBKR, TastyTrade, Robinhood, etc). Always use this skill even if the user only provides partial info — extract what you can and use defaults for the rest.
SaaS Valuation Compression
Analyze SaaS company valuation compression between funding rounds. Use this skill whenever the user asks about: how much a SaaS company's valuation multiple changed between rounds, why the ARR multiple compressed or expanded, comparing a company's compression to macro benchmarks, or explaining what drove valuation changes for any VC-backed software company. Trigger on phrases like "valuation compression", "ARR multiple", "round-to-round valuation", "multiple change", or when the user asks to compare a company's funding rounds. Always use this skill for any multi-round SaaS valuation analysis — do not try to answer from memory alone.
Sepa Strategy
Analyze stocks using Mark Minervini's SEPA (Specific Entry Point Analysis) methodology. Use this skill whenever the user mentions SEPA, Minervini, superperformance, trend template, VCP (Volatility Contraction Pattern), Stage 2 uptrend, stage analysis, pivot point breakout, or asks about growth stock screening criteria. Also triggers when the user wants to evaluate whether a stock meets swing trading entry criteria, check moving average alignment (bullish stacking: price above 50MA above 150MA above 200MA), assess breakout quality with volume confirmation, calculate position sizing based on risk percentage, or identify consolidation patterns like cup-with-handle, flat base, bull flag, or high tight flag. Use this skill even when the user simply asks "should I buy this stock" or "is this a good setup" in the context of growth/momentum trading, or when they share a stock chart and want pattern analysis.