alphameta-kline — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited alphameta-kline (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Fetch candlestick / OHLCV data via Interactive Brokers — latest N bars, history by date range, and today's intraday minute curve. Supports 1m to month periods with split/dividend-adjusted pricing.
adj flagNVDA, AAPL, SPY). AlphaMeta handles contract resolution via its position/quote database.period, count). Use trading-day counts (1 year ≈ 252 trading days, 1 month ≈ 22):day, 5day, 22day, 66day, 126day, 252 curl -X POST "http://127.0.0.1:18080/api/v1/execute" \
-H "Content-Type: application/json" \
-d '{"cmd": "kline <SYMBOL> <ARGS>"}'Concrete examples:
# Latest 100 daily bars
curl ... -d '{"cmd": "kline AAPL day 100"}'
# Last 200 5m candles with split+dividend adjustment
curl ... -d '{"cmd": "kline NVDA 5m 200 adj"}'
# History by date range (daily)
curl ... -d '{"cmd": "kline AAPL 2025-01-01 2025-06-30 day"}'
# Today's intraday 1m chart (includes pre/after-market data)
curl ... -d '{"cmd": "kline NVDA intraday"}'(last_close - first_close) / first_close. Cite data source as AlphaMeta / Interactive Brokers.| Rationalization | Reality |
|---|---|
"day 30 is roughly one month" | 30 trading bars ≈ 6 calendar weeks. For one calendar month use day 22 |
| "Net move = (last open − first open) / first open" | Always use close-to-close: (last_close − first_close) / first_close |
| "I'll pass the raw JSON to the user" | Raw JSON is unreadable. Must translate to prose: range high/low, net change, volume, trend |
| "Count = calendar days" | Count = number of bars, not days. day 5 = 5 daily bars covering ~7 calendar days |
| "Intraday works for any past date" | Intraday mode only supports today. For historical minute data use history mode with 1m period |
| "Count is the exact number of bars returned" | Count is a minimum — for longer periods (week/month) IBKR may return more bars than requested |
kline <SYMBOL> <START> <END> 1mquote firstreqHistoricalDataAsync is called with useRTH=False for all three modes (_kline, _history, _intraday). The command does NOT accept a useRTH flag; any useRTH token in the command string is silently ignored. All results include pre-market and after-hours data. Mention this if the user expects strict trading-session data.kline AAPL 2026-05-01 2026-05-07 day may include a bar dated 2026-04-30. Always compute the actual date range from the returned data.The API returns a JSON envelope. The candlestick data lives in result.bars:
{
"success": true,
"request_id": "req-xxx",
"result": {
"symbol": "AAPL",
"period": "day",
"count": 5,
"adjust": "none",
"bars": [
{
"date": "2026-05-08",
"open": 287.86,
"high": 294.76,
"low": 287.5,
"close": 293.86,
"volume": 39300184,
"average": 293.118,
"barCount": 258450
}
]
},
"execution_time_ms": 2558
}Variations by mode:
result has start, end instead of countdate is ISO 8601 datetime (e.g. 2026-05-14T09:30:00), no adjust fieldAlways read from response.result.bars[]. Never pass raw JSON to the user — present results as prose with markdown formatting:
**{Symbol} — {Period} ({N} bars, {date range})**
Range: ${high} ~ ${low} | Close-to-close: ${first_close} → ${last_close} ({sign}{X.Y%})
Volume: avg {X} shares/day — {volume pattern note}
Trend: {1-2 sentence summary of price action, key levels, and pattern}**NVDA — Daily (5 bars, May 6–12)**
Range: $196.16 ~ $223.75 | Close-to-close: $207.26 → $219.48 (▲ +5.9%)
Volume: avg 126M shares/day — elevated throughout
Trend: Strong uptrend from $196 support, 5 consecutive green candles with above-average volume.**NVDA — 1m Intraday (111 bars, May 14)**
Range: $229.36 ~ $233.22 | Open: $231.34 → Now: $230.26 (▼ -0.5%)
Volume: heavy in first 2 minutes (1.4M shares), then tapered to ~10K/min
Trend: Opened with a spike to $233.22, then gradual selloff through the morning. Intraday low of $229.36 at 09:39, minor bounce to $230.26.Intraday output should mention the opening spike/drop, session high/low, and whether volume confirms the trend. For multi-day history, highlight the directional bias, key support/resistance levels, and any volume anomalies.
Always attach ▲/▼ direction arrows to net move. Cite source: AlphaMeta / Interactive Brokers.
See the alphameta skill for server setup and command execution syntax.
TRADES): split-adjusted onlyADJUSTED_LAST): split + dividend adjusted (flag syntax only — --adjust prefix is NOT supported)| Period | Aliases | Bar Size |
|---|---|---|
1m | minute | 1 minute |
5m | — | 5 minutes |
15m | — | 15 minutes |
30m | — | 30 minutes |
1h | hour | 1 hour |
day | d, 1d | 1 day |
week | w | 1 week |
month | m, 1mo | 1 month |
Data is sourced from Interactive Brokers (IBKR) historical data feed. Quality depends on the exchange and contract type. For options, futures, and non-stock instruments, data availability may vary.
On failure the API returns a JSON error object instead of result:
{
"success": false,
"error": {
"code": "COMMAND_ERROR",
"message": "Symbol not found: INVALID999999"
}
}Surface error.message to the user — never silently retry.
| Situation | Reply |
|---|---|
| Service not running (health check fails) | Start the service: alphameta start |
error.code == "COMMAND_ERROR" | Surface error.message verbatim. Common messages: Symbol not found, Start must be before end |
| No data returned for range | Expand the date range or switch to a shorter period |
| Network / timeout | Retry; if persistent, check IBKR connection via /health |
alphameta-quotealphameta-technicalalphameta-quote~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.