{"server":"dev.starwell/world-data-statistics","count":11,"tools":[{"name":"answer","title":"Answer a question from verified data","description":"The 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["question"],"properties":{"end":{"type":"string","description":"YYYY-MM-DD"},"share":{"type":"boolean","description":"When true, the answer becomes a permanent public page and meta.permalink carries its URL — hand it to the user as a citable link"},"start":{"type":"string","description":"YYYY-MM-DD"},"series":{"type":"array","items":{"type":"object","required":["source","seriesId"],"properties":{"source":{"type":"string"},"seriesId":{"type":"string"}},"additionalProperties":false},"maxItems":6,"description":"Optional: pin exact series, across sources, and skip AI resolution"},"question":{"type":"string","maxLength":500,"minLength":3}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":false},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"create_monitor","title":"Watch a series (webhook on movement)","description":"Create 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["source","seriesId","webhookUrl"],"properties":{"source":{"type":"string","description":"Source slug, e.g. 'fred'"},"seriesId":{"type":"string","description":"Series id, e.g. 'DGS10'"},"webhookUrl":{"type":"string","description":"https URL to receive series.updated events"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":false,"idempotentHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"deep_analysis","title":"Deep multi-angle analysis from verified data","description":"The 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["question"],"properties":{"end":{"type":"string","description":"YYYY-MM-DD"},"start":{"type":"string","description":"YYYY-MM-DD"},"series":{"type":"array","items":{"type":"object","required":["source","seriesId"],"properties":{"source":{"type":"string"},"seriesId":{"type":"string"}},"additionalProperties":false},"maxItems":6,"description":"Optional: pin exact series, across sources, and skip AI resolution"},"question":{"type":"string","maxLength":500,"minLength":3}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":false},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"delete_monitor","title":"Delete one of your monitors","description":"","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","description":"Monitor id from list_monitors"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":false,"idempotentHint":true,"destructiveHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"get_observations","title":"Get observations (with provenance)","description":"Observation 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).","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["source","seriesId"],"properties":{"end":{"type":"string","description":"YYYY-MM-DD inclusive upper bound"},"asOf":{"type":"string","description":"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 revisions"},"start":{"type":"string","description":"YYYY-MM-DD inclusive lower bound"},"latest":{"type":"integer","maximum":2000,"minimum":1,"description":"Return only the latest N points (default 60 when no start/end given)"},"source":{"type":"string"},"seriesId":{"type":"string"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"get_series","title":"Get series metadata + verification","description":"Full 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["source","seriesId"],"properties":{"source":{"type":"string","description":"Source slug, e.g. 'fred'"},"seriesId":{"type":"string","description":"Source-native series id, e.g. 'UNRATE' or 'v41690973'"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"get_series_stats","title":"Summary statistics for a series","description":"Latest 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["source","seriesId"],"properties":{"source":{"type":"string","description":"Source slug, e.g. 'fred'"},"seriesId":{"type":"string","description":"Series id, e.g. 'DGS10'"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"list_datasets","title":"List datasets in a source","description":"List the datasets (official releases/tables) available in one source, with coverage dates and links to the official table pages.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["source"],"properties":{"source":{"type":"string","description":"Source slug, e.g. 'fred' or 'statcan'"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"list_monitors","title":"List your monitors","description":"Monitors on your API key, with delivery health (last fired, failures, active).","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"list_sources","title":"List data sources","description":"List 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"},{"name":"search_catalog","title":"Search the series catalog","description":"Find 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.","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"limit":{"type":"integer","maximum":100,"minimum":1,"description":"Max results (default 20)"},"query":{"type":"string","maxLength":200,"minLength":1,"description":"Search terms, e.g. \"unemployment rate canada\""},"offset":{"type":"integer","minimum":0,"description":"Skip the first N ranked hits (default 0). When hasMore is true, call again with offset = offset + limit."},"source":{"type":"string","description":"Optional source slug to restrict to, e.g. 'fred'"}},"additionalProperties":false},"output_schema":null,"annotations":{"readOnlyHint":true},"source":"probe","observed_at":"2026-10-19T11:05:54.269Z"}],"next_cursor":null,"next_actions":[{"action":"get_connection","description":"Connection block to call these tools","href":"/v1/servers/dev.starwell%2Fworld-data-statistics/connection?target=mcpServers","arguments":{"name":"dev.starwell/world-data-statistics","target":"mcpServers"}},{"action":"get_server","description":"Full descriptor with trust and connectability","href":"/v1/servers/dev.starwell%2Fworld-data-statistics","arguments":{"name":"dev.starwell/world-data-statistics"}}]}