{
  "version": "1.0.0",
  "server": {
    "name": "aftermath-altdata",
    "documentation": "https://ah.mphinance.com/mcp"
  },
  "tools": [
    {
      "name": "get_market_tape",
      "description": "Retrieve real-time macro tape overview: whale cash reserves (dry powder), intraday net P&L, equity/ETF allocation split, and top capital inflow & retail breadth leaders from AfterHour terminal.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_top_equities",
      "description": "Filter and rank 500 verified stocks with customizable thresholds for whale capital, owner count, conviction intensity ($/holder), price movement, and asset type segregation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Maximum number of items to return (default: 20, max: 100)",
            "default": 20
          },
          "min_whale_capital": {
            "type": "number",
            "description": "Minimum verified capital held by tracked whales in USD (e.g. 1000000 for $1M+)",
            "default": 0
          },
          "min_conviction": {
            "type": "number",
            "description": "Minimum verified position size per holder in USD (e.g. 50000 for $50k+/sub)",
            "default": 0
          },
          "min_owners": {
            "type": "integer",
            "description": "Minimum number of verified holders on the app",
            "default": 0
          },
          "asset_type": {
            "type": "string",
            "enum": [
              "all",
              "stocks",
              "etfs"
            ],
            "description": "Segregate by asset classification (default: 'all')",
            "default": "all"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "whale_capital",
              "total_value",
              "owners",
              "conviction",
              "change_percent"
            ],
            "description": "Metric to rank results by (default: 'whale_capital')",
            "default": "whale_capital"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_etf_flows",
      "description": "Inspect 64 ETFs & index funds ranked by whale backing, expense ratios, asset classes (equity, broad market, thematic, crypto, fixed income), and retail crowd adoption.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Maximum ETFs to return (default: 20)",
            "default": 20
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "whale_capital",
              "owners",
              "total_value",
              "change_percent"
            ],
            "description": "Metric to rank ETFs by (default: 'whale_capital')",
            "default": "whale_capital"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_whale_portfolio",
      "description": "Look up any verified whale account by username (e.g. 'thealexperez', 'SirJackALot', 'MisterMonster') to inspect verified positions, cost basis, unrealized profit, cash balance, and shadow ratio. Set live=true for positions marked to current prices (60s cache, any PUBLIC portfolio); it includes last_synced_at, because quantities are only as fresh as the broker sync, often months old.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "AfterHour username of the whale to audit (with or without '@')"
          },
          "live": {
            "type": "boolean",
            "description": "Fetch current marked positions from AfterHour instead of the cached census",
            "default": false
          }
        },
        "required": [
          "username"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_ticker_intel",
      "description": "Forensic intelligence on any ticker ($NVDA, $ASTS, $AAPL, etc.) with verified holders, conviction intensity ($/sub), top whale holders breakdown, and optional 90-day daily OHLCV bars.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "Stock or ETF ticker symbol (e.g. 'ASTS', 'NVDA', 'AAPL', 'QQQ')"
          },
          "include_bars": {
            "type": "boolean",
            "description": "Set to true to include the 90-day daily OHLCV candlestick price bars series",
            "default": false
          }
        },
        "required": [
          "ticker"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "screen_whales",
      "description": "Filter and rank 424 broker-verified whales and millionaires by net worth, cash reserves, unrealized profit, daily return, follower counts, and shadow ratio.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "min_net_worth": {
            "type": "number",
            "description": "Minimum verified portfolio value in USD (e.g. 1000000 for $1M+)",
            "default": 0
          },
          "min_cash": {
            "type": "number",
            "description": "Minimum uninvested cash balance in USD (dry powder)",
            "default": 0
          },
          "min_profit": {
            "type": "number",
            "description": "Minimum total unrealized profit in USD",
            "default": 0
          },
          "min_profit_pct": {
            "type": "number",
            "description": "Minimum profit percentage (e.g. 25 for +25%)",
            "default": 0
          },
          "min_followers": {
            "type": "integer",
            "description": "Minimum social followers on the platform",
            "default": 0
          },
          "max_followers": {
            "type": "integer",
            "description": "Maximum social followers (useful for filtering stealth whales)"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "net_worth",
              "cash",
              "profit",
              "profit_percent",
              "profit_today",
              "followers",
              "shadow_ratio"
            ],
            "description": "Metric to rank whales by (default: 'net_worth')",
            "default": "net_worth"
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of whales to return (default: 20, max: 100)",
            "default": 20
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_shadow_whales",
      "description": "Scan for Clout Inversions and stealth accounts: verified traders holding high capital ($500k+ to $15M+) with negligible retail followings (<500 followers).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "min_capital": {
            "type": "number",
            "description": "Minimum verified capital in USD (default: 500000)",
            "default": 500000
          },
          "max_followers": {
            "type": "integer",
            "description": "Maximum allowed follower count (default: 500)",
            "default": 500
          },
          "min_shadow_ratio": {
            "type": "number",
            "description": "Minimum verified capital divided by followers (default: 2000)",
            "default": 2000
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of shadow whales to return (default: 20)",
            "default": 20
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_social_feed",
      "description": "Retrieve real-time community posts, commentary, sentiment, and broker-verified trade snapshots from AfterHour traders.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "Filter posts mentioning a specific ticker (e.g. 'NVDA' or 'ASTS')"
          },
          "username": {
            "type": "string",
            "description": "Filter posts authored by a specific trader handle"
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of posts to return (default: 20, max: 50)",
            "default": 20
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_funnel_accounts",
      "description": "Look up AfterHour accounts flagged for funneling traders into Telegram channels, with evidence tier (reported/corroborated/verified), shared invite-link clusters, and posting stats. Check a username or t.me link before you join. Flagged for investigation, not a finding of fraud. Curated by https://telegramscammers.com (database: /database, submit intel: /submit).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "AfterHour username (substring match)"
          },
          "telegram_link": {
            "type": "string",
            "description": "t.me link or handle to look up (e.g. 't.me/gammasphere47')"
          },
          "tier": {
            "type": "string",
            "enum": [
              "reported",
              "corroborated",
              "verified"
            ],
            "description": "Filter by evidence tier"
          },
          "limit": {
            "type": "integer",
            "description": "Max accounts to return (default 25, max 100)",
            "default": 25
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_funnel_callouts",
      "description": "Parsed trade callouts, plus the most called-out tickers overall when unfiltered (ticker, side, strike, expiry, entry, action, quoted result) from public Telegram channels linked to flagged AfterHour accounts, with an independent scored 'outcome' where available. Quoted results are the channel's own claims, and the sample is small. Flagged for investigation, not a finding of fraud. Curated by https://telegramscammers.com.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string",
            "description": "Ticker symbol, e.g. 'SPY'"
          },
          "channel": {
            "type": "string",
            "description": "Channel handle or t.me link (substring match)"
          },
          "action": {
            "type": "string",
            "enum": [
              "open",
              "close",
              "mention"
            ],
            "description": "Filter by callout action"
          },
          "limit": {
            "type": "integer",
            "description": "Max callouts to return (default 25, max 100)",
            "default": 25
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_funnel_scorecard",
      "description": "Public scoring results for trade callouts posted by Telegram channels linked to flagged AfterHour accounts. Section 'paths' (the main view): what each called-out option contract did after the post, from its own 5-minute trade bars (calls posted in the session get the next 30 minutes, daily callouts the whole next session; fill = open of the first bar at or after the post): share that ended above the fill, median peak and drawdown, +50%/-50% TP-first versus SL-first, fill-delay sensitivity, unfillable-quote share, per channel, ticker and hour. Section 'options': the same callouts held to expiry (secondary view). Section 'fx': forex/gold/index signals (TP1 first versus SL first, mean R). Every rate carries its sample size and a Wilson 95% range; assumptions and limitations are included (trade prints, no spread or slippage). Analysis of public posts, not advice. Flagged for investigation, not a finding of fraud. Credit https://telegramscammers.com. Method: https://ah.mphinance.com/scorecard",
      "inputSchema": {
        "type": "object",
        "properties": {
          "section": {
            "type": "string",
            "enum": [
              "paths",
              "options",
              "fx",
              "all"
            ],
            "description": "Which part to return: paths (price paths after the call), options (held to expiry), fx, or all (default all)",
            "default": "all"
          },
          "channel": {
            "type": "string",
            "description": "Channel handle or t.me link (substring match); filters the per-channel tables"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_market_session",
      "description": "LIVE (60s cache). Use for 'is the market open / what session is it / when does it close'. Returns current phase (pre, regular, after, overnight, closed), early-close flag, next transition and seconds until it, computed server-side in UTC.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "YYYY-MM-DD (default: today, US Eastern)"
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_live_quotes",
      "description": "LIVE (30s cache). Use for current price. Up to 25 symbols: last price, session change, pre-market and after-hours change, OHLC, volume. Percent fields are percent units (1.1 = 1.1%). Do NOT use for whale or conviction data (use get_ticker_intel).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbols": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ticker symbols, max 25"
          }
        },
        "required": [
          "symbols"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_leaderboard",
      "description": "LIVE (2 min cache). Use for 'what is trending / most watched / top gainers / top losers' across the whole platform (~33k securities, crowd-ranked). Do NOT use for whale-capital ranking of the verified 500 (use get_top_equities). GAINERS only supports DAY. Percent fields are percent units.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sort": {
            "type": "string",
            "enum": [
              "TRENDING",
              "WATCHERS",
              "OWNERS",
              "GAINERS",
              "LOSERS"
            ],
            "default": "TRENDING"
          },
          "time_range": {
            "type": "string",
            "enum": [
              "DAY",
              "WEEK",
              "MONTH",
              "THREE_MONTH",
              "YEAR_TO_DATE"
            ],
            "default": "DAY"
          },
          "take": {
            "type": "integer",
            "description": "Max 50",
            "default": 20
          },
          "cursor": {
            "type": "integer",
            "description": "Offset from a previous next_cursor",
            "default": 0
          }
        },
        "additionalProperties": false
      }
    },
    {
      "name": "get_security_chart",
      "description": "LIVE (5 min cache). OHLCV bars for any platform ticker at minute, hour, day, week or month resolution, up to 365 days back, last 500 bars. Use for any ticker's price history.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "symbol": {
            "type": "string"
          },
          "timespan": {
            "type": "string",
            "enum": [
              "minute",
              "hour",
              "day",
              "week",
              "month"
            ],
            "default": "day"
          },
          "multiplier": {
            "type": "integer",
            "description": "Bar size multiplier, max 60",
            "default": 1
          },
          "days": {
            "type": "integer",
            "description": "Lookback in days, max 365",
            "default": 30
          }
        },
        "required": [
          "symbol"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "get_retail_sentiment",
      "description": "SNAPSHOT (refreshed every 5 min, public AfterHour posts). Retail stance. With a ticker: bull/bear votes, net score (-1..1), voting authors, confidence, calls vs puts opened, quality flags (duplicate text, low-follower share, Telegram-in-bio authors) and top posts. Without one, view=buzz ranks tickers by mention surge, view=divergence compares retail stance to verified whale capital, view=options_bias lists call/put activity. Direction comes only from explicit CALL/PUT plus an open verb, so most posts are neutral: always read n_voting_authors and confidence.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ticker": {
            "type": "string"
          },
          "view": {
            "type": "string",
            "enum": [
              "ticker",
              "buzz",
              "divergence",
              "options_bias"
            ]
          },
          "window": {
            "type": "string",
            "enum": [
              "24h",
              "72h",
              "7d"
            ],
            "default": "24h"
          },
          "limit": {
            "type": "integer",
            "default": 15
          }
        },
        "additionalProperties": false
      }
    }
  ],
  "resources": [
    {
      "uri": "aftermath://market-tape",
      "name": "Live Market Tape & Liquidity",
      "description": "Real-time snapshot of whale cash reserves, net daily profit, and asset allocation.",
      "mimeType": "application/json"
    },
    {
      "uri": "aftermath://top-stocks",
      "name": "Top Verified Equities",
      "description": "Top 50 securities by verified whale capital.",
      "mimeType": "application/json"
    },
    {
      "uri": "aftermath://etfs",
      "name": "All 64 Verified ETFs",
      "description": "Complete list of ETFs with whale backing and asset classifications.",
      "mimeType": "application/json"
    },
    {
      "uri": "aftermath://whales",
      "name": "Top Verified Whales",
      "description": "Top 50 verified whales ranked by net worth.",
      "mimeType": "application/json"
    },
    {
      "uri": "aftermath://shadow-whales",
      "name": "Shadow Whales & Clout Inversions",
      "description": "Stealth traders with massive verified capital and minimal retail followings.",
      "mimeType": "application/json"
    },
    {
      "uri": "aftermath://conviction",
      "name": "Asymmetric Conviction Screener",
      "description": "Top securities ranked by verified position size per holder ($/sub).",
      "mimeType": "application/json"
    },
    {
      "uri": "aftermath://social-feed",
      "name": "Live Social Trade Feed",
      "description": "Recent verified community posts and live trade snapshots.",
      "mimeType": "application/json"
    }
  ]
}