Skip to main content
Glama

Server Details

Search and query 1,500+ OECD statistical datasets via SDMX. Keyless.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/oecd-mcp-server
GitHub Stars
2
Server Listing
OECD MCP Server

Available Tools

7 tools
oecd_dataframe_describeOecd Dataframe DescribeA
Read-onlyIdempotent
Inspect

List tables and columns staged on a DataCanvas by a prior oecd_query_dataset spill. Call this before oecd_dataframe_query to discover exact table and column names for SQL. Only available when CANVAS_PROVIDER_TYPE=duckdb is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
canvas_idYesCanvas ID returned by oecd_query_dataset. Identifies the DataCanvas session holding the staged observation tables.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
tablesNoTables and views staged on this canvas.
canvas_idNoThe canvas ID whose tables are listed.
table_countNoTotal number of tables and views.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description's listing behavior is consistent and adds no contradiction. It adds context beyond annotations by revealing the dependency on a prior spill and the environmental requirement for duckdb. It does not detail output shape, but the presence of an output schema lowers the need for that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each with distinct value: what it lists, when to call it relative to oecd_dataframe_query, and the only environment where it is available. The most actionable statement is front-loaded, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only metadata tool with a rich schema description and an output schema, the description fully covers what the agent needs: the object being inspected, the prerequisite spill, the ordering relative to the query tool, and the duckdb-only availability. No critical guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the canvas_id schema entry already explains its provenance ('Canvas ID returned by oecd_query_dataset') and referent ('DataCanvas session holding the staged observation tables'). The description reinforces this linkage but adds no new parameter-level meaning, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and object: 'List tables and columns staged on a DataCanvas by a prior oecd_query_dataset spill.' It distinguishes itself from sibling oecd_dataframe_query by positioning itself as the pre-query discovery step, so an agent knows exactly what this tool does and which sibling it complements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it: 'Call this before oecd_dataframe_query to discover exact table and column names for SQL.' It also names the prerequisite (prior oecd_query_dataset spill) and a hard restriction (CANVAS_PROVIDER_TYPE=duckdb), leaving no ambiguity about the invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oecd_dataframe_queryOecd Dataframe QueryA
Read-onlyIdempotent
Inspect

Run a read-only SQL SELECT against OECD observation tables staged on a DataCanvas by oecd_query_dataset. Call oecd_dataframe_describe first to discover exact table and column names, then use this tool for aggregation, filtering, GROUP BY, JOIN, and window functions. Only available when CANVAS_PROVIDER_TYPE=duckdb is set.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesRead-only SELECT statement. Reference tables by the names returned by oecd_dataframe_describe. Only SELECT statements are allowed — DDL, DML, and file-reading functions are rejected.
canvas_idYesCanvas ID returned by oecd_query_dataset. Identifies the DataCanvas session holding the observation tables.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNoResult rows from the SQL query (capped at the canvas row limit).
errorNoPresent when the call failed. Absent on success.
row_countNoFull result count before any row cap.
column_namesNoColumn names in the result, in order.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and idempotentHint annotations, the description discloses important behavioral constraints: only SELECT statements are allowed, DDL/DML and file-reading functions are rejected, and the tool operates on tables staged by oecd_query_dataset. This adds meaningful safety and restriction context beyond what annotations already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying essential information: the core operation, required precursor and use cases, and a hard environment prerequisite. There is no filler or redundant restatement of the tool name or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a 100%-covered schema, an output schema present, and annotations already signaling read-only/idempotent behavior, the description supplies the remaining critical context: the dependency on oecd_query_dataset, the need to call oecd_dataframe_describe first, and the DuckDB provider condition. An agent has enough information to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are already fully described in the schema (100% coverage), so the baseline is 3. The description adds value by explaining that sql should reference table names from oecd_dataframe_describe and that canvas_id identifies the DataCanvas session from oecd_query_dataset, reinforcing the relationship between parameters and workflow.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Run a read-only SQL SELECT'), names the target resource ('OECD observation tables staged on a DataCanvas by oecd_query_dataset'), and clearly separates this from sibling tools like oecd_dataframe_describe and oecd_query_dataset. It uses a concrete verb and resource, making the tool's role immediately identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: call oecd_dataframe_describe first to learn table/column names, use this tool for aggregation, filtering, GROUP BY, JOIN, and window functions, and note that it is only available when CANVAS_PROVIDER_TYPE=duckdb is set. It does not explicitly enumerate when-not-to-use alternatives, but the prerequisite and environment condition provide solid operational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oecd_get_dataset_infoOecd Get Dataset InfoA
Read-onlyIdempotent
Inspect

