# Rayana AI (remote · mcp.rayana.ai)

Read-only impersonal market research: portfolio rankings, ticker scores, signals, daily briefs.

- Trust score: 84/100 (high trust)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

> **Recent critical change**: Authorization (2026-09-30). See the changelog below before you install this server.

## Components

- remote · `mcp.rayana.ai`: 84/100 (this document), [markdown](https://verifymcp.io/servers/ai-rayana-rayana-ai/mcp.md), [page](https://verifymcp.io/servers/ai-rayana-rayana-ai/mcp)

## Channel facts

- Endpoint: `https://mcp.rayana.ai/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.4.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 81/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2356 tokens (~102/item across 23 items; 23 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 23 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 24 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Rayana AI MCP server?

Rayana AI is a hosted endpoint at https://mcp.rayana.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http ai-rayana-rayana-ai 'https://mcp.rayana.ai/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ai-rayana-rayana-ai": {
      "url": "https://mcp.rayana.ai/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-rayana-rayana-ai": {
      "type": "http",
      "url": "https://mcp.rayana.ai/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ai-rayana-rayana-ai]
url = "https://mcp.rayana.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-rayana-rayana-ai": {
      "type": "remote",
      "url": "https://mcp.rayana.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-rayana-rayana-ai --url 'https://mcp.rayana.ai/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-rayana-rayana-ai:
    url: "https://mcp.rayana.ai/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-rayana-rayana-ai": {
      "Transport": "http",
      "Url": "https://mcp.rayana.ai/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-rayana-rayana-ai -t streamable-http -u 'https://mcp.rayana.ai/mcp'
```

### Other

```json
{
  "mcpServers": {
    "ai-rayana-rayana-ai": {
      "type": "http",
      "url": "https://mcp.rayana.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 84, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 2064 → 2356
- [functional] Server version: 1.2.0 → 1.4.0
- [functional] New tool “rayana_ai_analyst_followup”
- [functional] New tool “rayana_ai_macro”

### 2026-11-03 (score 84, 0)

- [security] Tool “rayana_ai_ticker_analyst” rewrote its description, which is the text the model reads

### 2026-11-02 (score 84, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 1.1.1 → 1.2.0
- [functional] New tool “rayana_ai_analyst_read”

### 2026-11-01 (score 84, 0)

- [security] Tool “rayana_ai_ticker_analyst” rewrote its description, which is the text the model reads

### 2026-10-30 (score 84, +1)

- [security] Stability: 0.97 → pass

### 2026-10-29 (score 83, −1)

- [functional] Stability: pass → 0.97

### 2026-10-21 (score 84, −2)

- [security] Tool “rayana_ai_analyst_brief” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_articles” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_complete_setup” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_consensus” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_market_brief” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_plans” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_portfolio” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_portfolios” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_rankings” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_rotation” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_search” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_signals” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_start_checkout” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_ticker” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_ticker_analyst” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_ticker_price” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_trends” rewrote its description, which is the text the model reads
- [security] Tool “rayana_ai_trends_detail” rewrote its description, which is the text the model reads
- [cosmetic] Tool “rayana_ai_analyst_brief” changed its title: Portfolio analyst brief
- [cosmetic] Tool “rayana_ai_articles” changed its title: Research articles
- [cosmetic] Tool “rayana_ai_complete_setup” changed its title: Redeem a pairing code
- [cosmetic] Tool “rayana_ai_consensus” changed its title: Per-source consensus snapshots
- [cosmetic] Tool “rayana_ai_lanes” changed its title: Available ranking lanes
- [cosmetic] Tool “rayana_ai_market_brief” changed its title: Daily market brief
- [cosmetic] Tool “rayana_ai_plans” changed its title: Plans and pricing
- [cosmetic] Tool “rayana_ai_portfolio” changed its title: Model portfolio detail
- [cosmetic] Tool “rayana_ai_portfolios” changed its title: Model portfolio shelf
- [cosmetic] Tool “rayana_ai_rankings” changed its title: Ranked candidates by lane
- [cosmetic] Tool “rayana_ai_rotation” changed its title: Cluster rotation
- [cosmetic] Tool “rayana_ai_search” changed its title: Symbol search
- [cosmetic] Tool “rayana_ai_signals” changed its title: Signal consensus batch
- [cosmetic] Tool “rayana_ai_start_checkout” changed its title: Start a subscription
- [cosmetic] Tool “rayana_ai_ticker” changed its title: Ticker research view
- [cosmetic] Tool “rayana_ai_ticker_analyst” changed its title: Ticker AI analyst read
- [cosmetic] Tool “rayana_ai_ticker_articles” changed its title: Ticker article history
- [cosmetic] Tool “rayana_ai_ticker_price” changed its title: Ticker price history
- [cosmetic] Tool “rayana_ai_trends” changed its title: Attention leaderboard
- [cosmetic] Tool “rayana_ai_trends_detail” changed its title: Attention detail

### 2026-10-17 (score 86, +1)

- [security] Stability: 0.97 → pass

## MCP tools (23)

### `rayana_ai_rankings` (~161 tokens)

Ranked candidates by lane

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`,
later rows are reached with `offset`. `include_assessment` adds each
row's technical detail (pattern and cluster validation, volume profile)
and roughly triples the response; `rayana_ai_ticker` returns the same
detail for a single name.

Input parameters:

- `include_assessment` (boolean)
- `lane` (string)
- `limit` (integer)
- `offset` (integer)

Output parameters:

- `asof_hint`
- `candidates` (array)
- `count` (integer)
- `lane` (string)
- `total`
- `truncated` (boolean)

### `rayana_ai_lanes` (~26 tokens)

Available ranking lanes

Which lanes (daily/turtle/mr) currently have a batch available.

### `rayana_ai_signals` (~53 tokens)

Signal consensus batch

Latest aggregator-consensus batch for one asset lane: which tickers
cleared the signal pipeline, blended agg_score, confirming source count.

Input parameters:

- `lane` (string)
- `limit` (integer)

Output parameters:

- `count` (integer)
- `lane` (string)
- `signals` (array)
- `truncated` (boolean)

### `rayana_ai_consensus` (~170 tokens)

Per-source consensus snapshots

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.

Input parameters:

- `limit` (integer)
- `source`

Output parameters:

- `ai-news-analysis`
- `congressional-trading`
- `earnings-surprise`
- `event-calendar`
- `insider-activity`
- `institutional-holdings`
- `onchain-flows`

### `rayana_ai_ticker` (~48 tokens)

Ticker research view

Full per-ticker research view: score, lane membership, per-source
signals, virality, consensus, cluster-rotation position, forward returns.

Input parameters:

- `symbol` (string, required)

Output parameters:

- `detail`
- `score`
- `ticker` (string)
- `truncated` (boolean)

### `rayana_ai_ticker_price` (~123 tokens)

Ticker price history

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.

Input parameters:

- `max_points` (integer)
- `period` (string)
- `symbol` (string, required)

Output parameters:

- `change_pct`
- `last_close`
- `period` (string)
- `points` (array)
- `range_high`
- `range_low`
- `ticker` (string)

### `rayana_ai_ticker_analyst` (~100 tokens)

Ticker AI analyst read

The ticker's current AI analyst read (lean, conviction, thesis, six
fixed sections, evidence for/against, invalidation condition). Never
triggers a new model call; 404s when the ticker has no current read.
Counts one read against the subscription's monthly allowance, once per
ticker per day; `rayana_ai_analyst_read` also reports what remains.

