MCP privacy and security
What an AI assistant connected to Pulse Analytics can receive, where it goes, and how to connect one responsibly.
Connecting an assistant to the MCP server sends your analytics to that assistant when it asks for them. This page says exactly what it can receive, who is responsible for what, and what we recommend before you connect one.
Who does what
- You choose the assistant. Pulse never connects one on its own, and Ciphera makes no AI call of its own: nothing in Pulse sends your analytics to an AI provider unless you connected that provider.
- Ciphera is your processor. Pulse stores and computes your analytics on Swiss and EU infrastructure, as it always has.
- The assistant's provider is your recipient. When you connect Claude, ChatGPT or any other assistant, Pulse sends it the numbers it asks for, on your instruction, under your own agreement with that provider. Ciphera has no agreement with the provider and does not choose where it processes data.
Where the data goes
Pulse keeps your data in Switzerland. What an assistant fetches leaves Pulse and goes wherever that assistant runs:
- Anthropic (Claude, Claude Code) and OpenAI (ChatGPT) are US companies.
- Whether an assistant keeps data in the EU, and whether it uses your conversations to train its models, depends on the assistant and your plan with it. Check its terms before connecting.
What an assistant can receive
- Totals for a site and period: visitors, pageviews, bounce rate, visit duration, scroll depth.
- A daily series of visitors and pageviews.
- Rankings by page, entry or exit page, referrer, channel, country, region, browser, operating system, device, language,
utm_source,utm_mediumandutm_campaign— including rows with one visitor. A page path or referrer seen once can reach the assistant. - Realtime counts for the last five minutes, with pages under five current visitors left out.
- The site list, the install snippet, and search results from this documentation.
What it can never receive:
- A record about an individual visitor or session — the same permanent commitment as the API.
- IP addresses, which Pulse never stores.
- City, timezone, screen resolution,
utm_termandutm_content, which the server does not rank by. - A filtered total that matches fewer than five visitors: it comes back withheld, never as zero.
Every connection is read-only. No tool can change a site, a setting or your data.
Before you connect: a checklist
This is not legal advice. It is the list we would work through ourselves.
- Purpose. Is sending aggregated analytics to this assistant compatible with the purpose you collected them for (GDPR Article 6(4))?
- Location and transfer. Where does the provider process data, and on what basis is it transferred there?
- Training. Does your plan with the provider keep your data out of model training?
- Records. Do you need to update a data protection impact assessment, your records of processing, or your own privacy notice?
Recommendations
- Connect the sites you need, not All sites, when an assistant only works on one of them.
- Disconnect what you no longer use. Settings → Organization → MCP lists every live connection, who made it and when it was last used.
- Check the label on the consent screen. Unverified means the app named itself; connect it only if you started the connection and the address it sends you back to is the one you expect.
Text from your visitors
Page paths, referrers and campaign tags are text your website's visitors choose, and anyone can send a request to your site. Pulse strips invisible and control characters from these values and marks each one as visitor-supplied, and every tool is read-only. But an assistant that can also act elsewhere — send email, browse, run code — can be steered by text it reads. Do not give an assistant both your analytics and the power to act without asking you.
Security
- Sign-in: OAuth 2.1 with PKCE. The assistant never sees your password; you approve each connection in Pulse.
- Tokens: random, stored only as a hash. Access tokens last one hour; the refresh token lasts 30 days and is replaced every time it is used. Presenting a replaced one again — beyond a few seconds' grace for a lost response — disconnects the app, because only a copy would do that.
- Revocation: disconnecting takes effect on the app's next request.
- Who can connect: only a workspace Owner or Admin, the same permission as creating an API key.
- API keys are accepted too, for scripts — see Using an API key instead.