PRODUCT

Use your data in minutes — not months.

No ETL, no duplicated copies, no sync lag. Thunderduck queries every source where it already lives, at a fraction of warehouse cost, and hands your AI agents the same access from day one.

01

Join every source in one query. Nothing moves.

A single SQL statement reaches flat files, live databases, analytics engines and Iceberg catalogs together — in one join, in memory, with no copy and no sync lag. Most teams built half their ETL just to get operational data next to lake data so something could query them together. That half doesn't exist here.

  • Flat files — CSV, JSON, Parquet and Excel — on S3, GCS, Azure Blob or MinIO
  • Live databases — PostgreSQL, MySQL, Microsoft SQL Server
  • Analytics engines — BigQuery, ClickHouse
  • Iceberg catalogs — AWS Glue, Nessie — joined in the same query as everything above
02

Every table, column and meaning — discovered automatically.

Connecting is the whole setup step. Thunderduck walks the source and records every schema, table, column, type and row count — then reads each column once and infers what it means. No modelling, no YAML, no data dictionary to write by hand.

  • Tables, columns, types and row counts catalogued the moment you connect
  • Every column tagged IDENTIFIER, DIMENSION, MEASURE, TIMESTAMP or TEXT, with PII flagged separately
  • Inferred, then confirmed — a person's correction survives every future refresh
03

AI-native. Governed by default, not bolted on after.

A native MCP server, not a REST wrapper someone points an agent at. Connect Claude, ChatGPT or any MCP client — or your own agents — over one endpoint. Each person signs in with their own identity, every tool is read-only unless you grant otherwise, and every query is priced and gated before it runs.

  • One MCP endpoint — Claude, ChatGPT, or any MCP client
  • OAuth sign-in: each person's own identity, their own audit trail
  • Read-only by default; every query cost-assessed and gated before it executes
04

Connect the way your team already works.

No new client to learn. A JDBC driver reaches DataGrip, DBeaver and the rest of the JVM ecosystem; a SQLAlchemy dialect on PyPI reaches Google Colab, Jupyter notebooks and Superset; a REST API covers anything else that speaks HTTP.

  • JDBC driver — DataGrip, DBeaver, and any JDBC-compatible BI tool
  • thunderduck-sqlalchemy on PyPI — Google Colab, Jupyter, Superset
  • A REST API for scripts and anything without a JDBC stack
05

Scheduled SQL or dbt — your transformation, your call.

Register a statement on a cron schedule in your own timezone, or connect a dbt repo and run build, run, test, seed or snapshot on the same engine as everything else. Models materialize as tables you can query in Studio the moment the run finishes — no separate orchestration product to buy.

  • Cron expression plus IANA timezone — schedules follow your local time, not UTC
  • Connect a dbt repo over GitHub; the token goes straight to Secrets Manager
  • Every run — scheduled or dbt — shows up in the same query history, with the same plan and timings
06

When federation isn't enough, build the lakehouse.

Federation covers most questions without moving data — but a workload that outgrows the source it lives in needs its own table. CREATE TABLE AS SELECT writes straight into an Iceberg catalog on AWS Glue or Nessie: open format, no lock-in, readable from any Iceberg-compatible engine the day you decide you need one.

  • Apache Iceberg on AWS Glue or Nessie
  • CREATE TABLE AS SELECT from any federated query, straight into Iceberg
  • Open format — the table outlives the tool that wrote it
07

Every query priced first, and accounted for after.

Every warehouse tells you what a query cost after it finishes. Thunderduck estimates cost and runtime before it starts — to a person in the editor, to an agent over MCP — and every execution is tagged with the user, token or client that ran it. Filter by any of them, or by cost, and export the rest.

  • Cost and runtime estimated before a query runs, not after
  • Every query tagged with the user, API token or client that ran it
  • Full audit log — filter by user, source, token, date or cost
08

Named roles decide who can reach which catalog.

Create roles per company and grant read or write on specific catalogs to the members in them. Admins are never restricted — a bad grant can't lock a company out of its own data — and nothing changes for anyone until the first role is created.

  • Custom roles per company, with read or write per catalog
  • Admins always see and write everything — a bad grant can't lock you out
  • Nothing restricts anyone until you create the first role
09

Repeat a query, get the answer instantly — free.

An exact repeat of a query, from the same user within a 24-hour freshness window, is served straight from the last result — no re-execution, zero CPU or RAM billed. It works the same way everywhere: Studio, the REST API, JDBC and MCP all share one execution path. The run is marked "from cache" in query history, and any query can force a fresh run when you need current data.

  • Exact repeat queries return in milliseconds, with zero CPU/RAM billed
  • Works identically across Studio, the REST API, JDBC and MCP
  • 24-hour freshness window by default; force a fresh run any time you need current data
CONNECT

Connect the way you already work.

Three first-class ways in — a REST API for anything that speaks HTTP, a JDBC driver for your BI and data tooling, and an MCP server for AI assistants and agents. REST and JDBC authenticate with an API token you manage in the console; MCP signs in with OAuth and is read-only until you say otherwise.

REST API

Run SQL over HTTPS — no driver required.

POST a query with an API token and get JSON back. Ideal for scripts, serverless functions, and any language without a JDBC stack.

curl
curl -X POST https://api.thunderduck.ai/queries \
  -H "Authorization: Bearer tdk_…" \
  -H "Content-Type: application/json" \
  -d '{"sql":"select 1"}'

JDBC driver

Plug into the tools you already use.

A standard JDBC connection string wires Thunderduck into BI tools, dbt, DataGrip and the rest of the JVM ecosystem. Authenticate with an API token — no VPN, no bespoke client.

connection string
jdbc:thunderduck://api.thunderduck.ai/?token=tdk_…

MCP server

Give your AI assistant a safe way in.

A remote Model Context Protocol server lets Claude, Cursor and your own agents browse catalogs, describe tables and run SQL. Calls sign in with OAuth, stay scoped to your workspace, and are read-only unless you grant more — and every query clears a cost gate before it executes, so an agent can explore without running up the bill.

mcp client config
{
  "mcpServers": {
    "thunderduck": {
      "url": "https://mcp.thunderduck.ai/mcp"
    }
  }
}
Coming soonFrom governed queries to an optimization copilot.

The engine already knows which queries drive spend and which index would fix them. The advisor surfaces it: index suggestions, workload scheduling, spend governance. Tool today, platform tomorrow.

See it work on your own data.