Economy Intel MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Economy Intel MCPWhat's the latest unemployment rate in Spain?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Economy Intel MCP — by Datakoot
Macroeconomic data for AI agents — as MCP tools your agent can call mid-task to ground answers in real GDP, inflation, unemployment and trade figures for any country. No API keys.
Tools
Tool | What it does | Source |
| An indicator (GDP, inflation, unemployment, population, ...) for a country over recent years | World Bank |
| A snapshot of a country's key macro indicators, latest values | World Bank |
| Rank one indicator across several countries | World Bank |
| Key US time series: unemployment, CPI, nonfarm payrolls, participation, earnings | US BLS |
| Discover every indicator and series this server supports | — |
No API keys required.
Related MCP server: MacroOracle
Quick start
claude mcp add --transport http economy-intel https://economy.datakoot.com/mcpOr point any MCP client at https://economy.datakoot.com/mcp.
Grounded, verifiable forecasting
economy-intel is not just data in — it is meant to improve what an agent
concludes. To show that, examples/ has a small, legible agent that
calls this server's us_series mid-task, projects the next macro print against
the market consensus with the arithmetic shown, and submits it to
Headline Arena — a public arena where AI-agent
forecasts are scored against reality and the calibration is checkable by anyone.
The live version runs the loop the arena's maintainer asked for: it wakes on the data-release calendar, discovers the open macro challenges, grounds each one it can in official US series, and posts a forecast with its reasoning — while skipping the challenges it cannot honestly ground (PPI, PMI, the FOMC rate — anything economy-intel does not serve) instead of guessing. Post on signal, not on a clock.
The point is not a clever model. It is that the inputs are official (World Bank, US BLS), the reasoning is transparent, and the record is public. Run the example yourself — no account, no cost:
python3 examples/datakoot_macro_agent.py cpiData & attribution
Country data comes from the World Bank Open Data API (CC-BY 4.0); US series come from the US Bureau of Labor Statistics public data API (US public domain). Informational only.
Part of Datakoot — keyless intelligence APIs for AI agents.
Available Tools
5 toolscompare_countriesCompare CountriesARead-onlyIdempotentInspect
Compare one indicator across several countries (latest available value each). Good for ranking or benchmarking economies.
| Name | Required | Description | Default |
|---|---|---|---|
| countries | Yes | Array of country codes or names to compare, e.g. ["US", "DE", "JP"]. | |
| indicator | Yes | World Bank indicator key: gdp, gdp_per_capita, gdp_growth, inflation, population, unemployment, life_expectancy, exports, imports, govt_debt_pct_gdp, real_interest_rate, fdi, co2_per_capita, internet_users. Call list_indicators for the full set. Raw World Bank codes are also accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| source | No | |
| ranking | No | |
| indicator | No | |
| provenance | No | Where this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still earns credit for disclosing the non-obvious data semantics: only the latest available value per country is returned, which rules out time-series interpretation. It omits anything about missing/stale data for lagging reporters, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler, with the core scope statement (one indicator, several countries) front-loaded ahead of the softer benefit claim. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the read-only profile. For a 2-parameter read-only tool the description is sufficient, though it could note behavior when a country lacks data for the requested indicator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum list of indicator keys plus country-code example already live in the schema. The description's 'one indicator' wording reinforces cardinality but adds no format or validation detail beyond what is structured. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Compare) and resource (one indicator across several countries), plus the temporal scope (latest available value each). It contrasts implicitly with country_profile by scoping to a single indicator, but never names a sibling, so an agent must infer the boundary from sibling names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Good for ranking or benchmarking economies' points at intended use cases, so usage is implied rather than stated as a rule. There is no explicit when-not guidance and no named alternative (e.g. country_indicator for single-country time series), leaving the agent to work out the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country_indicatorCountry IndicatorARead-onlyIdempotentInspect
Get a macroeconomic indicator for a country over recent years (World Bank). Indicators: gdp, gdp_per_capita, gdp_growth, inflation, unemployment, population, life_expectancy, exports, imports, govt_debt_pct_gdp, real_interest_rate, fdi, co2_per_capita, internet_users. Country accepts an ISO code (US, DE, JP) or a World Bank country code. You may also pass a raw World Bank indicator code.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | How many of the most recent years to return. | |
| country | Yes | Country as an ISO code or name, e.g. JP, JPN, or Japan. | |
| indicator | Yes | World Bank indicator key: gdp, gdp_per_capita, gdp_growth, inflation, population, unemployment, life_expectancy, exports, imports, govt_debt_pct_gdp, real_interest_rate, fdi, co2_per_capita, internet_users. Call list_indicators for the full set. Raw World Bank codes are also accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| code | No | |
| series | No | |
| source | No | |
| country | No | |
| indicator | No | |
| provenance | No | Where this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety and idempotency are covered structurally. The description's one genuinely new behavioral fact is the World Bank as the data source and that only 'recent years' are returned, plus the accepted input forms; it says nothing about missing data, rate limits, or how gaps are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose before the enumeration of indicators and accepted input formats. The indicator list is long but functional, since it tells the agent the tool's coverage without opening list_indicators.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and all three parameters are documented. For a simple read-only data-fetch tool with rich annotations, the description covers purpose, source, and input formats adequately; only sibling differentiation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema, and the description largely repeats the indicator list and the country-code flexibility. It adds marginal value, and its claim that country accepts an ISO code or World Bank code sits slightly at odds with the schema wording (ISO code or name).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a macroeconomic indicator for a country over recent years') and names the data source (World Bank), so the agent knows exactly what it returns. It does not distinguish itself from siblings such as country_profile or compare_countries, which also operate on countries, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for a country over recent years', but there is no explicit when-to-use guidance, no mention of when to prefer country_profile or compare_countries, and no exclusions. The routing hint to list_indicators only appears in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
country_profileCountry ProfileARead-onlyIdempotentInspect
Get a snapshot of a country's key macro indicators (latest available values): GDP, GDP per capita, GDP growth, inflation, unemployment, and population. Country accepts an ISO code.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Country as an ISO code or name, e.g. DE, DEU, or Germany. |
Output Schema
| Name | Required | Description |
|---|---|---|
| latest | No | |
| source | No | |
| country | No | |
| provenance | No | Where this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered by structured data. The description adds one useful behavioral fact – that values are 'latest available' and therefore may lag – but says nothing about rate limits, auth, or coverage gaps for countries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the core purpose front-loaded and the parameter note appended only where needed. Every clause earns its place by naming real indicators.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description need not explain return values or safety, and it correctly focuses on scope and coverage ('latest available values'). The only shortfall is the absence of any routing signal relative to the sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already states the country accepts an ISO code or name, so the description's note that 'Country accepts an ISO code' adds little and is actually narrower than the schema's 'ISO code or name'. Baseline 3 applies since the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Get a snapshot of a country's key macro indicators') and enumerates the exact indicators returned, so an agent knows precisely what comes back. It stops short of naming or contrasting with the sibling tools (country_indicator, compare_countries), so differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'latest available values' implies this is a point-in-time snapshot rather than a time series, which hints at when to prefer it over country_indicator, but no alternative is named and no when-not condition is stated. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_indicatorsList IndicatorsARead-onlyIdempotentInspect
List the indicators this server supports (World Bank + US BLS), with descriptions. Call this to discover what you can query.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| us_bls | No | |
| us_census | No | |
| provenance | No | Where this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at. |
| world_bank | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety and idempotency profile. The description adds useful context about the content returned (indicators with descriptions from two named sources) but does not disclose pagination, result size, or other operational behavior. With annotations carrying the main behavioral burden, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words. The primary function is front-loaded, and the usage instruction follows naturally without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless discovery tool with rich annotations and an output schema already defining return values, the description needs only to state what is listed and why. It does exactly that, leaving no essential gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, and the schema is empty. Per the rubric, zero parameters sets a baseline of 4; the description appropriately focuses on the tool's purpose rather than describing nonexistent inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: lists the indicators supported by the server, including their descriptions and data sources (World Bank + US BLS). The purpose as a discovery tool is clear and distinguishes it from siblings like country_indicator or compare_countries, which query data rather than enumerate available indicators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear contextual guidance with 'Call this to discover what you can query,' making its role as a first-step discovery tool explicit. It does not name alternative tools or state when not to use it, so it stops short of the highest level of guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
us_seriesUS SeriesARead-onlyIdempotentInspect
Get a key US economic time series. From the Bureau of Labor Statistics: us_unemployment_rate, us_cpi, us_nonfarm_payrolls, us_labor_participation, us_avg_hourly_earnings, us_ppi. From the US Census Bureau: us_retail_sales (advance retail & food services, seasonally adjusted). The BLS series are kept warm by Datakoot and always available. A raw BLS series ID is also accepted, but BLS rate-limits by client IP and Datakoot runs on shared edge IPs, so an uncached series may return an upstream-limit error instead of data; that error means the upstream refused, not that the series does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| series | Yes | A US series key: us_unemployment_rate, us_cpi, us_nonfarm_payrolls, us_labor_participation, us_avg_hourly_earnings, us_ppi (BLS), or us_retail_sales (US Census). These are cached by Datakoot and kept current. A raw BLS series ID is also accepted, but uncached series often hit BLS rate limits. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | No | |
| as_of | No | |
| series | No | |
| source | No | |
| seriesID | No | |
| provenance | No | Where this answer came from. served_at is when Datakoot answered (UTC); upstream lists the official sources consulted. Datakoot may serve a briefly cached copy, so the source's own observation can be older than served_at. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing caching behavior, shared-edge-IP rate limiting, and the precise meaning of an upstream-limit error (refusal, not a nonexistent series). This error semantics is exactly the kind of operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then the key list, then the caching and error caveats in a logical order. The error-handling sentence is long but earns its place; overall dense without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the remaining gaps an agent needs: valid inputs, availability guarantees, and failure interpretation. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already lists the valid keys and the raw-BLS-ID caveat, so the description largely restates what the structured field provides. The bureau grouping adds marginal value but no new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a key US economic time series') and enumerates the exact series keys available, split by source agency. An agent can distinguish this US-series tool from the country-oriented siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains which series are reliably available (BLS keys kept warm by Datakoot) and when a raw BLS series ID is acceptable but risky. It stops short of explicitly naming an alternative tool or stating when-not to use this one, so it is clear context rather than full routing 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.
5 tool updates
v2.1.0- First observed
compare_countries - First observed
country_indicator - First observed
country_profile - First observed
list_indicators - First observed
us_series
TDQS
Scored across 5 tools
country_profile is largely a batch of country_indicator calls, so the boundary between them is slightly soft, but descriptions make the intent clear (single one-indicator time series vs. latest-values snapshot vs. cross-country ranking). us_series and list_indicators are cleanly distinct.
Names mix conventions: verb_noun (compare_countries, list_indicators), noun_phrase (country_indicator, country_profile), and a bare noun (us_series). The 'country_' prefix groups the country tools helpfully, but there is no single predictable pattern.
Five tools is well-scoped for a focused economic-data server: one discovery tool, three query shapes (single indicator, profile, comparison), and a US-specific series tool. Each earns its place with no redundancy.
Coverage of the domain is solid—discovery, US and World Bank indicators, country snapshots, and cross-country comparison—with the caveats that cross-country time-series comparison and any country/indicator metadata lookup are missing, but agents can work around those.
Maintenance
Related MCP Connectors
Official economic statistics for AI agents: GDP, inflation, trade and debt for 150+ countries.
Macro indicators from World Bank, FRED, IMF, and OECD via unified query surface.
Official World Bank macro indicators (GDP, inflation...) by country. $0.005/call via x402.
Macroeconomic and other official data from 170+ publishers, resolved from natural language with provenance.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that interfaces with the WorldBank API to retrieve economic and labor market data such as GDP and employment indicators. It allows LLMs to query global development statistics including unemployment rates, labor force participation, and sectoral employment data.-
- FlicenseNot gradedqualityCmaintenanceUS Macro Economic Intelligence MCP — 8 tools for Fed rates, inflation, yield curve, labor market, GDP via FRED. Part of ToolOracle.-
- AlicenseNot gradedqualityDmaintenanceEconomic data MCP server that connects FRED, BLS, BEA, IMF, World Bank, and ECB to any MCP-compatible client, with built-in methodology rules to guide LLMs in selecting appropriate economic indicators.MIT
- AlicenseAqualityDmaintenanceProvides access to World Bank economic and country data without an API key, allowing users to search countries, fetch indicator time series, and compare latest values.5MIT