Fetch a dataflow's dimensions, their order, and how to construct a query key. Returns per-dimension names, codelist references, and position in the dot-delimited key. Required before calling oecd_query_dataset to understand key structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
flow_refYesFull flow reference, either {agencyID},{dsd_id}@{df_id} — e.g. "OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I" — or the bare {agencyID},{df_id} form OECD uses for the few dataflows published without a datastructure prefix. Obtain from oecd_search_datasets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
sourceNoData source attribution — always "OECD".
flow_refNoThe resolved flow reference.
dimensionsNoDimensions in ascending position order.
key_exampleNoExample dot-delimited key with wildcards — each dot corresponds to one dimension in position order. Empty segments are wildcards. Replace with actual codes from oecd_get_dimension_values.
non_productionNoTrue if OECD flagged this dataflow as experimental or deprecated.
time_dimensionNoTime dimension — used for startPeriod/endPeriod filtering in oecd_query_dataset.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds value by disclosing that the tool returns key-construction information (position in the dot-delimited key) and that it is a prerequisite step, which is behavioral context beyond the annotations. It doesn't discuss rate limits or error cases, but for a read-only metadata fetch the annotations plus the description are sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the first states what the tool returns, the second details the return contents, and the third gives the usage context. The most important information (what it fetches and why it's needed) is front-loaded. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has one parameter, a rich schema description, an output schema, and annotations covering safety and idempotency. The description explains the return value's purpose and the prerequisite relationship to oecd_query_dataset. Nothing an agent needs to decide whether to call this tool and how to use its output is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents flow_ref thoroughly, including the two accepted forms and an example. The description adds context by explaining that the output is needed to construct query keys, which helps the agent understand why flow_ref matters. Since the schema does the heavy lifting, a 4 is appropriate rather than a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch'), a specific resource ('a dataflow's dimensions'), and the concrete output (dimension names, codelist references, position in the dot-delimited key). It also explicitly distinguishes itself from oecd_query_dataset by saying it is required before calling that tool to understand key structure. This clearly differentiates it from siblings like oecd_get_dimension_values and oecd_query_dataset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Required before calling oecd_query_dataset to understand key structure,' which gives a clear when-to-use directive and names the alternative it supports. It also implies this is a prerequisite/metadata tool rather than a data-fetching tool, which helps an agent choose it over oecd_query_dataset or oecd_get_dimension_values. No exclusions are needed because the tool's role as a prerequisite is clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oecd_get_dimension_valuesOecd Get Dimension ValuesA
Read-onlyIdempotent
Inspect

Fetch the valid codes and labels for one dimension of a dataflow. Use to resolve human-readable names (countries, measures) to SDMX codes before querying with oecd_query_dataset. Pass query to match a code or label by substring — codelists run to a thousand-plus entries, and the response is a page of at most limit codes either way.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum codes to return (1–500, default 50).
queryNoCase-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.
offsetNoZero-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_refYesFull flow reference — 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_idYesDimension identifier to fetch codes for — e.g. "REF_AREA" or "MEASURE". Obtain valid dimension IDs from oecd_get_dataset_info.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codesNoThe requested page of codes, after query, offset, and limit are applied.
errorNoPresent when the call failed. Absent on success.
noticeNoPresent when the page needs explaining — the dimension has no codelist, the query matched nothing, or codes remain beyond the page. States how to reach the rest.
sourceNoData source attribution — always "OECD".
flow_refNoThe flow reference this dimension belongs to.
code_countNoNumber of codes in this page — not the size of the dimension's codelist.
totalCountNoCodes matching before offset and limit, disclosed when the page does not cover them all.
dimension_idNoThe dimension whose codes are listed.
effectiveQueryNoThe substring filter as applied. Absent when the whole codelist was paged.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the readOnly/openWorld/idempotent annotations: responses are paginated at 'at most limit codes either way,' and codelists 'run to a thousand-plus entries,' explaining why querying and paging matter. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver purpose, usage context, a rationale for the query parameter, and pagination behavior. Everything earns its place and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Input schema fully documents parameters, an output schema exists, and the description supplies the workflow context and pagination behavior. It is complete for practical use, though explicit alternative tool guidance would make it stronger.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline applies. The description adds workflow context but does not materially elaborate on individual parameter meanings beyond what the schema already documents, so it neither compensates nor needs to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Fetch the valid codes and labels for one dimension of a dataflow.' It also frames the tool's role in the workflow, resolving human-readable names to SDMX codes before using oecd_query_dataset, which differentiates it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context is provided: use this tool to resolve names to codes before querying with oecd_query_dataset. It does not enumerate exclusions or alternative tools explicitly, but the intended position in the workflow is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oecd_list_agenciesOecd List AgenciesA
Read-onlyIdempotent
Inspect

List OECD SDMX agencies, the directorate each belongs to, and the number of dataflows each publishes. Use to discover agency IDs before filtering oecd_search_datasets by department.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
sourceNoData source attribution — always "OECD".
agenciesNoAgencies and their dataflow counts, sorted descending by count.
total_agenciesNoTotal number of distinct agencies.
total_dataflowsNoTotal number of dataflows across all agencies.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds value by naming the returned content (agencies, directorate, dataflow counts) and its intended role in a search workflow. It does not go further into behavior such as pagination, ordering, or how open-world results should be interpreted, but for a zero-parameter list tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states what the tool returns, and the second gives the concrete workflow purpose. Every word earns its place and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only, idempotent listing tool with an output schema present, the description covers the essential information: what is returned and why an agent would invoke it. The annotations handle side-effect concerns, and the output schema handles return structure details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is complete by definition and there is nothing for the description to clarify. Baseline for no-parameter tools is 4, and the description appropriately avoids inventing parameter information that does not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('List OECD SDMX agencies') and specifies the exact output fields ('directorate each belongs to, and the number of dataflows each publishes'). It differentiates itself from siblings by positioning itself as the precursor to filtering oecd_search_datasets, so an agent can distinguish it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: discover agency IDs before filtering oecd_search_datasets by department. It names the sibling tool and the workflow context. It does not explicitly state when not to use it, but the positive guidance is specific enough to route an agent effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oecd_query_datasetOecd Query DatasetA
Read-onlyIdempotent
Inspect

Fetch observations from an OECD dataflow filtered by a dimension key and optional time range. Returns decoded rows (one per observation) with dimension and attribute labels, and values already scaled by the observation unit multiplier. Large multi-country time-series spill to a DataCanvas table — follow up with oecd_dataframe_query; without DataCanvas every row still comes back, but the rendered table stops at a preview slice. Call oecd_get_dataset_info first to learn the dimension order for constructing the key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesDot-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.." — Annual, USA or Germany, GDP, all remaining dimensions.
flow_refYesFull flow reference — 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_idNoCanvas ID from a prior oecd_query_dataset call, 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_periodNoEnd of the time range — ISO period code such as "2023" or "2023-Q4". Omit to include up to the latest available period.
start_periodNoStart of the time range — ISO period code such as "2010", "2010-Q1", or "2010-01". Omit to include all history (may produce very large results).

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNoObservation rows. Every row of the result when truncated is absent; the leading preview slice when truncated is true — query the canvas table for the rest.
errorNoPresent when the call failed. Absent on success.
sourceNoData source attribution — always "OECD".
canvas_idNoCanvas 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_keyNoDimension key used in this query.
row_countNoTotal rows in the result (or on the canvas when truncated).
truncatedNoTrue 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 — content_table_capped reports that separately.
table_nameNoCanvas table name holding the full result — present when canvas_id is set.
query_flow_refNoFlow reference used in this query.
query_end_periodNoEnd period filter applied in this query, if any.
content_table_rowsNoRows the rendered table shows when content_table_capped is true.
query_start_periodNoStart period filter applied in this query, if any.
content_table_cappedNoTrue 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.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavior beyond the annotations: rows are decoded with labels, values are scaled by the observation unit multiplier, large results spill to DataCanvas, and without DataCanvas every row still returns but the rendered table preview is sliced. No contradiction with the readOnly, openWorld, or idempotent hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences deliver the core action, return behavior, spill handling, and prerequisite in order. Every clause earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the detailed input schema, annotations, and output schema, the description covers what the tool returns, how result size behaves, what to do for large spills, and what to call beforehand. An agent has enough context to invoke this tool correctly and route to siblings when appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already has a detailed explanation, so the description does not need to repeat parameter-level semantics. The main description adds context around result behavior rather than new parameter meaning, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it fetches observations from an OECD dataflow filtered by dimension key and optional time range. It differentiates itself from siblings by explicitly naming the prerequisite oecd_get_dataset_info and the follow-up oecd_dataframe_query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: call oecd_get_dataset_info first to learn dimension order, and follow up with oecd_dataframe_query when large results spill to a DataCanvas table. This tells an agent when this tool fits into a multi-step workflow versus when another sibling is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oecd_search_datasetsOecd Search DatasetsA
Read-onlyIdempotent
Inspect

Search OECD dataflows by keyword or theme, matching against dataflow names and descriptions. Returns flow_ref identifiers, names, and agency IDs for use with oecd_get_dataset_info.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1–100, default 20).
queryYesKeyword or phrase to search for in dataflow names and descriptions — e.g. "GDP", "employment", "education". Every whitespace-separated token must appear somewhere in the name or description.
offsetNoZero-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_idNoOptional agency identifier to restrict the search scope — e.g. "OECD.SDD.NAD". Obtain valid agency IDs from oecd_list_agencies.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
offsetNoZero-based index of the first returned result within the full match list.
sourceNoData source attribution — always "OECD".
dataflowsNoMatching dataflows for the requested page, up to the requested limit.
totalCountNoTotal dataflows matching the query, disclosed when matches remain beyond the returned page.
result_countNoNumber of results returned (may be less than total_matches).
total_matchesNoTotal dataflows matching the query before applying offset and limit.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and openWorld behavior, so the description only needs to add context. It adds the matching behavior (against names and descriptions) and the specific return payload, which is useful beyond the annotations. No contradiction with the annotation hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the search action and matching scope are front-loaded, and the return-value note is relevant to downstream tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with a fully documented schema, rich annotations, and an output schema, the description covers the necessary selection and invocation context. It tells the agent what to expect and how the result connects to oecd_get_dataset_info.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the input schema already documents query, limit, offset, and agency_id with examples and constraints. The tool description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a concrete action (search OECD dataflows by keyword or theme), the matching target (dataflow names and descriptions), and the returned identifiers (flow_ref, names, agency IDs). It also positions the tool as the discovery step preceding oecd_get_dataset_info, distinguishing it from sibling query/dataframe tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended workflow clear: search by keyword or theme to obtain identifiers 'for use with oecd_get_dataset_info.' It does not explicitly list when not to use it or name alternatives, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updates
    • First observedoecd_dataframe_describe
    • First observedoecd_dataframe_query
    • First observedoecd_get_dataset_info
    • First observedoecd_get_dimension_values
    • First observedoecd_list_agencies
    • First observedoecd_query_dataset
    • First observedoecd_search_datasets

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying OECD data through MCP, including searching curated dataflows, fetching tidy dataset rows from the OECD SDMX REST API, and asking natural-language questions via the Pipeworx gateway.
    8
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides OECD statistical data (employment, wages, etc.) through SDMX API, supporting Korean-language queries. Enables listing indicators, retrieving stats, trends, comparisons, and rankings among OECD countries.
    8
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation5/5

Each tool occupies a distinct stage of the OECD data workflow: search/agency discovery, dataset structure, dimension values, observation querying, and SQL analysis of spilled results. The two query tools are differentiated by source (SDMX vs staged DataCanvas tables), and the two metadata tools are differentiated by purpose (key structure vs codelist values).

Naming Consistency4/5

Most tools follow an oecd_<verb>_<noun> pattern (get, list, query, search), and all share the oecd_ prefix and snake_case. The two dataframe tools shift to oecd_dataframe_<verb>, a minor but noticeable ordering deviation.

Tool Count5/5

Seven tools is well-scoped for an OECD data access server: discovery, metadata, dimension values, observation query, and large-result SQL handling. There is no apparent bloat or overly thin coverage.

Completeness5/5

The set covers the full journey from finding datasets and agencies, learning the SDMX key structure, resolving dimension codes, fetching observations, and analyzing spilled datasets with SQL. This is a complete read-only workflow for the domain.