Koskamo

Agent Data Hub MCP

A read-only MCP server providing access to official statistics, central bank rates, FX, energy, weather, and research metadata from openly licensed public sources. It supports 306 endpoints, including task bundles for macroeconomic snapshots, location briefs, and drug safety, with full provenance and data freshness tracking.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Agent Data Hub MCP logo, by Agent Data HubCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Agent Data Hub
You need:No account, no API key
MCP endpoint (Streamable HTTP)
https://api.agentdatahub.de/mcp
Vendor documentation

What you can do with it

  • Retrieve macroeconomic indicators like GDP and inflation for specific countries
  • Get current weather forecasts and local time for a specific location
  • Fetch historical time series data for FX rates or energy prices
  • Check public drug safety information and adverse reactions

Source and maintenance

Community listingRegistry 1.6.0

Protocol and capabilities

Server
agent-data-hub 1.6.1
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

No API key needed. Start with ask_anything for any data question. call_api with bundle-location-brief, bundle-country-brief or bundle-npm-package-brief answers whole tasks in one call. get_history returns recorded data over time as CSV. Results are compact by default; pass verbose=true for full provenance, or fields="a,b.c" to return only specific data fields. Answers above about 2,500 tokens are shortened (see truncated); pass full=true for everything. Check data_freshness: stale_cache means the source is down and the value is the last known one; failed calls return isError with a reason.

Tools

5 advertised

ask_anything — Answer a data question
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Routes a plain-language data question to the best matching endpoint of this service (official statistics, central bank rates, FX, energy, weather, holidays, research metadata) or catalog entry (World Bank indicators, Eurostat datasets, Statistics Canada and Destatis GENESIS tables), runs it and returns compact JSON with source, license and data_freshness. Also returns confidence and, when unsure, ready alternative calls. Examples: "convert 250 usd to eur", "weather berlin tomorrow", "germany inflation", "hospital beds germany eurostat". When to use: the first call for any data question when you do not know the endpoint id. Use call_api instead when you already have an id from an earlier answer, get_series for a long numeric history. If nothing matches it returns status "unfulfilled"; search_apis lists endpoints by keyword. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

