Model Context Protocol

Point your assistant
at your warehouse.

Dataki runs a remote MCP server. Add it as a connector in Claude or ChatGPT, sign in once, and they can query the sources you have connected — writing the SQL, saving dashboards and publishing embeds as you, and never seeing a database credential.

endpoint streamable http
https://dataki.ai/api/mcp

Nothing to install · no API key · scopes, team restriction and spend ceiling all still apply · every query logged.

01 Connecting

Add the connector. Sign in. Ask.

Nothing to install, no config file, no API key. Claude and ChatGPT take the endpoint on its own and work the rest out between them.

  1. 01

    Add a connector in your assistant and give it this URL.

    https://dataki.ai/api/mcp
  2. 02

    Sign in when it asks, and approve what it may reach.

    Your assistant gets its own credential, which you can revoke. Nothing is typed into a config file.

  3. 03

    Ask a question.

    If you have not connected any data yet, it will hand you a link and wait. That takes about a minute.

Under the hood that is OAuth 2.1 with PKCE and dynamic client registration: the client discovers where to send you, you sign in and approve the scopes, and it gets its own revocable credential bound to your account. The server holds no credential of its own and acts only as you, so anything you cannot reach, it cannot reach either.

Using a client that still wants a config file?

Cursor and VS Code read the same endpoint from a file. Create an API key in Settings → API keys and paste one of these.

Claude · Cursor mcp.json
{
  "mcpServers": {
    "dataki": {
      "type": "http",
      "url": "https://dataki.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_DATAKI_API_KEY"
      }
    }
  }
}
VS Code .vscode/mcp.json
{
  "servers": {
    "dataki": {
      "type": "http",
      "url": "https://dataki.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${input:dataki_key}"
      }
    }
  }
}

02 Tools

Twelve tools, in the order you would use them.

An assistant finds the sources, reads what the columns actually mean, then queries. The rest exist because an answer nobody keeps is a message that scrolls away.

  • list_sources List data sources

    Start here — the ids every other tool expects.

  • get_data_context Read what this data means

    Metric definitions, join paths, column warnings.

  • record_data_context Write back what it learned

    So the next session starts where this one ended.

  • query Run a query

    SQL against one or more sources, inside your spend boundary.

  • save_dashboard Save a dashboard

    Turn an answer into something that persists.

  • save_widget Save a widget

    Add one chart to a board that already exists.

  • update_dashboard Update a dashboard

    Change what is on a board.

  • get_dashboard Read a dashboard

    What is on a board right now.

  • schedule_refresh Schedule a refresh

    Keep a board current without being asked.

  • watch_metric Watch a metric

    Get told when a number moves.

  • list_schedules List schedules

    What is already running.

  • publish_embed Publish an embed

    A public link, or a signed one for your own product.

03 Verifying

Check it from a terminal first.

Before wiring it into an assistant, list the tools yourself. A valid key returns the twelve above; no key returns a 401 that tells your client where to authenticate rather than just refusing it.

More on the assistant
tools/list shell
curl -sX POST https://dataki.ai/api/mcp \
  -H "Authorization: Bearer YOUR_DATAKI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
what the agent then sends query
SELECT plan, SUM(mrr) AS mrr
FROM   billing.subscriptions
WHERE  status = 'active'
GROUP BY plan
ORDER BY mrr DESC

Free while we are in beta.

Connect a source, create a key, and point your assistant at it.