{
  "markdown": "# Bullrun MCP\n\nA hosted **remote [MCP](https://modelcontextprotocol.io) server** that turns Claude (and other\nMCP clients) into a research analyst over global stocks, ETFs and your own portfolios.\n\n| | |\n|---|---|\n| **Endpoint** | `https://mcp.bull-run.org/mcp` — Streamable HTTP, OAuth 2.1 + PKCE |\n| **Web app** | https://bull-run.org |\n| **Official MCP Registry** | [`org.bull-run/bullrun`](https://registry.modelcontextprotocol.io/v0.1/servers?search=org.bull-run%2Fbullrun) |\n| **Glama connector** | https://glama.ai/mcp/connectors/org.bull-run/bullrun |\n| **Privacy policy** | https://bull-run.org/privacy |\n\n> Bullrun is primarily a **hosted service** — there is nothing to install and no API key to\n> manage for normal use. You point your MCP client at the remote endpoint and sign in with\n> Google. This repository holds the connector's public metadata ([`server.json`](server.json)),\n> connection docs, and a local stdio build of the MCP layer for directory/security checks. The\n> Bullrun application and data services remain maintained separately.\n\n## Connect\n\n**Claude (web, Desktop, mobile)** — requires a paid Claude plan:\n\n1. **Settings → Connectors → Add custom connector**\n2. Name it `Bullrun`, paste `https://mcp.bull-run.org/mcp`, and add it.\n3. Click **Connect** and complete the Google sign-in / authorize step.\n\n**Claude Code:**\n\n```bash\nclaude mcp add --transport http bullrun https://mcp.bull-run.org/mcp\n```\n\nFull setup for **Cursor, VS Code, and the MCP Inspector** is in\n[docs/mcp-connect.md](docs/mcp-connect.md).\n\n## What you can do once connected\n\nPublic market-data tools work for any connected client. The portfolio tools resolve **your own**\nBullrun account after Google sign-in; the two draft tools require a Bullrun Pro account.\n\n### Stocks\n\n| Tool | What it does |\n|---|---|\n| `screen_stocks` | Screen the global universe by sector / industry / country / market cap; sort by P/E, dividend yield, revenue or revenue growth. |\n| `get_stock_metrics` | Consolidated snapshot for one ticker — identity (ISIN/LEI/CIK), latest price, valuation, most recent financials, description. |\n| `get_financial_history` | 1–15 fiscal years of annual/quarterly statements, per-share metrics, margins, CAGRs and consistency checks. |\n| `get_quality_moat_metrics` | ROIC, ROIC-vs-WACC spread, ROE/ROA, accruals, cash conversion, capex intensity, dividend payout/growth, buyback proxy. |\n| `get_forward_estimates` | Consensus revenue / EPS / EBITDA, guidance, estimate revisions, and derived forward P/E & PEG context. |\n| `get_operating_kpis` | Domain KPIs — ARR, net revenue retention, RPO, billings, customer counts, payment & cross-border volume. |\n| `get_revenue_breakdown` | Segment, geography, product or customer revenue splits. |\n| `get_earnings_call_transcript` | Speaker-tagged earnings-call transcript chunks, fiscal-period filters and text search. |\n\n### ETFs and funds\n\nBuilt for the way European investors actually shop for funds: by ISIN, by tracked index, and by\ntotal cost — with venue duplicates collapsed so one fund listed on six exchanges reads as one\nchoice rather than six.\n\n| Tool | What it does |\n|---|---|\n| `screen_etfs` | Screen the **whole** fund universe by expense ratio, AUM, yield, trailing returns, volatility, liquidity, top-10 concentration and fund age, combined with issuer, index, domicile, UCITS status, distribution policy and currency hedging — plus look-through (`holdingSearch`) to find funds *by what they hold*. |\n| `get_etf_index_group` | \"Cheapest way to track the S&P 500 / MSCI World?\" — every fund on one index, cheapest first, one row per **fund** with its venues, and an explicit count of funds that publish no fee. |\n| `get_etf_fund` | Resolve an ISIN (or any venue ticker) to the fund and every exchange it trades on. |\n| `get_etf_filter_options` | The exact values the categorical filters accept, so a screen never silently returns nothing on a guessed string. |\n| `search_etfs` | Look up a known fund by name, ticker or ISIN, with classification, index, cost and yield filters. |\n| `get_etf_snapshot` | Modular snapshot for one listing — identity, classification, market, NAV/AUM, costs, income, benchmark. |\n| `get_etf_holdings` | Paginated constituents with an explicit partial-coverage contract. |\n| `get_etf_exposures` | Holdings look-through to sector / country / issuer exposure. |\n| `get_etf_timeseries` | Price history, with unavailable NAV / total-return / premium-discount series named rather than synthesized. |\n| `get_etf_risk` | Volatility, drawdown, Sharpe/Sortino/Calmar, VaR, and benchmark-relative beta and tracking error. |\n| `compare_etfs` | Side-by-side cost, performance, risk and holdings comparison. |\n| `analyze_etf_overlap` | Shared holdings and a weighted lower-bound overlap between funds. |\n| `simulate_etf_cost` | Deterministic multi-year cost scenario from expense ratio, spread, commission and contributions. |\n| `analyze_portfolio_fit` | How a candidate fund would fit your existing portfolio. *(sign-in)* |\n| `query_etfs` | Original ETF search. Retained for compatibility; prefer `screen_etfs` or `search_etfs`. |\n\n### Your portfolios\n\n| Tool | What it does |\n|---|---|\n| `get_capabilities` | Which account is connected, whether Pro is active, granted scopes, and which tools are gated. |\n| `list_portfolios` | Your virtual portfolios with value, day change, cost basis and total return. *(sign-in)* |\n| `get_portfolio_context` | Deep snapshot of one portfolio: every holding with weight, sector and return, plus Bullrun's insights. *(sign-in)* |\n| `get_portfolio_analytics` | Correlation/covariance, contribution-to-risk, factor exposure, sector/currency/country concentration, stress scenarios, and candidate-fit analysis. *(sign-in)* |\n| `create_portfolio_from_positions` | Save a portfolio you have **already** decided, from an explicit `{ticker, weight}` basket used verbatim. *(sign-in, no Pro needed)* |\n| `create_portfolio_draft` | Draft a new paper portfolio from a plain-English brief. **Draft-only** — saved for review, never changes a live position. *(Pro)* |\n| `create_position_draft` | Suggest additions to an existing portfolio. **Draft-only** — saved for review. *(Pro)* |\n\n## Authentication & privacy\n\nThe server is an OAuth 2.0 protected resource (RFC 9728). On first connect your client runs an\nautomatic discovery handshake and sends you through Google sign-in; after you authorize, per-user\ntools resolve your Bullrun account. The MCP layer is a thin proxy with no database of its own —\nread tools return market data and your own holdings, the per-user read tools accept a `privacyMode`\n(`full` by default, or `weights_only` to return only relative figures), and the draft tools never\nmutate live holdings. See the [privacy policy](https://bull-run.org/privacy).\n\n## Local stdio build\n\nThe hosted endpoint above is the recommended integration. For directories that require building\nand running a local MCP server, this repo can run the MCP layer over stdio:\n\n```bash\nnpm ci\nnpm run build\nBULLRUN_API_BASE=https://bull-run.org node dist/stdio.js\n```\n\nPublic market-data tools work without credentials. Portfolio and draft tools still require a\nBullrun OAuth token in hosted clients and return an authentication-required error in anonymous\nstdio checks.\n\n## License\n\n[MIT](LICENSE).\n",
  "bytes": 7308,
  "sha": "f6025c76c09a593523c775bfddc9bdda80411a7f7fafbfd4108e707b6e7a8aa4",
  "repo_slug": "ferinator/bullrun-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_org_bull_run_bullrun_6568824f/readme"
}