Security
How UND Assay is built and run, for the people who approve tools at their company. Questions: [email protected].
What the service does and does not do
- UND Assay never installs, runs or changes the tools it describes on your machines or on our own systems. To record what a package does, we may install and start it in a separate, temporary test machine that gives it no real credentials and has no access to our internal systems or to yours (how).
- To describe a public server, we connect the way any AI client does, without credentials, and read only what it publishes about itself (its sign-in details and its list of tools). We never call a tool's functions.
- Text written by tool authors is returned as untrusted data, marked as such, so an AI reading it is told not to follow it.
Accounts and sign-in
- Sign-in runs through UND's sign-in service (Google or an emailed code). UND Assay never receives or stores a password.
- The sign-in cookie can't be read by page scripts, is sent only over HTTPS, and is limited to same-site requests.
- Apps connect with OAuth 2.1 and PKCE. Access tokens last 1 hour and only work for our MCP server. Refresh tokens are replaced every time they are used, and you can revoke any app on your account page or through the standard revoke endpoint.
- API keys, access tokens and refresh tokens are stored only as SHA-256 hashes. A key is shown once, when you create it.
- A connected app can read the public evidence only. It cannot see your email address, settings, keys, watchlist or webhook.
Data
- What we keep about account holders, for how long, and who processes it for us is listed in the Privacy Notice.
- You can download everything we hold about your account, or delete it, on your account page.
- Change alerts sent to your webhook are signed (HMAC-SHA256 with a timestamp), so your receiver can check they came from us.
Integrity and abuse protection
- Security-relevant actions (sign-ins, agreements, keys) go into an append-only audit log in which each entry includes a hash of the one before. The whole chain is re-verified every day, and the status page shows whether it verifies.
- Each published data snapshot is signed, with a hash of every file and a public log of past snapshots.
- Every page is served with a strict Content Security Policy, HSTS for one year, and framing disabled.
- Requests are rate limited per caller: 60 a minute without a key, 120 with a key, 10 sign-in attempts a minute.
- The service runs on Cloudflare (Workers, D1 database, Pages). Our source code is in a private GitHub repository.
Reporting a vulnerability
Write to [email protected]. Our Vulnerability Disclosure Policy says what we commit to, and security.txt lists the contact.
What we do not have yet
- No independent audit (such as SOC 2 or ISO 27001) and no independent penetration test.
- No uptime commitment (SLA). The status page checks the service live but keeps no history yet.
- No data processing addendum or signed enterprise agreement yet.
- DNSSEC is not active on undassay.com yet.
We update this page in the same release as any change it describes.