Skip to main content
Glama

Imf Query Dataset

imf_query_dataset
Read-onlyIdempotent

Query an IMF SDMX dataflow by dimension key over a time range. Returns observations with time_period, value, and status, plus the unit, scale, and decimals of each series — a key resolving to several series carries one entry per series in series_metadata, since unit and scale differ between them. An index series also carries the reference_period it is based on (e.g. 2010A, 2010=100) exactly as published, on the series and, where the dataflow publishes one per observation, on each observation. Requires imf_get_database first to obtain the correct key_format and valid dimension codes. Country codes are ISO 3-letter (USA, GBR, DEU — not US, GB, DE). Key format: dot-separated codes in DSD keyPosition order (e.g. USA.NGDP_RPCH.A for WEO). Every position must carry a code: use + to combine codes (e.g. USA+GBR.NGDP_RPCH.A) and * to match every code at a position (e.g. *.NGDP_RPCH.A for all countries); * stands alone and cannot join a + list. Codes are matched case-insensitively and checked against each dimension's codelist before the query — an unknown code is rejected with the nearest valid codes. Codelists from imf_get_database enumerate the code universe, not actual coverage — valid codes can still return no_data if the combination has no series. When a + key returns data for some requested series and none for others, missing_series names each empty one with the reason a query for it alone gives (no_data or no_data_in_range). When the extra request that recovers the unit, scale, or decimals a + key suppresses fails, unresolved_attributes names them and how to get them. start_period and end_period must be valid period strings (YYYY, YYYY-SN, YYYY-QN, YYYY-MM, or a calendar-valid YYYY-MM-DD) with start_period no later than end_period; malformed or reversed ranges are rejected. A bound covers the whole period it names, so end_period 2023 includes 2023-M12 and 2023-Q4. last_n_observations keeps each series' last N observations — 1 is each series' latest value, the cheap way to ask many countries for their latest figure. Values are in base units everywhere, staged canvas rows included: scale is the power of ten the IMF publishes a series in (value / 10^scale is the published figure), never a factor still to apply. A response is held to 100,000 serialized characters. With DataCanvas enabled (CANVAS_PROVIDER_TYPE=duckdb), a larger result (multi-country, long time range) spills to it: call imf_dataframe_describe first to inspect staged tables and columns, then imf_dataframe_query for SQL analysis. Without DataCanvas, a larger result returns its earliest observations with truncated=true, and retrieval_guidance names the last period returned and how to narrow the query.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyYesDot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to combine codes at one position (e.g. USA+GBR.NGDP_RPCH.A). Use * to match every code at a position — *.NGDP_RPCH.A returns the indicator for all countries, and CAN.*.A every indicator for Canada. Every position needs a code or a *; an empty segment (USA..A) is rejected. A * stands alone at its position — combined with other codes (USA+*) it is rejected. Codes are trimmed and matched case-insensitively (usa resolves to USA), empty and repeated + members are dropped (USA++GBR+USA is queried as USA+GBR, and notice says so), and the response echoes the canonical key. A code missing from its dimension's codelist is rejected before the query, naming the nearest valid codes. The portal limits the request URL, so a + list of a few hundred codes is rejected as too long — use * there, or split the codes across calls. Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE.
versionNoDataflow version, e.g. 9.0.0. Auto-detected from dataflow list when omitted.
agency_idNoAgency ID, e.g. IMF.RES or IMF.STA, matched case-insensitively. Auto-detected from dataflow list when omitted.
canvas_idNoExisting canvas ID to accumulate results into across multiple queries. This selects the destination only; it does not force staging. Use output_mode="canvas" to stage an under-budget result.
end_periodNoEnd of time range (inclusive). Same formats as start_period, and must not be earlier than it. The bound covers the whole period it names, so end_period 2023 admits 2023-M12 and 2023-Q4. Observations after this period are excluded from the result.
dataflow_idYesDataflow identifier from imf_list_databases, e.g. WEO, BOP, CPI. Matched case-insensitively; the response echoes the catalog spelling.
output_modeNoResult placement. auto returns an under-budget result inline and spills only when needed. canvas explicitly stages the full result, using canvas_id when supplied or allocating a fresh canvas.auto
start_periodNoStart of time range (inclusive). Accepts any of YYYY (annual), YYYY-SN (semi-annual, e.g. 2023-S1), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly), or a calendar-valid YYYY-MM-DD (daily), whatever the dataflow's frequency. The bound covers the whole period it names, so start_period 2023 admits 2023-M01 and 2023-Q1. Observations before this period are excluded from the result.
last_n_observationsNoKeep only each series' last N observations, an integer from 1 to 1,000,000; 1 returns each series' latest value. Latest is per series: series end at different periods, and a WEO series ends in its projection years (e.g. 2031), so set end_period to stop at a past year. With start_period or end_period, the last N inside that range. A series with fewer than N observations is returned whole. Omit to return every observation.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNoDimension key used in the query, trimmed and with each code in its codelist spelling, e.g. USA.NGDP_RPCH.A.
errorNoPresent when the call failed. Absent on success.
noticeNoPopulated when empty or duplicate + members were dropped from key (naming each position and the key queried), or when a period bound was set but some observations carry a time_period label the range filter does not recognize; both texts appear when both apply. Composes with retrieval_guidance, staged or not, when both apply.
sourceNoAttribution string required by IMF data terms: "Source: International Monetary Fund, <dataflow name>, <link>".
stagedNoTrue when the complete observation set is stored on DataCanvas. canvas_id and table_name are present whenever true.
canvas_idNoDataCanvas session ID — present when staged=true. Pass first to imf_dataframe_describe, then to imf_dataframe_query.
truncatedNoTrue only when observations is an incomplete preview of observation_count. A result can be staged=true and truncated=false when every observation also fits inline, and staged=false and truncated=true when DataCanvas is not enabled and the full result exceeds the response budget.
end_periodNoLatest period covered; absent when the full available range was used.
table_nameNoDuckDB table name on the canvas — present when staged=true; reference in SQL via FROM <table_name>.
dataflow_idNoDataflow identifier that was queried, in its catalog spelling, e.g. WEO.
observationsNoInline observations, oldest period first. When truncated=true this is the budget-limited time-ascending prefix of the result; observation_count remains the full count.
start_periodNoEarliest period covered; absent when the full available range was used.
missing_seriesNoRequested series of a + key that returned no observation while others did, in key order, at most 20. A requested series is each combination of the codes listed at every position. Counted over the full result, so a series left out of a truncated preview is not listed. Absent when every requested series returned.
series_metadataNoPer-series attributes, one entry per distinct series_key in the result. Present only when the query resolved to more than one series; a single-series query carries its values in series_attributes instead. Unit and scale differ across series in one query — WEO NGDPD is USD published in billions (scale 9) while NGDP_RPCH is PT at scale 0 — so interpret each series against its own entry.
observation_countNoTotal observations in the result, after any last_n_observations selection.
series_attributesNoAttributes of the first series in the result — the same series as series_metadata[0]. A key with + or * resolves to several series whose scale and unit differ, and this field describes only the first of them: read series_metadata for the rest, and never apply these values to another series_key.
retrieval_guidanceNoPresent on every staged result, where it names the imf_dataframe_describe-before-imf_dataframe_query retrieval workflow, and on a result truncated without DataCanvas, where it names the last time_period returned and how to narrow the query for the rest.
last_n_observationsNoThe last_n_observations input, echoed when set: observations holds each series' last N in the range. Absent when every observation was returned.
missing_series_countNoHow many requested series returned no observation — the full count when missing_series stops at 20. Present with missing_series.
unresolved_attributesNoPresent only when a + key on the dimension an attribute is grouped by made the portal leave unit, scale, or decimals out, and the extra request that recovers them failed. A listed attribute that is null is then unknown, not unpublished. Absent when that request found no value — the dataflow publishes none — or was not needed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed15 schema fields changed
    • changedInput schema / properties / agency_id / description
      Previous value: -"Agency ID, e.g. IMF.RES or IMF.STA. Auto-detected from dataflow list when omitted."New value: +"Agency ID, e.g. IMF.RES or IMF.STA, matched case-insensitively. Auto-detected from dataflow list when omitted."
    • changedInput schema / properties / key / description
      Previous value: -"Dot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to combine codes at one position (e.g. USA+GBR.NGDP_RPCH.A). Use * to match every code at a position — *.NGDP_RPCH.A returns the indicator for all countries, and CAN.*.A every indicator for Canada. Every position needs a code or a *; an empty segment (USA..A) is rejected. A * stands alone at its position — combined with other codes (USA+*) it is rejected. Codes are trimmed and matched case-insensitively (usa resolves to USA), and the response echoes the canonical key. A code missing from its dimension's codelist is rejected before the query, naming the nearest valid codes. Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE."New value: +"Dot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to combine codes at one position (e.g. USA+GBR.NGDP_RPCH.A). Use * to match every code at a position — *.NGDP_RPCH.A returns the indicator for all countries, and CAN.*.A every indicator for Canada. Every position needs a code or a *; an empty segment (USA..A) is rejected. A * stands alone at its position — combined with other codes (USA+*) it is rejected. Codes are trimmed and matched case-insensitively (usa resolves to USA), empty and repeated + members are dropped (USA++GBR+USA is queried as USA+GBR, and notice says so), and the response echoes the canonical key. A code missing from its dimension's codelist is rejected before the query, naming the nearest valid codes. The portal limits the request URL, so a + list of a few hundred codes is rejected as too long — use * there, or split the codes across calls. Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE."
    • changedInput schema / properties / last_n_observations / description
      Previous value: -"Keep only each series' last N observations, an integer from 1 to 10,000; 1 returns each series' latest value. Latest is per series: series end at different periods, and a WEO series ends in its projection years (e.g. 2031), so set end_period to stop at a past year. With start_period or end_period, the last N inside that range. A series with fewer than N observations is returned whole. Omit to return every observation."New value: +"Keep only each series' last N observations, an integer from 1 to 1,000,000; 1 returns each series' latest value. Latest is per series: series end at different periods, and a WEO series ends in its projection years (e.g. 2031), so set end_period to stop at a past year. With start_period or end_period, the last N inside that range. A series with fewer than N observations is returned whole. Omit to return every observation."
    • changedInput schema / properties / last_n_observations / maximum
      Previous value: -10000New value: +1000000
    • changedInput schema / properties / version / description
      Previous value: -"Dataflow version. Auto-detected from dataflow list when omitted."New value: +"Dataflow version, e.g. 9.0.0. Auto-detected from dataflow list when omitted."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org. `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all. `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them. `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count. `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream. `wildcard_in_code_list`: A key position combines * with other codes in a + list, where the portal ignores the * and returns only the listed codes. `invalid_key_code`: A key code is not in its dimension's codelist, checked before any data request. `invalid_period_format`: start_period or end_period is not one of the recognized period formats. `invalid_period_range`: start_period is later than end_period. `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully. `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled. `response_too_large`: The fixed part of the result — full series_metadata, plus the retrieval handle when staging — exceeds the response budget before any observation can be included. `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id matches no catalog dataflow on api.imf.org, or none under the agency_id and version given. `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all. `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them. `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count. `empty_key_segment`: A dot-separated position in key is empty or blank, or holds only empty + members (USA.NGDP_RPCH.+), which matches no series upstream. `wildcard_in_code_list`: A key position combines * with other codes in a + list, where the portal ignores the * and returns only the listed codes. `invalid_key_code`: A key code is not in its dimension's codelist, checked before any data request. `key_too_long`: The IMF portal refused the data request because its URL is too long — a + list of a few hundred codes at one position. `invalid_period_format`: start_period or end_period is not one of the recognized period formats. `invalid_period_range`: start_period is later than end_period. `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully. `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled. `response_too_large`: The fixed part of the result — full series_metadata, plus the retrieval handle when staging — exceeds the response budget before any observation can be included. `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted. `data_unavailable`: The data request failed after its retries — the portal answered 5xx or an unusable body, could not be reached, or timed out — or the call spent its 45-second budget for upstream requests. `rate_limited`: The IMF portal answered the data request with HTTP 429 after its retries. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "dataflow_not_found",
      -  "no_data",
      -  "no_data_in_range",
      -  "key_dimension_mismatch",
      -  "empty_key_segment",
      -  "wildcard_in_code_list",
      -  "invalid_key_code",
      -  "invalid_period_format",
      -  "invalid_period_range",
      -  "structure_unavailable",
      -  "canvas_unavailable",
      -  "response_too_large",
      -  "dataflow_list_unavailable"
      -]New value: +[
      +  "dataflow_not_found",
      +  "no_data",
      +  "no_data_in_range",
      +  "key_dimension_mismatch",
      +  "empty_key_segment",
      +  "wildcard_in_code_list",
      +  "invalid_key_code",
      +  "key_too_long",
      +  "invalid_period_format",
      +  "invalid_period_range",
      +  "structure_unavailable",
      +  "canvas_unavailable",
      +  "response_too_large",
      +  "dataflow_list_unavailable",
      +  "data_unavailable",
      +  "rate_limited"
      +]
    • addedOutput schema / properties / missing_series
      Added value: +{
      +  "description": "Requested series of a + key that returned no observation while others did, in key order, at most 20. A requested series is each combination of the codes listed at every position. Counted over the full result, so a series left out of a truncated preview is not listed. Absent when every requested series returned.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One requested series the result does not carry.",
      +    "properties": {
      +      "available_range": {
      +        "additionalProperties": false,
      +        "description": "With no_data_in_range: the window the series covers.",
      +        "properties": {
      +          "first": {
      +            "description": "Earliest time_period the series has.",
      +            "type": "string"
      +          },
      +          "last": {
      +            "description": "Latest time_period the series has.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "first",
      +          "last"
      +        ],
      +        "type": "object"
      +      },
      +      "reason": {
      +        "description": "What a query for this series alone reports: no_data when it has no observations at all, no_data_in_range when it has some, but none inside start_period/end_period.",
      +        "enum": [
      +          "no_data",
      +          "no_data_in_range"
      +        ],
      +        "type": "string"
      +      },
      +      "series_key": {
      +        "description": "A requested series that returned no observation: one code per key position, * where the key has *, e.g. ASM.NGDP_RPCH.A.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "series_key",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / missing_series_count
      Added value: +{
      +  "description": "How many requested series returned no observation — the full count when missing_series stops at 20. Present with missing_series.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Populated when a period bound was set but some observations carry a time_period label the range filter does not recognize. Composes with retrieval_guidance, staged or not, when both apply."New value: +"Populated when empty or duplicate + members were dropped from key (naming each position and the key queried), or when a period bound was set but some observations carry a time_period label the range filter does not recognize; both texts appear when both apply. Composes with retrieval_guidance, staged or not, when both apply."
    • addedOutput schema / properties / observations / items / properties / reference_period
      Added value: +{
      +  "description": "This observation's own reference (base) period, exactly as published, e.g. 2010A or 2010M1. Present only when the observation carries one (CPI and GS_LEPM publish it); where the series-level value reads Multiple, it varies by observation. Never filled in from the series.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / series_attributes / properties / reference_period
      Added value: +{
      +  "description": "Reference (base) period of an index series, exactly as published: free text such as 2010A, 2016M12, 2010=100, or Multiple (the observations carry their own). Present only when the series carries one; never parsed as a time_period.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / series_metadata / items / description
      Previous value: -"Unit, scale, and decimals for one series in the result."New value: +"Unit, scale, decimals, and reference period for one series in the result."
    • addedOutput schema / properties / series_metadata / items / properties / reference_period
      Added value: +{
      +  "description": "This series' reference (base) period, exactly as published, e.g. 2010A or 2010=100. Present only when the series carries one.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / unresolved_attributes
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present only when a + key on the dimension an attribute is grouped by made the portal leave unit, scale, or decimals out, and the extra request that recovers them failed. A listed attribute that is null is then unknown, not unpublished. Absent when that request found no value — the dataflow publishes none — or was not needed.",
      +  "properties": {
      +    "concepts": {
      +      "description": "Attributes the recovery request failed to bring back, e.g. [\"unit\"].",
      +      "items": {
      +        "enum": [
      +          "unit",
      +          "scale",
      +          "decimals"
      +        ],
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "guidance": {
      +      "description": "How to get them: retry, or query the key with a * it names (or a * at one position), which matches every code there, so keep only the series requested.",
      +      "type": "string"
      +    },
      +    "series_count": {
      +      "description": "Series in the result whose value for a listed attribute is null.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "concepts",
      +    "series_count",
      +    "guidance"
      +  ],
      +  "type": "object"
      +}
  2. Changed18 schema fields changed
    • changedInput schema / properties / dataflow_id / description
      Previous value: -"Dataflow identifier from imf_list_databases, e.g. WEO, BOP, CPI."New value: +"Dataflow identifier from imf_list_databases, e.g. WEO, BOP, CPI. Matched case-insensitively; the response echoes the catalog spelling."
    • changedInput schema / properties / key / description
      Previous value: -"Dot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to combine codes at one position (e.g. USA+GBR.NGDP_RPCH.A). Use * to match every code at a position — *.NGDP_RPCH.A returns the indicator for all countries, and CAN.*.A every indicator for Canada. Every position needs a code or a *; an empty segment (USA..A) is rejected. Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE."New value: +"Dot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to combine codes at one position (e.g. USA+GBR.NGDP_RPCH.A). Use * to match every code at a position — *.NGDP_RPCH.A returns the indicator for all countries, and CAN.*.A every indicator for Canada. Every position needs a code or a *; an empty segment (USA..A) is rejected. A * stands alone at its position — combined with other codes (USA+*) it is rejected. Codes are trimmed and matched case-insensitively (usa resolves to USA), and the response echoes the canonical key. A code missing from its dimension's codelist is rejected before the query, naming the nearest valid codes. Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE."
    • addedInput schema / properties / last_n_observations
      Added value: +{
      +  "description": "Keep only each series' last N observations, an integer from 1 to 10,000; 1 returns each series' latest value. Latest is per series: series end at different periods, and a WEO series ends in its projection years (e.g. 2031), so set end_period to stop at a past year. With start_period or end_period, the last N inside that range. A series with fewer than N observations is returned whole. Omit to return every observation.",
      +  "maximum": 10000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / dataflow_id / description
      Previous value: -"Dataflow identifier that was queried, e.g. WEO."New value: +"Dataflow identifier that was queried, in its catalog spelling, e.g. WEO."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org. `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all. `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them. `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count. `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream. `invalid_period_format`: start_period or end_period is not one of the recognized period formats. `invalid_period_range`: start_period is later than end_period. `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully. `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled. `response_too_large`: Fixed staged-result metadata exceeds the response budget before any observation preview can be included. `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org. `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all. `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them. `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count. `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream. `wildcard_in_code_list`: A key position combines * with other codes in a + list, where the portal ignores the * and returns only the listed codes. `invalid_key_code`: A key code is not in its dimension's codelist, checked before any data request. `invalid_period_format`: start_period or end_period is not one of the recognized period formats. `invalid_period_range`: start_period is later than end_period. `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully. `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled. `response_too_large`: The fixed part of the result — full series_metadata, plus the retrieval handle when staging — exceeds the response budget before any observation can be included. `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "dataflow_not_found",
      -  "no_data",
      -  "no_data_in_range",
      -  "key_dimension_mismatch",
      -  "empty_key_segment",
      -  "invalid_period_format",
      -  "invalid_period_range",
      -  "structure_unavailable",
      -  "canvas_unavailable",
      -  "response_too_large",
      -  "dataflow_list_unavailable"
      -]New value: +[
      +  "dataflow_not_found",
      +  "no_data",
      +  "no_data_in_range",
      +  "key_dimension_mismatch",
      +  "empty_key_segment",
      +  "wildcard_in_code_list",
      +  "invalid_key_code",
      +  "invalid_period_format",
      +  "invalid_period_range",
      +  "structure_unavailable",
      +  "canvas_unavailable",
      +  "response_too_large",
      +  "dataflow_list_unavailable"
      +]
    • changedOutput schema / properties / key / description
      Previous value: -"Dimension key used in the query, e.g. USA.NGDP_RPCH.A."New value: +"Dimension key used in the query, trimmed and with each code in its codelist spelling, e.g. USA.NGDP_RPCH.A."
    • addedOutput schema / properties / last_n_observations
      Added value: +{
      +  "description": "The last_n_observations input, echoed when set: observations holds each series' last N in the range. Absent when every observation was returned.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / notice / description
      Previous value: -"Populated when a period bound was set but some observations carry a time_period label the range filter does not recognize. Composes with staged retrieval_guidance when both apply."New value: +"Populated when a period bound was set but some observations carry a time_period label the range filter does not recognize. Composes with retrieval_guidance, staged or not, when both apply."
    • changedOutput schema / properties / observation_count / description
      Previous value: -"Total observations in the result."New value: +"Total observations in the result, after any last_n_observations selection."
    • changedOutput schema / properties / observations / description
      Previous value: -"Inline observation preview. For staged results this may contain the full set or a budget-limited prefix; observation_count remains the full count."New value: +"Inline observations, oldest period first. When truncated=true this is the budget-limited time-ascending prefix of the result; observation_count remains the full count."
    • changedOutput schema / properties / observations / items / properties / status / description
      Previous value: -"Observation status flag, e.g. E (estimate) or null when absent."New value: +"Observation status flag exactly as the dataflow publishes it, e.g. T, B, C, or NA; null when the observation carries none. The flags are not a shared vocabulary across dataflows. A null value with no status, or whose only status is the not-available marker NA or n.a. (any letter case), is omitted as padding; a null value with any other status is returned."
    • changedOutput schema / properties / observations / items / properties / value / description
      Previous value: -"Observation value, null when missing."New value: +"Observation value in base units, e.g. 29298025000000 for US GDP of $29.3 trillion; null when missing. The series' scale is already reflected in it: never apply scale to this value."
    • changedOutput schema / properties / retrieval_guidance / description
      Previous value: -"Present on every staged result. Identifies the imf_dataframe_describe-before-imf_dataframe_query retrieval workflow."New value: +"Present on every staged result, where it names the imf_dataframe_describe-before-imf_dataframe_query retrieval workflow, and on a result truncated without DataCanvas, where it names the last time_period returned and how to narrow the query for the rest."
    • changedOutput schema / properties / series_attributes / properties / scale / description
      Previous value: -"Scale multiplier as the upstream code, e.g. 9 for billions. \"0\" means no multiplier — the values are unscaled."New value: +"Power of ten the IMF publishes this series in, as the upstream code: \"9\" is billions, \"6\" millions, \"0\" units. Observation values are already in base units, so the published figure is value / 10^scale."
    • changedOutput schema / properties / series_metadata / description
      Previous value: -"Per-series attributes, one entry per distinct series_key in the result. Present only when the query resolved to more than one series; a single-series query carries its values in series_attributes instead. Unit and scale differ across series in one query — WEO NGDPD is USD at scale 9 while NGDP_RPCH is PT unscaled — so interpret each series against its own entry."New value: +"Per-series attributes, one entry per distinct series_key in the result. Present only when the query resolved to more than one series; a single-series query carries its values in series_attributes instead. Unit and scale differ across series in one query — WEO NGDPD is USD published in billions (scale 9) while NGDP_RPCH is PT at scale 0 — so interpret each series against its own entry."
    • changedOutput schema / properties / series_metadata / items / properties / scale / description
      Previous value: -"Scale multiplier for this series as the upstream code, e.g. 9 for billions. \"0\" means no multiplier."New value: +"Power of ten the IMF publishes this series in, as the upstream code: \"9\" is billions, \"0\" units. This series' observation values are already in base units."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True only when observations is an incomplete preview of observation_count. A result can be staged=true and truncated=false when every observation also fits inline."New value: +"True only when observations is an incomplete preview of observation_count. A result can be staged=true and truncated=false when every observation also fits inline, and staged=false and truncated=true when DataCanvas is not enabled and the full result exceeds the response budget."
  3. Changed18 schema fields changed
    • addedInput schema / properties / canvas_id / pattern
      Added value: +"^[A-Za-z0-9_-]{10}$"
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream `invalid_period_format`: start_period or end_period is not one of the recognized period formats `invalid_period_range`: start_period is later than end_period `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled `response_too_large`: Fixed staged-result metadata exceeds the response budget before any observation preview can be included `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org. `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all. `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them. `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count. `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream. `invalid_period_format`: start_period or end_period is not one of the recognized period formats. `invalid_period_range`: start_period is later than end_period. `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully. `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled. `response_too_large`: Fixed staged-result metadata exceeds the response budget before any observation preview can be included. `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted. Other values are possible when a failure originates below the handler."
    • removedOutput schema / properties / observations / items / properties / status / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / observations / items / properties / status / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / observations / items / properties / value / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / observations / items / properties / value / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / series_attributes / properties / decimals / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / series_attributes / properties / decimals / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / series_attributes / properties / scale / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / series_attributes / properties / scale / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / series_attributes / properties / unit / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / series_attributes / properties / unit / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / series_metadata / items / properties / decimals / anyOf
      Removed value: -[
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / series_metadata / items / properties / decimals / type
      Added value: +[
      +  "number",
      +  "null"
      +]
    • removedOutput schema / properties / series_metadata / items / properties / scale / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / series_metadata / items / properties / scale / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / series_metadata / items / properties / unit / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / series_metadata / items / properties / unit / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  4. Changed13 schema fields changed
    • changedInput schema / properties / canvas_id / description
      Previous value: -"Existing canvas ID to accumulate results into across multiple queries. Omit to allocate a fresh canvas; the response includes a canvas_id when results spill to DataCanvas."New value: +"Existing canvas ID to accumulate results into across multiple queries. This selects the destination only; it does not force staging. Use output_mode=\"canvas\" to stage an under-budget result."
    • addedInput schema / properties / output_mode
      Added value: +{
      +  "default": "auto",
      +  "description": "Result placement. auto returns an under-budget result inline and spills only when needed. canvas explicitly stages the full result, using canvas_id when supplied or allocating a fresh canvas.",
      +  "enum": [
      +    "auto",
      +    "canvas"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / start_period / description
      Previous value: -"Start of time range (inclusive). Accepts any of YYYY (annual), YYYY-SN (semi-annual, e.g. 2023-S1), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly), or YYYY-MM-DD (daily), whatever the dataflow's frequency. The bound covers the whole period it names, so start_period 2023 admits 2023-M01 and 2023-Q1. Observations before this period are excluded from the result."New value: +"Start of time range (inclusive). Accepts any of YYYY (annual), YYYY-SN (semi-annual, e.g. 2023-S1), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly), or a calendar-valid YYYY-MM-DD (daily), whatever the dataflow's frequency. The bound covers the whole period it names, so start_period 2023 admits 2023-M01 and 2023-Q1. Observations before this period are excluded from the result."
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "dataflow_id",
      -      "key",
      -      "observations",
      -      "series_attributes",
      -      "observation_count",
      -      "truncated",
      -      "source"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "dataflow_id",
      +      "key",
      +      "observations",
      +      "series_attributes",
      +      "observation_count",
      +      "staged",
      +      "truncated",
      +      "source"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • changedOutput schema / properties / canvas_id / description
      Previous value: -"DataCanvas session ID — present when truncated=true. Pass to imf_dataframe_query or imf_dataframe_describe to query the full result."New value: +"DataCanvas session ID — present when staged=true. Pass first to imf_dataframe_describe, then to imf_dataframe_query."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream `invalid_period_format`: start_period or end_period is not one of the recognized period formats `invalid_period_range`: start_period is later than end_period `structure_unavailable`: api.imf.org returns non-200 on the data endpoint `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream `invalid_period_format`: start_period or end_period is not one of the recognized period formats `invalid_period_range`: start_period is later than end_period `structure_unavailable`: The dataflow structure (DSD) cannot be fetched after the dataflow catalog resolved successfully `canvas_unavailable`: output_mode=\"canvas\" was requested but DataCanvas is disabled `response_too_large`: Fixed staged-result metadata exceeds the response budget before any observation preview can be included `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "dataflow_not_found",
      -  "no_data",
      -  "no_data_in_range",
      -  "key_dimension_mismatch",
      -  "empty_key_segment",
      -  "invalid_period_format",
      -  "invalid_period_range",
      -  "structure_unavailable",
      -  "dataflow_list_unavailable"
      -]New value: +[
      +  "dataflow_not_found",
      +  "no_data",
      +  "no_data_in_range",
      +  "key_dimension_mismatch",
      +  "empty_key_segment",
      +  "invalid_period_format",
      +  "invalid_period_range",
      +  "structure_unavailable",
      +  "canvas_unavailable",
      +  "response_too_large",
      +  "dataflow_list_unavailable"
      +]
    • changedOutput schema / properties / notice / description
      Previous value: -"Populated when a period bound was set but some observations carry a time_period label the range filter does not recognize — those rows are returned unfiltered, so the requested range did not apply to them."New value: +"Populated when a period bound was set but some observations carry a time_period label the range filter does not recognize. Composes with staged retrieval_guidance when both apply."
    • changedOutput schema / properties / observations / description
      Previous value: -"Inline observations. Empty when results spilled to canvas (see canvas_id / table_name)."New value: +"Inline observation preview. For staged results this may contain the full set or a budget-limited prefix; observation_count remains the full count."
    • addedOutput schema / properties / retrieval_guidance
      Added value: +{
      +  "description": "Present on every staged result. Identifies the imf_dataframe_describe-before-imf_dataframe_query retrieval workflow.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / staged
      Added value: +{
      +  "description": "True when the complete observation set is stored on DataCanvas. canvas_id and table_name are present whenever true.",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / table_name / description
      Previous value: -"DuckDB table name on the canvas — present when truncated=true; reference in SQL via FROM <table_name>."New value: +"DuckDB table name on the canvas — present when staged=true; reference in SQL via FROM <table_name>."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when the result exceeded the inline limit and was staged on a DataCanvas table; canvas_id and table_name are populated and imf_dataframe_query provides SQL access to the full set."New value: +"True only when observations is an incomplete preview of observation_count. A result can be staged=true and truncated=false when every observation also fits inline."
  5. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "dataflow_id",
      +      "key",
      +      "observations",
      +      "series_attributes",
      +      "observation_count",
      +      "truncated",
      +      "source"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `dataflow_not_found`: dataflow_id does not match any known dataflow on api.imf.org `no_data`: Key is structurally valid but the dataflow holds no series for this code combination, or the dataflow publishes no series at all `no_data_in_range`: The key returned observations but start_period/end_period excluded every one of them `key_dimension_mismatch`: Number of dot-separated segments in key does not match the dataflow's DSD dimension count `empty_key_segment`: A dot-separated position in key is empty or blank, which matches no series upstream `invalid_period_format`: start_period or end_period is not one of the recognized period formats `invalid_period_range`: start_period is later than end_period `structure_unavailable`: api.imf.org returns non-200 on the data endpoint `dataflow_list_unavailable`: The dataflow catalog that dataflow_id is resolved against could not be fetched — fires before the DSD and data lookups are attempted Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "dataflow_not_found",
      +            "no_data",
      +            "no_data_in_range",
      +            "key_dimension_mismatch",
      +            "empty_key_segment",
      +            "invalid_period_format",
      +            "invalid_period_range",
      +            "structure_unavailable",
      +            "dataflow_list_unavailable"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "dataflow_id",
      -  "key",
      -  "observations",
      -  "series_attributes",
      -  "observation_count",
      -  "truncated",
      -  "source"
      -]
  6. Changed3 schema fields changed
    • changedOutput schema / properties / series_attributes / properties / unit / description
      Previous value: -"Unit of measure, e.g. Percent, USD."New value: +"Unit of measure as the upstream code, e.g. PT (percent), USD, XDC (domestic currency), NUM (count). Null when the response carries no unit for the series — many dataflows publish none."
    • changedOutput schema / properties / series_metadata / description
      Previous value: -"Per-series attributes, one entry per distinct series_key in the result. Present only when the query resolved to more than one series; a single-series query carries its values in series_attributes instead. Scale differs across series in one query — WEO NGDPD is scale 9 while NGDP_RPCH is unscaled — so interpret each series against its own entry."New value: +"Per-series attributes, one entry per distinct series_key in the result. Present only when the query resolved to more than one series; a single-series query carries its values in series_attributes instead. Unit and scale differ across series in one query — WEO NGDPD is USD at scale 9 while NGDP_RPCH is PT unscaled — so interpret each series against its own entry."
    • changedOutput schema / properties / series_metadata / items / properties / unit / description
      Previous value: -"Unit of measure for this series, e.g. Percent."New value: +"Unit of measure for this series as the upstream code, e.g. PT (percent), USD, XDC (domestic currency). Null when the response carries none for it."
  7. Changed3 schema fields changed
    • changedOutput schema / properties / series_attributes / description
      Previous value: -"Series-level attributes (unit, scale, decimals)."New value: +"Attributes of the first series in the result — the same series as series_metadata[0]. A key with + or * resolves to several series whose scale and unit differ, and this field describes only the first of them: read series_metadata for the rest, and never apply these values to another series_key."
    • changedOutput schema / properties / series_attributes / properties / scale / description
      Previous value: -"Scale multiplier, e.g. Billions."New value: +"Scale multiplier as the upstream code, e.g. 9 for billions. \"0\" means no multiplier — the values are unscaled."
    • addedOutput schema / properties / series_metadata
      Added value: +{
      +  "description": "Per-series attributes, one entry per distinct series_key in the result. Present only when the query resolved to more than one series; a single-series query carries its values in series_attributes instead. Scale differs across series in one query — WEO NGDPD is scale 9 while NGDP_RPCH is unscaled — so interpret each series against its own entry.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "Unit, scale, and decimals for one series in the result.",
      +    "properties": {
      +      "decimals": {
      +        "anyOf": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Number of decimal places shown for this series."
      +      },
      +      "scale": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Scale multiplier for this series as the upstream code, e.g. 9 for billions. \"0\" means no multiplier."
      +      },
      +      "series_key": {
      +        "description": "Series these attributes belong to, matching observations[].series_key.",
      +        "type": "string"
      +      },
      +      "unit": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Unit of measure for this series, e.g. Percent."
      +      }
      +    },
      +    "required": [
      +      "series_key",
      +      "unit",
      +      "scale",
      +      "decimals"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  8. Changed5 schema fields changed
    • changedInput schema / properties / end_period / description
      Previous value: -"End of time range (inclusive). Same format as start_period, and must be greater than or equal to start_period. Observations after this period are excluded from the result."New value: +"End of time range (inclusive). Same formats as start_period, and must not be earlier than it. The bound covers the whole period it names, so end_period 2023 admits 2023-M12 and 2023-Q4. Observations after this period are excluded from the result."
    • changedInput schema / properties / key / description
      Previous value: -"Dot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to specify multiple codes (e.g. USA+GBR.NGDP_RPCH.A). Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE."New value: +"Dot-separated dimension codes in DSD keyPosition order. Call imf_get_database to get key_format and valid codes first. Use + to combine codes at one position (e.g. USA+GBR.NGDP_RPCH.A). Use * to match every code at a position — *.NGDP_RPCH.A returns the indicator for all countries, and CAN.*.A every indicator for Canada. Every position needs a code or a *; an empty segment (USA..A) is rejected. Country codes are ISO 3-letter: USA not US, GBR not GB, DEU not DE."
    • changedInput schema / properties / start_period / description
      Previous value: -"Start of time range (inclusive). Format matches the dataflow frequency: YYYY (annual), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly). Observations before this period are excluded from the result."New value: +"Start of time range (inclusive). Accepts any of YYYY (annual), YYYY-SN (semi-annual, e.g. 2023-S1), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly), or YYYY-MM-DD (daily), whatever the dataflow's frequency. The bound covers the whole period it names, so start_period 2023 admits 2023-M01 and 2023-Q1. Observations before this period are excluded from the result."
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Populated when a period bound was set but some observations carry a time_period label the range filter does not recognize — those rows are returned unfiltered, so the requested range did not apply to them.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / observations / items / properties / time_period / description
      Previous value: -"Time label as emitted by the upstream API. Annual: YYYY (e.g. 2023). Quarterly: YYYY-QN (e.g. 2023-Q1). Monthly: YYYY-MNN (e.g. 2023-M01, not YYYY-MM). start_period/end_period accept both YYYY-MM and YYYY-MNN for monthly comparisons."New value: +"Time label as emitted by the upstream API. Annual: YYYY (e.g. 2023). Semi-annual: YYYY-SN (e.g. 2023-S1). Quarterly: YYYY-QN (e.g. 2023-Q1). Monthly: YYYY-MNN (e.g. 2023-M01, not YYYY-MM). Daily: YYYY-MM-DD (e.g. 2023-01-05). Every one of these is also accepted as a start_period/end_period bound, so a label from this field can be passed straight back in."
  9. Changed1 schema field changed
    • changedInput schema / properties / end_period / description
      Previous value: -"End of time range (inclusive). Same format as start_period. Observations after this period are excluded from the result."New value: +"End of time range (inclusive). Same format as start_period, and must be greater than or equal to start_period. Observations after this period are excluded from the result."
  10. Changed3 schema fields changed
    • changedInput schema / properties / end_period / description
      Previous value: -"Requested end of time range. Same format as start_period. See start_period note: the API returns the full series; this parameter is passed through but may not filter observations."New value: +"End of time range (inclusive). Same format as start_period. Observations after this period are excluded from the result."
    • changedInput schema / properties / start_period / description
      Previous value: -"Requested start of time range. Format matches the dataflow frequency: YYYY (annual), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly). Note: the IMF SDMX 3.0 compact JSON endpoint returns the full available series regardless of this parameter — observations outside the requested range may still appear."New value: +"Start of time range (inclusive). Format matches the dataflow frequency: YYYY (annual), YYYY-QN (quarterly, e.g. 2023-Q1), YYYY-MM (monthly). Observations before this period are excluded from the result."
    • changedOutput schema / properties / observations / items / properties / time_period / description
      Previous value: -"Time label, e.g. 2023 or 2023-Q1 or 2023-01."New value: +"Time label as emitted by the upstream API. Annual: YYYY (e.g. 2023). Quarterly: YYYY-QN (e.g. 2023-Q1). Monthly: YYYY-MNN (e.g. 2023-M01, not YYYY-MM). start_period/end_period accept both YYYY-MM and YYYY-MNN for monthly comparisons."
  11. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.