Fan Token Intel MCP
Fan Token Intel is a descriptive intelligence layer for AI agents focused on Chiliz Chain fan tokens. It provides 22+ tools for tracking whale flows, match-to-price correlations, on-chain metrics, and multi-chain token identity across Chiliz, Base, and Solana. The server offers factual data tagged with freshness and source, enabling agents to analyze market context without executing trades.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp-production-f681.up.railway.app/mcpWhat its tools do
25 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (25)
tokenintel_discovertokenintel_describetokenintel_invoketokenintel_registertokenintel_briefingtokenintel_health_matrixtokenintel_market_regimetokenintel_macro_contexttokenintel_token_contexttokenintel_realtime_pricestokenintel_price_candlestokenintel_whale_flowstokenintel_social_sentimenttokenintel_capital_rotationtokenintel_match_impact_historytokenintel_match_correlationtokenintel_goal_direction_asymmetrytokenintel_event_reaction_profiletokenintel_late_game_redcard_profiletokenintel_match_event_replaytokenintel_match_oddstokenintel_odds_coveragetokenintel_governance_validatorstokenintel_dex_depthtokenintel_dex_liquidity
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Warning Advertises resources/templates/list but does not implement it
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Track CEX whale distribution flows and accumulation patterns
- Analyze match-to-price correlation across 2,300+ matchdays
- Retrieve multi-chain token identity including contract addresses and TVL
- Monitor real-time fan token health grades and DEX liquidity depth
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- tokenintel 1.26.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 25 advertised
- Resources
- 4 advertised
- Resource templates
- Not advertised
- Prompts
- 5 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
25 advertised
tokenintel_discover
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.
{
"type": "object",
"required": [],
"properties": {
"category": {
"enum": [
"market_data",
"signals",
"sports",
"prediction_markets",
"social",
"defi",
"agent",
"portfolio",
"volume",
"chain_info"
],
"type": "string",
"description": "Filter to a specific category (optional). Omit for all."
}
}
}tokenintel_describe
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.
{
"type": "object",
"required": [
"tool_name"
],
"properties": {
"tool_name": {
"type": "string",
"description": "The tool name to describe (e.g. 'tokenintel_whale_flows')."
}
}
}tokenintel_invoke
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.
{
"type": "object",
"required": [
"tool_name"
],
"properties": {
"arguments": {
"type": "object",
"default": {},
"description": "Arguments to pass to the tool (matches the tool's inputSchema)."
},
"tool_name": {
"type": "string",
"description": "The tool to invoke (e.g. 'tokenintel_whale_flows')."
}
}
}tokenintel_register
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 whole read-only data layer, event-impact tools included (60 req/min). 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.
{
"type": "object",
"required": [
"name",
"email",
"terms_accepted"
],
"properties": {
"name": {
"type": "string",
"description": "Agent display name (3-100 chars)"
},
"email": {
"type": "string",
"description": "Contact email. The key may require clicking the emailed verification link before authenticated calls succeed."
},
"terms_accepted": {
"type": "boolean",
"description": "Must be true to accept the Terms of Use and Privacy Policy (https://fantokenintel.com/legal)."
}
}
}tokenintel_briefing
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.
{
"type": "object",
"required": [],
"properties": {
"focus": {
"type": "string",
"description": "Optional token symbol to focus on (e.g., 'BAR'). Omit for full ecosystem view."
},
"timeframe": {
"enum": [
"morning",
"weekly"
],
"type": "string",
"description": "Briefing depth: 'morning' (24h window, default) or 'weekly' (7-day trends)."
}
}
}tokenintel_health_matrix
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. Detailed mode (default) includes the per-pillar sub-scores; pass response_format='concise' to get just symbol/grade/score/change (~70% smaller) when you don't need team/league/volume/age detail.
{
"type": "object",
"required": [],
"properties": {
"response_format": {
"enum": [
"detailed",
"concise"
],
"type": "string",
"description": "'detailed' (default) = all fields + legend; 'concise' = symbol/grade/score/change_24h only."
}
}
}tokenintel_market_regime
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.
{
"type": "object",
"required": [],
"properties": {}
}tokenintel_macro_context
Get current crypto macro context: BTC dominance, CHZ price, funding rates, fear & greed index, and risk environment assessment.
{
"type": "object",
"required": [],
"properties": {}
}tokenintel_token_context
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.
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol (e.g., ASR, BAR, CHZ)"
}
}
}tokenintel_realtime_prices
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.
{
"type": "object",
"required": [
"tokens"
],
"properties": {
"tokens": {
"type": "string",
"description": "Comma-separated token symbols (e.g., 'BAR,PSG,JUV')"
}
}
}tokenintel_price_candles
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.
{
"type": "object",
"required": [
"token"
],
"properties": {
"days": {
"type": "integer",
"description": "Lookback in days (max 180). Default: 30."
},
"limit": {
"type": "integer",
"description": "Max candles to return (max 500). Default: 200."
},
"token": {
"type": "string",
"description": "Token symbol (e.g., 'BAR', 'PSG', 'CHZ')."
},
"interval": {
"enum": [
"1h",
"4h",
"1d"
],
"type": "string",
"description": "Candle interval. Default: 4h."
}
}
}tokenintel_whale_flows
Get real-time whale distribution data for a fan token. Shows the ratio of whale sells to total whale activity on CEX exchanges. sell_ratio = whale sell volume / total whale volume; the payload labels >0.65 'distribution' and <0.35 'accumulation' (descriptive labels, not a signal). 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.
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Token symbol (e.g., ASR, BAR, CHZ, CITY, ATM, ACM, JUV, PSG)"
},
"exchange": {
"type": "string",
"description": "Filter by specific exchange (optional). Options: binance, okx, htx, kucoin, bybit, gate, mexc, mercadobitcoin, upbit, coinbase"
},
"min_trade_usd": {
"type": "number",
"default": 1000,
"description": "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": {
"type": "integer",
"default": 4,
"description": "Lookback window in hours (default: 4)"
}
}
}tokenintel_social_sentiment
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.
{
"type": "object",
"required": [
"token"
],
"properties": {
"hours": {
"type": "integer",
"default": 24,
"description": "Lookback window in hours (default: 24, max: 168)"
},
"token": {
"type": "string",
"description": "Token symbol (e.g., ASR, BAR, PSG). Required."
}
}
}tokenintel_capital_rotation
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?
{
"type": "object",
"required": [],
"properties": {
"hours": {
"type": "integer",
"description": "Compare last N hours vs prior period. Default: 24."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Rows returned: the strongest movers by |relative_change_pct| (inflows and outflows both kept). Default 20; counts always cover the whole universe."
},
"min_volume_usd": {
"type": "number",
"default": 1000,
"minimum": 0,
"description": "Hide dust: tokens whose current AND prior rolling-24h volume are both below this. Default $1,000; pass 0 for everything."
}
}
}tokenintel_match_impact_history
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.
{
"type": "object",
"required": [
"token"
],
"properties": {
"days": {
"type": "integer",
"description": "Lookback in days (max 365). Default: 90."
},
"limit": {
"type": "integer",
"description": "Max matches (max 200). Default: 100."
},
"token": {
"type": "string",
"description": "Token symbol (e.g., 'BAR')."
},
"result": {
"enum": [
"win",
"loss",
"draw",
"all"
],
"type": "string",
"description": "Filter by match result. Default: all."
}
}
}tokenintel_match_correlation
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).
{
"type": "object",
"required": [
"token"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"description": "Number of matches to return (default 20, max 100)"
},
"token": {
"type": "string",
"description": "Token symbol (e.g., BAR, PSG, JUV)"
},
"venue_filter": {
"enum": [
"home",
"away",
"all"
],
"type": "string",
"default": "all",
"description": "Filter by home/away"
},
"result_filter": {
"enum": [
"win",
"loss",
"draw",
"all"
],
"type": "string",
"default": "all",
"description": "Filter by match result"
},
"competition_filter": {
"enum": [
"all",
"champions_league",
"europa_league",
"domestic",
"cup"
],
"type": "string",
"default": "all",
"description": "Filter by competition type"
}
}
}tokenintel_goal_direction_asymmetry
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.
{
"type": "object",
"required": [],
"properties": {
"minute_bucket": {
"enum": [
"0-15",
"16-30",
"31-45",
"46-60",
"61-75",
"76-90",
"90+"
],
"type": "string",
"description": "Optional: restrict to goals in this match-minute bucket."
}
}
}tokenintel_event_reaction_profile
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.
{
"type": "object",
"required": [],
"properties": {
"clean_only": {
"type": "boolean",
"description": "Only non-overlapping events (conservative). Default true."
},
"event_side": {
"enum": [
"for",
"against"
],
"type": "string",
"description": "'for' = token's team scored / opponent sent off; 'against' = conceded / own red card."
},
"event_type": {
"enum": [
"goal",
"red_card"
],
"type": "string",
"description": "Event type."
},
"importance": {
"type": "string",
"description": "Match importance bucket (e.g. high/medium/low)."
},
"horizon_min": {
"enum": [
15,
30,
60
],
"type": "integer",
"description": "Reaction horizon. Default 30."
},
"minute_bucket": {
"enum": [
"0-15",
"16-30",
"31-45",
"46-60",
"61-75",
"76-90",
"90+"
],
"type": "string"
},
"scoreline_state": {
"enum": [
"leading",
"level",
"trailing"
],
"type": "string",
"description": "Token team's state BEFORE the event."
}
}
}tokenintel_late_game_redcard_profile
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.
{
"type": "object",
"required": [],
"properties": {
"event_side": {
"enum": [
"for",
"against"
],
"type": "string",
"description": "'against' = token team's player sent off; 'for' = opponent sent off."
},
"minute_bucket": {
"enum": [
"0-15",
"16-30",
"31-45",
"46-60",
"61-75",
"76-90",
"90+"
],
"type": "string",
"description": "Optional match-minute bucket (e.g. '76-90' for late reds)."
}
}
}tokenintel_match_event_replay
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.
{
"type": "object",
"required": [],
"properties": {
"date": {
"type": "string",
"description": "Optional YYYY-MM-DD; with token, selects that day's fixture instead of the most recent."
},
"token": {
"type": "string",
"description": "Token symbol — resolves its most recent (or date-selected) measured fixture."
},
"match_id": {
"type": "string",
"description": "The matches.match_id (e.g. 'apifb_1391197')."
}
}
}tokenintel_match_odds
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.
{
"type": "object",
"required": [],
"properties": {
"date": {
"type": "string",
"description": "Optional YYYY-MM-DD; with token, selects that day's fixture instead of the most recent."
},
"token": {
"type": "string",
"description": "Fan token symbol — resolves its most recent (or date-selected) fixture with odds coverage."
},
"match_id": {
"type": "string",
"description": "The matches/odds_ticks match_id (e.g. 'apifb_1591866'). Covers fixtures with no fan token too."
},
"include_settlement_ticks": {
"type": "boolean",
"default": false,
"description": "Include post-settlement wind-down ticks in the curves (default false)."
}
}
}tokenintel_odds_coverage
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.
{
"type": "object",
"required": [],
"properties": {
"token": {
"type": "string",
"description": "Filter to one fan token's fixtures (e.g. PSG). Fixtures with no fan token are excluded when set."
},
"days_back": {
"type": "integer",
"description": "Only matches with kickoff within the last N days (1-365). Default: all captured history."
},
"days_ahead": {
"type": "integer",
"default": 7,
"description": "Include upcoming mapped fixtures kicking off within N days (0-90, default 7). 0 disables the upcoming section."
}
}
}tokenintel_governance_validators
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.
{
"type": "object",
"required": [],
"properties": {}
}tokenintel_dex_depth
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.
{
"type": "object",
"required": [],
"properties": {
"token": {
"type": "string",
"description": "Token symbol (optional). If omitted, returns all CHZ pairs sorted by TVL."
}
}
}tokenintel_dex_liquidity
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.
{
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 200,
"minimum": 1,
"description": "Max pools when no token is given (sorted by TVL). Default 25; pools_total reports the full count."
},
"token": {
"type": "string",
"description": "Token symbol (optional). If omitted, returns all pools sorted by TVL."
}
}
}Prompts
5 advertised
pre_trade_check
Pre-trade due-diligence for one token: aggregate context, cross-venue price dislocation, live whale distribution, and on-chain depth. Requires an authenticated agent (free key via tokenintel_register).
- token
- Fan token symbol, e.g. BAR, CITY, CHZ, ASR (required)
morning_briefing
Daily market-open snapshot: composite briefing, concise token health grades, and today's match catalysts. Requires an authenticated agent (free key via tokenintel_register).
signal_now
What is factually moving right now: live whale distribution, capital rotation between tokens, and imminent match catalysts — descriptive data, no trade recommendations. Requires an authenticated agent.
- token
- Optional fan token symbol to focus on (e.g. BAR). Omit for all.
token_deep_dive
Full intelligence context for one token (price, whale flows, signals, sports calendar, social). Requires an authenticated agent.
- token
- Fan token symbol, e.g. ASR, CITY, CHZ (required)
odds_deep_dive
Prediction-market odds walkthrough for one match: discover coverage, pull the implied-probability curves (pre-match vs in-play), and put the token's historical post-match behavior next to them. Public tools — no key needed for the odds tape.
- token
- Fan token symbol whose fixture to analyze (e.g. PSG). Omit if passing match_id.
- match_id
- Optional odds-tape match_id (e.g. apifb_1591866) from tokenintel_odds_coverage.
Resources
4 advertised
Tracked Tokens
All tokens tracked by TokenIntel with metadata
tokenintel://tokens/listMarket Regime
Current market regime classification
tokenintel://market/regimeSignal Performance
Platform signal performance summary (last 30 days)
tokenintel://signals/performanceAgent Quickstart Guide
How to get a free key and navigate the descriptive data layer (prices, whale flows, match impact, odds tape, event-impact)
tokenintel://docs/quickstart90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1735 ms
- 95th percentile latency
- 1735 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1735 ms · metadata changed · 25 tool(s), 4 resource(s), 5 prompt(s); warnings: Advertises resources/templates/list but does not implement it
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http fan-token-intel-mcp https://mcp-production-f681.up.railway.app/mcpCodex
codex mcp add fan-token-intel-mcp --url https://mcp-production-f681.up.railway.app/mcpCursor
{
"mcpServers": {
"fan-token-intel-mcp": {
"url": "https://mcp-production-f681.up.railway.app/mcp"
}
}
}Cline
{
"mcpServers": {
"fan-token-intel-mcp": {
"type": "streamableHttp",
"url": "https://mcp-production-f681.up.railway.app/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"fan-token-intel-mcp": {
"type": "http",
"url": "https://mcp-production-f681.up.railway.app/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http fan-token-intel-mcp https://mcp-production-f681.up.railway.app/mcpClaude Desktop
https://mcp-production-f681.up.railway.app/mcpWindsurf
{
"mcpServers": {
"fan-token-intel-mcp": {
"serverUrl": "https://mcp-production-f681.up.railway.app/mcp"
}
}
}Let your agent find its tools
Find servers like Fan Token Intel MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.