oecd-mcp-server
Qué hace este MCP
Searches and queries OECD statistical dataflows, dimensions, codes, and observations with optional SQL analysis of staged datasets.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['canvas_id'], 'properties': {'canvas_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{10}$', 'description': 'Canvas ID returned by oecd_query_dataset â\x80\x94 exactly 10 characters of letters, digits, hyphens, and underscores. Identifies the DataCanvas session holding the staged observation tables.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['canvas_id', 'tables', 'table_count']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['canvas_disabled', 'canvas_not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `canvas_disabled`: DataCanvas is not configured â\x80\x94 CANVAS_PROVIDER_TYPE is unset. `canvas_not_found`: The canvas_id has expired or was never created. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'tables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'row_count', 'columns'], 'properties': {'kind': {'type': 'string', 'description': 'Object kind: "table" or "view".'}, 'name': {'type': 'string', 'description': 'Table name â\x80\x94 use in SQL FROM clauses.'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Column name.'}, 'type': {'type': 'string', 'description': 'DuckDB column type â\x80\x94 e.g. VARCHAR, DOUBLE, BIGINT.'}}, 'description': 'A column in the table with its DuckDB type.', 'additionalProperties': False}, 'description': 'Columns in the table.'}, 'row_count': {'type': 'number', 'description': 'Number of rows in the table.'}}, 'description': 'A canvas table or view with row count and column schema.', 'additionalProperties': False}, 'description': 'Tables and views staged on this canvas.'}, 'canvas_id': {'type': 'string', 'description': 'The canvas ID whose tables are listed.'}, 'table_count': {'type': 'number', 'description': 'Total number of tables and views.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['canvas_id', 'sql'], 'properties': {'sql': {'type': 'string', 'description': 'Read-only SELECT statement. Reference tables by the names returned by oecd_dataframe_describe. Only SELECT statements are allowed â\x80\x94 DDL, DML, and file-reading functions are rejected.'}, 'canvas_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{10}$', 'description': 'Canvas ID returned by oecd_query_dataset â\x80\x94 exactly 10 characters of letters, digits, hyphens, and underscores. Identifies the DataCanvas session holding the observation tables.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['rows', 'row_count', 'column_names']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Result rows from the SQL query (capped at the canvas row limit).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['canvas_disabled', 'canvas_not_found', 'table_not_found', 'invalid_sql', 'sql_execution_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `canvas_disabled`: DataCanvas is not configured â\x80\x94 CANVAS_PROVIDER_TYPE is unset. `canvas_not_found`: The canvas_id has expired or was never created. `table_not_found`: The SQL names a table this canvas does not hold â\x80\x94 it expired, was dropped, or the name is wrong. `invalid_sql`: The SQL is not a valid SELECT statement or contains disallowed operations. `sql_execution_error`: The SQL parsed and ran, then failed on the staged observation data â\x80\x94 a conversion, an invalid input, or a value out of range. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'row_count': {'type': 'number', 'description': 'Full result count before any row cap.'}, 'column_names': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column names in the result, in order.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flow_ref'], 'properties': {'flow_ref': {'type': 'string', 'description': 'Full flow reference, either {agencyID},{dsd_id}@{df_id} â\x80\x94 e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I" â\x80\x94 or the bare {agencyID},{df_id} form OECD uses for the few dataflows published without a datastructure prefix. Obtain from oecd_search_datasets.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['flow_ref', 'dimensions', 'key_example', 'non_production', 'source']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_flow_ref', 'dataflow_not_found', 'rate_limited', 'upstream_timeout', 'upstream_unavailable', 'upstream_redirect', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_flow_ref`: The flow_ref parameter matches neither the {agencyID},{dsd_id}@{df_id} nor the {agencyID},{df_id} format. `dataflow_not_found`: No datastructure was found for the provided flow_ref. `rate_limited`: OECD throttled the request rate and was still refusing after the retries. `upstream_timeout`: OECD did not finish responding before OECD_TIMEOUT_MS elapsed. `upstream_unavailable`: OECD returned a server fault or was unreachable once the retries ran out. `upstream_redirect`: The configured OECD host answered with a redirect, which this server never follows. `upstream_error`: OECD refused the request with a status this server does not model â\x80\x94 an authorization challenge, a rejection from something sitting in front of the API, or a request read as malformed. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'source': {'type': 'string', 'const': 'OECD', 'description': 'Data source attribution â\x80\x94 always "OECD".'}, 'flow_ref': {'type': 'string', 'description': 'The resolved flow reference.'}, 'dimensions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'position'], 'properties': {'id': {'type': 'string', 'description': 'Dimension identifier â\x80\x94 e.g. REF_AREA.'}, 'name': {'type': 'string', 'description': 'Concept name for the dimension â\x80\x94 e.g. "Reference area" for REF_AREA. Repeats the id when OECD publishes no concept for it.'}, 'position': {'type': 'number', 'description': '1-based position in the dot-delimited key. Segment at this position corresponds to this dimension.'}, 'codelist_ref': {'type': 'string', 'description': 'Codelist reference in the form {agencyID},{codelistID} â\x80\x94 use with oecd_get_dimension_values.'}}, 'description': 'A dataflow dimension with its key position and codelist reference.', 'additionalProperties': False}, 'description': 'Dimensions in ascending position order.'}, 'key_example': {'type': 'string', 'description': 'Example dot-delimited key with wildcards â\x80\x94 each dot corresponds to one dimension in position order. Empty segments are wildcards. Replace with actual codes from oecd_get_dimension_values.'}, 'non_production': {'type': 'boolean', 'description': 'True if OECD flagged this dataflow as experimental or deprecated.'}, 'time_dimension': {'type': 'object', 'required': ['id', 'name', 'position'], 'properties': {'id': {'type': 'string', 'description': 'Time dimension identifier â\x80\x94 typically TIME_PERIOD.'}, 'name': {'type': 'string', 'description': 'Concept name for the time dimension, repeating the id when none is published.'}, 'position': {'type': 'number', 'description': 'Position after all regular dimensions.'}}, 'description': 'Time dimension â\x80\x94 used for startPeriod/endPeriod filtering in oecd_query_dataset.', 'additionalProperties': False}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flow_ref', 'dimension_id'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Maximum codes to return (1â\x80\x93500, default 50).'}, 'query': {'type': 'string', 'description': 'Case-insensitive substring matched against both the code and its label, so "PA" and "percent" each reach the code "PA" / "Percent per annum". Omit to page the whole codelist.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index of the first code to return within the matching list, applied before limit. Advance it to page; an offset past the last match returns an empty page.'}, 'flow_ref': {'type': 'string', 'description': 'Full flow reference â\x80\x94 e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I", or the bare "OECD.TAD.ARP,DF_AEI2024_DASHBOARD" form for a dataflow published without a datastructure prefix. Obtain from oecd_search_datasets.'}, 'dimension_id': {'type': 'string', 'description': 'Dimension identifier to fetch codes for â\x80\x94 e.g. "REF_AREA" or "MEASURE". Obtain valid dimension IDs from oecd_get_dataset_info.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['flow_ref', 'dimension_id', 'codes', 'code_count', 'source']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'codes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'description': 'SDMX code â\x80\x94 use in the dimension key for oecd_query_dataset.'}, 'name': {'type': 'string', 'description': 'Human-readable label for the code.'}}, 'description': 'A valid SDMX code and its human-readable label.', 'additionalProperties': False}, 'description': 'The requested page of codes, after query, offset, and limit are applied.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_flow_ref', 'dataflow_not_found', 'dimension_not_found', 'rate_limited', 'upstream_timeout', 'upstream_unavailable', 'upstream_redirect', 'upstream_error'], 'description': "Machine-readable failure mode. Declared by this tool: `invalid_flow_ref`: The flow_ref parameter matches neither the {agencyID},{dsd_id}@{df_id} nor the {agencyID},{df_id} format. `dataflow_not_found`: The flow_ref does not correspond to a known dataflow. `dimension_not_found`: The dimension_id is not present in this dataflow's structure. `rate_limited`: OECD throttled the request rate and was still refusing after the retries. `upstream_timeout`: OECD did not finish responding before OECD_TIMEOUT_MS elapsed. `upstream_unavailable`: OECD returned a server fault or was unreachable once the retries ran out. `upstream_redirect`: The configured OECD host answered with a redirect, which this server never follows. `upstream_error`: OECD refused the request with a status this server does not model â\x80\x94 an authorization challenge, a rejection from something sitting in front of the API, or a request read as malformed. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Present when the page needs explaining â\x80\x94 the dimension has no codelist, the query matched nothing, or codes remain beyond the page. States how to reach the rest.'}, 'source': {'type': 'string', 'const': 'OECD', 'description': 'Data source attribution â\x80\x94 always "OECD".'}, 'flow_ref': {'type': 'string', 'description': 'The flow reference this dimension belongs to.'}, 'code_count': {'type': 'number', 'description': "Number of codes in this page â\x80\x94 not the size of the dimension's codelist."}, 'totalCount': {'type': 'number', 'description': 'Codes matching before offset and limit, disclosed when the page does not cover them all.'}, 'dimension_id': {'type': 'string', 'description': 'The dimension whose codes are listed.'}, 'effectiveQuery': {'type': 'string', 'description': 'The substring filter as applied. Absent when the whole codelist was paged.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['agencies', 'total_agencies', 'total_dataflows', 'source']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['rate_limited', 'upstream_timeout', 'upstream_unavailable', 'upstream_redirect', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `rate_limited`: OECD throttled the request rate and was still refusing after the retries. `upstream_timeout`: OECD did not finish responding before OECD_TIMEOUT_MS elapsed. `upstream_unavailable`: OECD returned a server fault or was unreachable once the retries ran out. `upstream_redirect`: The configured OECD host answered with a redirect, which this server never follows. `upstream_error`: OECD refused the request with a status this server does not model â\x80\x94 an authorization challenge, a rejection from something sitting in front of the API, or a request read as malformed. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'source': {'type': 'string', 'const': 'OECD', 'description': 'Data source attribution â\x80\x94 always "OECD".'}, 'agencies': {'type': 'array', 'items': {'type': 'object', 'required': ['agency_id', 'dataflow_count'], 'properties': {'agency_id': {'type': 'string', 'description': 'Agency identifier â\x80\x94 e.g. OECD.SDD.NAD.'}, 'directorate': {'type': 'string', 'description': 'Name of the OECD directorate the agency sits in, resolved from the directorate segment of the identifier â\x80\x94 OECD.SDD.NAD is "Statistics and Data Directorate". Absent for a publisher outside OECD and when the agency scheme could not be reached.'}, 'dataflow_count': {'type': 'number', 'description': 'Number of dataflows published by this agency.'}}, 'description': 'An agency, its directorate, and its dataflow count.', 'additionalProperties': False}, 'description': 'Agencies and their dataflow counts, sorted descending by count.'}, 'total_agencies': {'type': 'number', 'description': 'Total number of distinct agencies.'}, 'total_dataflows': {'type': 'number', 'description': 'Total number of dataflows across all agencies.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flow_ref', 'key'], 'properties': {'key': {'type': 'string', 'description': 'Dot-delimited dimension key matching the dimension order from oecd_get_dataset_info. Empty segments are wildcards; "+" separates multiple values per segment. Example: "A.USA+DEU.B1GQ.." â\x80\x94 Annual, USA or Germany, GDP, all remaining dimensions.'}, 'flow_ref': {'type': 'string', 'description': 'Full flow reference â\x80\x94 e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I", or the bare "OECD.TAD.ARP,DF_AEI2024_DASHBOARD" form for a dataflow published without a datastructure prefix. Obtain from oecd_search_datasets and pass it through unchanged.'}, 'canvas_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{10}$', 'description': 'Canvas ID from a prior oecd_query_dataset call â\x80\x94 exactly 10 characters of letters, digits, hyphens, and underscores â\x80\x94 to stage this result alongside that one. Omit to let the server mint a canvas if this result needs one; a canvas_id comes back only when the result was large enough to spill, never on a result that fits inline.'}, 'end_period': {'type': 'string', 'description': 'End of the time range â\x80\x94 ISO period code such as "2023" or "2023-Q4". Omit to include up to the latest available period.'}, 'start_period': {'type': 'string', 'description': 'Start of the time range â\x80\x94 ISO period code such as "2010", "2010-Q1", or "2010-01". Omit to include all history (may produce very large results).'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['rows', 'row_count', 'query_flow_ref', 'query_key', 'source']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'properties': {}, 'description': 'Decoded observation row. One key per dataflow dimension (e.g. REF_AREA, TIME_PERIOD) and per observation attribute (e.g. UNIT_MULT, OBS_STATUS, PRICE_BASE), each holding a human-readable label; attributes absent from this slice are omitted. Plus "value" â\x80\x94 the observation already multiplied by "value_scale", the power of ten from UNIT_MULT (1 when the dataflow declares no multiplier; divide value by it for the figure as OECD published it) â\x80\x94 and "source" ("OECD").', 'additionalProperties': {}}, 'description': 'Observation rows. Every row of the result when truncated is absent; the leading preview slice when truncated is true â\x80\x94 query the canvas table for the rest.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_flow_ref', 'dataflow_not_found', 'no_results', 'invalid_key', 'invalid_period', 'rate_limited', 'download_limit', 'upstream_timeout', 'upstream_unavailable', 'upstream_redirect', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_flow_ref`: The flow_ref parameter matches neither the {agencyID},{dsd_id}@{df_id} nor the {agencyID},{df_id} format. `dataflow_not_found`: The flow_ref does not correspond to a known OECD dataflow. `no_results`: The dataflow exists but no observations matched the key and time range. `invalid_key`: OECD rejected the dimension key â\x80\x94 wrong number of segments, or an unsupported format. `invalid_period`: OECD could not parse start_period or end_period. `rate_limited`: OECD throttled the request rate and was still refusing after the retries. `download_limit`: OECD refused the query for exceeding its data-download or data-range limit. `upstream_timeout`: OECD did not finish responding before OECD_TIMEOUT_MS elapsed. `upstream_unavailable`: OECD returned a server fault or was unreachable once the retries ran out. `upstream_redirect`: The configured OECD host answered with a redirect, which this server never follows. `upstream_error`: OECD refused the request with a status this server does not model â\x80\x94 an authorization challenge, a rejection from something sitting in front of the API, or a request read as malformed. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'source': {'type': 'string', 'const': 'OECD', 'description': 'Data source attribution â\x80\x94 always "OECD".'}, 'canvas_id': {'type': 'string', 'description': 'Canvas handle for the staged result. Present only when DataCanvas is configured and the result exceeded the inline budget; absent when DataCanvas is off, and absent when it is on but the result fit inline. Pass to oecd_dataframe_query or oecd_dataframe_describe.'}, 'query_key': {'type': 'string', 'description': 'Dimension key used in this query.'}, 'row_count': {'type': 'number', 'description': 'Total rows in the result (or on the canvas when truncated).'}, 'truncated': {'type': 'boolean', 'description': 'True when rows is a preview slice and the full result was staged on DataCanvas; omitted entirely (never false) when rows holds the complete result. Use oecd_dataframe_query with the canvas_id for analytics over the full set. A complete rows never means a complete rendered table â\x80\x94 content_table_capped reports that separately.'}, 'table_name': {'type': 'string', 'description': 'Canvas table name holding the full result â\x80\x94 present when canvas_id is set.'}, 'query_flow_ref': {'type': 'string', 'description': 'Flow reference used in this query.'}, 'query_end_period': {'type': 'string', 'description': 'End period filter applied in this query, if any.'}, 'content_table_rows': {'type': 'number', 'description': 'Rows the rendered table shows when content_table_capped is true.'}, 'query_start_period': {'type': 'string', 'description': 'Start period filter applied in this query, if any.'}, 'content_table_capped': {'type': 'boolean', 'description': 'True when the rendered table shows only the leading rows of the result. Distinct from truncated: nothing was staged anywhere, and structuredContent.rows still holds every row. To shrink the result itself, name fewer values per key segment or set a narrower start_period / end_period; to reach the full set as a queryable table instead, run with CANVAS_PROVIDER_TYPE=duckdb and follow up with oecd_dataframe_query.'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of results to return (1â\x80\x93100, default 20).'}, 'query': {'type': 'string', 'description': 'Keyword or phrase to search for in dataflow names and descriptions â\x80\x94 e.g. "GDP", "employment", "education". Every whitespace-separated token must appear somewhere in the name or description.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index of the first match to return, applied before limit. Page through results past the limit by advancing it; an offset at or past total_matches returns an empty list.'}, 'agency_id': {'type': 'string', 'description': 'Optional agency identifier to restrict the search scope â\x80\x94 e.g. "OECD.SDD.NAD". Obtain valid agency IDs from oecd_list_agencies.'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['dataflows', 'result_count', 'total_matches', 'offset', 'source']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['no_match', 'agency_not_found', 'rate_limited', 'upstream_timeout', 'upstream_unavailable', 'upstream_redirect', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `no_match`: No dataflows matched the search query. `agency_not_found`: The supplied agency_id does not exist in the OECD SDMX catalog. `rate_limited`: OECD throttled the request rate and was still refusing after the retries. `upstream_timeout`: OECD did not finish responding before OECD_TIMEOUT_MS elapsed. `upstream_unavailable`: OECD returned a server fault or was unreachable once the retries ran out. `upstream_redirect`: The configured OECD host answered with a redirect, which this server never follows. `upstream_error`: OECD refused the request with a status this server does not model â\x80\x94 an authorization challenge, a rejection from something sitting in front of the API, or a request read as malformed. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'offset': {'type': 'number', 'description': 'Zero-based index of the first returned result within the full match list.'}, 'source': {'type': 'string', 'const': 'OECD', 'description': 'Data source attribution â\x80\x94 always "OECD".'}, 'dataflows': {'type': 'array', 'items': {'type': 'object', 'required': ['flow_ref', 'agency_id', 'name', 'matched_in', 'non_production'], 'properties': {'name': {'type': 'string', 'description': 'Human-readable dataflow name.'}, 'flow_ref': {'type': 'string', 'description': 'Full flow reference â\x80\x94 {agencyID},{dsd_id}@{df_id}, or {agencyID},{df_id} for the few dataflows OECD publishes without a datastructure prefix. Pass through unchanged to oecd_get_dataset_info or oecd_query_dataset.'}, 'agency_id': {'type': 'string', 'description': 'Publishing agency identifier.'}, 'matched_in': {'enum': ['name', 'description', 'both'], 'type': 'string', 'description': 'Which field carried every query token â\x80\x94 "name" or "description" when only that one did, "both" when each did on its own or the tokens were split across the two.'}, 'description': {'type': 'string', 'description': 'Plain-text abstract of what the dataset covers, truncated to 240 characters. Matching runs against the full abstract, so a term reported in matched_in may sit past the cut. Absent when OECD publishes no description for the dataflow.'}, 'non_production': {'type': 'boolean', 'description': 'True if flagged as experimental or deprecated by OECD.'}}, 'description': 'A matching OECD dataflow entry.', 'additionalProperties': False}, 'description': 'Matching dataflows for the requested page, up to the requested limit.'}, 'totalCount': {'type': 'number', 'description': 'Total dataflows matching the query, disclosed when matches remain beyond the returned page.'}, 'result_count': {'type': 'number', 'description': 'Number of results returned (may be less than total_matches).'}, 'total_matches': {'type': 'number', 'description': 'Total dataflows matching the query before applying offset and limit.'}}, 'additionalProperties': False}
Cambios recientes en herramientas
Servidores MCP similares
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
Stratalize Finance
Provides financial, macroeconomic, banking, credit, commodities, M&A, ESG, labor, and regulatory benchmarks for analysis and plan…
Stratalize Healthcare
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Governance
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Oracle
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Intelligence
Provides vendor, market, SaaS, workforce, government contract, public company, regulatory, competitive, and AI-brand intelligence…
Stratalize Real Estate
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…