Input parameters:

- `symbol` (string, required)

Output parameters:

- `analysis_date` (string)
- `cached` (boolean)
- `changed_since_last`
- `conviction`
- `cost_usd`
- `created_at`
- `evidence_against` (array)
- `evidence_for` (array)
- `invalidation`
- `lean`
- `model`
- `sections`
- `thesis`
- `ticker` (string)
- `version`

### `rayana_ai_analyst_read` (~115 tokens)

Open AI analyst read

Open a ticker's AI analyst read: the current one, or a new one generated
on the spot when the ticker has none (this can take about half a minute).
Each ticker opened counts one read against the subscription's monthly
allowance, once per day; re-opening it the same day is free. `quota`
reports reads used and remaining this month and the reset date. Errors for
tickers outside the covered universe and when the allowance is used up.

Input parameters:

- `symbol` (string, required)

Output parameters:

- `quota`
- `read`

### `rayana_ai_analyst_followup` (~132 tokens)

AI analyst follow-up

Answer one preset follow-up question about a ticker's current AI analyst
read: trend (is the trend intact), break (what would break the thesis),
macro (exposure to macro and rates), smart_money (insiders and smart
money), earnings (the earnings setup), changed (what changed since the last
read). Answers come from the read and its data only and are the same for
everyone. Counts like opening the read, once per ticker per day; `quota`
reports reads remaining this month.

