# Fan Token Intel (remote · mcp-production-f681.up.railway.app)

Fan-token intelligence for Chiliz Chain: prices, whale flows, match event impact. 22 read tools.

- Trust score: 68/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp-production-f681.up.railway.app`: 68/100 (this document), [markdown](https://verifymcp.io/servers/brunopessoa22-fan-token-intel/mcp-production-f681.md), [page](https://verifymcp.io/servers/brunopessoa22-fan-token-intel/mcp-production-f681)

## Channel facts

- Endpoint: `https://mcp-production-f681.up.railway.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.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-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 25 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - 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**: 81/100
  - 100% 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 3703 tokens (~127/item across 29 items; 25 tools + 4 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 98% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http brunopessoa22-fan-token-intel https://mcp-production-f681.up.railway.app/mcp
```

### Codex

```toml
[mcp_servers.brunopessoa22-fan-token-intel]
url = "https://mcp-production-f681.up.railway.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "brunopessoa22-fan-token-intel": {
      "type": "remote",
      "url": "https://mcp-production-f681.up.railway.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add brunopessoa22-fan-token-intel --url https://mcp-production-f681.up.railway.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  brunopessoa22-fan-token-intel:
    url: "https://mcp-production-f681.up.railway.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "brunopessoa22-fan-token-intel": {
      "type": "http",
      "url": "https://mcp-production-f681.up.railway.app/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-08-03 (score 68, +1)

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

### 2026-08-01 (score 67, +1)

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

### 2026-07-31 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 66, 0)

- [security] Tool “tokenintel_match_impact_history” rewrote its description, which is the text the model reads
- [security] Tool “tokenintel_social_sentiment” rewrote its description, which is the text the model reads
- [security] Tool “tokenintel_health_matrix” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: pass → fail
- [functional regression] Resource “Active Marketplace Signals” was removed
- [functional regression] Resource “Agent Leaderboard” was removed
- [functional regression] Resource “Copy Trading Guide” was removed
- [functional regression] Resource “Top Agents by Token” was removed
- [functional] New prompt “odds_deep_dive”
- [functional] New tool “tokenintel_match_odds”
- [functional] New tool “tokenintel_register”
- [functional] New tool “tokenintel_odds_coverage”
- [cosmetic] “tokenintel_whale_flows” added an optional parameter “min_trade_usd”
- [cosmetic] “tokenintel_match_correlation” reworded the description of “competition_filter”

### 2026-07-28 (score 66, +1)

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

### 2026-07-27 (score 65, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 65)

First indexed and scored.

## MCP tools (25)

### `tokenintel_discover` (~106 tokens)

Discover available tools on the Fan Token Intel MCP server. Returns tool names and one-line descriptions, organized by category. Call with no arguments for all categories, or specify a category to filter. Categories: market_data, signals, sports, social, defi, agent, portfolio, volume, chain_info. Tip: connect with ?modules=market_data,signals to load only specific categories.

Input parameters:

- `category` (string): Filter to a specific category (optional). Omit for all.

### `tokenintel_describe` (~80 tokens)

Get the full input schema for a specific tool. Returns the JSON Schema (parameters, types, required fields, descriptions) needed to call the tool via tokenintel_invoke. Use tokenintel_discover first to find tool names.

Input parameters:

- `tool_name` (string, required): The tool name to describe (e.g. 'tokenintel_whale_flows').

### `tokenintel_invoke` (~104 tokens)

Invoke any tool on the Fan Token Intel MCP server by name. Pass the tool_name and its arguments. The result is identical to calling the tool directly. Auth and rate limits apply as normal. Use tokenintel_describe to get the required arguments first.

Input parameters:

- `arguments` (object): Arguments to pass to the tool (matches the tool's inputSchema).
- `tool_name` (string, required): The tool to invoke (e.g. 'tokenintel_whale_flows').

### `tokenintel_register` (~196 tokens)

Get a free Fan Token Intel API key, self-serve — no human in the loop. Provide a name, an email, and terms_accepted=true; the key (ti_live_...) comes back in the response along with your tier and rate limits. Free-tier keys unlock the read-only descriptive data layer (60 req/min); premium event-impact tools stay metered via x402. Pass the key as 'Authorization: Bearer ti_live_xxx' (HTTP) or the TOKENINTEL_API_KEY env var (stdio). Rate-limited to one registration per 10 minutes per caller.

Input parameters:

- `email` (string, required): Contact email. The key may require clicking the emailed verification link before authenticated calls succeed.
- `name` (string, required): Agent display name (3-100 chars)
- `terms_accepted` (boolean, required): Must be true to accept the Terms of Use and Privacy Policy (https://fantokenintel.com/legal).

### `tokenintel_briefing` (~157 tokens)

All-in-one ECOSYSTEM briefing: market regime, active signals, anomalies, health matrix, sports calendar, and whale activity in one response. Use instead of calling 6+ tools sequentially. USE THIS for a market-wide overview. USE tokenintel_token_context for a SINGLE-TOKEN deep dive (price, signals, health, whale flow, sports catalyst, news — all for one symbol). Returns data, not recommendations -- interpret results yourself.

Input parameters:

- `focus` (string): Optional token symbol to focus on (e.g., 'BAR'). Omit for full ecosystem view.
- `timeframe` (string): Briefing depth: 'morning' (24h window, default) or 'weekly' (7-day trends).

### `tokenintel_health_matrix` (~330 tokens)

Get health grades (A-F) for all tracked fan tokens. Each token is scored across trading volume, order-book liquidity, spread, holder distribution and price stability -- 5-pillar weighted: volume(25%) + liquidity(25%) + spread(20%) + holders(15%) + price_stability(15%). The grade is the token's percentile standing WITHIN the fan-token universe (A=top 10%, B=next 20%, C=middle 40%, D=next 20%, F=bottom 10%); health_score stays the absolute 0-100 pillar score. A pillar whose collector delivered no data is excluded and the remaining weights are renormalized (see missing_pillars), never scored as 0. Use this to quickly filter which tokens deserve attention relative to their peers. IMPORTANT for agents: cross-check 'coverage_summary' (detailed) or the per-token 'pillars' count (n_pillars, 2-5) — a token can hit 100/100 on only volume+price_stability when liquidity/spread/holders data is missing, so a high grade on thin coverage is NOT the same as full market depth. Detailed mode (default) includes the per-pillar sub-scores + coverage_summary; pass response_format='concise' to get just symbol/grade/score/change/pillars (~70% smaller).

Input parameters:

- `response_format` (string): 'detailed' (default) = all fields + legend; 'concise' = symbol/grade/score/change_24h only.

### `tokenintel_market_regime` (~49 tokens)

Get current market conditions — BTC trend, CHZ momentum, fear/greed index, and the platform's market regime classification. Useful for filtering or adjusting signal confidence based on macro conditions.

### `tokenintel_macro_context` (~36 tokens)

Get current crypto macro context: BTC dominance, CHZ price, funding rates, fear & greed index, and risk environment assessment.

### `tokenintel_token_context` (~115 tokens)

SINGLE-TOKEN deep dive: realtime price, CEX whale flow, on-chain Chiliz Chain (FanX) liquidity with slippage at 1%/5% of reserves, and upcoming matches for one symbol. The default tool to call before evaluating a trading decision on a specific token. USE THIS when you have a target token in mind. USE tokenintel_briefing when you want the market-wide overview instead.

Input parameters:

- `token` (string, required): Token symbol (e.g., ASR, BAR, CHZ)

### `tokenintel_realtime_prices` (~82 tokens)

Get the freshest available prices with staleness metadata. Returns price_age_seconds so agents know exactly how stale each price is. Lightweight and fast -- call this before any trade decision to get current prices. Supports multiple tokens in a single call.

Input parameters:

- `tokens` (string, required): Comma-separated token symbols (e.g., 'BAR,PSG,JUV')

### `tokenintel_price_candles` (~155 tokens)

Historical OHLCV price candles for any fan token. Intervals: 1h, 4h, 1d. Up to 180 days lookback. Returns open, high, low, close, volume for each period. Use for backtesting, charting, trend analysis, or building your own signals.

Input parameters:

- `days` (integer): Lookback in days (max 180). Default: 30.
- `interval` (string): Candle interval. Default: 4h.
- `limit` (integer): Max candles to return (max 500). Default: 200.
- `token` (string, required): Token symbol (e.g., 'BAR', 'PSG', 'CHZ').

### `tokenintel_whale_flows` (~248 tokens)

Get real-time whale distribution data for a fan token. Shows the ratio of whale sells to total whale activity on CEX exchanges. A sell_ratio above 0.65 indicates distribution (bearish). Data aggregated from CEX exchanges in real-time. USE THIS for aggregate buy/sell pressure on CEX. USE tokenintel_whale_trades for individual trade rows. USE tokenintel_dex_whales for on-chain (Chiliz Chain) swap whales.

Input parameters:

- `exchange` (string): Filter by specific exchange (optional). Options: binance, okx, htx, kucoin, bybit, gate, mexc, mercadobitcoin, upbit, coinbase
- `min_trade_usd` (number): Minimum trade size in USD (default: 1000). The source table ingests fan-token trades from $10 up, most of it retail-sized; pass 0 to include every trade.
- `timeframe_hours` (integer): Lookback window in hours (default: 4)
- `token` (string, required): Token symbol (e.g., ASR, BAR, CHZ, CITY, ATM, ACM, JUV, PSG)

### `tokenintel_social_sentiment` (~196 tokens)

Social sentiment for a fan token. The only live social source is the LunarCrush aggregated feed, and on the current plan it provides galaxy_score and alt_rank ONLY — sentiment and social_volume come back null (see lunarcrush.fields_unavailable); they are unavailable, not zero. Native X/Twitter ingestion was retired 2026-03-01 and native Reddit/YouTube ingestion has never run in production, so those blocks read 0 — data_sources labels each pipeline (active / no_recent_data / inactive_since_<date> / never_active). overall_sentiment is computed only from sources that actually reported activity and is null when none did. Descriptive community-mood data, not a recommendation.

Input parameters:

- `hours` (integer): Lookback window in hours (default: 24, max: 168)
- `token` (string, required): Token symbol (e.g., ASR, BAR, PSG). Required.

### `tokenintel_capital_rotation` (~67 tokens)

Cross-token capital flow analysis. Shows which fan tokens are gaining vs losing volume relative to their recent average. Detects rotation: when whales exit one token, where does the capital go?

Input parameters:

- `hours` (integer): Compare last N hours vs prior period. Default: 24.

### `tokenintel_match_impact_history` (~204 tokens)

Historical match price impact data for a fan token. Returns price snapshots at -24h, kickoff, fulltime, +1h, +24h with returns for each match. Filter by result (win/loss/draw), competition, venue. WINDOWS: return_total_pct is measured price_24h_before -> price_24h_after (it includes the pregame move, so it can differ in sign from a kickoff-anchored return); return_ko_to_24h_pct is kickoff -> +24h. See the 'semantics' block in the response. Use for backtesting sports-driven strategies.

Input parameters:

- `days` (integer): Lookback in days (max 365). Default: 90.
- `limit` (integer): Max matches (max 200). Default: 100.
- `result` (string): Filter by match result. Default: all.
- `token` (string, required): Token symbol (e.g., 'BAR').

### `tokenintel_match_correlation` (~147 tokens)

Historical match-to-price correlation. Ask 'what happens to BAR after Champions League wins?' and get backtested data with price impact percentages. Returns individual match records with price at kickoff, fulltime, +1h, +24h and aggregate stats (avg impact, win rate, best/worst).

Input parameters:

- `competition_filter` (string): Filter by competition type
- `limit` (integer): Number of matches to return (default 20, max 100)
- `result_filter` (string): Filter by match result
- `token` (string, required): Token symbol (e.g., BAR, PSG, JUV)
- `venue_filter` (string): Filter by home/away

### `tokenintel_goal_direction_asymmetry` (~128 tokens)

THE event-impact moat: how a fan token reacts when its team SCORES vs CONCEDES a goal, market-adjusted vs CHZ at +15/+30/+60m. The blended 'all goals' number hides the real signal — scoring is ~priced-in, conceding moves price. Returns the scored-vs-conceded decomposition with sample sizes and directional hit rates. Only computable here (needs the token<->team map). Descriptive history, not advice.

Input parameters:

- `minute_bucket` (string): Optional: restrict to goals in this match-minute bucket.

### `tokenintel_event_reaction_profile` (~220 tokens)

Event-conditioned, market-adjusted (vs CHZ) token reaction profiles for football events — by event_type x event_side(for/against) x minute x scoreline_state x importance. Returns mean/median abnormal return, match-clustered t-stat, bootstrap 95% CI, hit rate, decay/persistence, n_events, n_matches, FDR. Omit a dimension to pool. Every cell carries its sample size — descriptive history, not advice.

Input parameters:

- `clean_only` (boolean): Only non-overlapping events (conservative). Default true.
- `event_side` (string): 'for' = token's team scored / opponent sent off; 'against' = conceded / own red card.
- `event_type` (string): Event type.
- `horizon_min` (integer): Reaction horizon. Default 30.
- `importance` (string): Match importance bucket (e.g. high/medium/low).
- `minute_bucket` (string)
- `scoreline_state` (string): Token team's state BEFORE the event.

### `tokenintel_late_game_redcard_profile` (~114 tokens)

Red-card reaction profile (market-adjusted vs CHZ). Rare and high-impact: returns abnormal return at +15/+30/+60m with honest wide confidence intervals and sample size; flags cells with n<15. Descriptive history, not advice.

Input parameters:

- `event_side` (string): 'against' = token team's player sent off; 'for' = opponent sent off.
- `minute_bucket` (string): Optional match-minute bucket (e.g. '76-90' for late reds).

### `tokenintel_match_event_replay` (~178 tokens)

Event-by-event reaction tape for a single match: each goal/red card with its minute, running score, scoreline state, and the market-adjusted token reaction at +15/+30/+60m (plus pre-event drift). The non-reconstructable moat artifact. match_id selects that fixture; token (+ optional date) resolves ONE fixture (the date-selected or most recent) and returns its tape, match metadata, and an other_matches index. Events are never merged across fixtures.

Input parameters:

- `date` (string): Optional YYYY-MM-DD; with token, selects that day's fixture instead of the most recent.
- `match_id` (string): The matches.match_id (e.g. 'apifb_1391197').
- `token` (string): Token symbol — resolves its most recent (or date-selected) measured fixture.

### `tokenintel_match_odds` (~283 tokens)

Prediction-market odds curve for a single match from the in-play odds tape (odds_ticks): per-market (home/draw/away) implied-probability series with source labels (polymarket = CLOB midpoint, apifootball = de-vigged bookmaker odds), pre-match vs in-play segmentation against kickoff, and open/close/min/max summary stats per market. Settlement wind-down artifacts (ticks after a market first prints prob >= 0.99, or after full-time +15min) are excluded by default and counted via excluded_settlement_ticks. Curves are downsampled to <=300 points per market (labeled). match_id selects a fixture directly; token (+ optional date) resolves the most recent covered fixture. Use tokenintel_odds_coverage to discover which matches have odds data.

Input parameters:

- `date` (string): Optional YYYY-MM-DD; with token, selects that day's fixture instead of the most recent.
- `include_settlement_ticks` (boolean): Include post-settlement wind-down ticks in the curves (default false).
- `match_id` (string): The matches/odds_ticks match_id (e.g. 'apifb_1591866'). Covers fixtures with no fan token too.
- `token` (string): Fan token symbol — resolves its most recent (or date-selected) fixture with odds coverage.

### `tokenintel_odds_coverage` (~210 tokens)

Discover which matches have prediction-market odds coverage in the in-play odds tape (odds_ticks): per-match tick counts by source (polymarket = CLOB midpoint, apifootball = de-vigged bookmaker odds), in-play tick counts vs kickoff, capture span, live dataset totals (computed from the table, never hardcoded), and upcoming fixtures already mapped for capture. In-play odds are unbackfillable — a match that passed uncaptured stays uncovered. Use tokenintel_match_odds to fetch a covered match's probability curves.

Input parameters:

- `days_ahead` (integer): Include upcoming mapped fixtures kicking off within N days (0-90, default 7). 0 disables the upcoming section.
- `days_back` (integer): Only matches with kickoff within the last N days (1-365). Default: all captured history.
- `token` (string): Filter to one fan token's fixtures (e.g. PSG). Fixtures with no fan token are excluded when set.

### `tokenintel_governance_validators` (~43 tokens)

List active validators on Chiliz Chain governance. Shows validator addresses and total CHZ delegated to each. Use this to find the best validator before staking.

### `tokenintel_dex_depth` (~99 tokens)

Get DEX depth and slippage curves for fan token pools on Chiliz Chain. Computes constant-product (x*y=k) price impact at trade sizes [1%, 5%, 10%, 25%] of pool reserves. Useful for agents evaluating execution costs before trading. Data from latest on-chain liquidity snapshots.

Input parameters:

- `token` (string): Token symbol (optional). If omitted, returns all CHZ pairs sorted by TVL.

### `tokenintel_dex_liquidity` (~79 tokens)

Get on-chain DEX liquidity data for fan tokens on Chiliz Chain. Returns pool TVL, depth, token reserves, and estimated slippage. Critical for agents that want to understand execution costs before trading on-chain.

Input parameters:

- `token` (string): Token symbol (optional). If omitted, returns all pools sorted by TVL.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/brunopessoa22-fan-token-intel/mcp-production-f681#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 67
- 2026-08-01: 67
- 2026-07-31: 66
- 2026-07-30: 66
- 2026-07-29: 66
- 2026-07-28: 66
- 2026-07-27: 65
- 2026-07-26: 65

## Links

- Remote endpoint: https://mcp-production-f681.up.railway.app/mcp
- Repository: https://github.com/BrunoPessoa22/fantokenintel
- Website: https://www.fantokenintel.com/
- Changelog RSS feed: https://verifymcp.io/servers/brunopessoa22-fan-token-intel/mcp-production-f681/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/brunopessoa22-fan-token-intel/mcp-production-f681/changelog.json
- HTML version of this page: https://verifymcp.io/servers/brunopessoa22-fan-token-intel/mcp-production-f681
