Connect AI agents to WhaleCreep
WhaleCreep runs a hosted MCP server, so Muse, Claude and any other MCP client can look up hedge fund 13F holdings, crowding and the daily cross-asset market scan. All tools are read-only.
Endpoint
https://whalecreep.com/mcp
Transport is MCP Streamable HTTP, stateless, answering with plain JSON (no server-sent events). Send JSON-RPC requests as POST with Accept: application/json, text/event-stream.
Access and authentication
- Who can connect: any WhaleCreep account on a paid plan (Lifetime today). Free accounts cannot create keys.
- API keys: sign in, open your account and create a key under API keys. It starts with
wc_and is shown once. Up to 5 keys per account; revoke one there and it stops working at once. - Send it as a bearer token on every request:
Authorization: Bearer wc_… - If the account's plan ends, its keys stop working within five minutes.
Setup
Muse, Claude and other MCP clients
Add a remote MCP server with the URL above and a custom header Authorization set to Bearer followed by your key. In a client that takes a JSON config:
{
"mcpServers": {
"whalecreep": {
"type": "http",
"url": "https://whalecreep.com/mcp",
"headers": { "Authorization": "Bearer wc_YOUR_KEY" }
}
}
}
Check it by hand
curl -s https://whalecreep.com/mcp \
-H "Authorization: Bearer wc_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_stock_holders","arguments":{"ticker":"NVDA","limit":5}}}'
Tools
search_securities
Find stocks held by tracked funds, by ticker or issuer name. Returns tickers with how many tracked funds hold each and their combined value in USD.
query(required): Ticker or company name, e.g. 'NVDA' or 'nvidia'limit(default10)
list_funds
Every tracked fund with its id, latest 13F quarter, number of equity positions and reported equity value in USD, plus data freshness. Use the `fund` id with get_fund_holdings.
get_fund_holdings
A fund's 13F equity book for one quarter: top positions by value with weight, shares and the change in shares from the previous filing (new / added / trimmed / held), plus positions exited that quarter.
fund(required): Fund id from list_funds, or its name, e.g. 'berkshire_hathaway' or 'Pershing Square'quarter: Quarter-end date YYYY-MM-DD; latest if omittedlimit(default25)
get_stock_holders
Which tracked funds hold a stock in their latest 13F, ranked by weight in their own book, with the quarter's action (new / added / trimmed / held), recent exits, and how many funds held it over the last eight quarters.
ticker(required): Ticker, e.g. 'NVDA'limit(default25)
get_early_holders
Who discovered a stock first: the tracked funds with the earliest meaningful 13F positions in it (first reported quarter, initial and peak weight, whether still held, the stock's price change since), funds already holding when coverage of them began, and descriptive adoption phases. Quarterly and long-only: not exact purchase dates, and not any fund's return.
ticker(required): Ticker, e.g. 'NVDA'limit(default8)
get_fund_discoveries
A fund's discovery track record: stocks where it was among the first tracked funds to hold a meaningful 13F position, with first reported quarter, peak weight, whether still held and the stock's price change since. Descriptive history, not a measure of the fund's skill or returns.
fund(required): Fund id from list_funds, e.g. 'pershing_square'limit(default25)
get_crowding
Crowding among concentrated managers for one quarter: the most widely held names, names several managers opened in the same quarter (the more informative signal), and names several exited.
quarter: Quarter-end date YYYY-MM-DD; latest if omittedmin_weight(default1.0): Only count positions at least this % of a fund's booklimit(default15)
list_market_groups
The market scan's instrument groups (US sectors and industries, global equity, commodities, FX, the Treasury curve, credit, volatility, crypto, macro, rotation ratios). Pass a group id to get its instruments' ids.
group: A group id to list its instruments; omit for the groups only
get_market_scan
The daily cross-asset scan: for every instrument, the rate of change (d1) and its acceleration (d2) over the timeframe. Price-like instruments are in percent, yields and spreads in basis points. An instrument can be up over the window and still decelerating: d2 is what catches the turn.
timeframe(default3m): One of 1d, 1w, 1m, 2m, 3m, 6m, 1ygroups: Group ids from list_market_groups; all groups if omitted
get_sector_regimes
US sectors and industries classified into four regimes (Accelerating Leader, Emerging Leader, Fading Leader, Accelerating Laggard), ranked by an acceleration score normalised against each sector's own history.
reference(default3m): Horizon the regime is judged on: 1m, 2m, 3m, 6m or 1y
get_price_series
Daily closing levels for one instrument over the timeframe.
instrument_id(required): Instrument id from list_market_groups, e.g. 'spy'timeframe(default3m): One of 1m, 3m, 6m, 1y
Units and caveats
- A 13F is a quarter-end snapshot filed up to 45 days later. It lists long US equity positions only: no shorts, swaps, cash or most foreign listings, so it shows neither a fund's current positions nor its performance.
- Position changes are measured in shares, not value, so price moves do not read as decisions. Values are in US dollars.
- In the market scan,
d1is the rate of change over the timeframe andd2its acceleration (this window's change minus the previous window's). Price-like instruments are in percent; yields and spreads in basis points. - Data is refreshed daily. See the methodology. Nothing here is investment advice.
Limits and errors
- Fair use: 60 calls a minute and 5000 a day per key.
401missing, invalid or revoked key ·403the account has no paid plan ·429rate limit ·503temporarily unavailable. A tool that cannot answer (an unknown ticker, say) returns an MCP result withisError: trueand a message saying what to try instead.
Support
[email protected]. Use of the API is covered by the terms of service and the privacy policy.