protogrid

Search / io.github.Jona1245/agentdatahub

Agent Data Hub

R0· no sign-in

Official statistics and economic data for agents, with source and licence per answer. No key.

v1.6.2 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality78good
Trust79of 100
Uptime, 30 days97%
Latency p501002 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "agentdatahub": {
      "type": "http",
      "url": "https://api.agentdatahub.de/mcp"
    }
  }
}
claude mcp add --transport http agentdatahub https://api.agentdatahub.de/mcp
[mcp_servers.agentdatahub]
url = "https://api.agentdatahub.de/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agentdatahub": {
      "type": "remote",
      "url": "https://api.agentdatahub.de/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "agentdatahub": {
      "type": "http",
      "url": "https://api.agentdatahub.de/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=agentdatahub&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLmFnZW50ZGF0YWh1Yi5kZS9tY3AifQ%3D%3D"
}
{
  "servers": {
    "agentdatahub": {
      "type": "http",
      "url": "https://api.agentdatahub.de/mcp"
    }
  }
}
{
  "mcpServers": {
    "agentdatahub": {
      "httpUrl": "https://api.agentdatahub.de/mcp"
    }
  }
}
extensions:
  "agentdatahub":
    enabled: true
    name: "agentdatahub"
    type: streamable_http
    uri: "https://api.agentdatahub.de/mcp"
    timeout: 300

Quality 78 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene94 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations6 of 6 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,295 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stability50 · weight 15
  • warn
    stability.changes20 tool changes in 30 days
  • fail
    stability.rug_pull4 tools kept their name but changed most of their description in 30 days; review before trusting them
  • pass
    stability.new_linksno tool change named a new site
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

6 tools, about 2,295 tokens to load them all · tool set 8fa517b7a333 · tools last changed 2026-11-13 · checked 2026-11-14 07:03 UTC

Tool changes

  • find_datachangeddescription
    before

    Returns up to 10 data series that might answer a data question, each labelled with the publisher's title, place (code and level), unit, frequency, latest value, range, source and licence, and the call_api arguments that return exactly that series. Never returns a value on its own guess: status is "candidates" or "none" (with a reason). A candidate with related_only ("needs_place": no place named; "no_place": the series has no place, the question names one) has no call_api arguments: it is related, not the asked series. When to use: for a data question, pass query or the parts measure, place and period; then choose a candidate whose measure, place and time match the question and pass its call_api arguments to call_api. If none matches, tell the user this service does not have it. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

    after · 95% of words in common

    Returns up to 10 data series that might answer a data question, each labelled with the publisher's title, place (code and level), unit, frequency, latest value, range, source and licence, and the call_api arguments that return exactly that series. Never returns a value on its own guess: status is "candidates" or "none" (with a reason). A candidate with related_only ("needs_place": no place named; "no_place": the series has no place, the question names one; "other_measure": it measures something else than asked) has no call_api arguments: it is related, not the asked series. When to use: for a data question, pass query or the parts measure, place and period; then choose a candidate whose measure, place and time match the question and pass its call_api arguments to call_api. If none matches, tell the user this service does not have it. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

  • ask_anythingchangeddescription, input schema
    before

    Takes a plain-language data question (official statistics, central bank rates, FX, energy, weather, holidays, research metadata). By default (mode "auto") it does not guess a value: like find_data it returns outcome "candidates" with up to 10 labelled series (publisher title, place with code and level, unit, latest value, range, source, licence) and the call_api arguments of each, or outcome "none" with a reason. Choose the candidate whose measure, place and time match the question and pass its call_api arguments to call_api: that second call returns the value. If none matches, tell the user this service does not have it. mode "strict" instead routes the question to one endpoint, runs it and returns the value with answered_with (compare it with your question before you use it), or "unfulfilled"; a value history then holds only the newest values, full true returns all of it. Examples: "germany inflation", "unemployment rate california 2024". When to use: for any data question when you do not know the endpoint id. For a task with several figures or countries pass questions, not one call each. Use call_api instead when you already have an id, get_series for a long numeric history. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

    after · 79% of words in common

    Takes a plain-language data question (official statistics, central bank rates, FX, energy, weather, holidays, research metadata). Every answer has an outcome. "answer": the value, only when the asked measure is word for word one known name of a series and its place, level and time fit and no other series fits as well; it carries answered_with (compare it with your question before you use it); a value history holds only the newest values, full true returns all of it. "candidates": otherwise, like find_data, up to 10 labelled series (publisher title, place with code and level, unit, latest value, range, source, licence) with the call_api arguments of each: choose the one whose measure, place and time match the question and pass its arguments to call_api (that second call returns the value); if none matches, tell the user this service does not have it. "none": nothing fits, with a reason. mode "candidates" always lists, mode "strict" gives the answer or none, never candidates. Examples: "population of pakistan", "unemployment rate california 2024". When to use: for any data question when you do not know the endpoint id. For a task with several figures or countries pass questions, not one call each. Use call_api instead when you already have an id, get_series for a long numeric history. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

  • find_datachangeddescription
    before

    Returns up to 10 data series that might answer a data question, each labelled with the publisher's title, place (code and level), unit, frequency, latest value, range, source and licence, and the call_api arguments that return exactly that series. Never returns a value on its own guess: status is "candidates" or "none" (with a reason). When to use: for a data question, pass query or the parts measure, place and period; then choose a candidate whose measure, place and time match the question and pass its call_api arguments to call_api. If none matches, tell the user this service does not have it. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

    after · 92% of words in common

    Returns up to 10 data series that might answer a data question, each labelled with the publisher's title, place (code and level), unit, frequency, latest value, range, source and licence, and the call_api arguments that return exactly that series. Never returns a value on its own guess: status is "candidates" or "none" (with a reason). A candidate with related_only ("needs_place": no place named; "no_place": the series has no place, the question names one) has no call_api arguments: it is related, not the asked series. When to use: for a data question, pass query or the parts measure, place and period; then choose a candidate whose measure, place and time match the question and pass its call_api arguments to call_api. If none matches, tell the user this service does not have it. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

  • ask_anythingchangeddescription, input schema
    before

    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 answered_with (what the value measures, variant, place with code and level, period, unit, source: compare it with your question before you use the value), 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. For a task with several figures or countries pass questions, not one call each. 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.

    after · 50% of words in common

    Takes a plain-language data question (official statistics, central bank rates, FX, energy, weather, holidays, research metadata). By default (mode "auto") it does not guess a value: like find_data it returns outcome "candidates" with up to 10 labelled series (publisher title, place with code and level, unit, latest value, range, source, licence) and the call_api arguments of each, or outcome "none" with a reason. Choose the candidate whose measure, place and time match the question and pass its call_api arguments to call_api: that second call returns the value. If none matches, tell the user this service does not have it. mode "strict" instead routes the question to one endpoint, runs it and returns the value with answered_with (compare it with your question before you use it), or "unfulfilled"; a value history then holds only the newest values, full true returns all of it. Examples: "germany inflation", "unemployment rate california 2024". When to use: for any data question when you do not know the endpoint id. For a task with several figures or countries pass questions, not one call each. Use call_api instead when you already have an id, get_series for a long numeric history. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

  • ask_anythingchangeddescription
    before

    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 answered_with (what the value measures, place, latest period: compare it with your question before you use the value), 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. For a task with several figures or countries pass questions, not one call each. 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.

    after · 96% of words in common

    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 answered_with (what the value measures, variant, place with code and level, period, unit, source: compare it with your question before you use the value), 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. For a task with several figures or countries pass questions, not one call each. 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.

  • find_dataadded

    Returns up to 10 data series that might answer a data question, each labelled with the publisher's title, place (code and level), unit, frequency, latest value, range, source and licence, and the call_api arguments that return exactly that series. Never returns a value on its own guess: status is "candidates" or "none" (with a reason). When to use: for a data question, pass query or the parts measure, place and period; then choose a candidate whose measure, place and time match the question and pass its call_api arguments to call_api. If none matches, tell the user this service does not have it. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.

  • ask_anythingchangeddescription
    before

    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. For a task with several figures or countries pass questions, not one call each. 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.

    after · 92% of words in common

    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 answered_with (what the value measures, place, latest period: compare it with your question before you use the value), 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. For a task with several figures or countries pass questions, not one call each. 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_anythingchangeddescription, input schema
    before

    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.

    after · 93% of words in common

    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. For a task with several figures or countries pass questions, not one call each. 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.

  • search_apischangeddescription, input schema
    before

    Searches the catalog of verified endpoints (official statistics, interest rates, FX, energy, weather, geo, holidays, research, developer tools) by keyword and returns up to 50 matches with id, description 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.

    after · 88% of words in common

    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.

  • get_historychangeddescription
    before

    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. For long official histories prefer get_series. 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.

    after · 77% of words in common

    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.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 79 / 100

