1. The short version
Zevruna monitors the shape of the contracts your agents depend on. It does that by reading the schemas MCP servers publish to every client that connects. It does not read what flows through those tools.
Two constraints make that structural rather than a promise for the monitor, which is the whole product on its own: it never invokes a tool with real arguments, and we never receive repository access.
The optional SDKs run inside your process and report execution metadata, timings, step names, statuses. They do not read tool arguments or return values. One field can carry your data, the error text an MCP server returns, and it is off unless you enable it. Telemetry can also reach us from an OpenTelemetry exporter you already run, in which case the spans you export are what we store. Every field is listed at zevruna.com/docs/data-collected, and the redact hook runs before anything leaves your infrastructure.
2. What we collect
- Account: project name, your email address, and a project token. One account can hold several projects. If you pay, Stripe holds your billing details, we never see or store card numbers.
- API keys you create: the name and scope you chose, when it was made, and when it was last used. Only a SHA-256 hash of the key itself is stored, alongside its first few characters so you can recognise it in a list, the key cannot be recovered from our database, which is why it is shown to you exactly once.
- Servers you register: the endpoint URL, polling schedule, and the contract each server advertises. Any authentication header you give us for a private server is encrypted at rest with AES-256-GCM and only decrypted when polling that server.
- Consumer manifests: which tools your agents call and the *names* of the fields they send and read, plus file and line references, generated by scanning your code locally. Field names and call sites only, never values, and the scan runs on your machine.
- Run telemetry, only if you install an SDK or point an OpenTelemetry exporter at us: agent name, environment, timings, step names and kinds, success or failure, error class and message, and any attributes you attach yourself. The text an MCP server returns with an error is excluded unless you enable captureErrorText; an exporter has no such gate, so a span carries what you put on it. Attribute keys that look like credentials are replaced with [redacted] on write. Deleted automatically on your plan's retention window, three days on Free, thirty on Pro, ninety on Scale, by a daily sweep. Field by field at /docs/data-collected.
- Product analytics: page views and outcome events such as a check succeeding or an incident being verified, with a random anonymous id. IP addresses are never stored, only a salted hash, used to approximate unique visitors when no anonymous id exists.
- Email: your address if you create an account or enable alerts.
- Operational logs: standard request logs kept briefly for debugging and abuse prevention.
3. What we deliberately never collect
- Tool arguments. The monitor performs handshakes only, and the SDK never reads them.
- Tool return values, with one exception you switch on yourself: the text an MCP server returns alongside an error, which is off by default and can quote what it was sent.
- Your customers' data. With that switch off, nothing that carries it reaches us.
- Your source code. The scanner runs locally and uploads only the manifest it produces.
- Raw IP addresses, in analytics.
- Card numbers or bank details. Stripe handles payments end to end.
This is the point of the design. It keeps the legal surface small for us and the risk small for you.
4. Why we hold it
To run the service you asked for: polling servers, diffing contracts, computing which of your agents an change affects, alerting you, and gating your CI. To bill you, if you are on a paid plan. To send transactional email you asked for. To understand which parts of the product get used, and to keep the service secure and available.
We do not sell personal information, we do not share it with advertisers, and we do not use your data to train machine-learning models.
5. Public monitoring
Zevruna monitors publicly reachable MCP servers and publishes their contract history and any breaking changes. Those pages record schemas the servers themselves publish to every client that connects, they contain no personal information, and no information about who checked a server.
Running the instant check on the homepage adds that server to the public monitor. It records the endpoint and its advertised contract; it does not record who submitted it.
6. Who else processes data
- Vercel, hosting and content delivery (United States).
- Neon, the Postgres database (United States).
- Stripe, payments, if you are on a paid plan. Stripe is the controller for your billing details.
- Resend, transactional email delivery.
Each is bound by its own agreement with us. We do not send them anything beyond what their function requires. A data processing agreement is available on request.
7. How long we keep it
- Contract snapshots, diffs, incidents, and check history: for as long as your account is open, because they are the product, a contract's history is what makes the next change legible.
- Public server history and advisories: indefinitely. They are a public record and other people cite them.
- Raw analytics events: 180 days, then aggregate counts only.
- Waitlist entries from the closed early-access list: until you ask to be removed. Nothing is added to it any more, signup is self-serve.
- After you delete your project from Settings: immediately. Deletion is irreversible and there is no recovery window, your servers, runs, incidents and manifests are removed at once, excluding anything we must keep for legal or accounting reasons.
8. Your rights
You can ask for a copy of what we hold about you, ask us to correct it, ask us to delete it, or object to how we use it. Much of it you can get yourself through the API at any time.
Depending on where you live you may have additional rights under the GDPR, the UK GDPR, or the CCPA, including the right not to be discriminated against for exercising them. We honour these requests regardless of where you live, because maintaining two standards would be more work than maintaining one.
Write to privacy@zevruna.com. We will respond within 30 days.
9. Cookies and tracking
Zevruna sets no advertising or cross-site tracking cookies. Alongside our first-party analytics, we use Vercel Web Analytics, which is cookieless and records aggregate page views without profiling individual visitors. Our first-party analytics stores a single random identifier in your browser's local storage to avoid counting one person as many.
Opt out of our first-party analytics at any time by running localStorage.setItem("za_off", "1") in your browser console, or by setting ZEVRUNA_TELEMETRY=0 for the CLI. Nothing about you is recorded by it once you do. That setting does not cover Vercel Web Analytics, which has no per-visitor opt-out of its own; any content blocker will stop it.
10. Security
Data is encrypted in transit and at rest. Per-server credentials are additionally sealed with AES-256-GCM under a key held only in the runtime environment. Access to production is limited to people who need it.
No system is perfect. If a breach affects your personal information we will tell you and the relevant regulator without undue delay. If you find a vulnerability, please report it to us before disclosing it, we will work with you and will not pursue good-faith research.
11. Children
Zevruna is a developer tool and is not directed at anyone under 16. We do not knowingly collect their information.
12. Changes and contact
We will post any change here and update the effective date. Material changes affecting how we use your personal information will also be emailed to account holders.
Questions, requests, or complaints: privacy@zevruna.com.