Polymarket and Predict.fun historical tick data, plus backtest quotes and status, over MCP
Bullrun is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Global stock research, ML forecasts, valuation signals, screeners & portfolio tracking in Claude
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http bullrun-mcp https://mcp.bull-run.org/mcp
# 2 — ask your agent for something these tools do
# screen_stocks, search_etfs, screen_etfs and 37 more
Bullrun costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http bullrun-mcp https://mcp.bull-run.org/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
40 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Screen the global Bullrun stock universe with the same rule engine as the app screener. Filter by sector, industry, country/countries, primary vs secondary listings, active vs inactive listings, lookback mode, AND/OR rule groups, comparison operators, money units, growth metrics and latest-value metrics. Returns a compact table of matching stocks. Read-only. Successful results include an optional
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sector | string | no | Exact sector name to filter by, e.g. "Technology", "Healthcare". Omit for all sectors. |
| industry | string | no | Exact industry name to filter by, e.g. "Software - Infrastructure". Omit for all industries. |
| country | string | no | Exact country name to filter by, e.g. "United States", "Germany". Omit for all countries. |
| countries | array | no | Exact country names to include. Use this for multi-country screens; it overrides country when provided. |
| lookbackMode | string | no | Whether rule evaluation uses annual or quarterly reporting periods. |
| lookback | integer | no | How many reporting periods to evaluate. Growth rules need at least 2 comparable periods. |
| mode | string | no | Deprecated alias for lookbackMode; kept for compatibility. |
| periods | integer | no | Deprecated alias for lookback; kept for compatibility. |
| rules | array | no | Fundamental rules. Same groupId means AND; different groupIds mean OR. |
| minMarketCap | number | no | Compatibility shortcut: adds marketCap >= this absolute value to every rule group. |
| includeSecondary | boolean | no | Include secondary cross-listings of the same security. Default false (primary listings only). |
| includeInactive | boolean | no | Include delisted/inactive tickers with no recent price bar. Default false. |
| sortBy | string | no | Metric to sort by. revenueGrowth is accepted as an alias for revenueGrowthPct. |
| order | string | no | Sort direction. Nulls always sort last regardless of direction. |
| limit | integer | no | Maximum number of stocks to return (1-100). |
Look up ETFs by name, ticker or ISIN, with classification, listing, index, distribution-policy, AUM, expense-ratio and yield filters. Best for finding a known fund. For ranking questions ("cheapest", "largest", "best performing", "most liquid") prefer screen_etfs, which evaluates the whole universe: here minAum and minYieldTtmPct are applied only to a bounded profile-enriched candidate scan, so do
| Parameter | Type | Required | Notes |
|---|---|---|---|
| search | string | no | Free-text ETF search by ticker, fund name, or ISIN (e.g. IE00B4L5Y983). Omit for a broad screen. |
| category | string | no | Exact broad ETF category/asset-class filter, e.g. Equity, Fixed Income, Commodity, Crypto, or Real Estate. Call get_etf_filter_options for valid values. |
| focus | string | no | Exact ETF focus/exposure filter, e.g. Japan, TOPIX, or Equity - Australia. |
| region | string | no | Exact portfolio or investment-region filter. |
| domicile | string | no | Exact fund domicile filter. |
| exchange | string | no | Exact listing exchange filter. |
| currency | string | no | Exact trading-currency filter. |
| indexKey | string | no | Exact tracked-index key, e.g. SP500 or MSCI_WORLD. Use get_etf_index_group to rank every fund on one index by cost. |
| distributionPolicy | string | no | Accumulating (reinvests income) or distributing (pays it out). |
| minAum | number | no | Minimum assets under management in the profile's reported currency units. |
| maxExpenseRatioPct | number | no | Maximum annual expense ratio in percentage points, e.g. 0.25 means 0.25%. |
| minYieldTtmPct | number | no | Minimum trailing yield in percentage points, e.g. 2 means 2%. |
| sortBy | string | no | Sort field. Relevance preserves Bullrun search ordering. |
| sortDirection | string | no | — |
| includeSecondary | boolean | no | — |
| includeInactive | boolean | no | — |
| scanLimit | integer | no | Maximum coarse-search candidates to enrich before applying quantitative filters/sorts, 25-500. |
| limit | integer | no | Maximum matching ETFs to return, 1-100. |
Screen the WHOLE ETF universe by numeric rules and fund attributes in one pass — expense ratio, AUM, yield, trailing returns, volatility, liquidity, top-10 concentration, fund age and holdings count — combined with issuer, index, domicile, UCITS status, distribution policy, currency hedging and constituent look-through (holdingSearch finds funds by what they hold). Prefer this over search_etfs for
| Parameter | Type | Required | Notes |
|---|---|---|---|
| search | string | no | Free-text match on ticker, fund name or ISIN. Omit to screen the whole universe. |
| assetClass | string | no | Exact asset-class group: EQUITY, FIXED_INCOME, COMMODITY, REAL_ESTATE, MULTI_ASSET, CASH, CURRENCY, DIGITAL_ASSETS, ALTERNATIVES or OTHER. |
| category | string | no | Exact category string. Call get_etf_filter_options for the valid values; a wrong guess silently returns zero rows. |
| domicile | string | no | Exact fund domicile, e.g. "Ireland", "Luxembourg", "United States". |
| region | string | no | Exact investment-region string. |
| exchange | string | no | Exact listing exchange, e.g. XETRA, LSE, "NYSE ARCA". |
| currency | string | no | Exact trading currency, e.g. EUR, USD, GBX. |
| indexKey | string | no | Exact tracked-index key, e.g. SP500, MSCI_WORLD, NASDAQ100. Use get_etf_index_group to compare every fund on one index instead. |
| distributionPolicy | string | no | Accumulating (reinvests income) or distributing (pays it out) — the usual first cut for a European investor. |
| productType | string | no | Exact wrapper type, e.g. UCITS_FUND. |
| ucitsStatus | string | no | UCITS restricts to wrappers a European retail investor can actually buy. |
| issuer | string | no | Substring match on the fund family/issuer, e.g. "iShares", "Amundi", "Vanguard". |
| strategy | string | no | Exact strategy classification string. |
| benchmarkSearch | string | no | Substring match on the stated benchmark name. |
| marketDevelopment | string | no | Exact market-development classification, e.g. developed vs emerging. |
| currencyHedged | string | no | HEDGED selects funds labelled currency-hedged. NOT_LABELLED_HEDGED selects funds not so labelled — absence of a label is not proof a fund is unhedged. |
| holdingSearch | string | no | Look-through filter: find funds by a CONSTITUENT ticker or company name, e.g. "NVDA" or "NVIDIA". Only funds with a stored holdings snapshot can match. |
| holdingMode | string | no | INCLUDES keeps funds holding the constituent. EXCLUDES keeps only funds with a holdings snapshot that confirms absence — funds with no snapshot are dropped, never assumed clean. |
| holdingMinWeightPct | number | no | Minimum constituent weight in percentage points for holdingSearch to count as a match. |
| rules | array | no | Numeric rules. A fund with no value for a ruled metric never matches that rule. |
Answer "what is the cheapest way to track <index>?". Returns every fund tracking one index ordered cheapest fee first, deduplicated to one row per FUND rather than per venue listing (a five-venue UCITS fund is one choice, not five) with its listingCount and venues. Defaults to UCITS-buyable domiciles. Omit indexKey to list the available index families. Fees are percentage points and the response s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| indexKey | string | no | Normalized index key, e.g. SP500, MSCI_WORLD, NASDAQ100, MSCI_EM, EURO_STOXX_50, TOPIX, FTSE100. Omit to list every index family that has at least one fund. |
| scope | string | no | ucits (default) restricts to domiciles a European retail investor can actually buy. all adds US-domiciled trackers, which look cheaper but are not purchasable by EU retail. |
| distributionPolicy | string | no | Optionally keep only accumulating or only distributing share classes. |
| limit | integer | no | Maximum funds (or index families) to return, 1-100. |
Resolve one FUND rather than one listing. Given an ISIN (or any venue ticker of the fund) it returns the fund's identity, costs, index, distribution policy, wrapper type and every venue it is listed on with exchange and trading currency. Use this when the user quotes an ISIN, asks "which ticker do I buy on my exchange?", or when several tickers may be the same underlying fund. Ratios are percentag
| Parameter | Type | Required | Notes |
|---|---|---|---|
| isin | string | no | Fund ISIN, e.g. IE00B4L5Y983. The identifier European factsheets and brokers quote. |
| ticker | string | no | Any venue listing ticker of the fund, e.g. EUNL.DE or IWDA.L. Resolved to its fund ISIN first. Provide this or isin. |
List the exact values accepted by the categorical filters on search_etfs and screen_etfs — asset classes, categories, index keys, product/wrapper types, regions, domiciles, currencies, exchanges, and (on request) issuers and focus strings. Those filters match exactly, so a guessed string returns zero rows and looks like "no such ETF exists"; call this first whenever a filter value is not already k
| Parameter | Type | Required | Notes |
|---|---|---|---|
| facets | array | no | Which facets to return. Defaults to everything except the long tails fundFamilies (~890 issuers) and industries (~650 focus strings) — request those explicitly, ideally with search. |
| search | string | no | Case-insensitive substring filter applied to every requested facet, e.g. "ishares" against fundFamilies or "world" against categories. |
| limit | integer | no | Maximum values per facet, 1-1000. Each facet reports its untruncated total. |
Fetch a modular snapshot for one exact ETF listing. The include array controls which of identity, classification, market, fund_data (NAV/AUM), costs, income, and benchmark are fetched and returned. Unrequested modules are omitted; requested-but-unavailable modules are named explicitly. Ratios use percentage points. Read-only. Successful results include an optional platformLink for continuing this
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ETF listing ticker, including its exchange suffix when present, e.g. SPY, VWRL.L, or EUNL.DE. |
| include | array | no | Only these snapshot modules are fetched and returned. Default: identity, classification, market, costs. |
Return the latest stored ETF holdings snapshot with opaque cursor pagination. The response reports the provider's stated holdings count, stored row count, covered weight, and whether the stored rows appear complete. Treat isComplete=false or null as partial look-through data. Historical as-of selection will be added when the upstream API exposes it. Read-only. Successful results include an optiona
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ETF listing ticker, including its exchange suffix when present. |
| cursor | string | no | Opaque nextCursor returned by a previous get_etf_holdings call for the same ticker. |
| limit | integer | no | Maximum holdings to return on this page, 1-100. |
Fetch ETF price or price-return history at daily, weekly, or monthly intervals. NAV, true total-return, benchmark, and premium/discount series are returned only when their required source data or an explicit benchmark ticker exists; unavailable requested series are named explicitly and never approximated with price returns. Read-only. Successful results include an optional platformLink for continu
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ETF listing ticker. |
| series | array | no | Requested series. Unsupported stored series are reported in unavailableSeries rather than synthesized. |
| benchmarkTicker | string | no | Exact priced ticker to use when benchmark is requested. A benchmark name alone cannot resolve a price series safely. |
| interval | string | no | — |
| startDate | string | no | — |
| endDate | string | no | — |
| limit | integer | no | Maximum recent daily source bars to load before date filtering and interval aggregation. |
Calculate sector, country, currency, and broad asset exposure from the latest stored ETF holdings and Bullrun instrument mappings. Factor and thematic look-through are reported unavailable until dedicated source data exists. Coverage states how much fund weight and how many holding symbols were resolved, so partial top-holdings data is never presented as full exposure. Read-only. Successful result
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ETF listing ticker. |
| types | array | no | — |
| limitPerType | integer | no | — |
Calculate drawdown, annualized volatility, downside volatility, historical VaR, Sharpe, Sortino and Calmar ratios from stored daily close prices. With benchmarkTicker, also calculates beta, correlation, tracking error, active return and information ratio on aligned dates. Results are price-return risk, not distribution-adjusted total-return risk. Read-only. Successful results include an optional p
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ETF listing ticker. |
| days | integer | no | Calendar-day lookback for daily close-price risk calculations. |
| benchmarkTicker | string | no | Optional exact priced benchmark/proxy ticker for beta, correlation, tracking error, active return, and information ratio. |
| riskFreeRatePct | number | no | Annual risk-free rate in percentage points for Sharpe, Sortino, and Calmar ratios. |
Return a normalized side-by-side comparison of two to ten ETFs across selected classification, market, fund-data, cost, income, benchmark, price-performance, price-risk, and holdings modules. Leaders are mechanical extrema, not recommendations. Currency and partial-holdings caveats are explicit. Read-only. Successful results include an optional platformLink for continuing this research or reviewin
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tickers | array | yes | Two to ten exact Bullrun ETF listing tickers. |
| include | array | no | — |
| performanceDays | integer | no | — |
Compare two to ten ETFs using their latest stored holdings. Returns pairwise shared holdings, weighted overlap (sum of the smaller weight for each shared holding), each fund's weight in shared names, and the largest duplicate exposures. Coverage is explicit because provider holdings may be partial top-holdings samples. Read-only. Successful results include an optional platformLink for continuing t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tickers | array | yes | Two to ten exact Bullrun ETF listing tickers. |
| topSharedLimit | integer | no | — |
Analyze an ETF candidate against one signed-in user's portfolio. Combines Bullrun's price-history candidate fit (correlation, beta and pro-forma volatility) with latest-holdings look-through that identifies direct and ETF-contained duplicate underlying positions. Coverage is explicit and partial provider holdings make duplicate exposure a lower bound. Requires OAuth read:portfolios. Read-only. Suc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| portfolioId | integer | yes | Portfolio id returned by list_portfolios. |
| candidateTicker | string | yes | Exact Bullrun ETF listing ticker to test. |
| candidateWeightPct | number | no | — |
| days | integer | no | — |
| includeLookThrough | boolean | no | — |
Simulate expense-ratio, assumed bid/ask spread, commissions, and recurring contributions over a holding period. Compares the same gross-return path with and without costs and reports direct charges plus ending-value drag. Taxes, FX, market impact and brokerage-specific fees are excluded unless represented by the inputs. Read-only. Successful results include an optional platformLink for continuing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ETF listing ticker. |
| initialInvestment | number | no | — |
| contributionAmount | number | no | — |
| contributionFrequency | string | no | — |
| years | number | no | — |
| grossAnnualReturnPct | number | no | Assumed annual return before ETF and trading costs, in percentage points. Default 0 isolates direct costs. |
| expenseRatioPct | number | no | Optional expense-ratio override in percentage points. Otherwise uses the stored ETF profile value. |
| spreadPct | number | no | Assumed full bid/ask spread in percentage points; each purchase pays half the spread. |
| commissionPerTrade | number | no | — |
Compatibility tool for older clients: search the Bullrun ETF universe and optionally bundle profile, recent prices, and latest holdings for an exact ticker. New clients should use search_etfs, get_etf_snapshot, and get_etf_holdings for smaller responses, structured output, quantitative filters, and explicit coverage metadata. Read-only. Successful results include an optional platformLink for conti
| Parameter | Type | Required | Notes |
|---|---|---|---|
| search | string | no | Free-text ETF search by ticker or fund name. Omit to list the first ETFs. |
| ticker | string | no | Exact ETF ticker for profile, prices, and optional holdings, e.g. SPY, VWRL.L, EUNL.DE. |
| category | string | no | Exact broad ETF asset-class filter, such as Equity, Fixed Income, Commodity, Crypto, or Real Estate. Kept as category for API compatibility. |
| focus | string | no | Exact ETF exposure filter, such as Japan, Equity - Australia, TOPIX, or an exchange/source exposure label. Kept as focus for API compatibility. |
| domicile | string | no | Exact ETF domicile filter. |
| exchange | string | no | Exact exchange filter, e.g. NYSE ARCA, LSE, XETRA. |
| currency | string | no | Exact trading currency filter, e.g. USD, EUR, CHF. |
| includeSecondary | boolean | no | Include secondary/cross-listed ETF tickers. Default false. |
| includeInactive | boolean | no | Include ETFs with no recent price bar. Default false. |
| includeHoldings | boolean | no | When ticker is supplied, include latest holdings. Ignored for broad searches. |
| holdingsLimit | integer | no | Maximum holdings to return for an exact ticker, 1-100. |
| priceLimit | integer | no | Recent daily price rows to return for an exact ticker. Use 0 to skip prices. |
| limit | integer | no | Maximum ETF search rows to return, 1-100. |
Fetch a consolidated metrics snapshot for a single stock by ticker: identity (company, exchange, currency, sector, industry, country, ISIN), latest daily price (OHLCV), latest valuation (market cap, P/E, dividend yield, annual dividend per share), the most recent reported financials (revenue, gross/operating income, EBITDA, net income, diluted EPS, free & operating cash flow, total debt, cash, tot
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The stock ticker exactly as listed on Bullrun - the native local-exchange symbol, e.g. "AAPL", "BMW" (not "BMW.DE"), "ABBN" (not "ABBN.SW"), "NESN", or a numeric code like "005930". Do not append Yaho |
Fetch 1-15 years of historical financial statements for one exact Bullrun ticker. Returns annual and/or quarterly rows grouped into income statement, balance sheet, cash flow, per-share metrics, margins, source currency, and annual growth/CAGR consistency checks. Use this when evaluating multi-year revenue/net-income growth, margin trajectories, leverage, cash flow quality, or whether a stock pass
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The ticker exactly as listed on Bullrun - the native local-exchange symbol, e.g. "AAPL", "BMW" (not "BMW.DE"), "ABBN" (not "ABBN.SW"), "NESN", or a numeric code like "005930". Do not append Yahoo-styl |
| periodType | string | no | Return annual rows, quarterly rows, or both. Annual rows use fiscalQuarter=0. |
| years | integer | no | How many fiscal years of history to return, counting backward from the latest fiscal year available. |
| includeEmptyRows | boolean | no | Include sparse rows that have no major income statement, balance sheet, cash-flow, or EPS values. |
Compute annual quality, moat, earnings-quality, and capital-allocation metrics for one exact Bullrun ticker from existing financial statements: ROIC, ROE/ROA, ROIC-vs-supplied-WACC, accruals, cash conversion, capex intensity, dividend payout/growth, diluted share-count changes, and a buyback proxy. Read-only. Successful results include an optional platformLink for continuing this research or revie
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The ticker exactly as listed on Bullrun - the native local-exchange symbol, e.g. "AAPL", "BMW" (not "BMW.DE"), "ABBN" (not "ABBN.SW"), "NESN", or a numeric code like "005930". Do not append Yahoo-styl |
| years | integer | no | How many fiscal years of annual history to evaluate. |
| estimatedWaccPct | number | no | Optional user-supplied WACC assumption, in percent. When omitted, ROIC-vs-WACC spread is returned as null. |
| taxRateFallbackPct | number | no | Fallback tax rate used for NOPAT only when reported tax/pretax data is missing or unusable. |
Fetch forward consensus revenue/EPS/EBITDA estimates, management guidance ranges, and estimate-revision percentages for one exact Bullrun ticker. Also derives simple forward P/E and PEG-style context from the latest close when EPS estimates are available. Read-only. Successful results include an optional platformLink for continuing this research or reviewing the exact saved draft in Bullrun. When
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The ticker exactly as listed on Bullrun, e.g. "AAPL", "CRWD", "SPGI". |
| periodType | string | no | Return annual estimates, quarterly estimates, or both. |
| limit | integer | no | Maximum estimate rows to return. |
Fetch period-specific operating KPIs and unit-economics metrics for one exact Bullrun ticker: ARR, net revenue retention, RPO, billings, customer counts, payments volume, cross-border volume, processed transactions, or other domain-specific metrics when populated. Read-only. Successful results include an optional platformLink for continuing this research or reviewing the exact saved draft in Bullr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The ticker exactly as listed on Bullrun, e.g. "CRWD", "SNOW", "V". |
| metricKey | string | no | Optional exact metric key to filter, e.g. ARR, NRR, RPO, BILLINGS, PAYMENT_VOLUME. |
| category | string | no | Optional category filter such as SaaS, payments, marketplace, banking, or other domain labels. |
| limit | integer | no | Maximum KPI rows to return. |
Fetch segment, geography, product, customer, or other revenue breakdown rows for one exact Bullrun ticker. Use this to separate cyclical businesses from recurring segments or inspect geographic exposure instead of relying on blended revenue. Read-only. Successful results include an optional platformLink for continuing this research or reviewing the exact saved draft in Bullrun. When useful, presen
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The ticker exactly as listed on Bullrun, e.g. "SPGI", "MSFT", "V". |
| dimension | string | no | Breakdown dimension to return, or all dimensions. |
| limit | integer | no | Maximum breakdown rows to return. |
Fetch speaker-tagged earnings-call transcript chunks for one exact Bullrun ticker, optionally filtered by fiscal period or search text. Use this for management guidance language, analyst Q&A, and qualitative judgment that is not visible in financial statements. Read-only. Successful results include an optional platformLink for continuing this research or reviewing the exact saved draft in Bullrun.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | The ticker exactly as listed on Bullrun, e.g. "CRWD", "SPGI", "V". |
| fiscalYear | integer | no | Optional fiscal year filter. |
| fiscalQuarter | integer | no | Optional fiscal quarter filter. |
| search | string | no | Optional case-insensitive text/speaker search across transcript chunks. |
| maxChunks | integer | no | Maximum speaker-tagged transcript chunks to return. |
| maxCharsPerChunk | integer | no | Maximum characters per transcript chunk in the MCP response. |
Use when the user refers to THEIR portfolio(s) or holdings — e.g. "my portfolios", "what portfolios do I have", "how are my investments doing", "show my holdings", "my account". Lists the signed-in Bullrun user's virtual portfolios with computed summaries: name, base currency, total value (USD), day change, cost basis and total return, plus position counts. Start here when a portfolio question doe
| Parameter | Type | Required | Notes |
|---|---|---|---|
| privacyMode | string | no | "full" (default) includes absolute $; "weights_only" hides cash/value/cost-basis and keeps only %. |
Use when the user asks to look at, review, or analyze THEIR portfolio / holdings / positions — e.g. "analyze my portfolio", "how is my portfolio doing", "what's in my portfolio", "review my holdings", "how am I invested", "what should I improve". Fetches a deep snapshot of ONE of the signed-in user's portfolios: the summary (value, day change, total return), every holding (with position weight %,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| portfolioId | integer | yes | The portfolio id, as returned by list_portfolios. |
| days | integer | no | Insights look-back window in days (default 30). |
| privacyMode | string | no | "full" (default) includes absolute $; "weights_only" returns only relative figures. |
Use when the user asks about THEIR portfolio's risk, diversification, or concentration, or whether to add a stock — e.g. "is my portfolio diversified", "how risky is my portfolio", "am I too concentrated", "what's my exposure to X", "should I add NVDA", "would AAPL improve my diversification". Fetches portfolio-level relationship analytics for one signed-in user's portfolio: correlation and annual
| Parameter | Type | Required | Notes |
|---|---|---|---|
| portfolioId | integer | yes | The portfolio id, as returned by list_portfolios. |
| days | integer | no | Calendar-day lookback for daily USD return analytics. Default 370. |
| candidateTicker | string | no | Optional exact Bullrun ticker to test as a candidate diversifier - the native local-exchange symbol, e.g. AAPL, BMW, ABBN, NESN (not Yahoo-style suffixes like BMW.DE). |
| candidateWeightPct | number | no | Optional hypothetical candidate allocation for pro-forma volatility. Default 5 (%). |
| privacyMode | string | no | "full" (default) includes absolute USD amounts; "weights_only" returns only relative figures. |
Use when the user wants you to BUILD or PROPOSE a brand-new portfolio for them — e.g. "build me a portfolio", "put together a dividend portfolio", "draft a portfolio of AI stocks", "create a new portfolio for $10k". Generates a REVIEWABLE paper-portfolio draft for the signed-in Bullrun user from a natural-language brief (e.g. "a diversified European dividend portfolio"). Requires OAuth with the wr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| prompt | string | no | What kind of portfolio to draft, e.g. "a defensive dividend portfolio of large EU stocks". Optional: if you omit it, the server collects a quick style/region/size brief from the user directly (a nativ |
| startingCash | number | no | Starting cash in USD (default 10000). |
| maxPositions | integer | no | Maximum number of holdings (3-20, default 10). |
| instrumentUniverse | string | no | Candidate universe: stocks only, ETFs only, or a mix. Default mix unless the prompt says otherwise. |
Use when the user asks what to BUY or ADD to an EXISTING portfolio — e.g. "what should I buy next", "suggest a stock or ETF for my portfolio", "what should I add", "recommend a position", "any ideas to round out my holdings". Generates REVIEWABLE suggested additions for one existing Bullrun portfolio. Requires OAuth with the write:drafts scope and a Bullrun Pro account. This is DRAFT-ONLY: the sug
| Parameter | Type | Required | Notes |
|---|---|---|---|
| portfolioId | integer | yes | The Bullrun portfolio id to propose additions for. Use list_portfolios first if unsure. |
| maxPositions | integer | no | How many suggested additions to save, 1-5. Use 1 for a single-position idea; default 3. |
| instrumentUniverse | string | no | Candidate universe: stocks only, ETFs only, or a mix. Default mix. |
Use when YOU (or the user) have ALREADY decided the exact holdings and want them saved as-is — e.g. after researching and settling on a specific basket with target weights. Persists a REVIEWABLE paper-portfolio draft built from the tickers you supply, sized by weight (percent) or by explicit USD amount. Unlike create_portfolio_draft this does NOT use the LLM and NEVER re-selects tickers: your bask
| Parameter | Type | Required | Notes |
|---|---|---|---|
| positions | array | yes | The exact holdings to persist (1-30). Tickers are used verbatim, never re-selected. |
| name | string | no | Portfolio name. Default "Custom Portfolio Draft". |
| startingCash | number | no | Total portfolio cash in USD. Default 10000 in weight mode; the sum of amounts in amount mode. |
| cashPct | number | no | Explicit cash percentage to hold back. Overrides the weight-remainder rule. |
Discover what the connected Bullrun account can do BEFORE attempting an action, so you can plan instead of learning by hitting a 403. Reports whether you are authenticated and as WHICH identity (email + userId), whether the account has Bullrun Pro and why (subscription / trial / admin), the granted OAuth scopes, portfolio usage vs the free/max limits, and a per-tool entitlement map: create_portfol
No parameter schema on file.
Bullrun's company risk read for one stock: a 0-100 composite risk score and six mechanism dials (market expectation, operating pressure, cash conversion, leverage & coverage, competitive position, concentration) with band (Contained/Normal/Elevated/Stretched/Acute), direction vs the prior reading, the driving input and a plain-English explanation; plus filing-derived risk factors (severity, mechan
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ticker, native local-exchange symbol (e.g. "AAPL", "ASML", "NESN", "005930"); no Yahoo-style suffixes. |
| include | array | no | Modules to return. dials = composite + six mechanism dials (market expectation, operating pressure, cash conversion, leverage, competitive position, concentration); risk_factors = filing-derived risk |
| detail | string | no | summary = scores, bands, drivers and explanations; full = also every per-input term behind each category score. |
| maxRiskFactors | integer | no | Max filing risk factors to return, most severe first. |
| maxEvents | integer | no | Max recent company events to return, most severe first. |
Bullrun's company relationship graph for one stock: named competitors, suppliers, customers and partners, each with its Bullrun ticker when the counterparty is listed, verification status (VERIFIED against a primary filing/source vs search-SUGGESTED), confidence, sole-source flag, quantified dependence where disclosed (e.g. "Cirrus Logic gets 91% of revenue from Apple") and the evidence behind it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticker | string | yes | Exact Bullrun ticker, native local-exchange symbol (e.g. "AAPL", "SAP", "ASML"); no Yahoo-style suffixes. |
| roles | array | no | Which relationships to return, from this company's point of view. Default: all four. |
| verifiedOnly | boolean | no | true = only edges confirmed against a primary source (filing, company release). false also returns search-suggested edges, each labelled with its status and confidence. |
| evidence | string | no | none = counts only; sources = source title/URL/type per edge; excerpts = also the quoted evidence text. |
| limitPerRole | integer | no | Max counterparties per role, verified and highest-confidence first. |
Rank Bullrun's scored stock universe (~9,000 companies) by company risk: the composite risk score or any one mechanism dial (market expectation, operating pressure, cash conversion, leverage, competitive position, concentration), filtered by band, sector, country and dial coverage. Returns ticker, score, band and its meaning, direction and move since the prior reading, and the driving input per ro
| Parameter | Type | Required | Notes |
|---|---|---|---|
| mechanism | string | no | Rank by the composite (OVERALL) or by one mechanism dial: MARKET (drawdown, volatility, liquidity), OPERATING (margin/cost pressure), CASH_CONVERSION (cash vs earnings, capex), LEVERAGE (debt, interes |
| bands | array | no | Keep only these bands, e.g. ["STRETCHED","ACUTE"] for the most strained readings or ["CONTAINED"] for the calmest. |
| sector | string | no | Exact sector, case-insensitive (e.g. "Technology", "Industrials"). Set includeSlices=true to list the sectors the board covers. |
| country | string | no | Exact country, case-insensitive (e.g. "United States", "Germany"). |
| minDialsLit | integer | no | Coverage floor: only companies with at least this many of the six dials measured. 4+ avoids thinly-measured composites. |
| sortBy | string | no | market_cap = largest companies first (default; a pure score sort surfaces micro-caps); score_desc = most strained first; score_asc = calmest first; worsened / improved = biggest move since the prior r |
| limit | integer | no | — |
| offset | integer | no | — |
| includeSlices | boolean | no | Also return mean composite risk by sector and by country across the scored universe. |
Companies whose Bullrun composite risk score crossed into a different band (e.g. Elevated -> Stretched, or Acute -> Stretched) within the last N days, with prior and current score, the move in points, and the input driving the reading. Use for "what got riskier this week", "any risk deteriorations I should know about", or to monitor a watchlist (pass the tickers to get_company_risk afterwards). Ba
| Parameter | Type | Required | Notes |
|---|---|---|---|
| days | integer | no | Look-back window in days for band changes. |
| direction | string | no | Keep only companies whose composite got worse, got better, or both. |
| limit | integer | no | — |
| stableBasisOnly | boolean | no | true (default) = only real movements. false also includes band changes caused purely by a category starting or stopping scoring (coverage changes, flagged basisChanged). |
Bullrun's Global Markets dashboard in one call: world equity indices (S&P 500, Nasdaq-100, MSCI World, DAX, FTSE 100, Nikkei, Hang Seng, Nifty...), central-bank policy rates and next rate decisions (Fed, ECB, BoE, BoJ, SNB, BoC), 16 sovereign 10-year yields, 20 FX pairs, oil/gas/gold/copper, headline macro tiles (global GDP growth, inflation, debt/GDP, VIX, DXY, 2s10s curve, US jobless claims), th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sections | array | no | Sections to return. headline = global GDP/inflation/debt, oil, gold, DXY, US 10Y, 2s10s curve, VIX, EUR/USD, Bitcoin, policy-rate average, OECD unemployment, US jobless claims; indices = 19 world equi |
| newsLimit | integer | no | Headlines to return when the news section is requested. |
One country's macro dashboard from Bullrun's Global Markets warehouse: a 0-100 macro stress score (higher = more stress) built from six pillars - labour (unemployment, its change, youth unemployment), housing (real house prices, price-to-income and price-to-rent vs history), credit (BIS credit-to-GDP gap, household debt service, household credit), fiscal (government debt, fiscal balance), external
| Parameter | Type | Required | Notes |
|---|---|---|---|
| country | string | yes | Country name, e.g. "Germany", "United States" (aliases like US, UK, Korea, Eurozone are understood). Also "Euro Area". |
Cross-country macro comparison from Bullrun's Global Markets warehouse: rank up to ~200 countries on one indicator (GDP growth annual or quarterly, CPI inflation, government debt/GDP, unemployment, youth unemployment, real house-price growth, house price-to-income and price-to-rent vs history, BIS credit-to-GDP gap, household debt service, household credit/GDP, business and consumer confidence, or
| Parameter | Type | Required | Notes |
|---|---|---|---|
| indicator | string | yes | Which cross-country indicator: gdp_growth (annual), gdp_growth_quarterly, inflation, government_debt, unemployment, youth_unemployment, real_house_prices, house_price_to_income, house_price_to_rent, c |
| countries | array | no | Only these countries (e.g. ["Germany","France","Italy"]); aliases like US/UK understood. Omit for every covered country. |
| order | string | no | desc = highest value first, asc = lowest first. |
| limit | integer | no | — |
Historical time series behind the Global Markets dashboard, often decades long: equity indices, central-bank policy rates, 10-year government bond yields, FX rates, oil/gas/gold/copper, VIX, DXY, the US 2s10s curve, and per-country macro indicators (GDP growth, inflation, unemployment, house prices, credit gap, debt, confidence, macro stress). Address a series by historyCode (from get_global_marke
| Parameter | Type | Required | Notes |
|---|---|---|---|
| code | string | no | Exact series code from another tool's historyCode field (e.g. "CNBC_US10Y", "BIS_CBPOL_US", "UNEMPLOYMENT:Germany", "YAHOO_GSPC"). |
| instrument | string | no | Or a market name: an index ("S&P 500", "DAX", "Nikkei 225"), commodity ("Brent", "Gold"), FX pair ("EUR/USD"), central bank ("Fed", "ECB", "BoE"), 10Y yield ("Germany 10Y", "US 10Y"), or headline seri |
| indicator | string | no | Or a per-country macro indicator, together with country (same keys as get_macro_indicators). |
| country | string | no | Country for indicator, e.g. "Japan". |
| from | string | no | Start date YYYY-MM-DD (inclusive). |
| to | string | no | End date YYYY-MM-DD (inclusive). |
| interval | string | no | Resample to end-of-period values. auto = the finest interval that fits maxPoints. |
| maxPoints | integer | no | Upper bound on returned points (auto interval only; an explicit interval is truncated to the most recent maxPoints). |
Bullrun's proprietary machine-learning valuation and forecast scores for 1-10 stocks, recomputed nightly. Valuation: a LightGBM model predicts the P/E (or price/sales for loss-makers) that companies with similar fundamentals typically command a year out; the gap = typical / current multiple - 1 (positive = trades below its typical multiple), with the implied model-typical P/E, percentile and rank
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tickers | array | yes | 1-10 exact Bullrun tickers (native local-exchange symbols, e.g. ["AAPL","MSFT"] or ["ASML","SAP","NESN"]). |
Rank the whole scored stock universe (market cap >= $100M) by Bullrun's proprietary ML models: the stocks trading furthest below (or above) the P/E or price/sales multiple their fundamentals typically command, or the strongest/weakest relative 1-year forecast signals. Filter by sector, country, exchange and financial-history coverage. Each row has the valuation gap or forecast edge, the model-typi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| model | string | no | valuation = P/E gap on quarterly financials (profitable companies); valuation_ps = price/sales gap (covers loss-makers); valuation_annual_1y = P/E gap on annual financials (broader non-US coverage); f |
| end | string | no | top = highest percentile first (valuation: furthest BELOW typical multiple, i.e. cheapest vs fundamentals; forecast: strongest signal). bottom = lowest first (richest vs fundamentals / weakest signal) |
| coverage | string | no | full = only stocks whose model window (8 quarters / 4 years) is fully populated; limited = the rest. |
| sector | string | no | Exact sector, case-insensitive, e.g. "Technology", "Healthcare", "Financial Services". |
| country | string | no | Exact country, case-insensitive, e.g. "United States", "Germany", "Japan". |
| exchange | string | no | Exact exchange code, case-insensitive, e.g. "NASDAQ", "XETRA", "LSE". |
| limit | integer | no | — |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Bullrun or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 0.1.2.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Bullrun can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.