no-repository
provenance45
liveness99
freshness100
hygiene80

+website +reachable +uptime-97% +updated-5d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://api.agentdatahub.de/mcp streamable-httpnoneyes97%1002 ms2025-06-182026-11-14

Tools (6)

ask_anythingread-onlyTakes a plain-language data question (official statistics, central bank rates, FX, energy, weather, holidays, research metadata). Every answer has an outcome. "answer": the value, only when the asked measure is word for word one known name of a series and its place, level and time fit and no other series fits as well; it carries answered_with (compare it with your question before you use it); a value history holds only the newest values, full true returns all of it. "candidates": otherwise, like find_data, up to 10 labelled series (publisher title, place with code and level, unit, latest value, range, source, licence) with the call_api arguments of each: choose the one whose measure, place and time match the question and pass its arguments to call_api (that second call returns the value); if none matches, tell the user this service does not have it. "none": nothing fits, with a reason. mode "candidates" always lists, mode "strict" gives the answer or none, never candidates. Examples: "population of pakistan", "unemployment rate california 2024". When to use: for any data question when you do not know the endpoint id. For a task with several figures or countries pass questions, not one call each. Use call_api instead when you already have an id, get_series for a long numeric history. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.
call_apiread-onlyRuns 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.
find_dataread-onlyReturns up to 10 data series that might answer a data question, each labelled with the publisher's title, place (code and level), unit, frequency, latest value, range, source and licence, and the call_api arguments that return exactly that series. Never returns a value on its own guess: status is "candidates" or "none" (with a reason). A candidate with related_only ("needs_place": no place named; "no_place": the series has no place, the question names one; "other_measure": it measures something else than asked) has no call_api arguments: it is related, not the asked series. When to use: for a data question, pass query or the parts measure, place and period; then choose a candidate whose measure, place and time match the question and pass its call_api arguments to call_api. If none matches, tell the user this service does not have it. Read-only, no API key or signup. Free quota: 1000 calls/day per IP, shared across tools.
get_historyread-onlyReturns 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_seriesread-onlyReturns 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.
search_apisread-onlySearches 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.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.Jona1245/agentdatahub",
  "icons": [
    {
      "src": "https://api.agentdatahub.de/icon.png",
      "sizes": [
        "512x512"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "Agent Data Hub",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://api.agentdatahub.de/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.6.2",
  "websiteUrl": "https://api.agentdatahub.de",
  "description": "Official statistics and economic data for agents, with source and licence per answer. No key."
}