Starwell: World Data & Statistics
Measured conclusion: Alive, not deep-tested. L2 outcome: not_attempted.
Statistics from 28 agencies: FRED, Eurostat, ECB, World Bank, OECD. Cited values, computed answers.
| Author | dev.starwell |
|---|---|
| Access | mixed |
| Publisher key required | No |
| Measured state | Alive, not deep-tested |
| L1 liveness | alive |
| L1 latency | 2338 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Starwell: World Data & Statistics": {
"url": "https://starwell.dev/api/starwell/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (11)
list_sourcesread-onlyList the official statistical sources served by this data layer (e.g. Statistics Canada, FRED), with dataset/series counts, cadence notes, and terms links. Start here to see what exists.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
search_catalogread-onlyFind series across ALL sources in one call: case-insensitive search over series ids, indicator names, geographies, and dataset titles (e.g. "unemployment canada", "10-year treasury", "CPI"). Returns candidate series with units, coverage, verification status, and license, plus datasetMatches from the wider dataset index — datasets whose series can be requested by source-native id and are fetched from the official source on first call. The fastest path from a question to the exact series id to fetch or pin in the answer tool.
Parameters:
query(required) — string — Search terms, e.g. "unemployment rate canada"limit— integer — Max results (default 20)offset— integer — Skip the first N ranked hits (default 0). When hasMore is true, call again with offset = offset + limit.source— string — Optional source slug to restrict to, e.g. 'fred'
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
list_datasetsread-onlyList the datasets (official releases/tables) available in one source, with coverage dates and links to the official table pages.
Parameters:
source(required) — string — Source slug, e.g. 'fred' or 'statcan'
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_seriesread-onlyFull metadata for one series: indicator, unit, frequency, geography, coverage, its VERIFICATION STATUS (passing/stale/failing/unverified from golden-value + freshness checks against the live source), recent check records, and the citation to the official table.
Parameters:
source(required) — string — Source slug, e.g. 'fred'seriesId(required) — string — Source-native series id, e.g. 'UNRATE' or 'v41690973'
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_observationsread-onlyObservation values for one series. Every value carries provenance (the exact source URL it came from, retrieval time, connector version) and the envelope carries the series verification status + citation. Defaults to the latest 60 points; use start/end (YYYY-MM-DD) or latest to control the window. Pass asOf for a point-in-time read: the values as Starwell's store held them on that date, before any later revision (available from the series' first ingest forward).
Parameters:
source(required) — stringseriesId(required) — stringend— string — YYYY-MM-DD inclusive upper boundasOf— string — Point-in-time cutoff, YYYY-MM-DD (end of that UTC day) or an ISO 8601 instant: return what Starwell's store held then, ignoring later revisionsstart— string — YYYY-MM-DD inclusive lower boundlatest— integer — Return only the latest N points (default 60 when no start/end given)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
get_series_statsread-onlyLatest value, previous, all-time min/max, mean, and change vs the previous period and vs a year ago — computed over the verified store, with the citation attached. The cheap way to answer "what is it now and how has it moved" without a full analysis run.
Parameters:
source(required) — string — Source slug, e.g. 'fred'seriesId(required) — string — Series id, e.g. 'DGS10'
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
create_monitorCreate a monitor: when the store's refresh lands a new period or a revised value for the series, a series.updated webhook fires to your URL with the new value, verification status, and citation. Requires an API key (free with an account at /account); webhook must be https. Manage with list_monitors / delete_monitor.
Parameters:
source(required) — string — Source slug, e.g. 'fred'seriesId(required) — string — Series id, e.g. 'DGS10'webhookUrl(required) — string — https URL to receive series.updated events
Hints: read-only no · destructive not declared · idempotent yes · open-world not declared
list_monitorsread-onlyMonitors on your API key, with delivery health (last fired, failures, active).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world not declared
delete_monitordestructiveParameters:
id(required) — string — Monitor id from list_monitors
Hints: read-only no · destructive yes · idempotent yes · open-world not declared
answerThe flagship: ask a natural-language question about the served official statistics. Returns a COMPUTED answer (real Python runs in a sandbox over the verified store, nothing is estimated by a model), the Plotly chart, the Python code, citations to the official tables, and a verification badge per series. CROSS-SOURCE: one question may join series from DIFFERENT agencies, e.g. unemployment from the US BLS, Statistics Canada and the UK ONS in a single call, for correlations, ratios, and like-for-like comparison. How many series one question may join is set by the caller's plan; asking for more returns a series_limit error naming that cap. Returns a refusal when no served series can answer. Takes 10-40 seconds. Requires a free API key (create at /account on the Starwell host; pass Authorization: Bearer dlk_... or set STARWELL_API_KEY on the starwell-mcp bridge). Keyless calls return key_required.
Parameters:
question(required) — stringend— string — YYYY-MM-DDshare— boolean — When true, the answer becomes a permanent public page and meta.permalink carries its URL — hand it to the user as a citable linkstart— string — YYYY-MM-DDseries— array — Optional: pin exact series, across sources, and skip AI resolution
Hints: read-only no · destructive not declared · idempotent not declared · open-world not declared
deep_analysisThe moat: a PLANNED multi-section report on a question. The engine designs 3-4 orthogonal analyses (trend, statistics, outliers, cross-series relationships), runs real Python for each in the sandbox over the verified store, and synthesizes one decision-ready report. Every number computed, every series cited and verification-badged. Sections can join series from DIFFERENT agencies in one report, up to the caller's plan width; over it, the call returns a series_limit error naming that cap. Slower than answer (60-180 seconds), so use it for "analyze", "break down", "give me a full picture" asks; use the answer tool for a single direct question. Requires a free API key (create at /account on the Starwell host; pass Authorization: Bearer dlk_... or set STARWELL_API_KEY on the starwell-mcp bridge). Keyless calls return key_required.
Parameters:
question(required) — stringend— string — YYYY-MM-DDstart— string — YYYY-MM-DDseries— array — Optional: pin exact series, across sources, and skip AI resolution
Hints: read-only no · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.