Quickstart

Ten minutes from nothing to an agent that can answer a question with sourced, structured data. You need an API key and an MCP client; everything else is one config block.

SurfaceEndpointCredential
MCP (streamable HTTP)https://api.agentdatasets.com/mcpX-API-KEY
RESThttps://api.agentdatasets.comX-API-KEY

Get an API key

Sign in to the dashboard and create a key under API keys. The secret is shown once, at creation — copy it then. If you lose it, rotate the key: rotation issues a new secret under the same prefix, so you update one config value rather than re-registering the server.

Keys created in the dashboard are public-surface keys, which is what you want for anything an agent runs. Authentication explains what that means for the data you get back.

Claude Code

One command registers the hosted server for the current project. Add --scope user to register it for every project instead.

SHclaude mcp add
claude mcp add agent-datasets \
--transport http https://api.agentdatasets.com/mcp \
--header "X-API-KEY: adk_YOUR_API_KEY"

Claude Desktop

Desktop's config file only launches local servers, so the hosted endpoint is reached through the mcp-remote stdio bridge — which needs Node.js on your machine. Paste this into claude_desktop_config.json (Settings → Developer → Edit Config) and restart Desktop.

.JSONclaude_desktop_config.json
{
"mcpServers": {
"agent-datasets": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.agentdatasets.com/mcp",
"--header",
"X-API-KEY:adk_YOUR_API_KEY"
]
}
}
}

Cursor

Goes in ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one.

.JSONmcp.json
{
"mcpServers": {
"agent-datasets": {
"type": "http",
"url": "https://api.agentdatasets.com/mcp",
"headers": {
"X-API-KEY": "adk_YOUR_API_KEY"
}
}
}
}

adk_YOUR_API_KEY is a placeholder in every block above — replace it with the key you created.

Make the first call

Restart the client, and the tools appear namespaced by category. Two calls worth making first — one to see what is here, one to get a real value back:

[ PYTHON ]
platform_get_catalog(limit=50)

The catalog answers "what data does this server hold" in one bounded page: every category with its launch status, every dataset with coverage, cadence, licensing posture, freshness, and the tools that serve it. It is the routing table an agent should read before guessing at a tool name.

Then something concrete:

[ PYTHON ]
fx_get_rates(quote="USD", limit=5)

That returns the five most recent euro reference rates for USD, newest first.

Read the envelope

Every tool on every surface answers in the same three-part envelope, so an agent learns the shape once. The response below is a shape, with illustrative values:

[ JSON ]
{
  "data": {
    "base": "EUR",
    "quote": "USD",
    "unit": "USD per EUR",
    "currency": "USD",
    "rates": [
      {
        "date": "2026-08-19",
        "value": "1.093400",
        "as_of": "2026-08-19T16:00:00Z",
        "derived": false
      }
    ]
  },
  "meta": {
    "source": "ecb",
    "as_of": "2026-08-19T16:00:00Z",
    "attribution": "...",
    "derived_method": null
  },
  "pagination": {
    "limit": 5,
    "has_more": true,
    "next_cursor": "eyJ2IjoxLCJrIjpbLi4uXX0"
  }
}

Three things to notice, because they hold for every tool:

  • Numbers are strings. "1.093400" is an exact decimal, deliberately not a float. Parse it with a decimal type; do not let it become a binary float on the way into your reasoning.
  • Values describe themselves. unit, currency, as_of, and the source attribution travel with the answer, so a number can never be quoted without its meaning.
  • Results are bounded. pagination.has_more tells you whether more matched; pagination.next_cursor is the token you pass back as cursor to continue. Nothing dumps an unbounded result into your context.

Where to go next

  • Authentication — how keys, headers, and the public surface work.
  • Category guides — what each advertised category holds and the workflows that get answers out of it.
  • Errors and the envelope — the envelope in full, and every error code an agent can provoke.
  • REST quickstart — the same data over plain HTTP, for the parts of your stack that are not agents.