이 MCP로 할 수 있는 일
Provides global stock and ETF research, screening, financial analysis, risk metrics, portfolio analytics, and draft portfolio creation.
도구
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tickers'], 'properties': {'tickers': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 10, 'minItems': 2, 'description': 'Two to ten exact Bullrun ETF listing tickers.'}, 'topSharedLimit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tickers', 'methodology', 'coverage', 'pairs', 'warnings'], 'properties': {'pairs': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'tickers': {'type': 'array', 'items': {'type': 'string'}}, 'coverage': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'methodology': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['portfolioId', 'candidateTicker'], 'properties': {'days': {'type': 'integer', 'default': 370, 'maximum': 1825, 'minimum': 30}, 'portfolioId': {'type': 'integer', 'description': 'Portfolio id returned by list_portfolios.', 'exclusiveMinimum': 0}, 'candidateTicker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker to test.'}, 'candidateWeightPct': {'type': 'number', 'default': 5, 'maximum': 50, 'minimum': 0.1}, 'includeLookThrough': {'type': 'boolean', 'default': True}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['portfolioId', 'candidateTicker', 'candidateWeightPct', 'priceRiskFit', 'lookThroughFit', 'coverage', 'warnings'], 'properties': {'coverage': {'type': 'object', 'additionalProperties': {}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'portfolioId': {'type': 'integer'}, 'priceRiskFit': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'null'}]}, 'lookThroughFit': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'null'}]}, 'candidateTicker': {'type': 'string'}, 'candidateWeightPct': {'type': 'number'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tickers'], 'properties': {'include': {'type': 'array', 'items': {'enum': ['classification', 'market', 'fund_data', 'costs', 'income', 'benchmark', 'performance', 'risk', 'holdings'], 'type': 'string'}, 'default': ['classification', 'market', 'fund_data', 'costs', 'income', 'benchmark'], 'maxItems': 9, 'minItems': 1}, 'tickers': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 10, 'minItems': 2, 'description': 'Two to ten exact Bullrun ETF listing tickers.'}, 'performanceDays': {'type': 'integer', 'default': 370, 'maximum': 1825, 'minimum': 30}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tickers', 'requestedModules', 'rows', 'leaders', 'coverage', 'warnings'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'leaders': {'type': 'object', 'additionalProperties': {}}, 'tickers': {'type': 'array', 'items': {'type': 'string'}}, 'coverage': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'requestedModules': {'type': 'array', 'items': {'enum': ['classification', 'market', 'fund_data', 'costs', 'income', 'benchmark', 'performance', 'risk', 'holdings'], 'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'prompt': {'type': 'string', 'maxLength': 600, 'description': '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 native form on clients that support elicitation; otherwise it asks you to gather those first).'}, 'maxPositions': {'type': 'integer', 'maximum': 20, 'minimum': 3, 'description': 'Maximum number of holdings (3-20, default 10).'}, 'startingCash': {'type': 'number', 'maximum': 100000000, 'minimum': 100, 'description': 'Starting cash in USD (default 10000).'}, 'instrumentUniverse': {'enum': ['stocks', 'etfs', 'mix'], 'type': 'string', 'description': 'Candidate universe: stocks only, ETFs only, or a mix. Default mix unless the prompt says otherwise.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['positions'], 'properties': {'name': {'type': 'string', 'maxLength': 72, 'description': 'Portfolio name. Default "Custom Portfolio Draft".'}, 'cashPct': {'type': 'number', 'maximum': 95, 'minimum': 0, 'description': 'Explicit cash percentage to hold back. Overrides the weight-remainder rule.'}, 'positions': {'type': 'array', 'items': {'type': 'object', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'description': 'Exact Bullrun ticker, used verbatim (never re-picked), e.g. VWCE.DE, SMH, ROG.SW.'}, 'weight': {'type': 'number', 'description': 'Target weight as a PERCENT (e.g. 46 for 46%). If the weights across positions sum to <=100 the remainder is held as cash; any other sum is normalised to fully invested. Use weight OR amountUsd across the basket, not both.', 'exclusiveMinimum': 0}, 'amountUsd': {'type': 'number', 'description': 'Explicit USD amount to allocate to this holding. If ANY position uses amountUsd, sizing is by amount for all.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'maxItems': 30, 'minItems': 1, 'description': 'The exact holdings to persist (1-30). Tickers are used verbatim, never re-selected.'}, 'startingCash': {'type': 'number', 'maximum': 100000000, 'minimum': 100, 'description': 'Total portfolio cash in USD. Default 10000 in weight mode; the sum of amounts in amount mode.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['portfolioId'], 'properties': {'portfolioId': {'type': 'integer', 'description': 'The Bullrun portfolio id to propose additions for. Use list_portfolios first if unsure.', 'exclusiveMinimum': 0}, 'maxPositions': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'How many suggested additions to save, 1-5. Use 1 for a single-position idea; default 3.'}, 'instrumentUniverse': {'enum': ['stocks', 'etfs', 'mix'], 'type': 'string', 'description': 'Candidate universe: stocks only, ETFs only, or a mix. Default mix.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'search': {'type': 'string', 'description': 'Optional case-insensitive text/speaker search across transcript chunks.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'The ticker exactly as listed on Bullrun, e.g. "CRWD", "SPGI", "V".'}, 'maxChunks': {'type': 'integer', 'default': 80, 'maximum': 200, 'minimum': 1, 'description': 'Maximum speaker-tagged transcript chunks to return.'}, 'fiscalYear': {'type': 'integer', 'maximum': 2200, 'minimum': 1900, 'description': 'Optional fiscal year filter.'}, 'fiscalQuarter': {'type': 'integer', 'maximum': 4, 'minimum': 1, 'description': 'Optional fiscal quarter filter.'}, 'maxCharsPerChunk': {'type': 'integer', 'default': 1600, 'maximum': 4000, 'minimum': 200, 'description': 'Maximum characters per transcript chunk in the MCP response.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'types': {'type': 'array', 'items': {'enum': ['sector', 'country', 'currency', 'asset', 'factor', 'thematic'], 'type': 'string'}, 'default': ['sector', 'country', 'currency', 'asset'], 'maxItems': 6, 'minItems': 1}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker.'}, 'limitPerType': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'requestedTypes', 'availableTypes', 'unavailableTypes', 'exposures', 'coverage', 'warnings'], 'properties': {'ticker': {'type': 'string'}, 'coverage': {'type': 'object', 'additionalProperties': {}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'exposures': {'type': 'object', 'additionalProperties': {}}, 'availableTypes': {'type': 'array', 'items': {'$ref': '#/properties/requestedTypes/items'}}, 'requestedTypes': {'type': 'array', 'items': {'enum': ['sector', 'country', 'currency', 'asset', 'factor', 'thematic'], 'type': 'string'}}, 'unavailableTypes': {'type': 'array', 'items': {'$ref': '#/properties/requestedTypes/items'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 1000, 'minimum': 1, 'description': 'Maximum values per facet, 1-1000. Each facet reports its untruncated total.'}, 'facets': {'type': 'array', 'items': {'enum': ['assetClasses', 'categories', 'indexKeys', 'productTypes', 'regions', 'domiciles', 'currencies', 'exchanges', 'sectors', 'fundFamilies', 'industries'], 'type': 'string'}, 'minItems': 1, 'description': 'Which facets to return. Defaults to everything except the long tails fundFamilies (~890 issuers) and industries (~650 focus strings) â\x80\x94 request those explicitly, ideally with search.'}, 'search': {'type': 'string', 'description': 'Case-insensitive substring filter applied to every requested facet, e.g. "ishares" against fundFamilies or "world" against categories.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['facets', 'totals', 'truncatedFacets', 'search', 'notes'], 'properties': {'notes': {'type': 'array', 'items': {'type': 'string'}}, 'facets': {'type': 'object', 'additionalProperties': {}}, 'search': {'type': ['string', 'null']}, 'totals': {'type': 'object', 'additionalProperties': {'type': 'number'}}, 'truncatedFacets': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'isin': {'type': 'string', 'description': 'Fund ISIN, e.g. IE00B4L5Y983. The identifier European factsheets and brokers quote.'}, 'ticker': {'type': 'string', 'description': 'Any venue listing ticker of the fund, e.g. EUNL.DE or IWDA.L. Resolved to its fund ISIN first. Provide this or isin.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'found', 'fund', 'listings', 'warnings'], 'properties': {'fund': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'null'}]}, 'found': {'type': 'boolean'}, 'query': {'type': 'object', 'additionalProperties': {}}, 'listings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum holdings to return on this page, 1-100.'}, 'cursor': {'type': 'string', 'description': 'Opaque nextCursor returned by a previous get_etf_holdings call for the same ticker.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker, including its exchange suffix when present.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'asOfDate', 'returned', 'totalRowsAvailable', 'nextCursor', 'coverage', 'holdings'], 'properties': {'ticker': {'type': 'string'}, 'asOfDate': {'type': ['string', 'null']}, 'coverage': {'type': 'object', 'additionalProperties': {}}, 'holdings': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'returned': {'type': 'integer', 'minimum': 0}, 'nextCursor': {'type': ['string', 'null']}, 'totalRowsAvailable': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum funds (or index families) to return, 1-100.'}, 'scope': {'enum': ['ucits', 'all'], 'type': 'string', 'default': 'ucits', 'description': '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.'}, 'indexKey': {'type': 'string', 'description': '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.'}, 'distributionPolicy': {'enum': ['ACCUMULATING', 'DISTRIBUTING'], 'type': 'string', 'description': 'Optionally keep only accumulating or only distributing share classes.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mode', 'indexKey', 'scope', 'found', 'coverage', 'funds', 'indexFamilies', 'warnings'], 'properties': {'mode': {'enum': ['index_group', 'index_list'], 'type': 'string'}, 'found': {'type': 'boolean'}, 'funds': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'scope': {'type': 'string'}, 'coverage': {'type': 'object', 'additionalProperties': {}}, 'indexKey': {'type': ['string', 'null']}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'indexFamilies': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'days': {'type': 'integer', 'default': 370, 'maximum': 1825, 'minimum': 30, 'description': 'Calendar-day lookback for daily close-price risk calculations.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker.'}, 'benchmarkTicker': {'type': 'string', 'minLength': 1, 'description': 'Optional exact priced benchmark/proxy ticker for beta, correlation, tracking error, active return, and information ratio.'}, 'riskFreeRatePct': {'type': 'number', 'default': 0, 'maximum': 30, 'minimum': -10, 'description': 'Annual risk-free rate in percentage points for Sharpe, Sortino, and Calmar ratios.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'lookbackDays', 'methodology', 'coverage', 'risk', 'benchmarkRelative', 'warnings'], 'properties': {'risk': {'type': 'object', 'additionalProperties': {}}, 'ticker': {'type': 'string'}, 'coverage': {'type': 'object', 'additionalProperties': {}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'methodology': {'type': 'object', 'additionalProperties': {}}, 'lookbackDays': {'type': 'integer'}, 'benchmarkRelative': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'null'}]}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker, including its exchange suffix when present, e.g. SPY, VWRL.L, or EUNL.DE.'}, 'include': {'type': 'array', 'items': {'enum': ['identity', 'classification', 'market', 'fund_data', 'costs', 'income', 'benchmark'], 'type': 'string'}, 'default': ['identity', 'classification', 'market', 'costs'], 'maxItems': 7, 'minItems': 1, 'description': 'Only these snapshot modules are fetched and returned. Default: identity, classification, market, costs.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'found', 'requestedModules', 'availableModules', 'missingModules', 'modules', 'asOf', 'dataQuality'], 'properties': {'asOf': {'type': 'object', 'additionalProperties': {}}, 'found': {'type': 'boolean'}, 'ticker': {'type': 'string'}, 'modules': {'type': 'object', 'additionalProperties': {}}, 'dataQuality': {'type': 'object', 'additionalProperties': {}}, 'missingModules': {'type': 'array', 'items': {'$ref': '#/properties/requestedModules/items'}}, 'availableModules': {'type': 'array', 'items': {'$ref': '#/properties/requestedModules/items'}}, 'requestedModules': {'type': 'array', 'items': {'enum': ['identity', 'classification', 'market', 'fund_data', 'costs', 'income', 'benchmark'], 'type': 'string'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 260, 'maximum': 1300, 'minimum': 1, 'description': 'Maximum recent daily source bars to load before date filtering and interval aggregation.'}, 'series': {'type': 'array', 'items': {'enum': ['price', 'price_return', 'nav', 'total_return', 'benchmark', 'premium_discount'], 'type': 'string'}, 'default': ['price'], 'maxItems': 6, 'minItems': 1, 'description': 'Requested series. Unsupported stored series are reported in unavailableSeries rather than synthesized.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker.'}, 'endDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'interval': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string', 'default': 'daily'}, 'startDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'benchmarkTicker': {'type': 'string', 'minLength': 1, 'description': 'Exact priced ticker to use when benchmark is requested. A benchmark name alone cannot resolve a price series safely.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'requestedSeries', 'availableSeries', 'unavailableSeries', 'interval', 'series', 'metadata', 'warnings'], 'properties': {'series': {'type': 'object', 'additionalProperties': {}}, 'ticker': {'type': 'string'}, 'interval': {'enum': ['daily', 'weekly', 'monthly'], 'type': 'string'}, 'metadata': {'type': 'object', 'additionalProperties': {}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'availableSeries': {'type': 'array', 'items': {'$ref': '#/properties/requestedSeries/items'}}, 'requestedSeries': {'type': 'array', 'items': {'enum': ['price', 'price_return', 'nav', 'total_return', 'benchmark', 'premium_discount'], 'type': 'string'}}, 'unavailableSeries': {'type': 'array', 'items': {'$ref': '#/properties/requestedSeries/items'}}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'years': {'type': 'integer', 'default': 10, 'maximum': 15, 'minimum': 1, 'description': 'How many fiscal years of history to return, counting backward from the latest fiscal year available.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': '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-style country suffixes; if a lookup returns nothing, use screen_stocks to find the exact symbol.'}, 'periodType': {'enum': ['annual', 'quarterly', 'both'], 'type': 'string', 'default': 'both', 'description': 'Return annual rows, quarterly rows, or both. Annual rows use fiscalQuarter=0.'}, 'includeEmptyRows': {'type': 'boolean', 'default': False, 'description': 'Include sparse rows that have no major income statement, balance sheet, cash-flow, or EPS values.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 80, 'maximum': 200, 'minimum': 1, 'description': 'Maximum estimate rows to return.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'The ticker exactly as listed on Bullrun, e.g. "AAPL", "CRWD", "SPGI".'}, 'periodType': {'enum': ['annual', 'quarterly', 'both'], 'type': 'string', 'default': 'both', 'description': 'Return annual estimates, quarterly estimates, or both.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 120, 'maximum': 300, 'minimum': 1, 'description': 'Maximum KPI rows to return.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'The ticker exactly as listed on Bullrun, e.g. "CRWD", "SNOW", "V".'}, 'category': {'type': 'string', 'description': 'Optional category filter such as SaaS, payments, marketplace, banking, or other domain labels.'}, 'metricKey': {'type': 'string', 'description': 'Optional exact metric key to filter, e.g. ARR, NRR, RPO, BILLINGS, PAYMENT_VOLUME.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['portfolioId'], 'properties': {'days': {'type': 'integer', 'maximum': 1825, 'minimum': 30, 'description': 'Calendar-day lookback for daily USD return analytics. Default 370.'}, 'portfolioId': {'type': 'integer', 'description': 'The portfolio id, as returned by list_portfolios.', 'exclusiveMinimum': 0}, 'privacyMode': {'enum': ['full', 'weights_only'], 'type': 'string', 'description': '"full" (default) includes absolute USD amounts; "weights_only" returns only relative figures.'}, 'candidateTicker': {'type': 'string', 'minLength': 1, 'description': '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': {'type': 'number', 'maximum': 50, 'minimum': 0, 'description': 'Optional hypothetical candidate allocation for pro-forma volatility. Default 5 (%).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['portfolioId'], 'properties': {'days': {'type': 'integer', 'maximum': 3700, 'minimum': 7, 'description': 'Insights look-back window in days (default 30).'}, 'portfolioId': {'type': 'integer', 'description': 'The portfolio id, as returned by list_portfolios.', 'exclusiveMinimum': 0}, 'privacyMode': {'enum': ['full', 'weights_only'], 'type': 'string', 'description': '"full" (default) includes absolute $; "weights_only" returns only relative figures.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'years': {'type': 'integer', 'default': 10, 'maximum': 15, 'minimum': 2, 'description': 'How many fiscal years of annual history to evaluate.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': '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-style country suffixes; if a lookup returns nothing, use screen_stocks to find the exact symbol.'}, 'estimatedWaccPct': {'type': 'number', 'maximum': 50, 'minimum': 0, 'description': 'Optional user-supplied WACC assumption, in percent. When omitted, ROIC-vs-WACC spread is returned as null.'}, 'taxRateFallbackPct': {'type': 'number', 'default': 21, 'maximum': 50, 'minimum': 0, 'description': 'Fallback tax rate used for NOPAT only when reported tax/pretax data is missing or unusable.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 160, 'maximum': 300, 'minimum': 1, 'description': 'Maximum breakdown rows to return.'}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'The ticker exactly as listed on Bullrun, e.g. "SPGI", "MSFT", "V".'}, 'dimension': {'enum': ['segment', 'geography', 'product', 'customer', 'other', 'all'], 'type': 'string', 'default': 'all', 'description': 'Breakdown dimension to return, or all dimensions.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'minLength': 1, 'description': '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 Yahoo-style country suffixes.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'privacyMode': {'enum': ['full', 'weights_only'], 'type': 'string', 'description': '"full" (default) includes absolute $; "weights_only" hides cash/value/cost-basis and keeps only %.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'focus': {'type': 'string', 'description': 'Exact ETF exposure filter, such as Japan, Equity - Australia, TOPIX, or an exchange/source exposure label. Kept as focus for API compatibility.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum ETF search rows to return, 1-100.'}, 'search': {'type': 'string', 'description': 'Free-text ETF search by ticker or fund name. Omit to list the first ETFs.'}, 'ticker': {'type': 'string', 'description': 'Exact ETF ticker for profile, prices, and optional holdings, e.g. SPY, VWRL.L, EUNL.DE.'}, 'category': {'type': 'string', 'description': 'Exact broad ETF asset-class filter, such as Equity, Fixed Income, Commodity, Crypto, or Real Estate. Kept as category for API compatibility.'}, 'currency': {'type': 'string', 'description': 'Exact trading currency filter, e.g. USD, EUR, CHF.'}, 'domicile': {'type': 'string', 'description': 'Exact ETF domicile filter.'}, 'exchange': {'type': 'string', 'description': 'Exact exchange filter, e.g. NYSE ARCA, LSE, XETRA.'}, 'priceLimit': {'type': 'integer', 'default': 1, 'maximum': 250, 'minimum': 0, 'description': 'Recent daily price rows to return for an exact ticker. Use 0 to skip prices.'}, 'holdingsLimit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum holdings to return for an exact ticker, 1-100.'}, 'includeHoldings': {'type': 'boolean', 'default': True, 'description': 'When ticker is supplied, include latest holdings. Ignored for broad searches.'}, 'includeInactive': {'type': 'boolean', 'default': False, 'description': 'Include ETFs with no recent price bar. Default false.'}, 'includeSecondary': {'type': 'boolean', 'default': False, 'description': 'Include secondary/cross-listed ETF tickers. Default false.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum ETFs to return, 1-100.'}, 'order': {'enum': ['desc', 'asc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction. Nulls always sort last regardless of direction.'}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['metric'], 'properties': {'unit': {'enum': ['', 'K', 'M', 'B', 'T'], 'type': 'string', 'default': '', 'description': "Optional money unit for money metrics: '', K, M, B or T."}, 'value': {'type': ['string', 'number'], 'description': 'Threshold. For money metrics combine with unit for K/M/B/T scaling.'}, 'metric': {'enum': ['expenseRatioPct', 'totalAssets', 'yieldTtmPct', 'holdingsCount', 'fundAgeYears', 'inceptionYear', 'nav', 'return1mPct', 'return3mPct', 'return6mPct', 'return1yPct', 'returnYtdPct', 'volatility1yPct', 'avgVolume90d', 'avgTurnover90d', 'top10ConcentrationPct'], 'type': 'string', 'description': 'Numeric metric to filter on.'}, 'groupId': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Rules with the same groupId are ANDed; different groups are ORed.'}, 'operator': {'enum': ['>=', '<=', '>', '<', '=', '..'], 'type': 'string', 'default': '>=', 'description': "Comparison operator. Use '..' for an inclusive between range with valueMax."}, 'valueMax': {'type': ['string', 'number'], 'description': "Upper bound for '..' range rules. Ignored for other operators."}}, 'additionalProperties': False}, 'default': [], 'description': 'Numeric rules. A fund with no value for a ruled metric never matches that rule.'}, 'issuer': {'type': 'string', 'description': 'Substring match on the fund family/issuer, e.g. "iShares", "Amundi", "Vanguard".'}, 'region': {'type': 'string', 'description': 'Exact investment-region string.'}, 'search': {'type': 'string', 'description': 'Free-text match on ticker, fund name or ISIN. Omit to screen the whole universe.'}, 'sortBy': {'enum': ['expenseRatioPct', 'totalAssets', 'yieldTtmPct', 'return1mPct', 'return3mPct', 'return6mPct', 'return1yPct', 'returnYtdPct', 'volatility1yPct', 'avgVolume90d', 'avgTurnover90d', 'top10ConcentrationPct', 'holdingsCount', 'nav', 'ticker', 'name'], 'type': 'string', 'default': 'totalAssets', 'description': 'Sort field applied to the returned rows.'}, 'category': {'type': 'string', 'description': 'Exact category string. Call get_etf_filter_options for the valid values; a wrong guess silently returns zero rows.'}, 'currency': {'type': 'string', 'description': 'Exact trading currency, e.g. EUR, USD, GBX.'}, 'domicile': {'type': 'string', 'description': 'Exact fund domicile, e.g. "Ireland", "Luxembourg", "United States".'}, 'exchange': {'type': 'string', 'description': 'Exact listing exchange, e.g. XETRA, LSE, "NYSE ARCA".'}, 'indexKey': {'type': 'string', 'description': 'Exact tracked-index key, e.g. SP500, MSCI_WORLD, NASDAQ100. Use get_etf_index_group to compare every fund on one index instead.'}, 'strategy': {'type': 'string', 'description': 'Exact strategy classification string.'}, 'assetClass': {'type': 'string', 'description': 'Exact asset-class group: EQUITY, FIXED_INCOME, COMMODITY, REAL_ESTATE, MULTI_ASSET, CASH, CURRENCY, DIGITAL_ASSETS, ALTERNATIVES or OTHER.'}, 'holdingMode': {'enum': ['INCLUDES', 'EXCLUDES'], 'type': 'string', 'default': 'INCLUDES', 'description': 'INCLUDES keeps funds holding the constituent. EXCLUDES keeps only funds with a holdings snapshot that confirms absence â\x80\x94 funds with no snapshot are dropped, never assumed clean.'}, 'productType': {'type': 'string', 'description': 'Exact wrapper type, e.g. UCITS_FUND.'}, 'ucitsStatus': {'enum': ['UCITS', 'NON_UCITS'], 'type': 'string', 'description': 'UCITS restricts to wrappers a European retail investor can actually buy.'}, 'holdingSearch': {'type': 'string', 'description': '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.'}, 'currencyHedged': {'enum': ['HEDGED', 'NOT_LABELLED_HEDGED'], 'type': 'string', 'description': 'HEDGED selects funds labelled currency-hedged. NOT_LABELLED_HEDGED selects funds not so labelled â\x80\x94 absence of a label is not proof a fund is unhedged.'}, 'benchmarkSearch': {'type': 'string', 'description': 'Substring match on the stated benchmark name.'}, 'includeSecondary': {'type': 'boolean', 'default': False, 'description': "Include secondary venue listings of the same fund. Default false â\x80\x94 one row per fund's primary listing."}, 'marketDevelopment': {'type': 'string', 'description': 'Exact market-development classification, e.g. developed vs emerging.'}, 'distributionPolicy': {'enum': ['ACCUMULATING', 'DISTRIBUTING'], 'type': 'string', 'description': 'Accumulating (reinvests income) or distributing (pays it out) â\x80\x94 the usual first cut for a European investor.'}, 'holdingMinWeightPct': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Minimum constituent weight in percentage points for holdingSearch to count as a match.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'coverage', 'matchCount', 'returned', 'results', 'warnings'], 'properties': {'query': {'type': 'object', 'additionalProperties': {}}, 'results': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'coverage': {'type': 'object', 'additionalProperties': {}}, 'returned': {'type': 'integer', 'minimum': 0}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'matchCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'mode': {'enum': ['annual', 'quarterly'], 'type': 'string', 'description': 'Deprecated alias for lookbackMode; kept for compatibility.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of stocks to return (1-100).'}, 'order': {'enum': ['desc', 'asc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction. Nulls always sort last regardless of direction.'}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['metric'], 'properties': {'unit': {'enum': ['', 'K', 'M', 'B', 'T'], 'type': 'string', 'default': '', 'description': "Optional money unit for money metrics: '', K, M, B or T."}, 'value': {'type': ['string', 'number'], 'description': 'Threshold value. For money metrics, combine with unit for K/M/B/T scaling.'}, 'metric': {'enum': ['revenueGrowthPct', 'netIncomeGrowthPct', 'grossProfitGrowthPct', 'operatingIncomeGrowthPct', 'ebitdaGrowthPct', 'freeCashflowGrowthPct', 'epsGrowthPct', 'operatingCashflowGrowthPct', 'dividendGrowthPct', 'latestRevenue', 'latestNetIncome', 'latestGrossProfit', 'latestOperatingIncome', 'latestEbitda', 'latestDilutedEps', 'latestDividendsPerShare', 'latestFreeCashflow', 'latestOperatingCashflow', 'latestCash', 'latestTotalAssets', 'latestTotalDebt', 'latestStockholdersEquity', 'marketCap', 'peRatio', 'dividendYield'], 'type': 'string', 'description': 'Metric to filter on.'}, 'groupId': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Rules with the same groupId are ANDed; different groups are ORed.'}, 'operator': {'enum': ['>=', '<=', '>', '<', '=', '..'], 'type': 'string', 'default': '>=', 'description': "Comparison operator. Use '..' for an inclusive between range."}, 'valueMax': {'type': ['string', 'number'], 'description': "Upper bound for '..' range rules. Ignored for other operators."}}, 'additionalProperties': False}, 'default': [], 'description': 'Fundamental rules. Same groupId means AND; different groupIds mean OR.'}, 'sector': {'type': 'string', 'description': 'Exact sector name to filter by, e.g. "Technology", "Healthcare". Omit for all sectors.'}, 'sortBy': {'enum': ['revenueGrowthPct', 'netIncomeGrowthPct', 'grossProfitGrowthPct', 'operatingIncomeGrowthPct', 'ebitdaGrowthPct', 'freeCashflowGrowthPct', 'epsGrowthPct', 'operatingCashflowGrowthPct', 'dividendGrowthPct', 'latestRevenue', 'latestNetIncome', 'latestGrossProfit', 'latestOperatingIncome', 'latestEbitda', 'latestDilutedEps', 'latestDividendsPerShare', 'latestFreeCashflow', 'latestOperatingCashflow', 'latestCash', 'latestTotalAssets', 'latestTotalDebt', 'latestStockholdersEquity', 'marketCap', 'peRatio', 'dividendYield', 'revenueGrowth'], 'type': 'string', 'default': 'marketCap', 'description': 'Metric to sort by. revenueGrowth is accepted as an alias for revenueGrowthPct.'}, 'country': {'type': 'string', 'description': 'Exact country name to filter by, e.g. "United States", "Germany". Omit for all countries.'}, 'periods': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Deprecated alias for lookback; kept for compatibility.'}, 'industry': {'type': 'string', 'description': 'Exact industry name to filter by, e.g. "Software - Infrastructure". Omit for all industries.'}, 'lookback': {'type': 'integer', 'default': 3, 'maximum': 40, 'minimum': 1, 'description': 'How many reporting periods to evaluate. Growth rules need at least 2 comparable periods.'}, 'countries': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Exact country names to include. Use this for multi-country screens; it overrides country when provided.'}, 'lookbackMode': {'enum': ['annual', 'quarterly'], 'type': 'string', 'default': 'annual', 'description': 'Whether rule evaluation uses annual or quarterly reporting periods.'}, 'minMarketCap': {'type': 'number', 'minimum': 0, 'description': 'Compatibility shortcut: adds marketCap >= this absolute value to every rule group.'}, 'includeInactive': {'type': 'boolean', 'default': False, 'description': 'Include delisted/inactive tickers with no recent price bar. Default false.'}, 'includeSecondary': {'type': 'boolean', 'default': False, 'description': 'Include secondary cross-listings of the same security. Default false (primary listings only).'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'focus': {'type': 'string', 'description': 'Exact ETF focus/exposure filter, e.g. Japan, TOPIX, or Equity - Australia.'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum matching ETFs to return, 1-100.'}, 'minAum': {'type': 'number', 'minimum': 0, 'description': "Minimum assets under management in the profile's reported currency units."}, 'region': {'type': 'string', 'description': 'Exact portfolio or investment-region filter.'}, 'search': {'type': 'string', 'description': 'Free-text ETF search by ticker, fund name, or ISIN (e.g. IE00B4L5Y983). Omit for a broad screen.'}, 'sortBy': {'enum': ['relevance', 'ticker', 'name', 'aum', 'expense_ratio', 'yield'], 'type': 'string', 'default': 'relevance', 'description': 'Sort field. Relevance preserves Bullrun search ordering.'}, 'category': {'type': 'string', 'description': '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.'}, 'currency': {'type': 'string', 'description': 'Exact trading-currency filter.'}, 'domicile': {'type': 'string', 'description': 'Exact fund domicile filter.'}, 'exchange': {'type': 'string', 'description': 'Exact listing exchange filter.'}, 'indexKey': {'type': 'string', 'description': 'Exact tracked-index key, e.g. SP500 or MSCI_WORLD. Use get_etf_index_group to rank every fund on one index by cost.'}, 'scanLimit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 25, 'description': 'Maximum coarse-search candidates to enrich before applying quantitative filters/sorts, 25-500.'}, 'sortDirection': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc'}, 'minYieldTtmPct': {'type': 'number', 'minimum': 0, 'description': 'Minimum trailing yield in percentage points, e.g. 2 means 2%.'}, 'includeInactive': {'type': 'boolean', 'default': False}, 'includeSecondary': {'type': 'boolean', 'default': False}, 'distributionPolicy': {'enum': ['ACCUMULATING', 'DISTRIBUTING'], 'type': 'string', 'description': 'Accumulating (reinvests income) or distributing (pays it out).'}, 'maxExpenseRatioPct': {'type': 'number', 'minimum': 0, 'description': 'Maximum annual expense ratio in percentage points, e.g. 0.25 means 0.25%.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'coverage', 'matchesInScannedCandidates', 'returned', 'results', 'warnings'], 'properties': {'query': {'type': 'object', 'additionalProperties': {}}, 'results': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'coverage': {'type': 'object', 'additionalProperties': {}}, 'returned': {'type': 'integer', 'minimum': 0}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'matchesInScannedCandidates': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'years': {'type': 'number', 'default': 10, 'maximum': 50, 'minimum': 0.25}, 'ticker': {'type': 'string', 'minLength': 1, 'description': 'Exact Bullrun ETF listing ticker.'}, 'spreadPct': {'type': 'number', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Assumed full bid/ask spread in percentage points; each purchase pays half the spread.'}, 'expenseRatioPct': {'type': 'number', 'maximum': 20, 'minimum': 0, 'description': 'Optional expense-ratio override in percentage points. Otherwise uses the stored ETF profile value.'}, 'initialInvestment': {'type': 'number', 'default': 10000, 'minimum': 0}, 'commissionPerTrade': {'type': 'number', 'default': 0, 'minimum': 0}, 'contributionAmount': {'type': 'number', 'default': 0, 'minimum': 0}, 'grossAnnualReturnPct': {'type': 'number', 'default': 0, 'maximum': 100, 'minimum': -99, 'description': 'Assumed annual return before ETF and trading costs, in percentage points. Default 0 isolates direct costs.'}, 'contributionFrequency': {'enum': ['none', 'monthly', 'quarterly', 'annual'], 'type': 'string', 'default': 'monthly'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'assumptions', 'results', 'costBreakdown', 'warnings'], 'properties': {'ticker': {'type': 'string'}, 'results': {'type': 'object', 'additionalProperties': {}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'assumptions': {'type': 'object', 'additionalProperties': {}}, 'costBreakdown': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
AlpineDataWorks Intelligence Server
Provides economic, market, supply-chain, real-estate, energy, consumer, labor, and other scored intelligence indices with histori…
Stratalize Finance
Provides financial, macroeconomic, banking, credit, commodities, M&A, ESG, labor, and regulatory benchmarks for analysis and plan…
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…
equibles
Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…
DFX Real Estate Intelligence
Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…
simplefunctions
Provides prediction-market data, thesis analysis, market signals, portfolio tracking, and automated intent-based trading workflow…
EventTrader MCP
Provides prediction-market research and trading capabilities, including real-time event-market data, CLOB execution paths, fund i…
Signal8
Provides SEC filings, dilution data, insider and institutional ownership, and political-trade data.