Harmonized series from official statistical agencies. Every observation carries provenance: the exact source URL it came from, when it was retrieved, and by which connector version. Every series carries a verification status backed by golden-value and freshness checks against the live source. Answers are computed by real code in a sandbox, never estimated by a model.
# 1. The latest US unemployment rate, with provenance on every value:
curl "https://starwell.datastam.ai/api/starwell/v1/sources/fred/series/UNRATE/observations?latest=3"
# 2. A computed, cited answer:
curl -X POST "https://starwell.datastam.ai/api/starwell/v1/answer" \
-H "Content-Type: application/json" \
-d '{"question": "What was the average US unemployment rate in 2024?"}'
Base URL: https://starwell.datastam.ai/api/starwell/v1. All responses use { success, data, meta } envelopes. Dates are ISO YYYY-MM-DD.
No key is required during the preview: anonymous callers get 120 data requests per minute and 6 answers per 10 minutes, per IP.
API keys (Authorization: Bearer dlk_live_... or X-API-Key) lift you onto daily tier quotas with usage metering. Keys are issued manually during the preview: join the waitlist and mention what you are building.
| Tier | Data requests / day | Answers / day |
|---|---|---|
| Anonymous preview | 120 / minute (IP) | 6 / 10 minutes (IP) |
| Free key | 2,000 | 25 |
| Pro key | 50,000 | 500 |
The sources served, with counts, cadence notes, and terms links.
Datasets (official releases and tables) in one source, with coverage and links to the official table pages.
One dataset plus its series, each with its verification status. The envelope carries the citation block.
Full series metadata, current verification status, and the most recent golden and freshness check records.
The values. Parameters: start, end, latest (1..5000), limit, offset. Series are addressed by the ids practitioners already use: fred/UNRATE, statcan/v41690973.
{
"success": true,
"data": [
{
"period": "2026-06-01",
"value": 4.2,
"status": "normal",
"revision": 1,
"provenance": {
"sourceUrl": "https://api.stlouisfed.org/fred/series/observations?series_id=UNRATE&...&api_key=REDACTED",
"retrievedAt": "2026-07-04T13:38:34.644+00:00",
"connectorVersion": "1.0.0"
}
}
],
"meta": {
"series": { "externalId": "UNRATE", "indicator": "Unemployment Rate", "unit": "Percent" },
"verification": { "status": "passing", "lastVerifiedAt": "2026-07-04T13:41:05..." },
"citation": {
"source": "Federal Reserve Economic Data (FRED)",
"dataset": "Employment Situation",
"url": "https://fred.stlouisfed.org/release?rid=50"
}
}
}
Ask a question in plain language. The engine matches it to served series (or use series to pin them), materializes the verified observations, writes and executes real Python in a sandbox, and returns the computed result. Nothing in the numbers is model-estimated.
curl -X POST "https://starwell.datastam.ai/api/starwell/v1/answer" \
-H "Content-Type: application/json" \
-d '{
"question": "What was the average US unemployment rate in 2024?",
"series": [{ "source": "fred", "seriesId": "UNRATE" }],
"start": "2024-01-01", "end": "2024-12-01"
}'
{
"success": true,
"data": {
"answer": "The average US unemployment rate in 2024 was 4.03%.",
"chart": { "...": "Plotly figure JSON" },
"python": "import pandas as pd\ndf = pd.DataFrame(data)\n...",
"series": [{
"source": "fred", "seriesId": "UNRATE",
"verification": { "status": "passing", "lastVerifiedAt": "..." },
"citation": { "dataset": "Employment Situation", "url": "https://fred.stlouisfed.org/release?rid=50" }
}]
},
"meta": { "observationsUsed": 12, "cached": false, "durationMs": 12085 }
}
Expect 10 to 40 seconds on a cache miss; repeated questions are served from the answers cache in milliseconds and invalidated the moment the underlying official data moves. When no served series can answer, the API refuses honestly with a 422 instead of inventing a number.
| Status | Meaning |
|---|---|
| passing | Golden-value and freshness checks pass against the live source. Golden values are hand-verified reference points confirmed through two independent delivery channels. |
| stale | Values verify, but the source has published newer data than we currently hold. |
| failing | A golden check disagrees with the live source. The series stays visible and honestly labeled; do not rely on it until it clears. |
| unverified | Ingested but not yet through the verification harness. |
The same capabilities as native tools for any MCP client, served over Streamable HTTP with no session state:
https://starwell.datastam.ai/api/starwell/mcp
Tools: list_sources, list_datasets, get_series, get_observations, answer. Example client configuration:
{
"mcpServers": {
"official-statistics": {
"type": "http",
"url": "https://starwell.datastam.ai/api/starwell/mcp"
}
}
}
Source: Statistics Canada. Contains information licensed under the Statistics Canada Open Licence. This product is neither produced nor endorsed by Statistics Canada.
This product uses the FRED API but is not endorsed or certified by the Federal Reserve Bank of St. Louis. FRED terms of use.
Values are served as published by the source (current vintage). Revisions are tracked append-only; historical snapshots are on the roadmap as an institutional feature.
Roadmap: /execute (sandboxed Python as a service) and /monitor (alerts on series changes) follow the same contract. Questions, keys, pilots: join the waitlist.