MCP Server

Rayana AI

ai.rayana/rayana-ai

What this MCP does

Provides read-only market research through ticker scores, signals, portfolio rankings, price history, market briefs, trends, and source consensus.

rayana_ai_analyst_brief
The portfolio-analyst brief with its per-ticker views — the broadcast opinion layer, identical for every caller.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_analyst_briefArguments', 'properties': {'date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Date', 'default': None}}}
Output schema
{'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'}}}
rayana_ai_articles
The public articles feed, newest first, when ``slug`` is omitted; one published article's full body when ``slug`` is given.
Read only Open world
Input schema
{'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}}}
Output schema
{'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'}}}
rayana_ai_complete_setup
Exchange a pairing code from your principal's account page for an API key. Ask them to confirm before you call this: it issues a new key and immediately invalidates the account's previous one, so any other client already using a key will stop working until it is given the new value. The key comes back once and is not retrievable afterwards — only a hash of it is stored. Put it in the ``X-API-Key`` header on this connection and on any REST call. Codes are single-use, expire in 15 minutes, and are burnt after a few wrong guesses; if one is refused, ask for a fresh one rather than retrying.
Destructive
Input schema
{'type': 'object', 'title': 'rayana_ai_complete_setupArguments', 'required': ['code'], 'properties': {'code': {'type': 'string', 'title': 'Code'}}}
Output schema
{'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.'}
rayana_ai_consensus
Per-source consensus snapshots (insider trades, congressional trades, earnings beats, dated catalysts, on-chain flows, 13F filings, AI news-beneficiary reads). Omit ``source`` for every source at once, or pass one of the slugs returned in a rankings/signals row's source list. ``limit`` caps rows per source. The sources are very unevenly sized — institutional holdings runs to ~1700 rows where on-chain flows may have two — so a source that comes back with exactly ``limit`` rows probably has more, and narrowing with ``source`` and raising ``limit`` reads that one layer deeply for far less context than raising ``limit`` across all seven.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_consensusArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 25}, 'source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Source', 'default': None}}}
Output schema
{'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}}}
rayana_ai_lanes
Which lanes (daily/turtle/mr) currently have a batch available.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_lanesArguments', 'properties': {}}
Output schema
{'type': 'object', 'title': 'rayana_ai_lanesDictOutput', 'additionalProperties': {'type': 'boolean'}}
rayana_ai_market_brief
The daily market brief: a generic engine-wide read with no recommendations, descriptive only. Latest by default; pass ``date`` (YYYY-MM-DD) for a specific day.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_market_briefArguments', 'properties': {'date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Date', 'default': None}}}
Output schema
{'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'}}}
rayana_ai_plans
What Rayana AI costs and what each tier unlocks. No API key needed — call this first if a research tool refused you for want of one. API and MCP access start at the Pro tier. Prices are USD; annual billing is ten months' price for twelve. Use ``rayana_ai_start_checkout`` to turn a choice here into a link your principal can open.
Read only
Input schema
{'type': 'object', 'title': 'rayana_ai_plansArguments', 'properties': {}}
Output schema
{'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'}}}
rayana_ai_portfolio
One model portfolio's full detail: holdings, overlay legs, event feed, NAV series, and windowed returns. Returns an error if the slug's tier (e.g. an Elite-only book) is above this key's own tier — a Pro key does not get Elite content just because it has MCP access.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_portfolioArguments', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'title': 'Slug'}}}
Output schema
{'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}}}
rayana_ai_portfolios
The full shelf of Rayana AI's broadcast model portfolios as merchandising cards, with each card's tier/openable/delayed flags.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_portfoliosArguments', 'properties': {'include_retired': {'type': 'boolean', 'title': 'Include Retired', 'default': False}}}
Output schema
{'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'}}}
rayana_ai_rankings
Latest ranked candidate batch for a lane: daily (the main research lane), turtle (breakout system), or mr (mean-reversion). Rows come back in rank order, best first, so the default page is the top of the batch. ``total`` in the response is the batch size; when it exceeds ``count``, page with ``offset``. ``include_assessment`` adds each row's technical blob (pattern and cluster validation, volume profile) — it triples the response, so prefer ``rayana_ai_ticker`` for one name's detail and leave this off when scanning.
Read only Open world
Input schema
{'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}}}
Output schema
{'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'}}}
rayana_ai_rotation
Cluster-rotation layer. ``summary``: latest per-cluster RRG quadrant/rank rows with deltas, plus the most recent quadrant-crossing events (``days`` controls the window both are computed over). ``laggards``: members trailing a firing cluster's leader. ``discovered``: unsupervised cluster-discovery cohorts the structural taxonomy misses. ``members``: structural cluster membership. On ``summary``, two blocks are trimmed because together they are 80% of the response while answering a narrower question than the rows do. ``include_trajectory`` adds each cluster's full rank series — a chart payload, off by default. ``events`` returns the newest 25 crossings; if exactly 25 come back there are probably older ones, and a wider ``days`` is not what returns them.
Read only Open world
Input schema
{'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}}}
Output schema
{'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'}}}
rayana_ai_search
Resolve free text (ticker or company name) to known Rayana AI symbols, best match first. Pure resolution — never accrues signal.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_searchArguments', 'required': ['q'], 'properties': {'q': {'type': 'string', 'title': 'Q'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 8}}}
Output schema
{'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'}}}
rayana_ai_signals
Latest aggregator-consensus batch for one asset lane: which tickers cleared the signal pipeline, blended agg_score, confirming source count.
Read only Open world
Input schema
{'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}}}
Output schema
{'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}}}
rayana_ai_start_checkout
Get a link your principal opens in a browser to subscribe. No API key needed. Give them the URL — you cannot complete this yourself, and should not try: they sign in, accept the Terms and authenticate the payment. If the tier includes API access, their account page then shows a short pairing code; read it back into ``rayana_ai_complete_setup`` to get your API key without them pasting a secret into this conversation. **Standard does not include API or MCP access** — if the point of the purchase is a key for you, ask for pro or elite.
Read only
Input schema
{'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'}}}
Output schema
{'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."}
rayana_ai_ticker
Full per-ticker research view: score, lane membership, per-source signals, virality, consensus, cluster-rotation position, forward returns.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_tickerArguments', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'title': 'Symbol'}}}
Output schema
{'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'}}}
rayana_ai_ticker_analyst
Today's cached AI ticker-analyst read (lean, conviction, thesis, evidence for/against, invalidation condition). Never triggers a new model call; 404s if nothing was generated today for this ticker.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_ticker_analystArguments', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'title': 'Symbol'}}}
Output schema
{'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': []}}}
rayana_ai_ticker_articles
One ticker's published article history, newest first.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_ticker_articlesArguments', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'title': 'Symbol'}}}
Output schema
{'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'}}}
rayana_ai_ticker_price
Daily close-price history for one ticker over the given period. Long periods are evenly sampled down to ``max_points`` bars rather than cut short, so the series still spans the whole period — ``5Y`` and ``MAX`` return the shape of the history, not its last year. ``last_close``, ``change_pct`` and the ``range_low``/``range_high`` extremes are computed over every bar regardless of sampling.
Read only Open world
Input schema
{'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}}}
Output schema
{'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}}}
rayana_ai_trends
The attention leaderboard: latest virality snapshot ranked by VScore, with the full intensity/breadth/slope/vramp decomposition.
Read only Open world
Input schema
{'type': 'object', 'title': 'rayana_ai_trendsArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 40}}}
Output schema
{'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}}}
rayana_ai_trends_detail
The attention layer's raw texture. ``sources``: per-source reach today. ``heat``: per-(ticker, source) attention contributions. ``search``: rising/breakout consumer search queries. ``video``: rising video-view velocity. ``limit`` applies to search/video only; omit it to use that view's own default.
Read only Open world
Input schema
{'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}}}
Output schema
{'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'}}}
Changed
rayana_ai_start_checkout
Sept. 25, 2026, 2:50 a.m.
Added
rayana_ai_complete_setup
Sept. 21, 2026, 2:49 a.m.
Added
rayana_ai_start_checkout
Sept. 21, 2026, 2:49 a.m.
Added
rayana_ai_plans
Sept. 21, 2026, 2:49 a.m.
Added
rayana_ai_articles
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_search
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_portfolio
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_portfolios
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_analyst_brief
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_market_brief
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_trends_detail
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_trends
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_rotation
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_ticker_articles
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_ticker_analyst
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_ticker_price
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_ticker
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_consensus
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_signals
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_lanes
Sept. 19, 2026, 2:40 a.m.
Added
rayana_ai_rankings
Sept. 19, 2026, 2:40 a.m.

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

io.github.valuein/mcp-sec-edgar

Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…

equibles

io.github.daniel3303/equibles

Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…

EventTrader Research (read-only)

com.cymetica/event-trader-research

Offers read-only research on funds, event markets, order books, arena markets, crypto pools, backtests, and related financial ana…

World Monitor

app.worldmonitor/mcp

Delivers live geopolitical, conflict, country-risk, market, energy, climate, aviation, supply-chain, and macroeconomic intelligen…

Slacking.biz — SEC Financial Data + US Economics + Demographics + FX

io.github.Th3Slack3r/slacking-biz

Provides financial, economic, demographic, foreign-exchange, regulatory, and company research data from public sources.

TipRanks

com.tipranks/tipranks

Provides market research and investment data covering stocks, ETFs, commodities, crypto, forex, analyst ratings, news, earnings, …

welcome

com.thebalancedinvestorclub/welcome

Provides market data and educational investment research for stocks, ETFs, and crypto, including fundamentals, prices, macro indi…

Currencyformat

io.github.pipeworx-io/currencyformat

Formats localized numbers and currencies and also provides routed access to structured financial, market, government, and researc…