Privacy Policy

Effective October 17, 2026.

Data we collect

Account data includes your verified email, a pseudonymous email sign-in identifier, internal account identifier, Stripe customer identifier, and subscription status. GameScript signs you in with a one-time code sent to your email and no longer offers Google sign-in; an account that was created through Google sign-in also holds that Google account identifier. Workflow data includes any projections you upload, imported slate data, build state, preferences, generated lineup snapshots, export metadata, and any strategies you save, which are kept until you delete them or your account. If you upload a DraftKings contest standings export, GameScript stores per-player ownership and fantasy points, the contest’s winning score and any cash line you declare, the entries that match the DraftKings username you supply, and the winning entry’s rank, score, and DraftKings entry name. That entry name belongs to another contestant, published by DraftKings in the export. The rest of the leaderboard is read for totals and a summary of how the field built its lineups, then discarded; no other contestant’s name, roster, or score is kept. The strategy outcomes scored from an upload are kept with it. If you file a report with dfs_submit_feedback, GameScript stores its category, message, and any slate, run, tool, and client you attach, and emails a copy with your internal account identifier to the operator so it can be fixed. We also keep limited usage, billing-event, and security records needed to enforce limits and operate the service. The public landing page records one page_view category when its script loads and an allowlisted action category when someone selects a connect link, pricing link, endpoint-copy control, or first-build prompt copy control. GameScript also records an allowlisted milestone category when an authorization is approved (noting only whether it was for Claude, ChatGPT, or another assistant), a Stripe Checkout link is created, a subscription becomes active or trialing, an account completes its first optimization, and a new address joins the notify list. These application events carry the category and a count only, and contain no email, account identifier, page text, referrer, URL parameters, or IP address, so no event identifies you, and GameScript does not join them to accounts to build a per-person funnel. To count the first optimization once per account, GameScript stores one timestamp on your account row; it is deleted with your account. Structured application logs omit request bodies, full request URLs and query strings, OAuth codes and tokens, signed-download signatures, email addresses, account identifiers, projections, and lineups. Automatic Worker invocation logs are disabled; Cloudflare still processes request metadata as the hosting and security provider. Browser protections can block or drop these events, clients can forge them, and Cloudflare may sample them, so page-view and intent counts are estimates rather than unique visitors or verified signup or payment conversions. Separately from these application events, public pages load Cloudflare Web Analytics, which the Cloudflare zone adds to them. It is cookieless and does not fingerprint browsers or track visitors across sites; it sends Cloudflare the page URL, referrer, browser user agent, and page-load timings, which Cloudflare reports to GameScript only as aggregate page-view and performance metrics, so GameScript cannot see individual visitors from it. The one-time standings upload page, whose address carries a secret link, does not let it run. To enforce one trial and billing-action limits per sign-in identity, GameScript derives a one-way pseudonymous marker that contains neither your email nor your raw provider identifier. To keep that one trial to one inbox and one card, GameScript also derives a one-way marker of your email address with any plus tag removed (and, for Gmail, the dots), and, once a trial starts, a one-way marker of the card fingerprint Stripe reports for the card you pay with; neither contains your address, your card number, or any other card detail. If you submit the landing page’s notify form, GameScript stores the email address you enter with surrounding spaces removed and the whole address lowercased, the single topic you selected, the page you submitted it from, and the time, so that it can send you the one email you asked for. Lowercasing is what lets one address and topic count as one signup however you capitalize it; mail providers treat the domain as case-insensitive, and the ones GameScript can reach treat the part before the @ that way too. This is the only place GameScript keeps a readable email address that is not an account: a sign-in counter can hold a one-way digest because it only ever has to recognize an address again, while a notify-list row exists to be written to, and a digest cannot be mailed. It is not linked to a GameScript account, is never sold, shared, or used for any other message, and submitting the same address again replaces nothing and adds nothing.

How we use data

We use this data to authenticate your MCP connection, persist your DFS workflow, enforce subscription access, generate requested lineups and exports, prevent abuse, troubleshoot failures, and operate the service. GameScript does not sell personal data or use your projections and lineups to train a projection model.

Assistant and payment providers

Your Claude or ChatGPT provider handles the conversation under its own privacy terms. GameScript receives tool calls and the data you choose to send through them. Cloudflare Email Service delivers the short-lived sign-in code to the address you enter, and sends feedback reports to the operator. Stripe processes payment details; GameScript does not store full card numbers. If you use the season-long draft tools, the Sleeper username you give is sent to Sleeper’s public API to find your drafts; GameScript does not store it.

Essential sign-in state and cookie

During sign-in, GameScript temporarily holds the address you enter, a hashed one-time code, and a small attempt count in an expiring server-side sign-in record so it can display and complete the authorization step, and keeps a pseudonymous daily counter of code requests for up to 90 days to limit abuse. The secure, HTTP-only cookie contains only signed flow state. Submitting the consent form consumes the sign-in record immediately; otherwise, the record and cookie become unusable after 10 minutes and the record is removed during scheduled cleanup. GameScript creates a durable account only after you select Authorize. GameScript does not use advertising or cross-site tracking cookies.

Hosting and retention

Cloudflare hosts the Worker, D1 database, structured application logs, Analytics Engine, and R2 object storage. Structured application logs are retained under the Cloudflare Workers Logs retention window, currently up to seven days. Landing page-view, action, and milestone categories are retained in Analytics Engine for up to three months. Signed export links and export metadata expire after 24 hours; R2 export objects are deleted after one day. Generated lineup snapshots and old user-imported slates are deleted after 30 days, and slates are removed 30 days after kickoff along with the contest standings uploaded against them. A slate that carries scored strategy outcomes is the exception: it is kept past 30 days, with its player pool removed on schedule, for as long as those outcomes exist, so the strategy scoreboard can compare weeks. Feedback reports are kept until your account is deleted; the emailed copy stays in the operator’s mailbox and is not removed by account deletion. Usage and Stripe event records are deleted after 90 days. Active account data, preferences, and current build data remain until deletion, subject to operational backups and legal retention requirements. A notify-list address is kept until you ask for it to be removed, or until GameScript decides not to build the thing it was collected for and deletes the list. A redeemed one-way trial marker remains after account deletion to prevent repeat trials. Aggregate Checkout and customer-portal counters keyed only by the same one-way marker may remain for up to 90 days to prevent billing API abuse. After account deletion, GameScript also retains the raw, provider-linkable Stripe customer identifier and deletion timestamp as a deleted-customer safety record solely to suppress delayed Stripe webhooks and prevent account recreation. That safety record is retained for at most 90 days and is not linked to a live GameScript account. The trial marker and aggregate counters are likewise not linked to a live GameScript account. The inbox marker, the card marker, and a one-way marker that a trial’s card was checked, derived from the Stripe subscription identifier, also remain after account deletion to prevent repeat trials, and are not linked to a live GameScript account either.

What we do not access

We do not request DraftKings credentials, access your DraftKings account, or submit contest entries. You review and upload generated files yourself.

Your choices and contact

You can disconnect GameScript in your assistant settings to stop future tool access. To erase the connected account, ask your assistant to call dfs_delete_account; the tool requires your connected email and an exact confirmation phrase. Cancel a trial or paid plan in the Stripe customer portal first. A canceled trial can be deleted right away. A canceled paid plan can be deleted once the period you paid for ends, and a past-due subscription must be resolved first. You can also request an account export, correction, or deletion at support@gamescriptai.app using your connected sign-in email. To leave the notify list, email the same address from the address you signed up with and the row is deleted; leaving the notify list is separate from deleting an account, and neither one removes the other. Legal retention may apply to billing records.