ask_anything input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Question or keywords, max 200 characters"
    }
  }
}
ask_anything annotations
{
  "title": "Answer a data question",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
search_apis — Search the endpoint catalog
Advertised by the server during the last successful anonymous check.
Advertised read-only

Searches the catalog of verified endpoints (official statistics, interest rates, FX, energy, weather, geo, holidays, research, developer tools) by keyword and returns the best matches (10 by default) with id, short description, parameter names and an example query. When to use: to browse what exists for a topic, or when ask_anything returned "unfulfilled" or a low-confidence match. Pass the chosen id to call_api. Does not fetch any data and does not count against the quota.

search_apis input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Number of matches, 1-30 (default 10)"
    },
    "search": {
      "type": "string",
      "description": "Keywords, e.g. \"electricity price germany\""
    },
    "category": {
      "type": "string",
      "description": "Optional category filter, e.g. \"Finance\""
    }
  }
}
search_apis annotations
{
  "title": "Search the endpoint catalog",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
call_api — Call an endpoint
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Runs one endpoint by id with parameters and returns its data as compact JSON (source, license, data_freshness included). Bundles answer whole tasks in one call: bundle-location-brief (weather, time, holidays for a place), bundle-country-brief, bundle-eurozone-brief, bundle-energy-brief-de, bundle-npm-package-brief. When to use: you know the endpoint id (from search_apis, from alternatives or catalog_choices of ask_anything, or from the docs) and want to set parameters exactly, e.g. another country or date. params are the endpoint's own query parameters as listed by search_apis (example_query). Unknown ids or bad params return an error message naming the problem. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

call_api input schema
{
  "type": "object",
  "required": [
    "apiId"
  ],
  "properties": {
    "full": {
      "type": "boolean",
      "description": "Return the whole answer even above about 2,500 tokens (default false: long lists are shortened)"
    },
    "apiId": {
      "type": "string",
      "description": "Endpoint id, e.g. fx-currency-convert or bundle-location-brief"
    },
    "fields": {
      "type": "string",
      "description": "Optional comma-separated data fields to return (dot paths), saves tokens"
    },
    "params": {
      "type": "object",
      "description": "Query parameters as key-value map, e.g. {\"from\":\"USD\",\"to\":\"EUR\",\"amount\":\"250\"}"
    },
    "verbose": {
      "type": "boolean",
      "description": "Include full provenance metadata (default false)"
    }
  }
}
call_api annotations
{
  "title": "Call an endpoint",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_series — Get a full time series
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns complete numeric histories as compact CSV (t,value) from this service's archive of openly licensed series, e.g. ECB FX rates since 1999 (fx.EUR.USD), World Bank indicators for all countries since 1960 (wb.FP.CPI.TOTL.ZG.DE), ECB rates and 10y yields (ecb.rate.deposit, ecb.yield10y.IT), Eurostat, Statistics Canada, ONS and FAO series, German power prices (smard.price.day), sunspots since 1749 (noaa.sunspot-number). Pass q to search series ids, or id to fetch one (max 1,000 points, most recent kept). When to use: for many periods of one number (e.g. yearly inflation since 2000, monthly FX since 2010), with from/to and resample. For the latest value with context use ask_anything; get_history only holds values this service recorded from live endpoints. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

get_series input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Search series by keywords, e.g. \"inflation germany\" (returns ids, no data)"
    },
    "id": {
      "type": "string",
      "description": "Series id to fetch, e.g. fx.EUR.USD"
    },
    "to": {
      "type": "string",
      "description": "End, inclusive: year (2025 = through Dec 31), month or date"
    },
    "agg": {
      "enum": [
        "mean",
        "last",
        "min",
        "max",
        "sum"
      ],
      "type": "string",
      "description": "Aggregation for resample (default mean)"
    },
    "from": {
      "type": "string",
      "description": "Start: year (2010), month (2010-06) or date"
    },
    "resample": {
      "enum": [
        "none",
        "D",
        "W",
        "M",
        "Q",
        "A"
      ],
      "type": "string",
      "description": "Aggregate to day/week/month/quarter/year"
    }
  }
}
get_series annotations
{
  "title": "Get a full time series",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_history — Get recorded endpoint history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Returns change points this service recorded over time for an endpoint (e.g. exchange rates, weather) as compact CSV. Use the same params as the live call. When to use: to see how a live value (e.g. an exchange rate or the weather at a place) changed since this service started recording it. For long official histories use get_series instead. Returns an error if nothing was recorded for these params. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

get_history input schema
{
  "type": "object",
  "required": [
    "apiId"
  ],
  "properties": {
    "from": {
      "type": "string",
      "description": "ISO date, e.g. 2026-01-01"
    },
    "apiId": {
      "type": "string",
      "description": "Endpoint id; list recorded ones via GET /api/v1/history"
    },
    "limit": {
      "type": "number",
      "description": "Max points (default 200, max 1000)"
    },
    "fields": {
      "type": "string",
      "description": "Comma-separated data fields to include"
    },
    "params": {
      "type": "object",
      "description": "Same params as the live call (omit for the default series)"
    }
  }
}
get_history annotations
{
  "title": "Get recorded endpoint history",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1702 ms
95th percentile latency
1702 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1702 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http agent-data-hub-mcp https://api.agentdatahub.de/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add agent-data-hub-mcp --url https://api.agentdatahub.de/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable agent-data-hub-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "agent-data-hub-mcp": {
      "url": "https://api.agentdatahub.de/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "agent-data-hub-mcp": {
      "type": "streamableHttp",
      "url": "https://api.agentdatahub.de/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start agent-data-hub-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "agent-data-hub-mcp": {
      "type": "http",
      "url": "https://api.agentdatahub.de/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http agent-data-hub-mcp https://api.agentdatahub.de/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "agent-data-hub-mcp": {
      "url": "https://api.agentdatahub.de/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "agent-data-hub-mcp": {
      "serverUrl": "https://api.agentdatahub.de/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Agent Data Hub MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.