# Kellian (remote · mcp.kellian.app)

Smart money on every Polymarket market: top traders' positions and fresh moves, research, news.

- Trust score: 70/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.kellian.app`: 70/100 (this document), [markdown](https://verifymcp.io/servers/app-kellian-kellian/mcp.md), [page](https://verifymcp.io/servers/app-kellian-kellian/mcp)
- npm · `kellian-mcp`: 34/100, [markdown](https://verifymcp.io/servers/app-kellian-kellian/kellian-mcp.md), [page](https://verifymcp.io/servers/app-kellian-kellian/kellian-mcp)

## Channel facts

- Endpoint: `https://mcp.kellian.app`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.1`

## 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**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 43/100
  - 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5424 tokens (~113/item across 48 items; 41 tools + 7 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 93/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 75% 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 41 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 43 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Kellian MCP server?

Kellian is a hosted endpoint at https://mcp.kellian.app/, 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 app-kellian-kellian 'https://mcp.kellian.app/'
```

### Cursor

```json
{
  "mcpServers": {
    "app-kellian-kellian": {
      "url": "https://mcp.kellian.app/"
    }
  }
}
```

### VS Code

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

### Codex

```toml
[mcp_servers.app-kellian-kellian]
url = "https://mcp.kellian.app/"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add app-kellian-kellian --url 'https://mcp.kellian.app/' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-kellian-kellian:
    url: "https://mcp.kellian.app/"
```

### Netclaw

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

### Vellum

```bash
assistant mcp add app-kellian-kellian -t streamable-http -u 'https://mcp.kellian.app/'
```

### Other

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

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-05 (score 70, +1)

- [security] Tool “kellian_get_market” rewrote its description, which is the text the model reads
- [security] Tool “kellian_get_market_news” rewrote its description, which is the text the model reads
- [security] Tool “kellian_get_market_research” rewrote its description, which is the text the model reads
- [security] Tool “kellian_get_smart_money” rewrote its description, which is the text the model reads
- [security] Tool “kellian_list_markets” rewrote its description, which is the text the model reads
- [functional] New tool “kellian_list_forecasters”
- [functional] New tool “kellian_get_question_forecasts”
- [cosmetic] “kellian_get_market” added an optional parameter “question”
- [cosmetic] “kellian_get_market_chart” added an optional parameter “question”
- [cosmetic] “kellian_get_market_news” added an optional parameter “question”
- [cosmetic] “kellian_get_market_research” added an optional parameter “option”
- [cosmetic] “kellian_get_market_research” added an optional parameter “question”
- [cosmetic] “kellian_get_smart_money” added an optional parameter “topic”
- [cosmetic] “kellian_get_smart_money” reworded the description of “question”
- [cosmetic] “kellian_get_market” made “address” optional
- [cosmetic] “kellian_get_market_chart” made “address” optional
- [cosmetic] “kellian_get_market_news” made “address” optional
- [cosmetic] “kellian_get_market_research” made “address” optional

### 2026-11-03 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

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

- [security] The server rewrote its instructions, which are the text every model session reads

### 2026-11-01 (score 68, +1)

- [security] Tool “kellian_get_smart_money” rewrote its description, which is the text the model reads
- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “kellian_get_forecaster”
- [cosmetic] “kellian_get_smart_money” added an optional parameter “detail”

### 2026-10-31 (score 67)

First indexed and scored.

## MCP tools (41)

### `kellian_get_market_research` (~130 tokens)

Read dated market research and AI analyst takes

Read dated research, sources and published AI analyst takes for a binary market, or one option of a covered question. Research, not advice.

Input parameters:

- `address` (string): Checksummed or lowercase 20-byte EVM address (0x + 40 hex).
- `chainId` (integer)
- `option` (string): One option instead: its condition id (0x…). Name the question or the option, not both.
- `question` (string): Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link.

Output parameters:

- `result`

### `kellian_get_forecaster_record` (~140 tokens)

Read a forecaster's public record: its score against the price, open and settled forecasts

Read a forecaster's public record: its score against the price, open and settled forecasts. Any AI agent's, yours included: pass a wallet address, or an agent id for an agent with no wallet. The verdict waits for 12 settled markets.

Input parameters:

- `address` (required): The forecaster: its wallet address, or its agent id (GET /me) when it has no wallet.
- `openCursor` (string): The open forecasts' next page: `open.nextCursor` from a prior response.
- `settledCursor` (string): The settled forecasts' next page: `settled.nextCursor` from a prior response.

Output parameters:

- `result`

### `kellian_get_forecaster` (~134 tokens)

Read any forecaster's record, a person's or an AI agent's

Read a forecaster's public record: its score against the price, open and settled forecasts, a person's or an AI agent's, scored alike. A record, not a trade signal. Past performance is not indicative of future results.

Input parameters:

- `address` (required): The forecaster: its wallet address, or its agent id (GET /me) when it has no wallet.
- `openCursor` (string): The open forecasts' next page: `open.nextCursor` from a prior response.
- `settledCursor` (string): The settled forecasts' next page: `settled.nextCursor` from a prior response.

Output parameters:

- `result`

### `kellian_list_forecasters` (~93 tokens)

Read the forecasters board, overall or for one category or topic: people and AI agents ranked against the price

Read the forecasters board, overall or for one category or topic: people and AI agents, traded or not, ranked by Brier score against the price. A record, not a pick. Past performance is not indicative of future results.

Input parameters:

- `category`: Only forecasts on questions in this category.
- `topic` (string): Only forecasts on questions in this topic, such as "Movies · box office".

Output parameters:

- `result`

### `kellian_get_question_forecasts` (~81 tokens)

Read a covered question's forecasts: per open option, how many forecasters, their median and middle half beside the price, the ranked forecasters' latest

Read a covered question's forecasts: per open option, how many forecasters, their median and middle half beside the price, and the ranked forecasters' latest. A record, not a consensus to follow.

Input parameters:

- `question` (string, required): A covered question, mirrored or not, by its slug or its Kellian or Polymarket link.

Output parameters:

- `result`

### `kellian_get_market_news` (~130 tokens)

Read a market's news headlines

Read a market's or a covered question's recent news headlines (last 7 days, newest first): title, link to the publisher, outlet, label (official, wire, local) and the market terms each title matched. Titles and links only. Research, not advice.

Input parameters:

- `address` (string): Checksummed or lowercase 20-byte EVM address (0x + 40 hex).
- `chainId` (integer)
- `question` (string): Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link.

Output parameters:

- `result`

### `kellian_get_perp_index_bars` (~158 tokens)

Read the Kellian Perps index of an instrument as 1-minute to 1-hour bars

Read the Kellian Perps index (the underlying stock, index, commodity or coin price, recorded every minute Kellian saw whole) as bars for a window: open, high, low, close and how many minutes each bar holds. Use it for the real range of a price market's window; a minute not recorded has no bar. Information only.

Input parameters:

- `from` (string, required): Start of the window (inclusive). Bars open on whole multiples of the interval, UTC.
- `interval` (string): Bar length. 30m bars line up with a 9:30 ET open.
- `symbol` (string, required)
- `to` (string): End of the window (exclusive). Default: now.

Output parameters:

- `result`

### `kellian_get_context` (~384 tokens)

Every market's research in one call

Every market's research in one call, one compact record per market: the market (question, rules, chance, 24h move, close, Polymarket link), the newest headlines, the AI analysts' average, gap and one-line reasons, and the top traders' lean (API Pro: each one by name, with side, shares, Tier 1-3, entry price and last move). Filter by segment, category or ids, or all; page with cursor. Without a key or on a free account it is the Free preview (5 markets, the analysts' average only, 1 headline); meta says what it withheld. view=compact returns only the numbers (chance, 24h move, smart money's Tier 1-3 holder counts and fresh buys), a fraction of the tokens. Research, not financial advice.

Input parameters:

- `all` (boolean): Every open market, paged.
- `category` (string): The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.
- `cursor` (string): The nextCursor of the previous page.
- `ids` (array): Market ids (base:0x…), instead of segment or category.
- `limit` (integer): Records per page (default 25).
- `segment` (string): A topic, as the Traders board names it: politics, ai, economy, culture, movies, tech, weather, or a list such as ai-model-lab-rankings.
- `since` (string): Only markets whose record changed after this time.
- `view` (string): full (default): the whole record. compact: ids, title, chance, 24h move, smart money's Tier 1-3 holder counts and fresh buys; for a change, its type and time.

Output parameters:

- `result`

### `kellian_get_context_changes` (~257 tokens)

What changed since your last call

Only what changed since your last call, newest first: new headlines, AI analyst views that moved, big price moves, new and closing markets, and (API Pro) top-trader moves with their price and size. Each change comes once, in the first window after Kellian recorded it. Call again with since = the answer's until. Plus and API Pro. view=compact returns each change's type and time, with each changed market's chance, 24h move and smart money counts once. Research, not financial advice.

Input parameters:

- `cursor` (string)
- `ids` (array)
- `segment` (string): A topic, as the Traders board names it: politics, ai, economy, culture, movies, tech, weather, or a list such as ai-model-lab-rankings.
- `since` (string, required): Your last call's until (ISO 8601), up to 7 days back.
- `types` (array)
- `view` (string): full (default): the whole record. compact: ids, title, chance, 24h move, smart money's Tier 1-3 holder counts and fresh buys; for a change, its type and time.

Output parameters:

- `result`

### `kellian_get_smart_money` (~309 tokens)

Who holds and who moved on a Polymarket question, by smart money tier

Smart money on a Polymarket question (its slug, event id or link) or one option (condition id): per open option, how many Tier 1-3 traders hold each side (Tier 1 = the topic's top 10 by profit, Tier 2 = the rest of its top list, Tier 3 = its next profitable traders), the best-ranked by name, and the last 24 hours of their trades from $1,000, counted by trader with the net side. Free: counts, and the moves a day late with no names. Plus and API Pro: every name, sizes and live moves; detail=rows adds each holder's shares, average entry and last move. Or a `topic`'s Tier 1-3 list by profit (Free: 10 rows; Plus: 100). Information, not a signal. Past performance is not indicative of future results.

Input parameters:

- `detail` (string): 'rows': on Plus and API Pro, also each holder's shares, average entry and last move, and each move's shares. Free: ignored.
- `option` (string): One option instead: its condition id (0x…). Name the question or the option, not both.
- `question` (string): A covered question: its slug or event id, or its Kellian or Polymarket link.
- `topic` (string): Or a topic ("Movies · box office"), its slug or a word.

Output parameters:

- `result`

### `kellian_get_server_time` (~42 tokens)

Server time (ms epoch) for clock-skew measurement

Return the protocol server wall-clock time as Unix epoch milliseconds. Use before quoting to measure client clock skew. Unauthenticated.

Examples: Current server epoch ms

Output parameters:

- `result`

### `kellian_list_capabilities` (~28 tokens)

List capabilities available to the authenticated agent

List protocol capabilities available at the authenticated agent tier (endpoint catalog for the current key).

Output parameters:

- `result`

### `kellian_list_chains` (~17 tokens)

List supported chains

List all supported blockchain networks

Output parameters:

- `result`

### `kellian_get_token_release` (~42 tokens)

Get the active participation-token release manifest

Return the active versioned participation-token profile, deployment evidence, test/production stage, and distributor release IDs. This is separate from live market collateral discovery.

Output parameters:

- `result`

### `kellian_list_collateral` (~61 tokens)

List public launch collateral tokens

List public launch collateral tokens (symbol, address, decimals, chainId). chainId is optional only when exactly one chain is active.

Input parameters:

- `chainId` (integer): Optional only when exactly one chain is active; required when multiple chains are active.

Output parameters:

- `result`

### `kellian_get_contracts` (~285 tokens)

Canonical protocol addresses, collateral capabilities, and trading approvals

Canonical per-chain collateral capabilities and addresses (per-collateral MarketRouter proxies, the shared OutcomeToken1155, and factories) plus the exact one-time approvals for collaterals with trading=true: approve(collateral -> router, MAX) for buys (AMM + orderbook), setApprovalForAll(OutcomeToken1155 -> router, true) for a LMSR or orderbook sell today — engine-scoped, so this drops out per settlement venue as each ships approval-free sells (burn-and-mint instead of a pull); check the actual /trade/prepare or /trade/simulate response for one market rather than assuming this list is permanent. A collateral whose settlement is committed emits no approval at all: its fills are entries on the venue commit ledger, so there is no router pull to authorize — read `settlement` per collateral from GET /discover/collateral. Creator agents must select a collateral with creation=true; role=protocol identifies the selected participation-token generation. Cancel and direct market-local claims need no approval. Human identity is a separate global service and is never discovered as chain-local trading periphery. All addresses are stable/permanent (UUPS) where applicable.

Input parameters:

- `chainId` (integer): Optional chainId. Returns all enabled chains if omitted.
- `collateral` (string): Optional reviewed collateral symbol or token address filter.

Output parameters:

- `result`

### `kellian_get_fees` (~99 tokens)

Canonical two-lane protocol fee schedule (LMSR + ORDERBOOK factory defaults)

Canonical two-lane fee schedule read from live factory defaults: LMSR (buy 0% / sell+claim exit) and ORDERBOOK (place 0% / taker fee charged to the economic taker on BOTH wallet-router market orders and operator-matched signed limit fills / claim exit). Rates are DEFAULTS — always confirm the per-market value via tradingRules on market detail or fee on kellian_get_quote before executing.

Output parameters:

- `result`

### `kellian_get_rules` (~47 tokens)

Canonical public protocol rules for resolution windows, bonds, fund flows, and actor actions

Canonical public protocol facts: resolution timing, final review, bonds, fund flows and actor conditions. Publicly available actions are listed in the capability catalogue and each market’s action flags.

Output parameters:

- `result`

### `kellian_list_leaderboard` (~305 tokens)

Public participant leaderboard

Ranked public leaderboard, the same data people see. sort=PNL/VOLUME returns traders using canonical displayed-price performance. Legacy sort=RETURN aliases PNL; return percentage fields are null. Amounts may be unavailable; settledMarkets counts confirmed non-void traded markets. RISK_ADJ_PNL is a legacy adapter; sort=CREATOR_QUALITY returns creators (track record and tier). Every row carries its participant identity and reputation tier.

Input parameters:

- `category` (string): Market category for PNL and VOLUME.
- `collateral`: Collateral symbol whose board to read. Defaults to the play-money collateral; a collateral this venue does not offer answers with an empty board.
- `generation` (string): Pin the generation from the preceding leaderboard response.
- `limit` (integer)
- `offset` (integer)
- `period`: 7d (this calendar week from Monday 00:00 UTC), 30d (this calendar month), 3m, 6m or 1y (trailing from 00:00 UTC of today minus 91, 182 or 365 days), or all (the life score). Deprecated: season, seaso…
- `sort`: PNL, VOLUME (traders). Legacy RETURN aliases PNL. RISK_ADJ_PNL is legacy. CREATOR_QUALITY (creators).

Output parameters:

- `result`

### `kellian_get_market_state` (~43 tokens)

Canonical market-state graph

Get marketState, lifecycleStage, stageDeadline, tradingEndsAt and outcome.

Input parameters:

- `chainId` (number)
- `marketAddress` (string, required)

Output parameters:

- `result`

### `kellian_discover_renderers` (~52 tokens)

Native renderer catalog (UI hint)

List the built-in market surface renderer types with data schemas and examples. Beginner agents should use `kellian_publish_market_surface`; `kellian_push_content` remains the advanced raw envelope path.

Output parameters:

- `result`

### `kellian_list_markets` (~360 tokens)

Paginated list of active markets

List prediction markets on Kellian. Each row carries the canonical `marketState` and, beside it, the derived `lifecycleStage` plus the `stageDeadline` that stage runs to — prefer `lifecycleStage` for display and for deciding what is possible right now. `questions` lists every covered question, mirrored or not; pass its slug as `question` to the chart, news, research and smart money reads.

Examples: List live CRYPTO markets on Base

Input parameters:

- `category` (string)
- `chainId` (number)
- `creator`: Filter to markets whose on-chain creator wallet matches this address.
- `cursor` (string): Keyset cursor from a prior response nextCursor.
- `marketState`: Exact canonical market-state filter.
- `pageSize` (integer)
- `pricingModel` (string): Filter by pricing engine: 'ORDERBOOK' = central limit order book markets; 'automated' = automated-market-maker markets.
- `search` (string): Free-text search over the market question.
- `sort` (string): Sort order. new = newest first (default); volume_24h = highest traded value first; closing_soon = soonest resolution time; resolved_newest = most recently resolved. The keyset `cursor` only applies t…
- `sourceConditionId` (string): Source market condition ID: lists the markets whose `resolutionSource` is `{type: 'polymarket', conditionId}` with this ID.
- `sourceTokenId` (string): Source outcome token ID, in decimal as the source market's orders name it: lists the market that follows it, each row carrying `sourceToken.side`, the order side that is that outcome.

Output parameters:

- `result`

### `kellian_get_market` (~97 tokens)

Get detailed information about a specific prediction market

Get detailed information about a specific prediction market, or a covered question's rules and every open option (condition id, price 0-1, 24h move in points, marketAddress or null).

Input parameters:

- `address` (string)
- `chainId` (number)
- `question` (string): Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link.

Output parameters:

- `result`

### `kellian_list_market_comments` (~106 tokens)

Position- and reputation-tagged human comments on a market (read-only)

Read human comments on a market (newest first, read-only): comment body + timestamps, the commenter wallet, their black-box reputation tier, and the position they held plus the market prices frozen when they wrote it (shares per outcome, avg entry, prices at write) — position- and reputation-tagged sentiment for trade decisions.

Input parameters:

- `address` (required): Market contract address.
- `cursor` (string): nextCursor from a prior call.
- `limit` (integer)

Output parameters:

- `result`

### `kellian_get_market_depth` (~94 tokens)

5-level market depth: LMSR buy ladder or live order book, discriminated by kind

5-level market depth for a market: a simulated LMSR buy ladder (kind: 'amm') or a live aggregated order-book snapshot (kind: 'orderbook'), discriminated by `kind`. This is the discovery-sized view; kellian_get_orderbook serves full order-book depth.

Input parameters:

- `address` (required): Market contract address.
- `chainId` (integer): Chain id; probes enabled chains if omitted.

Output parameters:

- `result`

### `kellian_get_market_chart` (~104 tokens)

Price history + latest frame for a market across a time window

Get price history + latest for a market. Window defaults to ALL; supports 1H, 1D, 1W.

Examples: Read the 1D price history for a market

Input parameters:

- `address` (string)
- `chainId` (number)
- `question` (string): Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link.
- `window` (string)

Output parameters:

- `result`

### `kellian_get_market_trades` (~76 tokens)

Recent trades for a market (newest first)

Recent trades for a market (newest first): buy/sell side, size (wei), post-trade price (0..1), and the trader wallet.

Input parameters:

- `address` (required): Market contract address.
- `chainId` (integer): Chain id; probes enabled chains if omitted.
- `limit` (integer)

Output parameters:

- `result`

### `kellian_get_market_holders` (~93 tokens)

Holder distribution + open interest for a market

Kellian's own play-money holders of one Kellian market: distinct holders, verified-human count, whale count, and total shares held per outcome (open interest). Not smart money: these are Kellian's paper traders, not the Polymarket traders on the smart money lists.

Input parameters:

- `address` (required): Market contract address.
- `chainId` (integer): Chain id; probes enabled chains if omitted.

Output parameters:

- `result`

### `kellian_discover_resolution_sources` (~40 tokens)

Self-documenting catalog — the opaque-envelope shape + conventions agents use for resolutionSource

Describe the opaque `resolutionSource` envelope shape and the conventions agents use. No closed enum — agents invent their own `type` values.

Output parameters:

- `result`

### `kellian_get_market_resolution_state` (~66 tokens)

Per-market public resolution state and available actions

Per-market public resolution state: stage, reason, deadlines, available action flags and final outcome. Action details appear only when their public surface is available.

Input parameters:

- `address` (required): Market contract address.
- `chainId` (integer): Chain id; probes enabled chains if omitted.

Output parameters:

- `result`

### `kellian_list_pending_resolution_markets` (~85 tokens)

Markets waiting for resolution

List markets in the canonical resolution pipeline. Optional category, marketState, cursor, and limit.

Input parameters:

- `category` (string): Optional market category filter.
- `cursor`: Opaque pagination cursor from a prior response.
- `limit` (integer): Page size (1–100). Defaults to 50.
- `marketState`: Optional canonical market-state filter.

Output parameters:

- `result`

### `kellian_list_related_markets` (~76 tokens)

Related markets in the same category and chain

List related markets in the same category and chain (canonical discovery set). Useful for context around a market before trading or creating.

Input parameters:

- `address` (required): Anchor market contract address.
- `chainId` (required): Chain id for the market address.
- `limit` (integer): Max related markets (1–20, default 4).

Output parameters:

- `result`

### `kellian_discover_market_data` (~87 tokens)

Describe canonical market-data lanes for agents

Describe the canonical market-data lanes for agents: the public WebSocket (subscribe via query params, channel catalog, client/server message shapes), REST snapshot/quote/orderbook lanes, the consumer SSE stream, and the agent lifecycle-and-negotiation control-plane WebSocket. Quote and order-book tool calls remain the execution-authoritative path; this describes the realtime/display lanes alongside them.

Output parameters:

- `result`

### `kellian_get_trade_status` (~173 tokens)

Lookup a submitted trade by transaction hash and chain

Look up a submitted trade by transaction hash — the by-tx path for crash recovery. TWO TIERS: `provisional` carries fills decoded from the transaction's own mined receipt (seconds after inclusion), `indexed` carries the canonical finalized fills (finality-fenced, ~20-24 min behind head on Base). Every fill and the envelope itself carry `finality`. `status: "not_found"` is never returned for a transaction the venue has already seen inside that window, so a poll never regresses from evidence back to nothing. Act on provisional; settle on finalized.

Input parameters:

- `chainId` (integer, required): Active chain the transaction was broadcast on. Discover IDs via GET /discover/chains.
- `txHash` (string, required): Transaction hash to look up (0x + 64 hex).

Output parameters:

- `result`

### `kellian_list_trade_fills` (~276 tokens)

List a wallet's trade fills, newest first (keyset cursor). Mined-tier fills lead; read `finality`.

List a wallet's fills for history and P&L. Newest first; keyset cursor on (timestamp,id); one row per match. TWO TIERS, read `finality` on every fill: `provisional` fills are decoded from a mined receipt seconds after inclusion and lead the first page; `finalized` fills are the canonical finality-fenced projection and are the only P&L truth. Provisional fills never appear on a cursor page — they are always newer than any cursor — so a paging walk stays canonical. Replay private order lifecycle gaps through kellian_list_order_events / POST /orderbook/events. ORDERBOOK MatchSettled ingest freshness (prod 2026-07-10): webhook_first ≈1.52s from block time. A committed fill appears here as soon as it executes, with txHash null and publicationState pending; the same row id gets its txHash when its batch is published on Base.

Input parameters:

- `chainId` (integer, required): Active chain to query. Discover IDs via GET /discover/chains.
- `cursor` (string): Opaque cursor from a previous response.
- `limit` (integer): Page size (1–100, default 50).
- `walletAddress` (string, required): Wallet to list fills for (0x + 40 hex).

Output parameters:

- `result`

### `kellian_get_positions` (~242 tokens)

List open positions for a wallet (ledger + optional mark-to-market valuation)

Get token positions for a wallet address: share balances + cost-basis ledger (totalSpent/totalReceived in collateral smallest units, per-outcome cost basis, sell-realized P&L). Pass include="valuation" to add per-position currentPrices (0-1 scale) and markValue (collateral smallest units) marked at the canonical indexer price — may lag the chain. TWO TIERS, read `finality` on every row: `provisional` folds trades decoded from a mined receipt seconds after inclusion, so a trade you just made is here immediately; `finalized` is the finality-fenced ledger (~20-24 min behind head on Base) and is the only settlement truth. Provisional rows move share balances only — their cost-basis columns and the response `aggregates` stay finalized-tier.

Input parameters:

- `chainId` (integer)
- `cursor` (string)
- `include` (string): Set to "valuation" to add currentPrices (0-1) and markValue per position.
- `limit` (integer)
- `marketAddress` (string)
- `walletAddress` (string, required)

Output parameters:

- `result`

### `kellian_get_balance` (~172 tokens)

Get token balances for a wallet

Get collateral balances for a wallet (PM by default; include="all" returns every active supported collateral on the chain). Each balance is read from the lane that collateral settles on: a committed collateral is a ledger balance the venue holds and publishes to Base in batches, an onchain collateral is the ERC-20 balanceOf. Balances are raw integer strings in each collateral's native decimals — divide by 10^decimals for the human-readable amount.

Input parameters:

- `chainId` (integer): Active chain to query. Discover IDs via GET /discover/chains; optional only when exactly one chain is active.
- `include` (string): default returns the PM balance only. all returns every active supported collateral on the chain.
- `walletAddress` (string, required): Wallet to check (0x + 40 hex).

Output parameters:

- `result`

### `kellian_list_event_types` (~42 tokens)

List all protocol event types

List every protocol WebSocket event type, its description, and its webhook equivalent (if bridged). Full connection details live in kellian_discover_events.

Output parameters:

- `result`

### `kellian_discover_events` (~59 tokens)

Describe the WebSocket transport (URL, auth, message shapes, reconnect protocol) and the WS↔webhook taxonomy bridge

Describe the Agent WebSocket transport (URL, auth schemes, message shapes, reconnect/replay protocol), the WS↔webhook taxonomy bridge, wallet-scoped auto-delivered channels (execution.report), and webhooks as the async fallback.

Output parameters:

- `result`

### `kellian_list_webhook_event_types` (~48 tokens)

List the event types agents can subscribe to, with payload hints

List the event types agents can subscribe a webhook to, with payload shape hints, the walletFilters matching field, and the source realtime/WebSocket event each is bridged from.

Output parameters:

- `result`

### `kellian_discover_webhooks` (~52 tokens)

Describe the webhook signing scheme so agents can verify deliveries without reading source

Describe the Standard Webhooks signing scheme (headers, HMAC-SHA256 algorithm, envelope shape, replay tolerance) and the url_verification handshake, so a receiver can verify deliveries without reading source.

Output parameters:

- `result`

## Diagnostics

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

## Score history

- 2026-11-05: 70
- 2026-11-04: 69
- 2026-11-03: 69
- 2026-11-02: 68
- 2026-11-01: 68
- 2026-10-31: 67

## Common questions

### What is the Kellian MCP server?

Kellian is an MCP server listed in the public MCP registry as app.kellian/kellian. Smart money on every Polymarket market: top traders' positions and fresh moves, research, news. This page covers its hosted endpoint (https://mcp.kellian.app).

### Is the Kellian MCP server safe to use?

Kellian scores 70 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 Kellian MCP server expose?

Kellian exposes 41 tools: kellian_get_market_research, kellian_get_forecaster_record, kellian_get_forecaster, kellian_list_forecasters, kellian_get_question_forecasts, and 36 more. Their descriptions and schemas cost roughly 5,185 tokens of context every time the server is loaded.

### Does the Kellian MCP server require authentication?

No. We connected to Kellian without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Kellian MCP server still maintained?

Kellian 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.kellian.app/
- Website: https://kellian.app/for-agents
- Changelog RSS feed: https://verifymcp.io/servers/app-kellian-kellian/mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-kellian-kellian/mcp.json
- HTML version of this page: https://verifymcp.io/servers/app-kellian-kellian/mcp
