Loading data through MCP

Last reviewed against the app on 24 September 2026

An assistant connected to clariBI can add data in three ways. Pick the one that matches where the data is: already in the chat, at a public URL, or in a Google, Meta or Atlassian account.

Choose a path

PathToolLimitUse it when
Inline fileupload_data_source25 MB base64 (about 18 MB of file)The assistant already has the file, for example a CSV the user dropped into the chat.
Public URLingest_url_data_source100 MBThe file is at a public http(s) address, such as an export link or an open dataset.
OAuth handoffrequest_oauth_integration_url and check_integration_statusnoneThe data is in Google (Ads, Analytics, Search Console, Sheets, Drive, BigQuery and more), Meta Ads, Jira or Confluence. The user approves access in the browser, so no credentials pass through the chat.

All three need the data-sources:write scope, which MCP API keys include by default.

Inline upload

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_data_source",
    "arguments": {
      "name": "Q3 sales export",
      "format": "csv",
      "data_base64": "<base64 of the file>",
      "description": "Exported from the CRM on 1 October",
      "wait_seconds": 30
    }
  }
}

Formats: csv, tsv, json, xlsx, xls, txt, pdf. The file is checked and processed like an upload in the web app, and the tool returns a data_source_id. With wait_seconds above 0 (up to 60) the call waits for processing; otherwise poll get_data_source_schema until its status is active.

Plan limits apply

Each upload counts toward the plan's data sources, file uploads and storage. On the Trial that is 3 data sources, 5 file uploads and 1 GB; Starter allows 10 sources, 50 uploads and 5 GB; Professional 50, 500 and 10 GB; Enterprise 100, 5,000 and 100 GB. The error message names the limit that was reached.

Public URL

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "ingest_url_data_source",
    "arguments": {
      "name": "Open data: city budgets",
      "url": "https://example.org/exports/budgets-2026.csv"
    }
  }
}

format is optional; without it clariBI uses the Content-Type header and the file extension. The file is fetched once and stored; it is not fetched again later.

Network rules

The server resolves the address itself and refuses:

  • private and internal networks (RFC 1918 ranges, loopback, link-local, IPv6 unique local addresses);
  • cloud metadata addresses such as 169.254.169.254;
  • anything other than http and https.

Redirects are checked at every hop, with at most 3 redirects.

OAuth handoff

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "request_oauth_integration_url",
    "arguments": { "provider": "google", "integration_type": "ga4" }
  }
}

The response has an authorize_url, a handoff_id and expires_in_seconds. The assistant shows the URL; the user opens it and approves. The assistant then polls:

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "tools/call",
  "params": { "name": "check_integration_status", "arguments": { "handoff_id": "<id>" } }
}

The status is pending, connected, failed or expired. When connected, the response includes the connection_id and, once the first sync has run, the data_source_id.

Providerintegration_type
googlegoogle_ads, ga4, gsc, gsheets, gdrive, gdocs, bigquery, gcs, gcp or basic
metaads or basic
jirabasic
confluencebasic

After loading

When get_data_source_schema reports active, ask a question with run_analysis:

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "run_analysis",
    "arguments": { "question": "Which channel brought the most revenue in Q3?", "wait_seconds": 30 }
  }
}

What MCP does not do

There is no tool for connecting a database or entering API keys for the API connectors, because that would put credentials into the chat transcript. Connect those from Data Sources in the web app.

Related