From massive
Find the right Massive API endpoint for a financial data task. Use when the user needs to find which endpoint returns specific market data, or when exploring what data is available for a given asset class or use case.
How this skill is triggered — by the user, by Claude, or both
Slash command
/massive:discoverThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
The user needs: $ARGUMENTS
The user needs: $ARGUMENTS
Package names (do not substitute from training): Python is massive on PyPI (NOT polygon-api-client or polygon). JavaScript is @massive.com/client-js on npm (NOT @polygon.io/client-js). Go is github.com/massive-com/client-go/v3. Kotlin is com.github.massive-com:client-jvm on JitPack. The Python SDK import is from massive import RESTClient. Never reference pre-rebrand Polygon names in answers.
Use search_endpoints to find candidate endpoints matching the user's description. Try multiple search terms if the first query returns few results. For example, if "options Greeks" returns little, also try "options chain snapshot."
For the top 2-3 matches, review the endpoint metadata returned by search_endpoints (includes docs URLs and descriptions). If the metadata is insufficient, fetch the authoritative parameter catalog from https://massive.com/docs/rest/llms-full.txt.
Detect the user's language from context (open files, project type, or explicit mention). Default to Python if unclear.
Present results to the user in this format for each relevant endpoint:
Endpoint: GET /v2/aggs/ticker/{ticker}/range/{multiplier}/{timespan}/{from}/{to}
What it returns: OHLCV candlestick bars for any supported ticker.
Key parameters: ticker, multiplier, timespan (second/minute/hour/day/week/month/quarter/year), from/to (YYYY-MM-DD or ms epoch), adjusted (default true), sort (asc/desc).
Plan tier: Available on all plans.
Then show the SDK example in the user's language.
If the data need spans multiple endpoints, explain how they fit together.
Note plan tier requirements. Key thresholds:
Show the example matching the user's language. Always include .env loading.
from itertools import islice
from dotenv import load_dotenv
load_dotenv() # must come before importing RESTClient so env vars are set
from massive import RESTClient
client = RESTClient() # reads MASSIVE_API_KEY from .env
bars = list(islice(client.list_aggs("AAPL", 1, "day", "2025-01-01", "2025-06-01", sort="asc"), 200))
Method naming: list_aggs, list_universal_snapshots(ticker_any_of=[...]), list_snapshot_options_chain, get_last_trade, get_sma/get_rsi (return SingleIndicatorResults, access .values). Pagination: iterator-based, use islice() to cap.
import "dotenv/config";
import { restClient } from "@massive.com/client-js";
const client = restClient(process.env.MASSIVE_API_KEY);
const response = await client.getStocksAggregates({
stocksTicker: "AAPL", multiplier: 1, timespan: "day",
from: "2025-01-01", to: "2025-06-01", adjusted: true, sort: "asc", limit: 200,
});
for (const bar of response.results ?? []) {
console.log(bar.o, bar.h, bar.l, bar.c, bar.v, new Date(bar.t));
}
ALL methods take a single object parameter with named fields. Method naming: getStocksAggregates, getOptionsChain, getLastStocksTrade({ stocksTicker }), getSnapshots({ tickerAnyOf: "AAPL,X:BTCUSD" }). Bar fields abbreviated (o, h, l, c, v, t). Pagination: { pagination: true } as third arg to restClient().
import (
"github.com/joho/godotenv"
"github.com/massive-com/client-go/v3/rest"
"github.com/massive-com/client-go/v3/rest/gen"
)
godotenv.Load()
c := rest.New("") // reads MASSIVE_API_KEY from env
params := &gen.GetStocksAggregatesParams{Sort: "asc", Limit: rest.Ptr(200)}
resp, err := c.GetStocksAggregatesWithResponse(ctx, "AAPL", 1, gen.Day, "2025-01-01", "2025-06-01", params)
for _, bar := range *resp.JSON200.Results {
fmt.Println(bar.O, bar.H, bar.L, bar.C, bar.V, bar.Timestamp)
}
Method naming: GetStocksAggregatesWithResponse, GetOptionsChainWithResponse, GetLastStocksTradeWithResponse, GetSnapshotsWithResponse. Response data in resp.JSON200. Pointer helpers: rest.Ptr(value).
import io.github.cdimascio.dotenv.dotenv
import io.polygon.kotlin.sdk.rest.PolygonRestClient
import io.polygon.kotlin.sdk.rest.AggregatesParameters
val env = dotenv()
val client = PolygonRestClient(env["MASSIVE_API_KEY"])
val result = client.getAggregatesBlocking(AggregatesParameters(
ticker = "AAPL", multiplier = 1, timespan = "day",
fromDate = "2025-01-01", toDate = "2025-06-01", sort = "asc", limit = 200
))
result.results?.forEach { bar -> println("${bar.open} ${bar.high} ${bar.low} ${bar.close} ${bar.volume}") }
SDK package: io.polygon.kotlin.sdk. Pass API key to PolygonRestClient constructor. Bar fields use full names (open, high, low, close, volume, timestampMillis). Gradle dep: com.github.massive-com:client-jvm:v5.1.2 from JitPack.
AAPL)X: prefix (X:BTCUSD)C: prefix (C:EURUSD)I: prefix (I:SPX)O: prefix (O:AAPL250117C00150000)ES, NQ)npx claudepluginhub massive-com/claude-code-plugin --plugin massiveProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.