# GDPR-compliant AI on company data: the checks and three EU setups

> What GDPR asks of an AI setup, the two places your data goes when an agent answers (AI data residency), and three setups compared: an EU assistant, self-hosted, or an EU-hosted data layer.

Source: https://datatomcp.com/guides/gdpr-compliant-ai · By Killian · Updated 2026-11-11

Using AI on company data is GDPR-compliant when you can show where the data is stored and processed, which provider gets what under a data processing agreement, that nobody trains on it, and how it is deleted. Three setups pass: an EU-based assistant such as [Mistral's Le Chat Enterprise](https://mistral.ai/news/le-chat-enterprise/), a self-hosted stack, or an EU-hosted data layer like datatomcp.

None of them is compliant on its own. GDPR applies to what your team does with the data, and the tool is one part of that. This guide lists what the regulation asks of an AI setup, the two places personal data goes when an agent answers a question (people usually check only one), and how the three setups compare. It is a practical checklist, not legal advice.

## What GDPR asks of an AI setup

| GDPR rule | The question to ask your AI tool | What a good answer looks like |
|---|---|---|
| Processor contract (Art. 28) | Is there a data processing agreement, and a list of sub-processors? | A DPA that applies to your plan, sub-processors named, notice before a new one |
| Transfers outside the EU (Art. 44–49) | Where is the data stored, and where is it processed? | Stored in the EU; any processing outside it named, with Standard Contractual Clauses or the EU–US Data Privacy Framework |
| Purpose limitation (Art. 5(1)(b)) | Is our data used to train models or for anything else? | No, in writing |
| Data minimisation (Art. 5(1)(c)) | Does the model get the whole sheet, or only what the question needs? | Only the rows or totals the question needs |
| Security (Art. 32) | Who can reach the data, and can an agent change it? | Sign-in on every request, roles, read-only agents, encrypted credentials |
| Erasure (Art. 17) | When we delete a dataset, when is it gone, backups included? | At once, and from backups within a stated number of days |
| Accountability (Art. 5(2)) | Can we show what an agent read, and for whom? | A log of every agent question, with the dataset and the query |

The articles are in the [GDPR text on EUR-Lex](https://eur-lex.europa.eu/eli/reg/2016/679/oj). The last three rows are where AI agents differ from ordinary software: an agent asks many questions nobody reviews one by one, so access, minimisation and the log carry more weight than they do for a person clicking through a dashboard.

## AI data residency: the two places your data goes

AI data residency means knowing, and choosing, the country where your data is stored and processed when AI works on it. With an agent there are two places, and both count:

1. **Where the dataset lives.** The sheet, the CSV, the database export: its copies, versions and backups.
2. **Where the model runs.** Whatever the agent reads goes to the model provider (Anthropic for Claude, OpenAI for ChatGPT, Mistral for Le Chat) to produce the answer.

Uploading a spreadsheet to a chat puts both in one place, the chat provider, and sends every row, including the personal data the question didn't need. Putting a data layer in front of the agent splits the two. The dataset stays where you host it. The model only receives what it asked for: a total, a count, ten matching rows. A question like "revenue by region last quarter" sends one total per region to the model instead of every customer row. That is data minimisation in practice, and the reason the third setup below still works with Claude or ChatGPT.

If your company also requires the model itself to run in the EU, choose a provider and plan that offer EU processing, and connect it the same way.

## Three setups compared

| Setup | Where the data is stored | What the model receives | Effort | Right pick when |
|---|---|---|---|---|
| Upload the file to a chat (for comparison) | The chat provider's servers | The whole file | None | The file holds no personal data |
| EU-based assistant, such as [Le Chat Enterprise](https://mistral.ai/news/le-chat-enterprise/) | The assistant's own platform | What its connectors fetch | Move the team to one assistant | The whole team can use one assistant, and the model must run in the EU |
| Self-hosted stack (an open-source model, your own database) | Your servers | Everything, on your servers | High: hardware, updates, someone to run it | You have engineers and nothing may leave your network |
| EU-hosted data layer + your agents (datatomcp) | datatomcp's server in the EU | Only the rows and totals each question asks for | Low: add a sheet, connect each agent | The team already uses Claude, ChatGPT or Cursor and the data lives in sheets and SaaS tools |

## How datatomcp handles each check

Every line below is on our [security page](/security) and in the [data processing agreement](/dpa).

- **DPA and sub-processors.** The [DPA](/dpa) applies to every workspace on every plan without signing anything; it names every sub-processor (Contabo, Cloudflare, Resend, Mistral AI only if AI cleaning is turned on, Google and GitHub for sign-in) and announces a new one 14 days ahead.
- **Storage.** Datasets and accounts are on our server in the EU (Contabo). Backups go to Cloudflare R2 in Western Europe.
- **No training.** We don't train models on your data and don't sell it.
- **Minimisation.** Agents ask through a few validated tools: list, describe, query rows, totals, distinct values. Totals are computed by the database, so the agent gets the number, not the rows behind it.
- **Security.** Every request needs a sign-in, an OAuth token for a tool you approved, or an API key; there are no public links. Roles per workspace, private datasets, and each agent limited to the workspaces you pick. Agents are read-only and can't run raw SQL. Database and app credentials are encrypted (AES-256-GCM) and never given to agents. Google access uses the `drive.file` scope: only the sheets you pick.
- **Erasure.** Delete a dataset or your account in the app: removed at once, and from backups within 14 days.
- **Accountability.** Every agent call is recorded: which agent, for whom, which dataset and version, the query, rows returned. It is on the Audit page and exports as CSV; queries are kept 30 days (90 on Pro), query results are never stored.

<img src="/img/features/audit.webp" width="1400" height="837" loading="lazy" alt="datatomcp Audit page: 75 agent calls in 7 days from 5 agents and 3 people, repeated questions with the same answer, errors, and calls per day by agent." />

**What it doesn't cover.** The results an agent asks for go to that agent's provider under your own agreement with them, so your agreement with Anthropic or OpenAI still matters. datatomcp is a small, independent product: there is no SOC 2 or ISO 27001 report and no single sign-on yet.

## Set it up

1. [Try the demo](https://app.datatomcp.com/demo): ask questions of a sample dataset without signing up.
2. Create a workspace and add a Google Sheet, a [CSV or Excel file](/guides/csv-mcp-server), or connect PostgreSQL, MySQL, Stripe, HubSpot or Airtable with a read-only user or key.
3. Connect each agent with the MCP URL `https://app.datatomcp.com/mcp` ([Claude](/guides/claude-mcp-connector), [ChatGPT](/guides/chatgpt-custom-connector-spreadsheet), [Cursor](/guides/cursor-mcp)) and limit it to the workspaces it needs.
4. Ask a question, then open **Audit** and check what the agent sent ([how to read the audit](/guides/audit-ai-agent-questions)).

## FAQ

**Is ChatGPT GDPR compliant?** That depends on your plan and your agreement with OpenAI more than on the model. Check whether your plan comes with a data processing agreement, where chats and files are processed, and whether they are used for training. The same three checks apply to Claude, Gemini and any other assistant.

**What is AI data residency?** Knowing and choosing the country where your data is stored and processed when AI works on it. For agents that is two places: where the dataset lives, and where the model that reads the query results runs.

**Does an EU-hosted tool make our AI use GDPR-compliant?** No tool does on its own. It answers the storage, transfer and deletion questions for the data it holds. You still need a lawful basis for the data, a DPA with each provider, and an agreement with the model provider your agents use.

**Is it safe to give an AI agent access to company spreadsheets?** Check four things first: the agent can only read, it reaches only the sheets it needs, each request is signed in, and every question is logged. Then check where the data and the answers go, as above.

**Do we need to sign a DPA with datatomcp?** No. The [DPA](/dpa) applies automatically to every workspace. If your company needs a countersigned copy, write to us and we send one back.

**Can an agent see every dataset in our workspace?** Only the workspaces you allow it, and not private datasets limited to other people. You can see and revoke every connected tool and API key in the app.

**Is our data used to train AI models?** No. We don't train models on your data, and AI cleaning suggestions (Mistral AI, processed in the EU) stay off until a workspace owner turns them on.

**How long are agent questions kept?** The queries agents send are kept 30 days, or 90 on Pro. The query results themselves are never stored.

**Is datatomcp SOC 2 or ISO 27001 certified?** No, not yet. We answer security questionnaires and send the DPA countersigned on request.

---

## About datatomcp

datatomcp is the AI-native data layer for teams without a data team. It makes a team's Google Sheets, CSV and Excel files, databases (PostgreSQL, MySQL) and apps (Stripe, HubSpot, Airtable) AI-ready: one governed place every AI agent can ask, with exact answers computed by a database, shared definitions of what each number means, a full audit trail of agent questions, charts and dashboards. Agents connect over a remote MCP server (OAuth) or a REST API. Hosted in the EU. Facts, plans and limits: https://datatomcp.com/llms.txt. API reference: https://datatomcp.com/docs/api.