Input parameters:

- `question` (string, required)
- `symbol` (string, required)

Output parameters:

- `followup`
- `quota`

### `rayana_ai_ticker_articles` (~29 tokens)

Ticker article history

One ticker's published article history, newest first.

Input parameters:

- `symbol` (string, required)

Output parameters:

- `articles` (array)
- `count` (integer)
- `limit`
- `offset`
- `total`

### `rayana_ai_rotation` (~201 tokens)

Cluster 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.

Input parameters:

- `days` (integer)
- `include_trajectory` (boolean)
- `view` (string)

Output parameters:

- `result`

### `rayana_ai_trends` (~45 tokens)

Attention leaderboard

The attention leaderboard: latest virality snapshot ranked by VScore,
with the full intensity/breadth/slope/vramp decomposition.

Input parameters:

- `limit` (integer)

Output parameters:

- `asof`
- `count` (integer)
- `leaders` (array)
- `truncated` (boolean)

### `rayana_ai_trends_detail` (~93 tokens)

Attention 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.

Input parameters:

- `limit`
- `view` (string, required)

Output parameters:

- `result`

### `rayana_ai_market_brief` (~55 tokens)

Daily 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.

Input parameters:

- `date`

Output parameters:

- `brief` (object)
- `notes` (array)

### `rayana_ai_macro` (~155 tokens)

Business cycle

The economy behind the market, descriptive only. `cycle`: the
business-cycle phase (expansion / slowdown / contraction / recovery), the
composite and its components, plus recent month-ends. `earnings`:
S&P 500 (`index="spx"`) or Nasdaq-100 profit growth by quarter
(sum and median, net and operating income), breadth, beat rate and
coverage, including the quarter in season. `indicators`: the FRED series
behind the cycle with source citations. `history` sets the window
(month-ends, quarters or observations); omit it for the default.

Input parameters:

- `history`
- `index` (string)
- `view` (string)

Output parameters:

- `result`

### `rayana_ai_analyst_brief` (~44 tokens)

Portfolio analyst brief

The portfolio-analyst brief with its per-ticker views — the broadcast
opinion layer, identical for every caller.

Input parameters:

- `date`

Output parameters:

- `brief` (object)
- `views` (array)

### `rayana_ai_portfolios` (~50 tokens)

Model portfolio shelf

The full shelf of Rayana AI's broadcast model portfolios as
merchandising cards, with each card's tier/openable/delayed flags.

Input parameters:

- `include_retired` (boolean)

Output parameters:

- `count` (integer)
- `portfolios` (array)
- `tier` (string)

### `rayana_ai_portfolio` (~67 tokens)

Model portfolio detail

One model portfolio's full detail: holdings, overlay legs, event feed,
NAV series, and windowed returns. Returns an error if the book's tier
(e.g. an Elite-only book) is above the caller's own subscription tier.

Input parameters:

- `slug` (string, required)

Output parameters:

- `asof`
- `book`
- `delayed_to`
- `events` (array)
- `factor_unwind`
- `holdings` (array)
- `metrics`
- `nav` (array)
- `overlay` (array)
- `slug` (string)
- `windows` (array)

### `rayana_ai_search` (~52 tokens)

Symbol search

Resolve free text (ticker or company name) to known Rayana AI symbols,
best match first. Pure resolution — never accrues signal.

Input parameters:

- `limit` (integer)
- `q` (string, required)

Output parameters:

- `result` (array)

### `rayana_ai_articles` (~58 tokens)

Research articles

The public articles feed, newest first, when `slug` is omitted; one
published article's full body when `slug` is given.

Input parameters:

- `limit` (integer)
- `offset` (integer)
- `slug`

