이 MCP로 할 수 있는 일
Provides read-only market research through ticker scores, signals, portfolio rankings, price history, market briefs, trends, and source consensus.
도구
입력 스키마
{'type': 'object', 'title': 'rayana_ai_analyst_briefArguments', 'properties': {'date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Date', 'default': None}}}
출력 스키마
{'type': 'object', 'title': 'AnalystBriefResponse', 'required': ['brief', 'views'], 'properties': {'brief': {'type': 'object', 'title': 'Brief', 'additionalProperties': True}, 'views': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Views'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_articlesArguments', 'properties': {'slug': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Slug', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 30}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0}}}
출력 스키마
{'type': 'object', '$defs': {'ArticleDetail': {'type': 'object', 'title': 'ArticleDetail', 'required': ['slug', 'ticker', 'headline', 'body_md', 'trigger_type'], 'properties': {'dek': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Dek', 'default': None}, 'slug': {'type': 'string', 'title': 'Slug'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'body_md': {'type': 'string', 'title': 'Body Md'}, 'headline': {'type': 'string', 'title': 'Headline'}, 'created_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Created At', 'default': None}, 'published_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published At', 'default': None}, 'trigger_type': {'type': 'string', 'title': 'Trigger Type'}}}, 'ArticleSummary': {'type': 'object', 'title': 'ArticleSummary', 'required': ['slug', 'ticker', 'headline', 'trigger_type'], 'properties': {'dek': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Dek', 'default': None}, 'slug': {'type': 'string', 'title': 'Slug'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'headline': {'type': 'string', 'title': 'Headline'}, 'published_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published At', 'default': None}, 'trigger_type': {'type': 'string', 'title': 'Trigger Type'}}}, 'ArticlesResponse': {'type': 'object', 'title': 'ArticlesResponse', 'required': ['count', 'articles'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'limit': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Limit', 'default': None}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None}, 'offset': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Offset', 'default': None}, 'articles': {'type': 'array', 'items': {'$ref': '#/$defs/ArticleSummary'}, 'title': 'Articles'}}}}, 'title': 'rayana_ai_articlesOutput', 'required': ['result'], 'properties': {'result': {'anyOf': [{'$ref': '#/$defs/ArticlesResponse'}, {'$ref': '#/$defs/ArticleDetail'}], 'title': 'Result'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_complete_setupArguments', 'required': ['code'], 'properties': {'code': {'type': 'string', 'title': 'Code'}}}
출력 스키마
{'type': 'object', 'title': 'AgentSetup', 'required': ['api_key', 'tier', 'rest_base_url', 'mcp_url', 'header_name', 'note'], 'properties': {'note': {'type': 'string', 'title': 'Note'}, 'tier': {'type': 'string', 'title': 'Tier'}, 'api_key': {'type': 'string', 'title': 'Api Key'}, 'mcp_url': {'type': 'string', 'title': 'Mcp Url'}, 'header_name': {'type': 'string', 'title': 'Header Name'}, 'rest_base_url': {'type': 'string', 'title': 'Rest Base Url'}}, 'description': 'The result of redeeming a pairing code: a usable API key, once.'}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_consensusArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 25}, 'source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source', 'default': None}}}
출력 스키마
{'type': 'object', '$defs': {'Form4ConsensusRow': {'type': 'object', 'title': 'Form4ConsensusRow', 'required': ['ticker', 'company', 'insiders', 'top_title', 'total_value', 'buys', 'run_at'], 'properties': {'buys': {'type': 'integer', 'title': 'Buys'}, 'run_at': {'type': 'string', 'title': 'Run At'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'company': {'type': 'string', 'title': 'Company'}, 'insiders': {'type': 'integer', 'title': 'Insiders'}, 'best_role': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Best Role', 'default': None}, 'top_title': {'type': 'string', 'title': 'Top Title'}, 'total_value': {'type': 'number', 'title': 'Total Value'}}}, 'OnchainConsensusRow': {'type': 'object', 'title': 'OnchainConsensusRow', 'required': ['symbol', 'wallets', 'top_label', 'total_value', 'transfers', 'chains', 'run_at'], 'properties': {'chains': {'type': 'string', 'title': 'Chains'}, 'run_at': {'type': 'string', 'title': 'Run At'}, 'symbol': {'type': 'string', 'title': 'Symbol'}, 'wallets': {'type': 'integer', 'title': 'Wallets'}, 'best_tier': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Best Tier', 'default': None}, 'top_label': {'type': 'string', 'title': 'Top Label'}, 'transfers': {'type': 'integer', 'title': 'Transfers'}, 'total_value': {'type': 'number', 'title': 'Total Value'}}}, 'CatalystConsensusRow': {'type': 'object', 'title': 'CatalystConsensusRow', 'required': ['feed', 'category', 'event', 'event_date', 'ticker', 'entity', 'exchange', 'note', 'run_at'], 'properties': {'feed': {'type': 'string', 'title': 'Feed'}, 'note': {'type': 'string', 'title': 'Note'}, 'event': {'type': 'string', 'title': 'Event'}, 'entity': {'type': 'string', 'title': 'Entity'}, 'run_at': {'type': 'string', 'title': 'Run At'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'category': {'type': 'string', 'title': 'Category'}, 'exchange': {'type': 'string', 'title': 'Exchange'}, 'confidence': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Confidence', 'default': None}, 'event_date': {'type': 'string', 'title': 'Event Date'}}}, 'DataromaConsensusRow': {'type': 'object', 'title': 'DataromaConsensusRow', 'required': ['ticker', 'company', 'buyers', 'sellers', 'holders', 'buy_usd', 'sell_usd', 'net_usd', 'net_managers', 'run_at'], 'properties': {'buyers': {'type': 'integer', 'title': 'Buyers'}, 'run_at': {'type': 'string', 'title': 'Run At'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'buy_usd': {'type': 'number', 'title': 'Buy Usd'}, 'company': {'type': 'string', 'title': 'Company'}, 'holders': {'type': 'integer', 'title': 'Holders'}, 'net_usd': {'type': 'number', 'title': 'Net Usd'}, 'sellers': {'type': 'integer', 'title': 'Sellers'}, 'sell_usd': {'type': 'number', 'title': 'Sell Usd'}, 'net_managers': {'type': 'integer', 'title': 'Net Managers'}}}, 'EarningsConsensusRow': {'type': 'object', 'title': 'EarningsConsensusRow', 'required': ['ticker', 'company', 'report_date', 'report_time', 'fiscal_period', 'run_at'], 'properties': {'run_at': {'type': 'string', 'title': 'Run At'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'company': {'type': 'string', 'title': 'Company'}, 'eps_actual': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Eps Actual', 'default': None}, 'market_cap': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Market Cap', 'default': None}, 'report_date': {'type': 'string', 'title': 'Report Date'}, 'report_time': {'type': 'string', 'title': 'Report Time'}, 'eps_estimate': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Eps Estimate', 'default': None}, 'surprise_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Surprise Pct', 'default': None}, 'fiscal_period': {'type': 'string', 'title': 'Fiscal Period'}, 'num_estimates': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Num Estimates', 'default': None}}}, 'CaptradesConsensusRow': {'type': 'object', 'title': 'CaptradesConsensusRow', 'required': ['ticker', 'company', 'buyers', 'sellers', 'net_politicians', 'buy_usd', 'sell_usd', 'net_usd', 'trades', 'run_at'], 'properties': {'buyers': {'type': 'integer', 'title': 'Buyers'}, 'run_at': {'type': 'string', 'title': 'Run At'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'trades': {'type': 'integer', 'title': 'Trades'}, 'buy_usd': {'type': 'number', 'title': 'Buy Usd'}, 'company': {'type': 'string', 'title': 'Company'}, 'net_usd': {'type': 'number', 'title': 'Net Usd'}, 'sellers': {'type': 'integer', 'title': 'Sellers'}, 'sell_usd': {'type': 'number', 'title': 'Sell Usd'}, 'net_politicians': {'type': 'integer', 'title': 'Net Politicians'}}}, 'NewsBeneficiaryConsensusRow': {'type': 'object', 'title': 'NewsBeneficiaryConsensusRow', 'required': ['ticker', 'company', 'direction', 'mechanism', 'horizon', 'validated', 'headline', 'source', 'url', 'run_at', 'snapshot_date'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Score', 'default': None}, 'run_at': {'type': 'string', 'title': 'Run At'}, 'source': {'type': 'string', 'title': 'Source'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'company': {'type': 'string', 'title': 'Company'}, 'horizon': {'type': 'string', 'title': 'Horizon'}, 'headline': {'type': 'string', 'title': 'Headline'}, 'direction': {'type': 'string', 'title': 'Direction'}, 'mechanism': {'type': 'string', 'title': 'Mechanism'}, 'validated': {'type': 'integer', 'title': 'Validated'}, 'confidence': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Confidence', 'default': None}, 'order_hops': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Order Hops', 'default': None}, 'obviousness': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Obviousness', 'default': None}, 'snapshot_date': {'type': 'string', 'title': 'Snapshot Date'}}}}, 'title': 'ConsensusResponse', 'properties': {'onchain-flows': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/OnchainConsensusRow'}}, {'type': 'null'}], 'title': 'Onchain-Flows', 'default': None}, 'event-calendar': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/CatalystConsensusRow'}}, {'type': 'null'}], 'title': 'Event-Calendar', 'default': None}, 'ai-news-analysis': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/NewsBeneficiaryConsensusRow'}}, {'type': 'null'}], 'title': 'Ai-News-Analysis', 'default': None}, 'insider-activity': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/Form4ConsensusRow'}}, {'type': 'null'}], 'title': 'Insider-Activity', 'default': None}, 'earnings-surprise': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/EarningsConsensusRow'}}, {'type': 'null'}], 'title': 'Earnings-Surprise', 'default': None}, 'congressional-trading': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/CaptradesConsensusRow'}}, {'type': 'null'}], 'title': 'Congressional-Trading', 'default': None}, 'institutional-holdings': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/DataromaConsensusRow'}}, {'type': 'null'}], 'title': 'Institutional-Holdings', 'default': None}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_lanesArguments', 'properties': {}}
출력 스키마
{'type': 'object', 'title': 'rayana_ai_lanesDictOutput', 'additionalProperties': {'type': 'boolean'}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_market_briefArguments', 'properties': {'date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Date', 'default': None}}}
출력 스키마
{'type': 'object', 'title': 'MarketBriefResponse', 'required': ['brief', 'notes'], 'properties': {'brief': {'type': 'object', 'title': 'Brief', 'additionalProperties': True}, 'notes': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Notes'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_plansArguments', 'properties': {}}
출력 스키마
{'type': 'object', '$defs': {'Plan': {'type': 'object', 'title': 'Plan', 'required': ['tier', 'name', 'summary', 'price_monthly_usd', 'price_annual_usd', 'includes', 'limits', 'api_access'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'tier': {'enum': ['free', 'standard', 'pro', 'elite'], 'type': 'string', 'title': 'Tier'}, 'limits': {'$ref': '#/$defs/PlanLimits'}, 'summary': {'type': 'string', 'title': 'Summary'}, 'includes': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Includes'}, 'api_access': {'type': 'boolean', 'title': 'Api Access'}, 'price_annual_usd': {'type': 'integer', 'title': 'Price Annual Usd'}, 'price_monthly_usd': {'type': 'integer', 'title': 'Price Monthly Usd'}}}, 'PlanLimits': {'type': 'object', 'title': 'PlanLimits', 'required': ['per_minute', 'per_day'], 'properties': {'per_day': {'type': 'integer', 'title': 'Per Day'}, 'per_minute': {'type': 'integer', 'title': 'Per Minute'}}}}, 'title': 'PlansResponse', 'required': ['plans', 'currency', 'annual_note', 'pricing_url', 'checkout_url', 'access_note'], 'properties': {'plans': {'type': 'array', 'items': {'$ref': '#/$defs/Plan'}, 'title': 'Plans'}, 'currency': {'type': 'string', 'title': 'Currency'}, 'access_note': {'type': 'string', 'title': 'Access Note'}, 'annual_note': {'type': 'string', 'title': 'Annual Note'}, 'pricing_url': {'type': 'string', 'title': 'Pricing Url'}, 'checkout_url': {'type': 'string', 'title': 'Checkout Url'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_portfolioArguments', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'title': 'Slug'}}}
출력 스키마
{'type': 'object', '$defs': {'Holding': {'type': 'object', 'title': 'Holding', 'required': ['ticker'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank', 'default': None}, 'side': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Side', 'default': None}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Price', 'default': None}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'cluster': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Cluster', 'default': None}, 'assigned': {'type': 'boolean', 'title': 'Assigned', 'default': False}, 'entry_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Entry Date', 'default': None}, 'weight_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Weight Pct', 'default': None}, 'select_metric': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Select Metric', 'default': None}, 'effective_basis': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Effective Basis', 'default': None}, 'instrument_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Instrument Type', 'default': None}, 'sel_metric_kind': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sel Metric Kind', 'default': None}}, 'description': 'One equity (or cash) position in today\'s snapshot.\n\n``weight_pct`` is the only position quantity that exists â\x80\x94 no shares, no\ndollars, by construction of the tables themselves (the FIREWALL note on the\nmodel_portfolio_* DDL in data/db.py). ``side`` is \'long\' (NULL = long) or\n\'short\', and ``weight_pct`` stays POSITIVE either way.\n\nDeliberately absent, all of which the ``list[dict]`` this replaced shipped:\n``rationale`` â\x80\x94 engine text that names the selection mechanism and quotes\nits live cut-points ("invest composite 72 (BUY); tech 68 / fund 55",\n"Donchian breakdown below the 200-SMA; 2N buy-stop $41.80"), i.e. exactly\nthe disclosure ``_public_events`` rewrites event reasons to prevent, one\ntable over; ``metrics`` â\x80\x94 the per-name selection metrics JSON, whose\npublishable aggregate is ``PortfolioMetrics`` below; ``stop_price`` and\n``target_price`` â\x80\x94 the exit rule\'s live cut-points; and the row\'s internal\nidentity (``id`` / ``portfolio_id`` / ``run_id`` / ``recorded_at``).\n\n``assigned`` / ``effective_basis`` are the one allowlisted lift OUT of that\ndropped ``metrics`` block (data/reads.py::_assigned_view), and they are not an\nexception to the rule above: an assignment is an OUTCOME the event feed\nalready publishes in full, not a selection decision. Without them the single\nrow in the book that the picker did NOT choose arrives indistinguishable from\none it did â\x80\x94 a new ticker with ``select_metric: null`` and no basis â\x80\x94 which is\nthe whole of docs/subscriber_followability.md §5.'}, 'Contract': {'type': 'object', 'title': 'Contract', 'properties': {'dte': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Dte', 'default': None}, 'right': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Right', 'default': None}, 'expiry': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Expiry', 'default': None}, 'strike': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Strike', 'default': None}, 'premium': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Premium', 'default': None}, 'contract': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Contract', 'default': None}, 'multiplier': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Multiplier', 'default': None}, 'underlying': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Underlying', 'default': None}}, 'description': "The option contract an overlay leg is written on: its identity\n(expiry/strike/right, per ``_contract_id`` in strategy/model_portfolios.py)\nplus what a reader needs to price it.\n\nDeliberately absent: ``delta`` and ``implied_vol`` â\x80\x94 the leg already\npublishes ``assignment_prob``, which IS |delta| â\x80\x94 and ``iv_rank`` / ``vrp``\n/ ``timing_mult``, the overlay's timing provenance, which is selection\nmechanism (strategy/premium_overlay.py::contract_spec)."}, 'NavPoint': {'type': 'object', 'title': 'NavPoint', 'required': ['nav_date'], 'properties': {'nav': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Nav', 'default': None}, 'nav_date': {'type': 'string', 'title': 'Nav Date'}, 'n_holdings': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'N Holdings', 'default': None}, 'capital_nav': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Capital Nav', 'default': None}, 'drawdown_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Drawdown Pct', 'default': None}, 'turnover_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Turnover Pct', 'default': None}, 'cum_return_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cum Return Pct', 'default': None}, 'daily_return_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Daily Return Pct', 'default': None}, 'distribution_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distribution Pct', 'default': None}, 'benchmark_ret_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Benchmark Ret Pct', 'default': None}, 'cum_distribution_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cum Distribution Pct', 'default': None}}, 'description': 'One session on the track record. ``nav`` is TOTAL return indexed to 100\nat inception and is never restated; ``capital_nav`` is the parallel curve a\nholder sees if they take the distributions out (docs/distribution_layer.md).\n``distribution_pct`` NULL means the book does not distribute at all â\x80\x94 0.0\nmeans it does and nothing settled this session.'}, 'BookEvent': {'type': 'object', 'title': 'BookEvent', 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'side': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Side', 'default': None}, 'action': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Action', 'default': None}, 'reason': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reason', 'default': None}, 'ticker': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ticker', 'default': None}, 'event_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Event Date', 'default': None}, 'instrument_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Instrument Type', 'default': None}, 'delta_weight_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Delta Weight Pct', 'default': None}}, 'description': 'One row of the public event feed â\x80\x94 the projection of the diff log, not\nthe log. ``reason`` has already been rewritten into the fixed public\nvocabulary by ``_public_reason``; the stored text never reaches here, and\n``source_metric`` (the number behind it) is undeclared on purpose.'}, 'NavWindow': {'type': 'object', 'title': 'NavWindow', 'required': ['label'], 'properties': {'label': {'type': 'string', 'title': 'Label'}, 'covered': {'type': 'boolean', 'title': 'Covered', 'default': False}, 'from_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'From Date', 'default': None}, 'return_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Return Pct', 'default': None}, 'distribution_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distribution Pct', 'default': None}, 'capital_return_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Capital Return Pct', 'default': None}}, 'description': "MTD / 3M / 6M / 12M / ITD total return. ``covered`` False (with\n``return_pct`` None) means the record does not yet reach back past that\nwindow's cutoff â\x80\x94 render it as unavailable, never as the ITD number."}, 'OverlayLeg': {'type': 'object', 'title': 'OverlayLeg', 'required': ['ticker', 'instrument_type'], 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Price', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'instrument': {'$ref': '#/$defs/Contract', 'default': {'dte': None, 'right': None, 'expiry': None, 'strike': None, 'premium': None, 'contract': None, 'multiplier': None, 'underlying': None}}, 'position_group': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Position Group', 'default': None}, 'assignment_prob': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Assignment Prob', 'default': None}, 'instrument_type': {'type': 'string', 'title': 'Instrument Type'}, 'premium_yield_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Premium Yield Pct', 'default': None}, 'notional_weight_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Notional Weight Pct', 'default': None}}, 'description': "One written CSP / covered-call leg currently open against the core.\n\nA leg carries the SAME ticker as the underlying it is written against and\nis sized by NOTIONAL, not book weight â\x80\x94 the two must never be summed, which\nis why the read layer splits them out of ``holdings`` by ``instrument_type``.\n\n``premium_yield_pct`` and ``assignment_prob`` are 0-1 FRACTIONS, unlike\nevery other ``_pct`` field in this API (strategy/premium_overlay.py's\n``annual_yield`` / ``abs(delta)``) â\x80\x94 clients must format them accordingly."}, 'PortfolioMetrics': {'type': 'object', 'title': 'PortfolioMetrics', 'properties': {'n_overlay': {'type': 'integer', 'title': 'N Overlay', 'default': 0}, 'n_holdings': {'type': 'integer', 'title': 'N Holdings', 'default': 0}, 'distribution': {'anyOf': [{'$ref': '#/$defs/DistributionSummary'}, {'type': 'null'}], 'default': None}, 'sleeve_state': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sleeve State', 'default': None}, 'income_coverage': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Income Coverage', 'default': None}, 'sel_metric_kind': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sel Metric Kind', 'default': None}, 'total_weight_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Total Weight Pct', 'default': None}, 'total_income_yield': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Total Income Yield', 'default': None}, 'overlay_annual_yield': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Overlay Annual Yield', 'default': None}, 'weighted_income_rate': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Weighted Income Rate', 'default': None}, 'weighted_select_metric': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Weighted Select Metric', 'default': None}, 'weighted_reinvest_required': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Weighted Reinvest Required', 'default': None}, 'weighted_sustainable_yield': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Weighted Sustainable Yield', 'default': None}}, 'description': "Book-level aggregates over today's snapshot (data/reads.py's\n``_book_metrics``). The income figures are weight-weighted over the book's\nTOTAL weight, so an unmeasured name drags the average down rather than being\nassumed to yield like its peers."}, 'PortfolioRegistry': {'type': 'object', 'title': 'PortfolioRegistry', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'title': 'Slug'}, 'tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Tier', 'default': None}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'benchmark': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Benchmark', 'default': None}, 'objective': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Objective', 'default': None}, 'risk_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Risk Tier', 'default': None}, 'asset_class': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asset Class', 'default': None}, 'construction': {'$ref': '#/$defs/PublicConstruction', 'default': {'exit_rule': None, 'holdings_max': None, 'holdings_min': None, 'turnover_tier': None, 'distribution_policy': None}}, 'display_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Display Name', 'default': None}, 'inception_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Inception Date', 'default': None}, 'mechanism_blurb': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Mechanism Blurb', 'default': None}}, 'description': "The book's registry row as its detail page sees it: the same\nmerchandising identity as ``ShelfCard``, plus the parsed construction and\nminus the per-caller flags (the detail endpoint's own gate already answered\nthose)."}, 'PublicConstruction': {'type': 'object', 'title': 'PublicConstruction', 'properties': {'exit_rule': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Exit Rule', 'default': None}, 'holdings_max': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Holdings Max', 'default': None}, 'holdings_min': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Holdings Min', 'default': None}, 'turnover_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Turnover Tier', 'default': None}, 'distribution_policy': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Distribution Policy', 'default': None}}, 'description': "The book's construction rules, trimmed to what is safe to publish â\x80\x94 the\nsame set ``_PUBLIC_CONSTRUCTION_KEYS`` names in api/routers/portfolios.py,\nwhich stays the enforcing copy (it runs before this model is built)."}, 'DistributionSummary': {'type': 'object', 'title': 'DistributionSummary', 'required': ['policy'], 'properties': {'since': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Since', 'default': None}, 'policy': {'type': 'string', 'title': 'Policy'}, 'covered_12m': {'type': 'boolean', 'title': 'Covered 12M', 'default': False}, 'sustain_gap_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Sustain Gap Pct', 'default': None}, 'return_of_capital_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Return Of Capital Pct', 'default': None}, 'trailing_12m_yield_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Trailing 12M Yield Pct', 'default': None}, 'distributions_to_date_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Distributions To Date Pct', 'default': None}}, 'description': "The book's distribution record (docs/distribution_layer.md §5). ``None``\non ``PortfolioMetrics.distribution`` means not a distributing book at all;\npresent with ``since`` and ``distributions_to_date_pct`` None means it IS\ndistributing but no session has crossed the seam yet â\x80\x94 a real state, and it\nrenders differently. Nothing here is annualised. Any surface rendering a\ndistribution or yield figure must render ``sustain_gap_pct`` and\n``return_of_capital_pct`` beside it (spec §11, D3)."}}, 'title': 'PortfolioBook', 'required': ['slug', 'book'], 'properties': {'nav': {'type': 'array', 'items': {'$ref': '#/$defs/NavPoint'}, 'title': 'Nav', 'default': []}, 'asof': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asof', 'default': None}, 'book': {'$ref': '#/$defs/PortfolioRegistry'}, 'slug': {'type': 'string', 'title': 'Slug'}, 'events': {'type': 'array', 'items': {'$ref': '#/$defs/BookEvent'}, 'title': 'Events', 'default': []}, 'metrics': {'$ref': '#/$defs/PortfolioMetrics', 'default': {'n_overlay': 0, 'n_holdings': 0, 'distribution': None, 'sleeve_state': None, 'income_coverage': None, 'sel_metric_kind': None, 'total_weight_pct': None, 'total_income_yield': None, 'overlay_annual_yield': None, 'weighted_income_rate': None, 'weighted_select_metric': None, 'weighted_reinvest_required': None, 'weighted_sustainable_yield': None}}, 'overlay': {'type': 'array', 'items': {'$ref': '#/$defs/OverlayLeg'}, 'title': 'Overlay', 'default': []}, 'windows': {'type': 'array', 'items': {'$ref': '#/$defs/NavWindow'}, 'title': 'Windows', 'default': []}, 'holdings': {'type': 'array', 'items': {'$ref': '#/$defs/Holding'}, 'title': 'Holdings', 'default': []}, 'delayed_to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Delayed To', 'default': None}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_portfoliosArguments', 'properties': {'include_retired': {'type': 'boolean', 'title': 'Include Retired', 'default': False}}}
출력 스키마
{'type': 'object', '$defs': {'ShelfCard': {'type': 'object', 'title': 'ShelfCard', 'required': ['slug'], 'properties': {'nav': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Nav', 'default': None}, 'slug': {'type': 'string', 'title': 'Slug'}, 'tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Tier', 'default': None}, 'status': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Status', 'default': None}, 'delayed': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Delayed', 'default': None}, 'cagr_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cagr Pct', 'default': None}, 'openable': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Openable', 'default': None}, 'benchmark': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Benchmark', 'default': None}, 'objective': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Objective', 'default': None}, 'risk_tier': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Risk Tier', 'default': None}, 'n_holdings': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'N Holdings', 'default': None}, 'asset_class': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asset Class', 'default': None}, 'last_update': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Last Update', 'default': None}, 'display_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Display Name', 'default': None}, 'drawdown_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Drawdown Pct', 'default': None}, 'cum_return_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cum Return Pct', 'default': None}, 'inception_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Inception Date', 'default': None}, 'mechanism_blurb': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Mechanism Blurb', 'default': None}}, 'description': "One merchandising card on the shelf.\n\n``openable``/``delayed`` are computed per caller by the router, not stored.\n``last_update``/``n_holdings`` arrive already collapsed to the pair this\ncaller's access level entitles them to (``_public_card``) â\x80\x94 the internal\n``last_published_update``/``n_published_holdings`` pair is undeclared here\nand so cannot ship even if that collapse were ever skipped.\n\nDeliberately absent: ``source_lane`` and ``scoring_mode`` (internal lane\nprovenance â\x80\x94 they name the engine that picks the book), the numeric ``id``,\nand the gate configuration (``publish_delay_min``, ``draft_gate_enabled``,\n``consumer_delay_min``), which is policy input rather than reader-facing\ncontent â\x80\x94 a reader sees its *effect*, as ``delayed``."}}, 'title': 'PortfolioShelf', 'required': ['count', 'tier', 'portfolios'], 'properties': {'tier': {'type': 'string', 'title': 'Tier'}, 'count': {'type': 'integer', 'title': 'Count'}, 'portfolios': {'type': 'array', 'items': {'$ref': '#/$defs/ShelfCard'}, 'title': 'Portfolios'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_rankingsArguments', 'properties': {'lane': {'enum': ['daily', 'turtle', 'mr'], 'type': 'string', 'title': 'Lane', 'default': 'daily'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 25}, 'offset': {'type': 'integer', 'title': 'Offset', 'default': 0}, 'include_assessment': {'type': 'boolean', 'title': 'Include Assessment', 'default': False}}}
출력 스키마
{'type': 'object', '$defs': {'RankedCandidate': {'type': 'object', 'title': 'RankedCandidate', 'required': ['ticker'], 'properties': {'n': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'N', 'default': None}, 'adx': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Adx', 'default': None}, 'atr': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Atr', 'default': None}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank', 'default': None}, 'rsi2': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rsi2', 'default': None}, 'sma5': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Sma5', 'default': None}, 'hurst': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Hurst', 'default': None}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Price', 'default': None}, 'vramp': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Vramp', 'default': None}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'sma200': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Sma200', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'vscore': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Vscore', 'default': None}, 'sources': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sources', 'default': None}, 'trend_ok': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Trend Ok', 'default': None}, 'agg_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Agg Score', 'default': None}, 'alignment': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Alignment', 'default': None}, 'composite': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Composite', 'default': None}, 'exit_sma5': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Exit Sma5', 'default': None}, 'readiness': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Readiness', 'default': None}, 'assessment': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Assessment', 'default': None}, 'conviction': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Conviction', 'default': None}, 'cycle_zone': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Cycle Zone', 'default': None}, 'fund_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Fund Score', 'default': None}, 'tech_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Tech Score', 'default': None}, 'cycle_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cycle Score', 'default': None}, 'recorded_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Recorded At', 'default': None}, 'donchian_10l': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Donchian 10L', 'default': None}, 'donchian_20h': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Donchian 20H', 'default': None}, 'donchian_20l': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Donchian 20L', 'default': None}, 'donchian_55h': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Donchian 55H', 'default': None}, 'initial_stop': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Initial Stop', 'default': None}, 'signal_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Signal Count', 'default': None}, 'breakout_sys1': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Breakout Sys1', 'default': None}, 'breakout_sys2': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Breakout Sys2', 'default': None}, 'regime_choppy': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Regime Choppy', 'default': None}, 'scorer_signal': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Scorer Signal', 'default': None}, 'exit_proximity': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Exit Proximity', 'default': None}, 'exit_rsi_level': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Exit Rsi Level', 'default': None}, 'time_stop_bars': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Time Stop Bars', 'default': None}, 'readiness_label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Readiness Label', 'default': None}, 'catastrophe_stop': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Catastrophe Stop', 'default': None}, 'efficiency_ratio': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Efficiency Ratio', 'default': None}, 'signal_confirmed': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Signal Confirmed', 'default': None}, 'bb_squeeze_pctile': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Bb Squeeze Pctile', 'default': None}, 'systems_triggered': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Systems Triggered', 'default': None}, 'breakout_confidence': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Breakout Confidence', 'default': None}, 'dist_to_breakout_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Dist To Breakout Pct', 'default': None}}}}, 'title': 'RankingsResponse', 'required': ['lane', 'count', 'candidates'], 'properties': {'lane': {'type': 'string', 'title': 'Lane'}, 'count': {'type': 'integer', 'title': 'Count'}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None}, 'asof_hint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asof Hint', 'default': None}, 'truncated': {'type': 'boolean', 'title': 'Truncated', 'default': False}, 'candidates': {'type': 'array', 'items': {'$ref': '#/$defs/RankedCandidate'}, 'title': 'Candidates'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_rotationArguments', 'properties': {'days': {'type': 'integer', 'title': 'Days', 'default': 45}, 'view': {'enum': ['summary', 'laggards', 'discovered', 'members'], 'type': 'string', 'title': 'View', 'default': 'summary'}, 'include_trajectory': {'type': 'boolean', 'title': 'Include Trajectory', 'default': False}}}
출력 스키마
{'type': 'object', '$defs': {'RotationResponse': {'type': 'object', 'title': 'RotationResponse', 'required': ['latest', 'trajectory', 'events', 'snapshots'], 'properties': {'asof': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asof', 'default': None}, 'events': {'type': 'array', 'items': {'$ref': '#/$defs/ClusterRotationEvent'}, 'title': 'Events'}, 'latest': {'type': 'array', 'items': {'$ref': '#/$defs/ClusterMomentumRow'}, 'title': 'Latest'}, 'snapshots': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Snapshots'}, 'prior_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Prior Date', 'default': None}, 'trajectory': {'type': 'array', 'items': {'$ref': '#/$defs/ClusterTrajectory'}, 'title': 'Trajectory'}}}, 'ClusterLaggardRow': {'type': 'object', 'title': 'ClusterLaggardRow', 'required': ['cluster_name', 'ticker'], 'properties': {'lag_z': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Lag Z', 'default': None}, 'leader': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Leader', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'gap_10d': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Gap 10D', 'default': None}, 'cluster_name': {'type': 'string', 'title': 'Cluster Name'}, 'also_surfaced': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Also Surfaced', 'default': None}, 'participation': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Participation', 'default': None}, 'snapshot_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Snapshot Date', 'default': None}, 'leader_catalyst': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Leader Catalyst', 'default': None}, 'leader_move_10d': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Leader Move 10D', 'default': None}, 'cluster_move_10d': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cluster Move 10D', 'default': None}}}, 'ClusterTrajectory': {'type': 'object', 'title': 'ClusterTrajectory', 'required': ['cluster', 'series'], 'properties': {'series': {'type': 'array', 'items': {'$ref': '#/$defs/ClusterTrajectoryPoint'}, 'title': 'Series'}, 'cluster': {'type': 'string', 'title': 'Cluster'}}}, 'ClusterMomentumRow': {'type': 'object', 'title': 'ClusterMomentumRow', 'required': ['cluster_name'], 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Id', 'default': None}, 'asof': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asof', 'default': None}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank', 'default': None}, 'mom_5d': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Mom 5D', 'default': None}, 'rs_mom': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rs Mom', 'default': None}, 'breadth': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Breadth', 'default': None}, 'mom_20d': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Mom 20D', 'default': None}, 'mom_60d': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Mom 60D', 'default': None}, 'cohesion': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cohesion', 'default': None}, 'quadrant': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Quadrant', 'default': None}, 'rank_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rank Pct', 'default': None}, 'rs_ratio': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Rs Ratio', 'default': None}, 'n_members': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'N Members', 'default': None}, 'rank_prev': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank Prev', 'default': None}, 'rank_delta': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank Delta', 'default': None}, 'recorded_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Recorded At', 'default': None}, 'cluster_name': {'type': 'string', 'title': 'Cluster Name'}, 'quadrant_prev': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Quadrant Prev', 'default': None}, 'snapshot_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Snapshot Date', 'default': None}}}, 'ClusterMembersEntry': {'type': 'object', 'title': 'ClusterMembersEntry', 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, 'leads': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Leads', 'default': []}, 'members': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Members', 'default': []}}}, 'ClusterRotationEvent': {'type': 'object', 'title': 'ClusterRotationEvent', 'required': ['date', 'cluster', 'flow'], 'properties': {'to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'To', 'default': None}, 'date': {'type': 'string', 'title': 'Date'}, 'flow': {'type': 'string', 'title': 'Flow'}, 'from': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'From', 'default': None}, 'cluster': {'type': 'string', 'title': 'Cluster'}}}, 'DiscoveredClusterRow': {'type': 'object', 'title': 'DiscoveredClusterRow', 'required': ['cluster_uid'], 'properties': {'size': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Size', 'default': None}, 'label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Label', 'default': None}, 'is_new': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is New', 'default': None}, 'members': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Members', 'default': []}, 'cohesion': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cohesion', 'default': None}, 'cluster_uid': {'type': 'string', 'title': 'Cluster Uid'}, 'label_source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Label Source', 'default': None}, 'snapshot_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Snapshot Date', 'default': None}, 'structural_match': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Structural Match', 'default': None}}}, 'ClusterTrajectoryPoint': {'type': 'object', 'title': 'ClusterTrajectoryPoint', 'required': ['date'], 'properties': {'date': {'type': 'string', 'title': 'Date'}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank', 'default': None}}}}, 'title': 'rayana_ai_rotationOutput', 'required': ['result'], 'properties': {'result': {'anyOf': [{'$ref': '#/$defs/RotationResponse'}, {'type': 'array', 'items': {'$ref': '#/$defs/ClusterLaggardRow'}}, {'type': 'array', 'items': {'$ref': '#/$defs/DiscoveredClusterRow'}}, {'type': 'object', 'additionalProperties': {'$ref': '#/$defs/ClusterMembersEntry'}}], 'title': 'Result'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_searchArguments', 'required': ['q'], 'properties': {'q': {'type': 'string', 'title': 'Q'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 8}}}
출력 스키마
{'type': 'object', '$defs': {'SearchMatch': {'type': 'object', 'title': 'SearchMatch', 'required': ['ticker'], 'properties': {'name': {'type': 'string', 'title': 'Name', 'default': ''}, 'ticker': {'type': 'string', 'title': 'Ticker'}}}}, 'title': 'rayana_ai_searchOutput', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'$ref': '#/$defs/SearchMatch'}, 'title': 'Result'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_signalsArguments', 'properties': {'lane': {'enum': ['equity', 'crypto', 'commodity'], 'type': 'string', 'title': 'Lane', 'default': 'equity'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 60}}}
출력 스키마
{'type': 'object', '$defs': {'SignalRow': {'type': 'object', 'title': 'SignalRow', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'title': 'Ticker'}, 'sources': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sources', 'default': None}, 'agg_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Agg Score', 'default': None}, 'signal_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Signal Count', 'default': None}}}}, 'title': 'SignalsResponse', 'required': ['lane', 'count', 'signals'], 'properties': {'lane': {'type': 'string', 'title': 'Lane'}, 'count': {'type': 'integer', 'title': 'Count'}, 'signals': {'type': 'array', 'items': {'$ref': '#/$defs/SignalRow'}, 'title': 'Signals'}, 'truncated': {'type': 'boolean', 'title': 'Truncated', 'default': False}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_start_checkoutArguments', 'properties': {'tier': {'enum': ['standard', 'pro', 'elite'], 'type': 'string', 'title': 'Tier', 'default': 'pro'}, 'interval': {'enum': ['month', 'year'], 'type': 'string', 'title': 'Interval', 'default': 'month'}}}
출력 스키마
{'type': 'object', 'title': 'CheckoutHandoff', 'required': ['url', 'tier', 'interval', 'price_usd', 'next_steps', 'pairing_note'], 'properties': {'url': {'type': 'string', 'title': 'Url'}, 'tier': {'type': 'string', 'title': 'Tier'}, 'interval': {'type': 'string', 'title': 'Interval'}, 'price_usd': {'type': 'integer', 'title': 'Price Usd'}, 'next_steps': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Next Steps'}, 'pairing_note': {'type': 'string', 'title': 'Pairing Note'}}, 'description': "What an agent hands its human to subscribe. Deliberately NOT a Stripe\nCheckout URL: this link lands on a Rayana page that signs the human in,\ntakes their assent to the Terms, and only then starts Stripe's own hosted\nCheckout. See api/mcp_server.py's `rayana_ai_start_checkout` for why the\nindirection is the point rather than an extra hop."}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_tickerArguments', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'title': 'Symbol'}}}
출력 스키마
{'type': 'object', '$defs': {'TickerScoreRow': {'type': 'object', 'title': 'TickerScoreRow', 'properties': {'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Rank', 'default': None}, 'hurst': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Hurst', 'default': None}, 'price': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Price', 'default': None}, 'regime': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Regime', 'default': None}, 'run_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Run At', 'default': None}, 'script': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Script', 'default': None}, 'signal': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Signal', 'default': None}, 'composite': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Composite', 'default': None}, 'fund_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Fund Score', 'default': None}, 'tech_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Tech Score', 'default': None}}}}, 'title': 'TickerResponse', 'required': ['ticker', 'truncated'], 'properties': {'score': {'anyOf': [{'$ref': '#/$defs/TickerScoreRow'}, {'type': 'null'}], 'default': None}, 'detail': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Detail', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'truncated': {'type': 'boolean', 'title': 'Truncated'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_ticker_analystArguments', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'title': 'Symbol'}}}
출력 스키마
{'type': 'object', 'title': 'TickerAnalystBrief', 'required': ['ticker', 'analysis_date'], 'properties': {'lean': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lean', 'default': None}, 'model': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Model', 'default': None}, 'cached': {'type': 'boolean', 'title': 'Cached', 'default': True}, 'thesis': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Thesis', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'cost_usd': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Cost Usd', 'default': None}, 'conviction': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Conviction', 'default': None}, 'created_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Created At', 'default': None}, 'evidence_for': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence For', 'default': []}, 'invalidation': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Invalidation', 'default': None}, 'analysis_date': {'type': 'string', 'title': 'Analysis Date'}, 'evidence_against': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Evidence Against', 'default': []}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_ticker_articlesArguments', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'title': 'Symbol'}}}
출력 스키마
{'type': 'object', '$defs': {'ArticleSummary': {'type': 'object', 'title': 'ArticleSummary', 'required': ['slug', 'ticker', 'headline', 'trigger_type'], 'properties': {'dek': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Dek', 'default': None}, 'slug': {'type': 'string', 'title': 'Slug'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'headline': {'type': 'string', 'title': 'Headline'}, 'published_at': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published At', 'default': None}, 'trigger_type': {'type': 'string', 'title': 'Trigger Type'}}}}, 'title': 'ArticlesResponse', 'required': ['count', 'articles'], 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'limit': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Limit', 'default': None}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None}, 'offset': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Offset', 'default': None}, 'articles': {'type': 'array', 'items': {'$ref': '#/$defs/ArticleSummary'}, 'title': 'Articles'}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_ticker_priceArguments', 'required': ['symbol'], 'properties': {'period': {'enum': ['1M', '6M', 'YTD', '1Y', '5Y', 'MAX'], 'type': 'string', 'title': 'Period', 'default': '1Y'}, 'symbol': {'type': 'string', 'title': 'Symbol'}, 'max_points': {'type': 'integer', 'title': 'Max Points', 'default': 260}}}
출력 스키마
{'type': 'object', '$defs': {'PricePoint': {'type': 'object', 'title': 'PricePoint', 'required': ['date', 'close'], 'properties': {'date': {'type': 'string', 'title': 'Date'}, 'close': {'type': 'number', 'title': 'Close'}}}}, 'title': 'PriceHistoryResponse', 'required': ['ticker', 'period', 'points'], 'properties': {'period': {'type': 'string', 'title': 'Period'}, 'points': {'type': 'array', 'items': {'$ref': '#/$defs/PricePoint'}, 'title': 'Points'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'range_low': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Range Low', 'default': None}, 'change_pct': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Change Pct', 'default': None}, 'last_close': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Last Close', 'default': None}, 'range_high': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Range High', 'default': None}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_trendsArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 40}}}
출력 스키마
{'type': 'object', '$defs': {'TrendRow': {'type': 'object', 'title': 'TrendRow', 'required': ['ticker'], 'properties': {'slope': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Slope', 'default': None}, 'vramp': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Vramp', 'default': None}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'breadth': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Breadth', 'default': None}, 'intensity': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Intensity', 'default': None}, 'source_list': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source List', 'default': None}, 'viral_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Viral Score', 'default': None}, 'distinct_days': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Distinct Days', 'default': None}, 'distinct_sources': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Distinct Sources', 'default': None}}}}, 'title': 'TrendsResponse', 'required': ['count', 'leaders'], 'properties': {'asof': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asof', 'default': None}, 'count': {'type': 'integer', 'title': 'Count'}, 'leaders': {'type': 'array', 'items': {'$ref': '#/$defs/TrendRow'}, 'title': 'Leaders'}, 'truncated': {'type': 'boolean', 'title': 'Truncated', 'default': False}}}
입력 스키마
{'type': 'object', 'title': 'rayana_ai_trends_detailArguments', 'required': ['view'], 'properties': {'view': {'enum': ['sources', 'heat', 'search', 'video'], 'type': 'string', 'title': 'View'}, 'limit': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Limit', 'default': None}}}
출력 스키마
{'type': 'object', '$defs': {'SourceHeatRow': {'type': 'object', 'title': 'SourceHeatRow', 'required': ['ticker', 'source'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'ticker': {'type': 'string', 'title': 'Ticker'}, 'intensity': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Intensity', 'default': None}, 'last_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Last Score', 'default': None}, 'recent_age': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Recent Age', 'default': None}, 'days_active': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Days Active', 'default': None}}}, 'VideoTrendRow': {'type': 'object', 'title': 'VideoTrendRow', 'required': ['title'], 'properties': {'link': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Link', 'default': None}, 'title': {'type': 'string', 'title': 'Title'}, 'views': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Views', 'default': None}, 'ticker': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ticker', 'default': None}, 'channel': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Channel', 'default': None}, 'age_hours': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Age Hours', 'default': None}, 'company_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Name', 'default': None}, 'velocity_vph': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Velocity Vph', 'default': None}, 'published_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published Date', 'default': None}, 'velocity_score': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Velocity Score', 'default': None}}}, 'SearchTrendRow': {'type': 'object', 'title': 'SearchTrendRow', 'required': ['query'], 'properties': {'day': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Day', 'default': None}, 'query': {'type': 'string', 'title': 'Query'}, 'value': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Value', 'default': None}, 'section': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Section', 'default': None}}}, 'SourceBreadthRow': {'type': 'object', 'title': 'SourceBreadthRow', 'required': ['source', 'tickers'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'tickers': {'type': 'integer', 'title': 'Tickers'}, 'avg_intensity': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Avg Intensity', 'default': None}, 'max_intensity': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Max Intensity', 'default': None}}}}, 'title': 'rayana_ai_trends_detailOutput', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'array', 'items': {'$ref': '#/$defs/SourceBreadthRow'}}, {'type': 'array', 'items': {'$ref': '#/$defs/SourceHeatRow'}}, {'type': 'array', 'items': {'$ref': '#/$defs/SearchTrendRow'}}, {'type': 'array', 'items': {'$ref': '#/$defs/VideoTrendRow'}}], 'title': 'Result'}}}
최근 도구 변경
유사한 MCP 서버
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…
EventTrader Research (read-only)
Offers read-only research on funds, event markets, order books, arena markets, crypto pools, backtests, and related financial ana…
World Monitor
Delivers live geopolitical, conflict, country-risk, market, energy, climate, aviation, supply-chain, and macroeconomic intelligen…
Slacking.biz — SEC Financial Data + US Economics + Demographics + FX
Provides financial, economic, demographic, foreign-exchange, regulatory, and company research data from public sources.
TipRanks
Provides market research and investment data covering stocks, ETFs, commodities, crypto, forex, analyst ratings, news, earnings, …
welcome
Provides market data and educational investment research for stocks, ETFs, and crypto, including fundamentals, prices, macro indi…
Currencyformat
Formats localized numbers and currencies and also provides routed access to structured financial, market, government, and researc…