The data tools family covers market data retrieval and progressive skill discovery. It contains three direct tools: market_get_ohlcv for raw price bars, search_skills for finding skill-backed data sources, and describe_skill for reading a skill’s full manifest before running it.
market_get_ohlcv
Fetch OHLCV (open, high, low, close, volume) bars for a symbol. The response is wrapped in a provenance envelope that records the upstream provider, the fetch timestamp, and a content hash — so every data point is auditable and reproducible.
Arguments
| Argument | Type | Required | Description |
|---|
symbol | string | Yes | Ticker symbol, e.g. NVDA. |
range | string | Yes | Date range, e.g. 1y, 6m, ytd. |
interval | string | No | Bar interval: 1d (default), 1h, 15m, 5m, 1m. |
Return value
| Field | Type | Description |
|---|
symbol | string | The requested symbol. |
range | string | The requested range. |
interval | string | The bar interval. |
points | array | Array of OHLCV bars (t, o, h, l, c, v). |
quote | object | The most recent quote (price, change, change_pct, volume, as_of). |
provenance | object | Provider, fetched_at, content_hash, and source URL. |
Example call
{
"symbol": "NVDA",
"range": "1y",
"interval": "1d"
}
Example response
{
"symbol": "NVDA",
"range": "1y",
"interval": "1d",
"points": [
{ "t": "2024-01-16", "o": 545.15, "h": 552.50, "l": 540.80, "c": 548.90, "v": 41230000 },
{ "t": "2024-01-17", "o": 549.20, "h": 561.10, "l": 547.30, "c": 560.65, "v": 38900000 }
],
"quote": {
"price": 138.65,
"change": 2.31,
"change_pct": 1.69,
"volume": 245000000,
"as_of": "2025-01-15T21:00:00Z"
},
"provenance": {
"provider": "polygon",
"fetched_at": "2025-01-15T14:32:10.223Z",
"content_hash": "sha256:9f2a1b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a",
"source_url": "https://api.polygon.io/v2/aggs/ticker/NVDA/range/1/day/2024-01-15/2025-01-15"
}
}
The content_hash in the provenance envelope lets you verify that two backtests ran against identical data. If the hash matches, the data is byte-identical.
search_skills
Progressive discovery — find skills matching a natural-language query. The agent should call this before calling any skill-backed tool directly. It returns a ranked list of matching skill IDs with one-line summaries.
Arguments
| Argument | Type | Required | Description |
|---|
query | string | Yes | Natural-language description of what you’re looking for, e.g. "congressional trading activity". |
asset_class | string | No | Filter by asset class: equity, crypto, fx, macro. |
intent | string | No | Filter by intent: research, screen, fetch, compute. |
Return value
An array of skill summaries, ranked by relevance:
| Field | Type | Description |
|---|
skill_id | string | The stable skill identifier, e.g. congress_trades. |
version | string | Latest version of the skill. |
summary | string | One-line description of what the skill does. |
asset_class | string | The asset class the skill operates on. |
intent | string | The skill’s intent category. |
relevance | float | Relevance score from 0.0 to 1.0. |
Example call
{
"query": "congressional trading activity for NVDA",
"asset_class": "equity",
"intent": "fetch"
}
Example response
[
{
"skill_id": "congress_trades",
"version": "2.1.0",
"summary": "Pull congressional trading disclosures filtered by symbol or member.",
"asset_class": "equity",
"intent": "fetch",
"relevance": 0.96
},
{
"skill_id": "insider_transactions",
"version": "1.4.2",
"summary": "Pull Form 4 insider transactions (buys, sells, option exercises).",
"asset_class": "equity",
"intent": "fetch",
"relevance": 0.71
}
]
describe_skill
Fetch the full manifest for a skill. The agent calls this after search_skills to learn the exact input schema, output schema, cost, latency profile, and upstream provider before running the skill.
Arguments
| Argument | Type | Required | Description |
|---|
skill_id | string | Yes | The skill identifier returned by search_skills. |
version | string | No | A specific version. Defaults to latest. |
Return value
| Field | Type | Description |
|---|
skill_id | string | The skill identifier. |
version | string | The resolved version. |
description | string | Full description of what the skill does. |
input_schema | object | JSON Schema for the skill’s input. |
output_schema | object | JSON Schema for the skill’s output. |
provider | string | Upstream data provider. |
cost | object | Cost profile (per-call credits, cacheable). |
latency | object | Latency profile (p50, p99 in ms). |
Example call
{
"skill_id": "congress_trades",
"version": "2.1.0"
}
Example response
{
"skill_id": "congress_trades",
"version": "2.1.0",
"description": "Pull congressional trading disclosures filed under the STOCK Act. Filter by ticker symbol or member name. Returns transaction date, type, amount range, and filing date.",
"input_schema": {
"type": "object",
"properties": {
"symbol": { "type": "string", "description": "Ticker symbol to filter by." },
"member": { "type": "string", "description": "Member name to filter by." },
"since": { "type": "string", "format": "date", "description": "Only return filings after this date." }
}
},
"output_schema": {
"type": "object",
"properties": {
"trades": {
"type": "array",
"items": {
"type": "object",
"properties": {
"member": { "type": "string" },
"symbol": { "type": "string" },
"transaction_date": { "type": "string", "format": "date" },
"type": { "type": "string", "enum": ["buy", "sell"] },
"amount_range": { "type": "string" },
"filing_date": { "type": "string", "format": "date" }
}
}
}
}
},
"provider": "quiver_quant",
"cost": { "per_call_credits": 1, "cacheable": true },
"latency": { "p50_ms": 420, "p99_ms": 1800 }
}
The discovery loop
Search
Call search_skills with a natural-language query. Get back a ranked list of matching skill IDs.
Describe
Call describe_skill on the top match to read its input schema. Build the input dict.
Run
Call run_skill with the skill_id and input. Poll get_run or stream subscribe_run for the result. See Run management tools.
Cache describe_skill results within a session. Skill manifests are immutable per version, so re-fetching the same skill_id + version is wasted work.