Output parameters:

- `result`

### `rayana_ai_plans` (~85 tokens)

Plans and pricing

Rayana AI's subscription tiers: price, rate limits, and what each tier
includes. Works without signing in or an API key.

The research tools on this server require the Pro tier or higher. Prices
are USD; annual billing is ten months' price for twelve.
\`rayana_ai_start_checkout` returns a subscription link for a tier listed
here.

Output parameters:

- `access_note` (string)
- `annual_note` (string)
- `checkout_url` (string)
- `currency` (string)
- `plans` (array)
- `pricing_url` (string)

### `rayana_ai_start_checkout` (~161 tokens)

Start a subscription

Returns a subscription link for a tier, which the user opens in a
browser. Works without signing in or an API key. The tool itself takes no
payment: the user signs in, accepts the Terms of Service and pays on
Stripe's hosted checkout page.

Standard does not include access to this server's research tools; Pro and
Elite do. After payment, a connection that signs in with OAuth (as
Claude's connectors do) reaches the research tools once the user signs in
with the same account. A client that connects with an API key instead gets
one through a pairing code on the account page (see
\`rayana_ai_complete_setup`).

Input parameters:

- `interval` (string)
- `tier` (string)

Output parameters:

- `interval` (string)
- `next_steps` (array)
- `pairing_note` (string)
- `price_usd` (integer)
- `tier` (string)
- `url` (string)

### `rayana_ai_complete_setup` (~146 tokens)

Redeem a pairing code

For clients that connect with an API key rather than OAuth: exchanges a
pairing code from the user's account page for an API key. Destructive: it
issues a new key and immediately revokes the account's previous one, so
any other client still using the old key stops working. OAuth connections
are not affected.

The key is returned once and cannot be retrieved later; only a hash of it
is stored. It is sent as the `X-API-Key` header on MCP and REST
requests. Codes are single-use, expire after 15 minutes, and are
invalidated after a few wrong attempts.

Input parameters:

- `code` (string, required)

Output parameters:

- `api_key` (string)
- `header_name` (string)
- `mcp_url` (string)
- `note` (string)
- `rest_base_url` (string)
- `tier` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-rayana-rayana-ai/mcp#diagnostics

## Score history

- 2026-11-05: 84
- 2026-11-04: 84
- 2026-11-03: 84
- 2026-11-02: 84
- 2026-11-01: 84
- 2026-10-31: 84
- 2026-10-30: 84
- 2026-10-29: 83
- 2026-10-28: 84
- 2026-10-27: 84
- 2026-10-26: 84
- 2026-10-25: 84
- 2026-10-24: 84
- 2026-10-23: 84
- 2026-10-22: 84
- 2026-10-21: 84
- 2026-10-20: 86
- 2026-10-19: 86
- 2026-10-18: 86
- 2026-10-17: 86
- 2026-10-16: 85
- 2026-10-15: 85
- 2026-10-14: 84
- 2026-10-13: 70
- 2026-10-12: 69
- 2026-10-10: 69
- 2026-10-07: 67
- 2026-10-06: 67
- 2026-10-04: 66
- 2026-10-03: 65

## Common questions

### What is the Rayana AI MCP server?

Rayana AI is an MCP server listed in the public MCP registry as ai.rayana/rayana-ai. Read-only impersonal market research: portfolio rankings, ticker scores, signals, daily briefs. This page covers its hosted endpoint (https://mcp.rayana.ai/mcp).

### Is the Rayana AI MCP server safe to use?

Rayana AI scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Rayana AI MCP server expose?

Rayana AI exposes 23 tools: rayana_ai_rankings, rayana_ai_lanes, rayana_ai_signals, rayana_ai_consensus, rayana_ai_ticker, and 18 more. Their descriptions and schemas cost roughly 2,169 tokens of context every time the server is loaded.

### Does the Rayana AI MCP server require authentication?

Yes. Rayana AI asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Rayana AI MCP server still maintained?

Rayana AI is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://mcp.rayana.ai/mcp
- Website: https://rayana.ai/docs
- Changelog RSS feed: https://verifymcp.io/servers/ai-rayana-rayana-ai/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-rayana-rayana-ai/mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-rayana-rayana-ai/mcp
