The plugins of Agent Tools work in ChatGPT, in Claude and in other MCP clients. They include Company Jobs Finder, Remote Jobs by Country, Startup Name Check, Package Health Check, Recall Check, Citation Checker, Business Days & Workday Calc, Tariff & HS Code Duty Finder, EU Business & VAT Checker, Regulation Reader, Site SEO & AI Crawler Audit, Travel Check, Food Facts, Car Check, Document Tools, Tax Numbers, Dev Facts Check, Paper Finder, CVE Risk Check, Domain Mail Check, Country Stats Facts, SEO Audit, AI Text Check, Market Indicators, Transcript Kit, Live Card, Hire or Automate, Post Kit, Ad Angle Map, Taste Profile, Trade Chart, Buyer Signals, Tarot Reader, Dream Analyzer, Feng Shui, Dream Soulmate, Daily Horoscope, Numerology Profile, Birth Chart Snapshot, Sign Compatibility, Angel Numbers, I Ching Oracle and Video Grab. They keep no account of you. What they do store is listed on this page: mainly the 14-day tool input log, feedback an agent chooses to submit, the monitoring log, the style profiles of Taste Profile, and aggregate counts: calls per tool per day, the monitoring counts described below (and, for the optional SEO Audit judgement, the local AI-readiness check, the optional Hire or Automate model tie-break, Buyer Signals lookups and EU Business & VAT Checker company_from_domain lookups, daily limit counters described below, and for Live Card the HTML of a render until it finishes and the files for 24 hours).
Who runs this
OpenKrill runs Agent Tools, its plugins and the other openkrill.app sites. OpenKrill is a product run by one independent developer. It is not a registered company yet. OpenKrill decides what these services keep and why, as this page explains.
For anything about your data, write to support@openkrill.app. This is the only contact for privacy questions and requests.
Your rights and how to ask
You can ask us to:
- Show you your data (access): what we keep about you, and a copy of it.
- Fix it (correction) if it is wrong.
- Delete it (erasure).
- Give it to you in a file that you can take to another service (export).
- Pause its use (restriction) while a question about it is still open.
- Stop a use of it (objection), such as analytics. For analytics, you can also use the switch below.
- Take back your consent where you gave it, at any time, as easily as you gave it. For the newsletter, use the unsubscribe link in any email. Taking it back does not make earlier use unlawful.
Write to support@openkrill.app with "Privacy request" in the subject. Say what you want, and tell us what to look for: the email address you gave us, the tool and the day of a call, or the id of your API key. Most of our tools keep no account, so we cannot find a call without a detail like this.
We must make sure we give your data only to you. We send a copy only to someone who shows they hold the email address or the API key the data is tied to. If the data is tied to neither, we cannot check who sent it, so we tell you what kind of data we keep and can delete it, but we do not send a copy.
We answer within one month, and it is free. If a request is complex, the law lets us take up to two more months. If we need that time, we tell you why within the first month. Newsletter readers can also download or delete their data themselves. Use the preferences link in any of our emails.
You can also complain to the data protection authority where you live or work.
Your choices
- No account. The plugins need no account or sign-in, so there is no account to close. The few records kept for one person, such as Taste Profile style profiles and the newsletter, have their own delete steps, described in their sections below.
- What you send. You choose the arguments of each call: leave out anything you do not want processed. For an EU Business & VAT Checker company lookup, send a company domain rather than an email address.
- What is kept, and for how long. For EU Business & VAT Checker, its answers are cached for up to six hours, found by a hash of the arguments and holding public company records, not who asked; its daily lookup counts hold no domain or address and are deleted after three days; and its arguments stay in the 14-day input log, with an email address replaced by [email]. All of these are deleted on their own, with nothing for you to do. Every other record on this page is kept for the time its own section states.
- Purpose. For EU Business & VAT Checker, the arguments of a call are used only to answer that call and for the cache, the input log and the counts described on this page. Nothing on this page is used for advertising or sold.
- Questions or removal. To see, correct or remove anything you think we hold about you, write to us as described under Your rights.
Why we may use data, and for how long
What we collect lists every item our code keeps. For each item, it says why we keep it, for how long, and the legal basis we propose. The basis can be: the contract with you when you use a tool or buy something, our legitimate interest in running and protecting the service, your consent where you opted in, or a legal duty. These bases are our proposals. A lawyer has not confirmed them yet. If a row says "Not decided yet", no time limit has been set yet. We will update the row when one is set.
Some data sits in open-source tools we run ourselves, and each keeps it as set here. The page counter (Umami) keeps its page counts with no time limit: Umami deletes nothing by default, and our setup sets no limit yet. The newsletter list (listmonk) keeps an address until you delete it from the preferences page; if you only leave a list, the address stays marked as left, so we never mail it again. Its nightly backup copy is kept 30 days. Request traces of our tools (which tool ran and how long it took) are kept 14 days, Tempo's own default, which our setup does not change. Where a key, a payment or a sign-up came from (a referrer name, a utm tag, the landing page and the day) is cleared after 395 days. 30 days after an API key is disabled, its usage counts, its plan rows, its Deals seller name and its Hiring Signals webhooks (address, signing secrets and the alerts sent to them) are deleted, and the key stays only as a disabled marker with no label.
Analytics, and how to turn it off
Pages on tools.openkrill.app load a page counter. So do the front page of each plugin host that has its own page, and the price page at hiring.openkrill.app/pricing. The counter is a copy of Umami, an open-source analytics tool, that we run ourselves at stats.openkrill.app. It counts the page you opened, the site that sent you, your device type and your country. It sets no cookie and keeps no network address. It also leaves out the part of the page address after ? or #. The same pages load a one-question survey and a page speed timer.
If your browser sends Global Privacy Control or Do Not Track, the page counter is not added to the page. Our own visit counts on tools.openkrill.app still count the visit, but they do not keep the link name or the site you came from. To turn all of this off, use the switch below. The switch sets one cookie, __Secure-ok_nocount, for all of openkrill.app. So it works on every site listed above. It also stops our own visit and click counts on tools.openkrill.app. The cookie holds only the value 1. It lasts 395 days, or until you press "Count me again". It is stored only in this browser, so use the switch in each browser you use.
The games on games.fuseapi.app count plays separately, with no cookie. Their start page has its own "Don't count me" switch.
Cookies and browser storage
We set no advertising cookies, and no cookies that follow you across other sites. The list below shows every cookie and every browser storage key that our code writes. It shows what each one holds and how long it stays. Most of them remember a setting or keep your own work in your browser.
| Name | Set by | What it holds | Why | How long |
|---|---|---|---|---|
__Host-gsc_stateCookie | Search Data plugin (Search Console connect) | Nothing about a person: a random one-time state value. | Checks that the Google Search Console sign-in that comes back is the one this browser started. | 10 minutes |
__Host-clubCookie | Remote jobs club (site) | The member's session key. | Keeps a club member signed in. | 90 days |
__Host-club-deviceCookie | Remote jobs club (site) | A random device id. | Tells the club which browser a member signs in from. | 400 days |
__Host-club-pendingCookie | Remote jobs club (site) | A one-time handle for one member's sign-in. | Holds a sign-in that is waiting for its passkey step; it works once. | 5 minutes |
__Host-ok_oursCookie | OpenKrill site | Nothing about a person: the value 1, set only when a page is opened with ?ours=1. | Marks our own team's browsers so their offer visits and test requests are counted apart from real visitors. | 1 year (31536000 seconds) |
ok_oursCookie | OpenKrill site | Nothing about a person: the value 1. | The old name of the mark for our own team's browsers; it is only read now, not set. | Not decided yet (this code no longer sets it, and plans to stop reading it after 2026-12-01) |
__Host-dd_oidcCookie | Deal Desk | Nothing about a person: one-time state, nonce and code verifier, and the sign-in link being confirmed. | Holds one Google sign-in while it is in progress, to check the answer that comes back. | 10 minutes |
sm_sessionCookie | Shop Momentum | The shop id and a session secret. | Keeps a shop owner signed in to their dashboard. | 30 days |
sm_oauthCookie | Shop Momentum | Nothing about a person: a one-time state value and code verifier. | Holds one shop sign-in while it is in progress, to check the answer that comes back. | 10 minutes |
__Host-oauth-consent-*Cookie | Agent Tools sign-in for AI apps (connect.openkrill.app) | A random one-use handle that ties a consent page to the browser that opened it | Makes sure the person who approves an AI app's access is the one who started it, so a forged approval link does not work | 10 minutes (the library's transaction time), then the browser drops it |
__Secure-ok_nocountCookie | OpenKrill site | Nothing about a person: the value 1, set only when the visitor presses "Don't count me" on the privacy page. | Tells every openkrill.app host not to add the stats script and not to count this browser. | 395 days (13 months), or until the visitor presses "Count me again" |
xhw-pricing-visitorLocal or session storage | X Hiring Watch pricing page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it. | Clears the visitor id an older version of the pricing page left in the browser. | Deleted on the next visit to the page; nothing is written |
xhw-pricing-not-countedLocal or session storage | X Hiring Watch pricing page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
reef-room:*Local or session storage | Reef Room poker game (site) | The answer to the age check, the player's pass key and a random device id (keys reef-room:adult, reef-room:pass, reef-room:device). | Remembers the age check answer, the player's pass key and a device id so the game knows this player. | Stays in your browser only, until you clear it |
angleproof-visitorLocal or session storage | AngleProof page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it, and counts a view with an id held in memory for that page load. | Clears the visitor id an older version of the page left in the browser. | Deleted on the next visit to the page; nothing is written |
angleproof-not-countedLocal or session storage | AngleProof page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
countkeep-visitorLocal or session storage | CountKeep page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it, and counts a view with an id held in memory for that page load. | Clears the visitor id an older version of the page left in the browser. | Deleted on the next visit to the page; nothing is written |
countkeep-not-countedLocal or session storage | CountKeep page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
countkeep-ledgerLocal or session storage | CountKeep page | Loan details and payment counts read from the person's own student aid data file; never sent to us. | Keeps a dated record of the person's student loan counts in their browser, to spot a fall. | Stays in your browser only, until you clear it |
hotcake-demo-visitorLocal or session storage | Hotcake demo page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it, and counts a view with an id held in memory for that page load. | Clears the visitor id an older version of the page left in the browser. | Deleted on the next visit to the page; nothing is written |
hotcake-demo-not-countedLocal or session storage | Hotcake demo page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
lt-fontsLocal or session storage | Last Table pages (site) | Nothing about a person: the flag value 1. | Remembers in this tab that the web fonts already loaded, so later pages show them at once. | Ends when the browser tab closes; no other expiry in code |
lt-themeLocal or session storage | Last Table pages (site) | Nothing about a person: the light or dark theme the visitor picked. | Remembers the light or dark theme the visitor picked on this device. | Stays in your browser only, until you clear it |
orphansolar-visitorLocal or session storage | OrphanSolar page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it, and counts a view with an id held in memory for that page load. | Clears the visitor id an older version of the page left in the browser. | Deleted on the next visit to the page; nothing is written |
orphansolar-not-countedLocal or session storage | OrphanSolar page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
paidatbid-visitorLocal or session storage | PaidAtBid page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it, and counts a view with an id held in memory for that page load. | Clears the visitor id an older version of the page left in the browser. | Deleted on the next visit to the page; nothing is written |
paidatbid-not-countedLocal or session storage | PaidAtBid page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
saveless-key, saveless-deviceLocal or session storage | Saveless page | The member's Saveless sign-in key and a device id. | Keeps the member's sign-in key and a device id on this device, so they stay signed in. | Stays in your browser only, until you clear it |
seasonlock-visitorLocal or session storage | SeasonLock page | Nothing new is written. An older version of the page kept a random visitor id here; the page now only deletes it, and counts a view with an id held in memory for that page load. | Clears the visitor id an older version of the page left in the browser. | Deleted on the next visit to the page; nothing is written |
seasonlock-not-countedLocal or session storage | SeasonLock page | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
openkrill-survey-v1Local or session storage | OpenKrill site survey card | Nothing about a person: whether the visitor answered or closed the survey card. | Remembers that the visitor answered or closed the survey card, so it is not shown again. It is written only when the visitor acts; an old "shown" value is deleted. | Stays in your browser only, until you clear it |
game saves: daycipher, ledgerdeal, loupewright, monolode, underbourse, petal-ward-profile, <game>-intro, with :tg:<user> in a Telegram appLocal or session storage | Games built on gamecore (daycipher, loupewright, monolode, underbourse, ledgerdeal, petal-ward) | Game progress and settings; in a Telegram Mini App the ledgerdeal key can carry the player's Telegram user id. | Keeps the player's game profile and whether the intro was seen on this device; keys are daycipher, loupewright, monolode, underbourse, ledgerdeal, petal-ward-profile and <game>-intro. | Stays in your browser only, until you clear it |
loomstep.flows.v1, loomstep.runs.v1Local or session storage | Loomstep web app | The flows the person built, which can hold text they typed, and run ids. | Keeps the person's flows, the last run of each flow and whether the intro was seen (keys loomstep.flows.v1, loomstep.runs.v1, loomstep.intro.v1). | Stays in your browser only, until you clear it |
save_n, save_0 to save_nLocal or session storage | Telegram Mini App games (tgapp) | The player's game save, tied to their Telegram account. | Keeps a copy of the game save in the player's Telegram cloud storage so progress follows their account; save_n is the count of save parts save_0 to save_n. | Kept in your Telegram account's cloud storage until removed; this code only removes parts it no longer needs |
tgapp:launchLocal or session storage | Telegram Mini App games (tgapp) | Telegram's launch parameters, including its signed user data about the player. | Keeps the Telegram launch data for this tab, so a reload still works as a Mini App. | Ends when the browser tab closes; no other expiry in code |
petal-ward:v1, with :tg:<user> in a Telegram appLocal or session storage | Petal Ward game | The game record; in a Mini App the key name holds the player's Telegram user id. | Keeps the player's game record on this device; the key is petal-ward:v1, or petal-ward:v1:tg:<Telegram user id> in a Telegram Mini App. | Stays in your browser only, until you clear it |
garden.rotateLocal or session storage | Play: Garden game | Nothing about a person: whether the Rotate pieces setting is off. | Remembers whether the Rotate pieces setting is off on this device. | Stays in your browser only, until you clear it |
play.lantern.streetLocal or session storage | Play: Lantern game | Nothing about a person: the nights played, as days and lamps. | Keeps the player's game progress on this device. | Stays in your browser only, until you clear it |
play.picross.albumLocal or session storage | Play: Picross game | Nothing about a person: the pictures solved, by day. | Keeps the player's game progress on this device. | Stays in your browser only, until you clear it |
play.picross.soundLocal or session storage | Play: Picross game | Nothing about a person: whether sound is off. | Remembers whether sound is off on this device. | Stays in your browser only, until you clear it |
play.picross.checkLocal or session storage | Play: Picross game | Nothing about a person: whether the check option is off. | Remembers whether the check option is off on this device. | Stays in your browser only, until you clear it |
play.picross.colortipLocal or session storage | Play: Picross game | Nothing about a person: that the color tip was already shown. | Remembers that the color tip was already shown on this device. | Stays in your browser only, until you clear it |
play.picross.progress.*Local or session storage | Play: Picross game | Nothing about a person: the day's card in progress, under key play.picross.progress.<day>. | Keeps the player's game progress on this device. | Stays in your browser only, until you clear it |
play.done.spice.*Local or session storage | Play: Spice game | Nothing about a person: the finished card for each day, used to count a streak. | Keeps the player's game progress on this device. | Stays in your browser only, until you clear it |
tangle.solvedLocal or session storage | Play: Tangle game | Nothing about a person: the days solved. | Keeps the player's game progress on this device. | Stays in your browser only, until you clear it |
play.visitorLocal or session storage | Play games site | Nothing new is written. An older version of the games kept a random visitor id here; the games now only delete it. | Clears the visitor id an older version of the games left in the browser. | Deleted on the next game page load; nothing is written |
play.nocountLocal or session storage | Play games site | Nothing about a person: the flag value 1. | Remembers that this visitor asked not to be counted. | Stays in your browser only, until you clear it |
play.done.*Local or session storage | Play games site | Nothing about a person: the finished card of a daily puzzle, under key play.done.<game>.<day>. | Keeps the player's game progress on this device. | Stays in your browser only, until you clear it |
slotscout-last-scan-v*Local or session storage | SlotScout page | The scan the person asked for and its answer. | Keeps the last scan in this tab so the report page does not run it again. | Ends when the browser tab closes; no other expiry in code |
tapwhich:tapsLocal or session storage | Tapwhich Cap left page | The person's log of card taps. | Keeps the tap log the iOS Shortcut passed in, so a reload in this tab still shows it. | Ends when the browser tab closes; no other expiry in code |
tapwhich:wallet:v1Local or session storage | Tapwhich | The names of the person's Wallet cards and their statement days. | Remembers which Wallet card is which card in our list, and each card's statement day. | Stays in your browser only, until you clear it |
tapwhich:paid:v1Local or session storage | Tapwhich | How much the person paid on their cards each month. | Keeps the person's paid totals by month. | Stays in your browser only, until you clear it |
tapwhich:v1Local or session storage | Tapwhich | The cards the person holds, their picks and their spending. | Keeps the person's cards, picks and spending so the app remembers them. | Stays in your browser only, until you clear it |
openkrill-coachIndexedDB database | Coach plugin page | Workouts, check-ins, pain reports, body weights and notes the person entered, plus their consent and app settings. | Keeps the person's training log on their own phone so the coach app works offline; it is only created after the person agrees. | Stays in your browser only, until you clear it |
caderno-de-treinoIndexedDB database | Treino Log plugin page | The training entries the person wrote, plus their consent record. | Keeps the person's training notebook on their own phone; it is only used after the person agrees. | Stays in your browser only, until you clear it |
openkrill-coverIndexedDB database | Cover page | Pictures the person added and the edits they made. | Keeps the person's pictures and edits in their browser so they can come back to a cover. | Stays in your browser only, until you clear it |
coach-*Cache storage | Coach plugin page | Nothing about a person: the app's pages, scripts and styles. | Keeps the app's own files so it opens offline. | Stays in your browser only, until you clear it |
treino-*Cache storage | Treino Log plugin page | Nothing about a person: the app's pages, scripts and styles. | Keeps the app's own files so it opens offline. | Stays in your browser only, until you clear it |
<game>-<version>Cache storage | Games built on gamecore (daycipher, loupewright, monolode and others) | Nothing about a person: the game's pages, scripts, art and fonts. | Keeps the game's own files so it plays offline. | Stays in your browser only, until you clear it |
Data that leaves your country
The services we use are in several countries. Cloudflare carries every request to our server. It is a US company with data centres around the world. Daily copies of the monitoring log are kept in Google Drive, a US service. Our Telegram games keep your game save in Telegram's own cloud storage, tied to your Telegram account. Some tools send the text or file you give them to a model provider, such as Google Gemini or Groq. Both are US companies. When a tool does this, its row below says so. This means your data can be handled outside your country, including in the United States. Every outside service our code calls, and what it receives, is listed under outside services on What we collect. We have not yet chosen and published the legal safeguard for each transfer out of the EU.
Children
Under EU law (GDPR Article 8), if a service relies on a child's consent, it needs a parent's consent when the child is under 16. Some countries set a lower age, as low as 13. If you are under that age where you live, do not sign up for the newsletter, a member area or any account here without a parent's consent. If you think a child gave us personal data, write to support@openkrill.app and we will delete it.
Security problems and data leaks
To report a security problem or a possible leak of personal data, write to support@openkrill.app with "Security" in the subject. The same address is in our security.txt. If personal data leaks, the law asks us to tell the data protection authority within 72 hours of finding out, unless the leak is unlikely to put anyone at risk. If the leak puts your rights at high risk, we must also tell you without undue delay.
Per server: what it receives and keeps
One row per public MCP server. The Keeps column is what the tool itself keeps. On top of it, every server adds one to a daily call count per tool, with no content, and uses the network address for about a minute to limit calls. Every server except certpacket and slotscout, which run on their own, also writes a monitoring record of each call and logs the tool name and the inputs your client sends (not your chat) to improve speed and reliability; we remove emails, phone numbers and secrets before storing, and delete the logs after 14 days; a text over 200 characters is kept only as its length and a keyed hash, a web address only as its scheme, host, path and query names, and one call keeps at most 600 characters of short text, the rest only as lengths and keyed hashes. So "Nothing" in this table means nothing beyond that 14-day input log. Public data kept for a short time is a cache, found by a hash of the arguments, with nothing about who asked. The sections below give the detail and name each source.
| Server | Receives | Keeps | How long |
|---|---|---|---|
Agent Tools APIapi.openkrill.app | The arguments of each tool call | A daily count per one-way hash of the network; with a key, a hash of the key and a monthly count | Network count 3 days |
Email Engagement Reportemailpld.openkrill.app | An email event export and optional recipient and campaign CSV text | Nothing | Not kept |
Company Jobs Finderjobs.openkrill.app | Company names or careers links, filters, and optional profile text | Public job listings, found by a hash of the arguments | About 2 hours |
Startup Name Checknames.openkrill.app | Business names or domain names | Public domain status | About 5 minutes |
Package Health Checkpackages.openkrill.app | Public package names and versions, or package.json text | Public facts for a single package; a package.json is never kept | About 1 hour |
Recall Checkrecalls.openkrill.app | Vehicle year, make and model, a VIN, or a product name | Public recall records | 24 hours |
Citation Checkercitations.openkrill.app | Reference text: authors, year, title, journal, DOI | Public bibliographic records | 6 hours |
Store Price Trackerstores.openkrill.app | A store address | That store's public product data as daily snapshots, with nothing about who asked | Until the store owner asks for removal |
Business Days & Workday Calcbusinessdays.openkrill.app | A country, region, dates and a year | Public holiday calendars | 24 hours |
Tariff & HS Code Duty Findertariffs.openkrill.app | A product description or tariff code and a country | Public tariff entries | 6 hours |
EU Business & VAT Checkereubusiness.openkrill.app | A VAT number, company name or LEI, and optionally your own VAT number, or a company domain / work email domain | Public register records and the company-from-domain answer; never a consultation-number check | 1 hour; 6 hours for a domain answer |
Regulation Readerrules.openkrill.app | A CFR title and section, or search words | Public regulation text | 6 hours for a section, 1 hour for a search |
Site SEO & AI Crawler Auditsitecheck.openkrill.app | A public page address or domain, and optionally one marketing email to check | The site's public robots.txt rules, tags and recent page answers; an owner check report of a host for 60 seconds; call times under a daily keyed hash of the caller for 10 minutes and the host names checked under a domain for an hour; for a call through the Agent Tools gateway, the host and path checked and the optional goal you gave, under a daily hash of the caller | 5 minutes for site data, served up to 5 more while refreshed, a stored copy not yet deleted on a schedule; 30 days for the address and goal |
Travel Checktravel.openkrill.app | Country names or an airport code | Public travel advisories and airport conditions | About 3 hours; 5 minutes for an airport |
Food Factsfood.openkrill.app | A barcode or search words, and allergens to check | Public product entries; allergens are never kept | 12 hours for a product, 6 hours for a search |
Car Checkcars.openkrill.app | A VIN, or a vehicle year, make and model | Public vehicle records | 24 hours |
Document Toolsdocs.openkrill.app | Text to count, or the content of a calendar or CSV file to make | The file you asked for, under a random name | 24 hours |
Tax Numberstax.openkrill.app | A tax year, filing status and income amounts | Nothing | Not kept |
Shop Duty Deskshopduty.openkrill.app | Order lines with no customer fields, or a product CSV | Nothing | Not kept |
Catalog QA Deskcatalogqa.openkrill.app | A product CSV, or a store address | Nothing | Not kept |
Dev Facts Checkdevfacts.openkrill.app | A product and version, license, web feature or RFC | Public release, license, browser support and RFC records | 6 hours; 24 hours for licenses and RFCs |
Paper Finderpapers.openkrill.app | Topic words and filters, or a paper id | Public paper records | 6 hours for a search, 24 hours for a paper |
CVE Risk Checkcve.openkrill.app | CVE ids, or package names and versions | Public vulnerability records and exploit scores | 1 hour; NVD records up to 3 hours |
Domain Mail Checkmailcheck.openkrill.app | Domain names and optional DKIM selectors | Public DNS and registry records | 2 minutes for DNS, 1 hour for registry data |
Country Stats Factscountrystats.openkrill.app | Countries, an indicator and a year | Public World Bank and IMF figures | 6 hours |
SEO Auditseoaudit.openkrill.app | A public site address and a page count | The findings; for the optional judgement, daily totals and a count per one-way network hash | 10 minutes; counts a few days |
AI Text Checkaitext.openkrill.app | Text to check, up to 12,000 characters | Nothing | Not kept |
Market Indicatorsindicators.openkrill.app | Indicator settings, prices you send, or a currency pair | Indicators for a currency pair; prices you send are never kept | 1 hour |
Industry Pulsepulse.openkrill.app | Topic words, a date, or a product name | Public news items collected on a schedule; a product's feedback result, found by product name | 30 days for items, 6 hours for a result |
Transcript Kittranscript.openkrill.app | An audio or video file or link, or caption text to translate | The transcript text, under a hashed anonymous user id; daily minute counts. The media is never kept | 24 hours, latest 10 per library |
Live Cardlivecard.openkrill.app | Cover and animation HTML, a size and a duration | The HTML until the render ends; the rendered files; a count per one-way network hash | HTML up to 2 hours, files 24 hours |
LP Pool Checklpcheck.openkrill.app | A pool id, chain, token symbols or addresses, and optional amounts | Nothing about you; a shared index of public pool figures | Not kept |
Hire or Automatehire.openkrill.app | A job title or O*NET code, and an optional description | The answer for a title with no description; daily tie-break counts | 24 hours; counts a few days |
Post Kitpostkit.openkrill.app | Topic, tone, platforms, post text, or your product page address | A daily count of model calls, with no content | Count only |
Ad Angle Mapadangle.openkrill.app | Store addresses, ads you paste, and short phrases | Nothing | Not kept |
Buyer Signalssignals.openkrill.app | An industry, region, job title or service words | Daily counters, overall and per one-way network hash | 3 days |
Taste Profiletaste.openkrill.app | Image links, search text and the style rules you save | Image descriptions, file names, search numbers and rules, under a key only you hold | 90 days after last use, or at once with delete_profile |
Outreach Deskoutreachdesk.openkrill.app | Your job criteria and the recruiter messages you paste | Your criteria, per-sender-domain scores and evaluations, under a key only you hold; never the message text | Evaluations 30 days; the desk 90 days after last use, or at once with purge_data |
Trade Chartchart.openkrill.app | A ticker or pair, a timeframe and indicator names | Public price candles | 15 minutes intraday, 1 hour daily |
Send Outsendout.openkrill.app | Message drafts, event details, or a file to hand over | Only a transfer file you ask for, under a random name | 24 hours by default, 7 days at most |
DESIGN.md Linter & Extractordesignmd.openkrill.app | DESIGN.md text, or a public page address to extract from | Each answer, under a hash of the request; the text you send is not kept | 1 hour |
Video Grabvideograb.openkrill.app | Topic words, a platform name, or a public video address | Public video records | 6 hours for a search, 1 day for a record |
Lane Plannerlanes.openkrill.app | Your task list and plan text | Nothing | Not kept |
Remote Jobs by Countryremotejobs.openkrill.app | A country and job filters | Each answer of public job posts, found by a hash of the search | 1 hour |
School Digestschooldigest.openkrill.app | A Canvas snapshot, grades and school notices you paste | Nothing | Not kept |
Agent Trace Checkagenttrace.openkrill.app | An agent tool-call log you paste | Nothing | Not kept |
Prompt Injection Scannerinjectionscan.openkrill.app | Text you paste: a page, email or tool result | Nothing | Not kept |
Page Fetchpagefetch.openkrill.app | A public page address | The page's Markdown and the site's robots.txt, with nothing about who asked | 1 hour for a page, 6 hours for robots.txt |
Trending Nowtrending.openkrill.app | A topic or niche, a time window and source names | Public post titles, links and counts it reads from the sources itself; your question is not kept | 8 days after a post leaves its source's list |
Crypto Due Diligencecryptodd.openkrill.app | A chain, a token address or a wallet address, and an optional GitHub link or deployer | Nothing about you; public source answers are cached for up to 6 hours | Not kept |
Namequotaanswershare.openkrill.app | AI answers you paste, with your brand, its site and rival names | Nothing | Not kept |
Tenrungtenrung.openkrill.app | 10 scores from 0 to 3 and an optional team name | Nothing | Not kept |
Post Statspoststats.openkrill.app | A public post or channel address | The post's public counts and the platform's robots.txt, with nothing about who asked | 15 minutes for counts, 6 hours for robots.txt |
CertPacketcertpacket.openkrill.app | A product description, a lab report file or its text, a country, and for a watch list product names and an optional webhook address | Public CPSC, Health Canada and EU Safety Gate records; a watch list keeps its product names, webhook address and unread alerts under a hashed key; report text is not kept | 24 hours for public records; a watch list until you stop it or after 90 days with no read |
SlotScoutslotscout.openkrill.app | A worksite address or ZIP in Texas or New York, a staff headcount, and an optional list of employee home ZIPs with no names | Public licensing lists near the worksite; each answer, found by a hash of the arguments, with the ZIP list only as a digest | 24 hours |
Photo Sheetphotosheet.openkrill.app | A photo, a voice note or a pasted text, an optional hint, and on the web page nothing else; a photo goes to Google Gemini and text to Groq or Gemini on their free tiers, which may keep it under their own terms | The finished table, its sum checks and the voice note's transcript; the photo and the audio are not kept | 24 hours |
Belief Pollbelief.openkrill.app | A question, the sources to read and a start date; the question goes to Grok (xAI) to search | The poll answer with public post quotes and links, keyed by the question, with nothing about who asked | 12 hours |
IndexNow Submitindexnow.openkrill.app | A site address, its IndexNow key, and an optional sitemap address, URL list and filters | The site's host name and the time of its last submit; the key and the URLs are not kept | 5 minutes |
BillPeakbillpeak.openkrill.app | Bill numbers or bill text, the service address, and an optional usage file; the address goes to the OpenEI rate database | Nothing: the bill and the usage file are read for the answer and dropped | Not kept |
Settlement Claim Findersettlements.openkrill.app | Where you live and what you bought or used, or a link from a settlement message | Each answer, found by a hash of the arguments | About 1 hour |
Share Link Resolversharelink.openkrill.app | A public share link and an optional extraction code; the link goes to the drive that made it, Google Drive or Baidu Netdisk | Each answer, found by a hash of the arguments, so a repeat call does not ask the drive again | About 5 minutes |
Contact Details Findercontacts.openkrill.app | A website address | Each answer, found by a hash of the arguments | 6 hours |
E-Commerce Store Enricherstoreenricher.openkrill.app | A store address | Each answer, found by a hash of the arguments | 6 hours |
Associate Product Finderassociatelinks.openkrill.app | Your Creators API credential and tracking IDs, then search words and filters | The credential and tags, sealed under your connection key; each Amazon answer for your connection only, without images; a call count per month under a one-way hash of your Credential ID | Credential until you delete it; answers 1 hour; counts by month, kept after a delete |
Sound Vocabularysoundvocab.openkrill.app | A description of a sound, an id from the list, and pitch, length or brightness numbers | Each answer, found by a hash of the arguments | About 1 day |
Tu Vi Charttuvi.openkrill.app | A birth date, birth time and gender | Nothing: the birth details are used for the chart and dropped | Not kept |
App Store Opportunity Trackerapptracker.openkrill.app | A store, country, chart and genre, an app id or link, or a search term | Public chart snapshots it reads from the stores, and each answer keyed by its question, with nothing about who asked | Chart snapshots 45 days; answers 30 minutes to 6 hours |
Hiring Signalshiring.openkrill.app | Company names, careers page addresses or board tokens, and a watch key | One snapshot a day of each public job board it reads, with no personal data; a watch keeps its company list and the ids of the roles it has seen under a hashed key | Board snapshots are kept as hiring history; a watch until it is no longer used |
What a plugin receives
When you use a plugin in ChatGPT, Claude or another MCP client, the client decides to call one of its tools and sends only that tool's arguments. For Company Jobs Finder those are the company names or careers page links you asked about and any filters (keyword, location, remote, department, posting date, posted salary). The profile keyword check takes the profile text you paste (for example a headline and About section) and either up to three target job titles or one company and job title. It never reads LinkedIn or any profile page; it only sees the text you send, and that text is checked in memory for the answer to that one call and is not stored, cached or counted; the only copy kept is the cleaned one in the 14-day input log described below. The result lists role words, not your text. Send only text you are comfortable sharing with your AI client, and leave out contact details. The two job-fit tools also take a short work profile that you or ChatGPT write: target and recent job titles, years of experience, level, skills, places and whether you are open to remote work. The profile is used in memory only to rank the jobs in that one answer; it is not stored, cached or counted, and the only records of the call are the daily call count and the 14-day input log. Send a short summary, never a full resume, and no names, contact details or employers you do not want to share. For Remote Jobs by Country they are the country you would work from and, if you choose, a role family, a job type, a niche, keywords, whether to show only jobs that clearly include your country, and how many jobs to return. It never asks for your name, CV or contact details. For Startup Name Check they are the business names or domains you asked about and the domain endings you chose. For Package Health Check they are the public npm or Python package names and versions you asked about, or the text of a package.json you shared. A package.json is read only for the names and versions in its dependency lists; the rest of the file is ignored, and the file and its dependency list are not stored or cached. Package names and versions are sent to the public sources named below, so do not use private package names. For Citation Checker they are the references you asked about, as text: authors, year, title, journal and DOI. Send it bibliographic details only. For Business Days & Workday Calc they are a country code, an optional region, the dates or the number of days you asked about, an optional weekend, and a year. For Tariff & HS Code Duty Finder they are the description of a product or a tariff code, a country (UK or US) and an optional country of origin. Describe the product only: never include names, addresses or other personal details. For EU Business & VAT Checker they are a VAT number and its country, a company name or Legal Entity Identifier, a registry country (France or Norway) and, only if you choose to get a consultation number, your own VAT number. Send the names of companies only: never send the name of a private person. For its company_from_domain tool it is one company domain, the address of a company website or a work email address. Of an email address only the part after the @ is used: the part before it, which can name a person, is dropped at once and is never sent to any outside service or returned by the tool, and the 14-day input log described below replaces an email address with [email] before storing. Send the bare domain (acme.com) when you can. For Regulation Reader they are the CFR title and section you ask about, or the words, document type and dates you search for. Do not put personal details or a description of your own legal situation in a search. For Site SEO & AI Crawler Audit they are the address of a public page or site, or a domain or host name, and, for the exposure check, the text of one marketing email if you choose to paste it; send a sample without customer details. Send public sites only: private and local addresses are refused. For SEO Audit they are the public site or page address you ask about, a number of pages (up to 25) and whether you want the optional judgement. The local AI-readiness check, the AI instructions check and the llms.txt draft take that same kind of address. They do not take a question to send to an AI engine. The draft is built from the site's public pages and is not published to the site. For Buyer Signals they are an industry from a fixed list, an optional region, an optional job title such as bookkeeper, a number of days (1 to 60) and a number of results, or, for the tool-complaint lookup, a category such as monitoring and a number of days (30 to 365), or, for the buying-intent lookup and the weekly brief, a service such as "SEO audit", up to 5 extra keywords and a number of days. Describe companies, roles and tool categories only: never include names of people, usernames, emails or phone numbers. It does not take a question to send to an AI engine. For Travel Check they are a country name, up to five country names to compare, or an airport code. Travel Check never asks for your name, passport, nationality, travel dates or itinerary. For Food Facts they are a product barcode, the words of a product search with an optional country, and the allergens you want a product checked against. Food Facts never asks for your name or any health details, so do not include them. For Car Check they are a vehicle identification number (VIN) you ask to decode, or a vehicle year, make and model. Car Check never asks for your name, address, licence plate or mileage. A VIN identifies one vehicle, so send it only if you are comfortable with that. For Recall Check they are the vehicle year, make and model, a vehicle identification number (VIN) you ask to decode, or the product or food name you ask about, plus a number of days. Recall Check never asks for your name, address or licence plate. For Tax Numbers they are a tax year, a filing status, a date and, for an estimate, the income amounts you give; round figures are enough, so never send names, tax identification numbers or account details. For Shop Duty Desk they are order lines (a goods description, an optional tariff code, the country of origin, a quantity and a unit value; lines with a customer name, address or any other customer field are refused), the text of a Shopify Inventory or product CSV you shared, product titles, and a tariff code with amounts. For Catalog QA Desk they are the text of a Shopify product CSV you shared, or the address of a store whose public product feed you ask it to read. Send goods data only: a CSV export of products and inventory holds no customer data, and you should not send order exports. For Dev Facts Check they are a software product and version, a license name, a web feature name, or an RFC number or title words. For Paper Finder they are topic words and an optional year, category or open-access filter, or one DOI, PubMed id or arXiv id. For CVE Risk Check they are the CVE ids you ask about, or a number of days and a product word for the list of recently exploited vulnerabilities. Send public CVE ids only. For Domain Mail Check they are the domain names you ask about and, optionally, DKIM selector names and DNS record types. Send public domain names only. For Country Stats Facts they are the country names or codes you ask about, an indicator name and optionally a year. For Video Grab they are topic words, a platform name for an export guide, or a Wikimedia Commons, Internet Archive or YouTube address. A TikTok, Instagram, X, Douyin, Bilibili or Xiaohongshu address is not fetched. For Market Indicators they are the indicator names and settings, up to 250 candles of prices you chose to send, or a currency pair and interval. No personal data is involved. For AI Text Check it is the text you ask it to check, up to 12,000 characters; do not send text with personal details you do not want processed. For Live Card they are the HTML of a cover and of an animation, a size, a duration and a frame rate. The HTML is kept only until the render finishes, then deleted. Do not put personal or sensitive information in that HTML. For LP Pool Check they are a pool id, a chain name, token symbols or token contract addresses, and, if you ask for the fee-versus-impermanent-loss estimate, a price range, a holding period and optional amounts for position size, gas and exit cost. Those amounts are used only to compute that answer. Send public pool and token identifiers only. For Hire or Automate they are a job title or an O*NET-SOC code, and optionally a job description. Send the role, not a person: no names, email addresses, phone numbers or identification numbers. The description is used in memory to match an occupation and is not stored or cached, apart from the 14-day input log. If the title is not in the occupation tables, a short excerpt may be sent to Cloudflare Workers AI to pick a code from a short list; that step is limited per day and per network, and only the day's call count and an estimated neuron total are stored. For Post Kit they are the topic, tone, platform names, the post text and the target market you write for the drafts and adaptations, the address of your own product page for a launch clip, or the idea and optional angle count for a TikTok slideshow. The slideshow idea is composed into slides in memory and is not sent to a model. The images are not stored. Do not include personal data, passwords or other people's private messages in a post; Post Kit does not need them. For Ad Angle Map they are up to three store addresses whose public product feeds you ask it to read, ads you paste in, and short phrases for a public-discussion check. Ads you paste in are analysed in memory and dropped. For Trade Chart they are a public ticker, currency pair or crypto pair, a timeframe and up to four indicator names. No account, order or personal data is involved. For Tarot Reader, Dream Analyzer, Feng Shui and Dream Soulmate, the words you ask about (a question, a dream, a room description, or answers about what you value) are used in memory for that one answer. They are not stored or cached, apart from the 14-day input log. A reading is sent to a model through our own relay and the answer comes back to you. A question about self-harm, a crisis or a medical issue is not sent for a reading. Dream Soulmate takes words only: do not send a photo. For Daily Horoscope, Numerology Profile, Birth Chart Snapshot, Sign Compatibility, Angel Numbers and I Ching Oracle, the dates, times, signs, numbers or queries are calculated mathematically or looked up from original reference tables in memory, and are not stored, apart from the 14-day input log. The plugin does not receive your conversation, your name, your email address or your OpenAI or Anthropic account details.
Like any website, the server also sees the network address the request comes from. For calls from ChatGPT or from Claude on the web and in the apps, that is usually an OpenAI or Anthropic server rather than your own device. A client on your own computer, such as Claude Code, connects from your network.
What it does with it
- Logs the tool inputs. We log the tool name and the inputs your client sends (not your chat) to improve speed and reliability; we remove emails, phone numbers, card numbers and secrets (including a password in a web address) before storing, and delete the logs after 14 days. One text value longer than 200 characters (counted with runs of spaces as one), such as a pasted CSV or message, and a list of items that together run longer than that, is not stored: we keep only its length and a keyed hash (HMAC-SHA256) of it, both taken after the cleaning, so the same text sent twice can be counted without keeping it (only the length while the key is not set). The key is on the same server as the log, so the hash lets us group equal inputs; it is not anonymous. A web address keeps only its scheme, host, path and the names of its query parameters, cut to 200 characters. Shorter values are kept after the cleaning, so a name or an address in them can remain, but one call keeps at most 600 characters of such text, argument names included; past that, every further value and argument name is kept only as its length and keyed hash. A row holds the plugin and tool name, the arguments after that cleaning (cut to 2 KB), the time, the kind of client (such as ChatGPT or Claude, from its user agent), the outcome and how long the call took; never the network address, a header or a key. We read the most frequent inputs to choose what to cache, on our legitimate interest in a fast and working service (GDPR Article 6(1)(f)). The cleaning works by pattern, so a name or street address typed as free text can remain; do not put them in a tool's input. The log covers every MCP tool call to every plugin, including sitecheck.openkrill.app and remotejobs.openkrill.app, whatever the client. Where a tool's section below says an input is not stored, that holds for the tool's own work and caches. This 14-day input log is the one exception. Two things never reach it: the Site Check goal (
user_goal), which is taken out of the arguments first, and the feedback tools, whose messages are kept as described under "Feedback from agents". - Counts daily users. To count how many different callers use each plugin per day, we hash the network address and user agent together with a random value that we keep only in memory and replace at midnight UTC. That day's hashes are kept only so a caller is not counted twice, and are deleted once the day is over; what stays is one number per plugin per day. The address and user agent are never stored, and one day's hash cannot be linked to the next. We count users on our legitimate interest in knowing whether a tool is used (GDPR Article 6(1)(f)).
- Counts weekly ChatGPT users. ChatGPT sends an anonymous user id (
openai/subject) with each tool call. To count how many different ChatGPT users use each plugin in a week, we store a keyed one-way hash of that id (HMAC-SHA256 under a secret key kept outside our code) with the plugin and the UTC day, never the id itself. The hashes are kept for 7 days and then deleted; what we read is one number per plugin per week. Claude and other clients send no such id, so their users are not counted this way; neither are our own checks and turned-away calls. We count users on our legitimate interest in knowing whether a tool is used (GDPR Article 6(1)(f)). - Answers the question. The arguments are used to read the matching public job boards on Greenhouse, Lever, Ashby, Workable and SmartRecruiters, and the answer is sent back to your AI client.
- Finds remote jobs. For Remote Jobs by Country, the country and filters are matched against our own index of public job posts, which a scheduled job rebuilds every day from public company job boards and remote job feeds. No outside service receives your search. The answer is cached for one hour, found by a hash of the search, and holds only public job posts. The index holds nothing about who asked.
- Looks up domains. For Startup Name Check, the domain names built from your arguments (for example acme.com) are sent to Cloudflare's Registrar domain-check API when that lookup is configured, and otherwise, or when that API does not cover the ending, to the public registration lookup (RDAP) service of each domain's registry, found through the IANA directory. Only the domain name is sent. Registration status, dates when the registry publishes them, and a registration cost when Cloudflare returns one come back into the answer; no owner or contact details are kept or returned. The lookup does not register, buy or reserve a domain.
- Looks up recalls. For Recall Check, the vehicle or VIN you ask about is sent to the public NHTSA recall and VIN services, and a product or food name is sent to the public recall services of the CPSC or the FDA. Nothing else from your conversation is sent.
- Looks up packages. For Package Health Check, the package names and versions are sent to OSV.dev, the npm registry, the PyPI JSON API, deps.dev and the npm downloads API, and the public facts that come back (advisories, license, release dates, dependents) go into the answer.
- Looks up references. For Citation Checker, the reference text is used to look the paper up in Crossref, the DOI system (doi.org) and OpenAlex, which are public scholarly indexes, so those services receive the reference text and the network address of our servers, not yours. Only bibliographic details come back into the answer.
- Reads and records public store data. For Store Price Tracker, the store address you name is used to read the store's public product feed (/products.json), after its robots.txt, with a User-Agent that names StorePriceTracker and a contact address. A store you ask about is added to a daily snapshot list, and each day the plugin stores that store's public product data (titles, prices, variants, availability and the changes between days) so that price history can be read back. This is data about products and stores, not about you: the stored record is found by the store's address and holds nothing about who asked. A store owner can ask for a store to be removed through the support page or disallow StorePriceTracker in robots.txt.
- Looks up holidays. For Business Days & Workday Calc, the country code, region and year are sent to the public Nager.Date public holiday service and, for school holidays, to the public OpenHolidays service. The dates you asked about are used only inside our servers to count days and are not sent to them. Only holiday names and dates come back into the answer.
- Looks up tariffs. For Tariff & HS Code Duty Finder, the product description or tariff code and, when you give one, the country of origin are sent to the public UK Trade Tariff service or the public US Harmonized Tariff Schedule search service. Only the schedule's codes, descriptions and duty rates come back into the answer.
- Looks up businesses. For EU Business & VAT Checker, the VAT number (and your own VAT number, if you ask for a consultation number) is sent to the European Commission's VIES service, a company name or LEI to the GLEIF Global LEI Index, and a company name or registration number to the French company search (api.gouv.fr) or the Norwegian Brønnøysund Register Centre. Only public register data about legal entities comes back into the answer; names that could belong to a private person, and sole proprietors, are left out. For company_from_domain, the domain (taken from the domain, web address or work email address you give, of which only the part after the @ is used) is sent to Wikidata to find the item whose official website it is (with the host as given, such as shop.acme.com, when you gave a subdomain); to the registry of its domain ending, found through IANA's public RDAP directory, for the date the domain was first registered (registrant data is never read); to Cloudflare's public DNS (cloudflare-dns.com), to refuse a site that points at a private address; and to the company's own website, whose robots.txt, home page and up to three of its legal, imprint, terms, privacy or about pages are read only where its robots.txt allows; when the site redirects (for example from spotify.com to open.spotify.com), the address it redirects to receives the same request, after the same DNS check. The company names, register numbers and LEIs found that way, or the word of the domain itself (acme for acme.com), are then sent to the French and Norwegian registers above and GLEIF, VAT numbers found on the site to EU VIES, and SEC filer numbers listed in Wikidata to SEC EDGAR. The answer is the company's legal name, country, registration number, a size band and its age, each with a source link, the day it was read and how sure the match is, plus its register status, the date the domain was first registered, other candidate companies when the match is unclear, and the pages read. It describes the company only: no person, owner, director or employee is ever named, and a free mail provider or a free subdomain gives no company.
- Looks up regulations. For Regulation Reader, the title and section or the search words are sent to the Electronic Code of Federal Regulations (ecfr.gov) or the Federal Register (federalregister.gov), both run by the Office of the Federal Register. Only public regulatory text and notices come back.
- Looks at a public site. For Site SEO & AI Crawler Audit, our server requests the address you gave and the redirects it follows, files of that site such as robots.txt, a sitemap, llms.txt and agents.md, pages, scripts and links the page points to, which can include a few pages on other sites, and, for the owner checks, a fixed list of common paths such as admin, health, privacy and terms pages. It reads the response headers and the page content to answer. An answer can include text taken from those pages, such as headlines, button labels, link targets (which can be an email or phone link the page shows), titles, tags and author names. Some checks read robots.txt first and skip what it disallows for the AgentToolsSiteCheck token; others request what they need whatever robots.txt says: the tag check, the crawler access check and the redirect trace request the address you gave, and the owner checks request their proof file and, once you have proven you own the site, their fixed paths, scripts and backend probes. The crawler access check also requests the page with the user agents of 5 AI crawlers and a browser. Nothing from you or your conversation is sent to that site beyond the address; our other requests carry the Site SEO & AI Crawler Audit user agent, which names this service and a support page.
- Looks up travel advice. For Travel Check, the country you ask about is matched against the public UK travel advice index on GOV.UK and the US State Department advisory list, and the UK advice page for that country is read from GOV.UK. An airport code you ask about is sent to the FAA airport status service (US airports) and the NOAA Aviation Weather Center. Nothing else from your conversation is sent.
- Looks up food. For Food Facts, the barcode or search words you ask about, and the country if you give one, are sent to the public Open Food Facts service (world.openfoodfacts.org and search.openfoodfacts.org) with a user agent that names this service. The allergens you want to avoid are not sent: they are compared with the product entry here. Nothing else from your conversation is sent.
- Looks up vehicles. For Car Check, the VIN or the year, make and model you ask about are sent to the public NHTSA services (vpic.nhtsa.dot.gov and api.nhtsa.gov) and, for fuel economy, to the US EPA's fueleconomy.gov, with a user agent that names this service. Only counts and component names from NHTSA's complaint records come back into the answer: no complaint text and no VIN fragments. Nothing else from your conversation is sent.
- Renders a card. For Live Card, the HTML you supply is stored under a random id until the render finishes (or for two hours if it never does), then deleted. The JPEG, MOV, MP4 and GIF are stored under another random id. The links work for 24 hours and are not listed, so only someone with a link can open a file. After 24 hours the links stop working and the files are deleted: a cleanup deletes expired files every 30 minutes, and a storage rule removes anything left after two days. The render runs on our own server. Remote addresses in the HTML are refused, so the renderer does not fetch them. A coarse day-scoped hash of the network address is counted so one network cannot use the whole daily render allowance. That hash cannot be turned back into an address, and the count is deleted after a few days. No name, account or address is stored.
- Counts text and makes files. For Document Tools, the text you ask it to count is used only to work out the counts and is not stored, apart from the 14-day input log. A calendar or CSV file you ask it to make is written to our storage under a random 128-bit name, and the link only works for 24 hours. The files are not listed anywhere, so only someone with the link can open one. After 24 hours the link stops working and the file is deleted: a cleanup deletes expired files every 30 minutes, and a storage rule removes anything left after two days. The file contents are also returned to you in the answer, so you do not need the link. Do not put personal or sensitive information in a file you ask it to make.
- Looks up tax figures. For Tax Numbers, the figures come from a table of US federal tax data built into the service, each row naming the IRS document it was read from, so nothing from your request is sent to any other service. The income amounts you give for an estimate are used only for that calculation and are not stored or cached, apart from the 14-day input log. The same holds for tax_duty: the places, product kind and yearly sales you give are looked up in a built-in table of VAT and sales tax rules, sent to no other service, and not stored or cached, apart from the 14-day input log.
- Checks customs data. For Shop Duty Desk, a CSV you share is read in memory by a Worker object that keeps no state, and only counts and the rows with problems come back. The EUR 3 duty and the VAT table are calculated inside the service. Product titles and tariff codes are sent to the public UK Trade Tariff and US Harmonized Tariff Schedule services to find candidate codes and duty rates. Nothing from the order lines or the CSV is stored.
- Checks writing. For AI Text Check, the text is matched against fixed pattern rules inside the Worker, in memory, with no AI model and no outside service. It is not stored or cached, and only the daily call count and the 14-day input log keep any record of the call. The answer repeats short excerpts of your text (up to 120 characters each) back to you.
- Draws a price chart. For Trade Chart, the ticker or pair you name is sent to Yahoo Finance's public chart endpoint, and only if that has no candles, to Coinbase's public candle endpoint for a crypto pair or to Frankfurter for an ECB reference rate. The symbol, timeframe and indicator names are used to build the chart and are not stored. The chart page on chart.openkrill.app reads the same public sources and keeps no record of who opened it, only the daily call count.
- Checks product catalogs. For Catalog QA Desk, a CSV you share is read in memory by a Worker object that keeps no state, and only counts and the rows with problems come back. If you give a store address instead, the plugin reads that store's public product feed (/products.json) once, after its robots.txt, with a User-Agent that names CatalogQADesk and a contact address, up to five pages of 250 products. The feed is analysed and dropped: it is not stored, not cached and not added to any index of stores, and the answer is not found by who asked. A store owner can disallow CatalogQADesk in robots.txt. Catalog QA Desk reads product data only, never customer or order data, and never changes a store.
- Looks up developer facts. For Dev Facts Check, the software product and version, license name, web feature name or RFC number or title words you ask about are sent to the public services that hold that data: endoflife.date, the SPDX License List at spdx.org, webstatus.dev, the RFC Editor and the IETF Datatracker, with a user agent that names this service. Nothing else from your conversation is sent.
- Looks up papers. For Paper Finder, the topic words, filters or DOI, PubMed id or arXiv id you ask about are sent to Europe PMC, Crossref and arXiv, with a user agent that names this service and our support address (Crossref uses it to route polite callers). Nothing else from your conversation is sent.
- Looks up vulnerabilities. For CVE Risk Check, the CVE ids you ask about are sent to the National Vulnerability Database (services.nvd.nist.gov) and, for exploit scores, to FIRST (api.first.org), with a user agent that names this service. The list of recent exploited vulnerabilities sends only a date range. For a dependency triage, the package names and versions you pass are sent to OSV.dev (api.osv.dev), and the CVE ids found for them are sent to FIRST (api.first.org); the CISA exploited-vulnerabilities catalog is downloaded and matched here. Your file is not stored and nothing else from your conversation is sent.
- Looks up a domain. For Domain Mail Check, the domain name (and any selector name such as the part before ._domainkey) is sent as a DNS query to Cloudflare (cloudflare-dns.com) and, if that fails, to Google Public DNS (dns.google). A registration lookup sends the domain to IANA's RDAP directory (data.iana.org) and to the registry of its ending (for example rdap.verisign.com for .com), with a user agent that names this service. Registrant and contact details in a registry answer are never read or returned. Nothing else from your conversation is sent.
- Checks a site you own. Some Site Check tools also call outside services; what they send are host and domain names from the address you gave, from the site and from its DNS records, and, for the backend check, the public key the app ships and the table, collection and bucket names it checks; never the rest of your conversation. Before requesting a host name, every tool looks up its addresses over DNS at Cloudflare (cloudflare-dns.com), reusing an answer for up to a minute, to refuse hosts that point at private addresses. The exposure check sends the host to crt.sh (a public search of certificate logs) and the domain to the U.S. Copyright Office DMCA agent directory (dmca.copyright.gov), and looks up DNS records of the host, of its ownership proof name and of subdomains found in those logs at Cloudflare. If you paste a marketing email into it, the email is checked on our server; nothing in it is fetched or sent on. The AI app check sends the host to Cert Spotter (api.certspotter.com, certificate logs), the domain to the public registration lookup (RDAP, through data.iana.org and the domain's registry), and the host, the domain and the mail domains its records name to DNS at Cloudflare, with Google Public DNS (dns.google) as the fallback. After you prove you own the app, it also requests the Supabase or Firebase backends the app's own code names (with the public key the app ships, and for Firebase also common collection names such as users), to see whether anyone can read them; it returns the backend, table, collection and bucket names, status codes, row counts and the fix, never row contents. Nothing else from your conversation is sent.
- Looks up country statistics. For Country Stats Facts, the country codes, the indicator and the year are sent to the World Bank (api.worldbank.org), and an IMF forecast request reads the public tables of the IMF DataMapper (imf.org), with a user agent that names this service. Nothing else from your conversation is sent.
- Looks up freely licensed video. For Video Grab, the topic words are sent to Wikimedia Commons and the Internet Archive. Pexels and Pixabay stay off until their keys exist, and the answer says so. A YouTube watch address is sent to the YouTube Data API when that key exists, otherwise to YouTube oEmbed. The keys are not returned. A request to download from TikTok, Instagram, X, Douyin, Bilibili or Xiaohongshu is not fetched. Nothing else from your conversation is sent.
- Audits a public site. For SEO Audit, our server requests the robots.txt and sitemap of the site you named and up to 25 of its pages, at most three at a time, only on that site and only where its robots.txt allows this tool, with a User-Agent that names this service and a support page. The pages are read in memory, turned into a list of findings and dropped; no page content is stored. If you ask for the optional judgement, short extracts of the page text (the title, description, main heading and up to about 6,000 characters of text) of the homepage and of pages with overlapping titles are sent to the TypeSafe Jev service (api.typesafe.ai), which returns only answers about what a page is for. Do not use it on pages with personal or confidential content. Judgement is limited per day overall and per network; for that, the day's totals of judgement requests and their estimated cost are stored, plus a count per day for a coarse bucket of a salted hash of the network address that changes every day and is deleted after a few days. The local AI-readiness check reads the same pages and does not call Gemini, OpenAI, Anthropic, Perplexity or any directory or review site. Its daily limits store only a day total of checks and a count per day for that same kind of coarse network bucket, deleted after a few days. No page content is stored for it either. The AI instructions check reads robots.txt, /llms.txt, /llms-full.txt and a small sample of the site's pages. The draft is made from those pages in memory. Neither calls an AI engine. The draft is not written back to the site. Email addresses and phone numbers are removed from the draft text before it is returned. Like other SEO Audit answers, the result may be cached for ten minutes and then dropped. No page content is stored beyond that cache.
- Lints and writes DESIGN.md files. For DESIGN.md Linter & Extractor, the text you send to lint_design_md or diff_design_md is checked in memory and is never sent anywhere. For extract_design_md, our server requests the robots.txt of the page you named, then that page and up to 10 of its stylesheets, with a User-Agent that names this service and our support page; private and local addresses are refused. The answer to each call is cached for one hour under a hash of the request, then dropped. The text you send is not stored with it.
- Reads exchange rates. For Market Indicators, a currency pair you ask about is turned into a request for its daily rates to Frankfurter (frankfurter.dev), which serves the European Central Bank's euro reference rates, with a user agent that names this service and our support address. The pair and the date range are all that is sent. The prices you send to compute_indicators are used in memory for that one answer and are never sent anywhere, stored or cached, apart from the 14-day input log. Nothing else from your conversation is sent.
- Reads public news and public posts. Industry Pulse, on a schedule that has nothing to do with who asks, reads the RSS and Atom feeds that publishers offer (company blogs, GitHub release feeds, changelogs) and Hacker News stories through its public search API. It stores those public items, the events they are grouped into and short English summaries for 30 days. A Cloudflare Workers AI model scores, groups and summarizes that public text; nothing you type is sent to it. What you type is only the topic words of a search or a date, which are matched against the stored events and not kept, and, for product feedback, a product name, which is sent as a search phrase to the Hacker News search API and, for a few known tools, used to read the public GitHub issues and App Store reviews of that product. The counted result is kept for six hours and is found by the product name, not by who asked. Quotes in it are short excerpts of public posts with a link to the original and no author name. It does not read X, Reddit, WeChat or any page that needs a login.
- Transcribes recordings you own. For Transcript Kit, an audio or video file you upload or a direct link to one is read in memory, its audio is sent to Cloudflare Workers AI (Whisper) to be turned into text, and the file is dropped: the media itself is never stored. The transcript is kept for 24 hours so you can search it and ask for clips: the text with its times, a title, the language and the length, filed under a hashed form of the anonymous user id ChatGPT sends (or, when there is none, a random library id that the answer returns). A library holds the latest 10 transcripts, and expired ones are deleted by a scheduled job. A daily count of minutes transcribed is kept as a number, in total, per network and per user id, with no content. To translate captions, the text you send (or the text of a transcript you name) is sent to Cloudflare Workers AI (a translation model, and for a dub script a small language model) and the translation is returned to you; it is not stored. A daily count of characters translated is kept as a number, in total, per network and per user id, with no content. Links to video or social platform pages are refused and never fetched, and a link is only fetched after a check that it points at a public address.
- Splits a role. For Hire or Automate, the occupation tables are loaded from the O*NET 31.0 Database (U.S. Department of Labor, Employment and Training Administration, CC BY 4.0) and kept in our database. A title is matched here. The job description, if you send one, is used in memory for that call and is not stored. If the tables do not pick one occupation, a short excerpt of the title and description, plus a short list of candidate codes, may be sent to Cloudflare Workers AI (
@cf/meta/llama-3.2-1b-instruct), which returns a code. Do not include names or contact details. The tie-break is limited per day overall and per network; for that, the day's totals of tie-breaks and their estimated neuron cost are stored, plus a count per day for a coarse bucket of a salted hash of the network address that changes every day and is deleted after a few days. Nothing about the job text is stored, apart from the 14-day input log. - Writes drafts with an AI model. For Post Kit, the topic, tone, platform names, post text, video script request and target market are sent to Cloudflare Workers AI, which runs the open Gemma 4 26B model (gemma-4-26b-a4b-it) inside Cloudflare's network, to write or adapt the text. TikTok slideshow images are drawn in the Worker from the idea and fixed frames. That idea is not sent to the model. Cloudflare does not use these inputs to train its models. Nothing is sent to any other AI provider, the text is not stored or cached by us apart from the 14-day input log, and a count of model calls per day is kept, to hold the shared free allowance. Whether a draft fits a platform, and whether a draft or script declares an AI-generated person or voice that a platform asks creators to label, is checked by fixed rules in the Worker, not by the model; the platforms' own policy pages are linked in the answer.
- Reads your product page. For Post Kit's launch clip, the page address you give is fetched once from the public web, after its robots.txt has been read and honoured, with a user agent that names this service. Only the page's title, description and headings are used, and only public addresses are fetched (private and internal addresses are refused). The page is not stored or cached, and nothing is posted anywhere: Post Kit never publishes, never connects to a social account and never reads statistics.
- Maps advertising angles. For Ad Angle Map, a store address you name is used to read that store's public product feed (/products.json) once, after its robots.txt, with a User-Agent that names AdAngleMap and a contact address, up to three pages of 250 products. The feed is analysed and dropped: it is not stored and not added to any index of stores. A store owner can disallow AdAngleMap in robots.txt. Ads you paste in are analysed in memory and not kept. The answer holds counts and product handles or ad ids, and says that an offer map is product-page copy and prices, not ads. A gap check sends a short phrase to Hacker News (Algolia) and, if you name one, a Stack Exchange site; only titles, links, scores and counts are read, never user names, and Reddit is not used. Nothing is stored, no personal data is read, and no ad is created or changed.
- Caches the answer. The same question asked again within about two hours is answered from a cache instead of asking the job boards again (for Startup Name Check, within about five minutes; for Package Health Check, about an hour, for a single package only, never for a package.json; for Recall Check, 24 hours; for Citation Checker, six hours; for Business Days & Workday Calc, 24 hours; for Tariff & HS Code Duty Finder, six hours; for EU Business & VAT Checker, an hour for register records and six hours for a company_from_domain answer (an answer made while one of its sources was down is not kept), except a VAT check that asks for a consultation number, which is never cached; for Regulation Reader, six hours for a section and an hour for a search; for Site SEO & AI Crawler Audit, five minutes; for Travel Check, about three hours, and five minutes for an airport, with the two country lists kept for up to a day; for Food Facts, about twelve hours for a product and six hours for a search; for Car Check, 24 hours; for Dev Facts Check, six hours for end-of-life and browser support and 24 hours for licenses and RFCs; for Paper Finder, six hours for a search and 24 hours for a single paper; for CVE Risk Check, an hour, with each National Vulnerability Database record kept for up to three hours; for Domain Mail Check, two minutes for DNS answers and an hour for registration data; for Country Stats Facts, six hours; for Video Grab, six hours for a search and a day for a record or an export guide; for SEO Audit, ten minutes; for Market Indicators, an hour for a currency pair's indicators, and never for prices you send; for Trade Chart, fifteen minutes for an intraday chart and an hour for a daily or weekly chart; for Hire or Automate, 24 hours for a title with no description, and never when a description was sent; Post Kit answers are never cached). A cached entry holds the public job listings, domain status, package facts, recall records, bibliographic records, holiday calendars, tariff schedule entries, company register records, company-from-domain answers (public company facts with their source links) or regulation text, a site's published robots.txt rules, tags and recent page answers, travel advisories, airport conditions, food product entries, vehicle recalls, ratings, complaint counts, fuel economy figures, software release dates, license records, browser support data, RFC records or paper records, plus public vulnerability records and exploit scores,, plus public DNS records and registry dates,, plus public World Bank and IMF figures, plus exchange rates, store offer counts, product handles or discussion counts, plus public SEC filing facts, job postings and counted tool-complaint themes, and is found by a hash of the tool arguments; it holds nothing about who asked. For Site SEO & AI Crawler Audit an answer can be served for up to five more minutes while a new one is fetched, and a stored copy of the answer can stay on our server after it is no longer served; it is not yet deleted on a schedule. It also keeps the pages it fetched in server memory for up to five minutes, and keeps the report of an owner check (the exposure check or the AI app check) of a host for 60 seconds, so the same host checked again within that minute gets that report. Entries expire on their own.
- Limits abuse. The network address is used, in memory and for about a minute, to limit how many calls one network can make, and, in memory for up to a day, to count each network's share of a plugin's daily calls. When a tool requests an address a caller named, our server logs the host, port and scheme it requested, the tool and a hash of the caller's network address that changes every day, never the path; these lines are kept 14 days to trace abuse. When such an address is refused (for example a private address), the refusal is logged with the address's host and path, without its query, in our server logs. The address itself is not written to any database or log we keep, except for the optional SEO Audit judgement, the local AI-readiness daily limits and the optional Hire or Automate model tie-break and the daily count of Post Kit model calls, described under those plugins. Site SEO & AI Crawler Audit keeps, for 10 minutes, the times of calls under a keyed hash of the network address and the day, never the address itself, and keeps for up to an hour the host names checked under each site's domain, with nothing about who asked; a log is deleted one full window after its last call. For EU Business & VAT Checker's company_from_domain, a count of lookups per network per UTC day is written to our database, next to one count for all users, so that one network cannot use up the day's limit: the network is held only as a 6-character one-way hash of the day and the address, the count holds neither the domain nor the address, and count rows older than three days are deleted at the first lookup of a new day. This count serves our legitimate interest in keeping the free service within its sources' fair-use limits (GDPR Article 6(1)(f)).
- Reads public pool figures. For LP Pool Check, the chain and token addresses or pool id you ask about are used to look up a shared index of public liquidity-pool rows from DefiLlama, and token addresses are sent to GoPlus and to DefiLlama's public price API when those sources cover the chain. The index holds public pool figures (volume, TVL, fee metadata, token addresses) and nothing about who asked. Amounts you pass for an estimate are not stored, apart from the 14-day input log.
- Writes a short entertainment note. For Tarot Reader, Dream Analyzer, Feng Shui and Dream Soulmate, the words of that one call are sent through an outbound relay to a language model and the note is returned to you. The words are not stored, apart from the 14-day input log. A daily count of readings is kept as a number, in total, per network and, when ChatGPT sends an anonymous user id, per user. The count has no content. A crisis or medical ask is answered on our server with a pointer to real help and is not sent to the model.
- Counts calls. Each call adds one to a counter for that plugin, tool and UTC day, plus one to an error counter when the call failed. These counters hold no prompts, arguments, answers, addresses or identifiers. Everything else we keep is described in its own item on this page.
- Counts how the service is used and whether it works. To see when a tool is failing, slow or being turned away, each event is written as one record to a monitoring log on our own server. An event is a client connecting, listing tools, calling a tool, or being turned away. A record holds: the plugin or API name, the tool name, the kind of event, the result (success, or the kind of failure: upstream timeout, upstream client error, upstream server error, unreadable upstream answer, an error of ours, or invalid input) or the reason a request was turned away (network rate limit, daily call limit, invalid input, invalid or unknown key, rejected sign-in request), the client family, whether the answer came from the cache, how long the call took, how many progress messages and outside requests it made, and its estimated AI cost. The client family comes from the name an MCP client or agent reports about itself when it connects: chatgpt, claude, cursor, grok, vscode or other, or, for a client we do not recognise, that name reduced to lowercase letters, digits and dashes and cut to 32 characters. Each record also holds three caller fields. The kind of agent is a broad class worked out from the User-Agent, such as chatgpt, claude, a crawler or a script. The traffic class says whether the call came from our own checks, a bot or someone outside. The daily caller code is a one-way hash of the network address and the User-Agent, mixed with a random value that is held only in memory and replaced at each midnight UTC, so it joins one caller's events of one day and cannot be turned back into an address or linked to another day. A record never holds a network address, a User-Agent, arguments or answers. How long: the monitoring log keeps every record with no end date, so that use can be compared over years, and a full copy of it is made each day. The newest 7 copies stay on our server and the newest 60 in our Google Drive backup. Our own reports show the daily caller code for 90 days only, then show it empty. Before 2026-10-14 these records went to Cloudflare Workers Analytics Engine, which deletes them after 90 days. We may copy that older history into the same monitoring log, where it is kept the same way.
- Counts which tools are used, in our own analytics. Each tool call also sends one event to Umami, an open-source analytics service we run on our own server (stats.openkrill.app), not a third party. The event holds only: the plugin and tool name, the result (ok, error or turned away), the country Cloudflare reports for the request, the referring site's host name or channel (for example google or chatgpt) when the request had one, and the same client family as above. It also holds a caller code: a one-way hash of the network address, the User-Agent and the tool name, mixed with a random value that is replaced at each midnight UTC and never stored, so calls can be counted per caller within one day and never linked across days. It never holds a network address, a User-Agent, a key, arguments, answers or anything that identifies a person. Our own test calls are not sent.
- Counts page visits on the website. The pages of tools.openkrill.app load the Umami script from stats.openkrill.app. It sets no cookie and stores nothing on your device, is not added to the page at all when your browser sends Global Privacy Control or Do Not Track, and records only the page path (never the query string or the part after #), the referring site, the browser, operating system and device type, the screen size, the language and the country. Umami keeps no network address: it derives a visit id from a one-way hash that changes every month, so a visitor cannot be followed over time.
- Counts how visits arrive. Our own counter adds one to a count per hour, tool, kind of visit (a page view, a tool call), kind of client (a browser, a script, a named assistant), the referring site's name and, when the link you followed carried one, the name of the place we posted it (one of a fixed list such as x, newsletter, blog or mcp-registry, read from
?ref=or?utm_source=; any other value counts as "other"). It keeps no address, cookie, full browser string or query string, and deletes each day's counts once the day is 30 full days old. A newsletter sign-up adds one to a daily count by newsletter, form and that same place name, never with the address; the newsletter form carries the place name in a hidden field for that. Do Not Track and Global Privacy Control turn off the referring site's name and the place name, and a sign-up sent with either is not counted. - Counts plays of the Hotcake demo. The free Hotcake card demo (tools.openkrill.app/hotcake) makes a random visitor code for each page load, keeps it in the page's memory only and never stores it on your device, and sends it to our own server with two kinds of event: the page was shown, and the "Get the full pack" button was pressed. With them it stores the day, the post or site that sent you, and a one-way keyed hash of your network address with its last part removed, so our own test visits can be left out; never the address itself. The counts tell us whether to release the full game. The optional email you type on the "coming soon" sheet is sent on its own, without the visitor code, and stored with the day only, so it joins to nothing the page counted; it is used once, to say the full pack is out, and is deleted within 13 months. The "Don't count me" button on the page, Do Not Track and Global Privacy Control each stop the page from sending views and button presses.
- Counts visits to the SeasonLock waitlist. The SeasonLock waitlist page (tools.openkrill.app/seasonlock) works the same way as the Hotcake demo: a random visitor code made for each page load and never stored on your device, sent with the page was shown, "Join the waitlist" was pressed, and, if you pick one, your answer to "Where did you hear about us?" (one of a fixed list), the day, the post or site that sent you, and a one-way keyed hash of your network address with its last part removed; never the address itself. The counts tell us whether to build the app. The email you type is sent on its own, without the visitor code, and stored with the day only; it is used to tell you when the beta opens, and is deleted within 13 months. The "Don't count me" button on the page, Do Not Track and Global Privacy Control each stop the page from sending views, button presses and that answer.
- Counts visits to the Angleproof waitlist. The Angleproof waitlist page (tools.openkrill.app/angleproof) works the same way as the SeasonLock waitlist, without the "Where did you hear about us?" question: the same random visitor code, the same view and "Join the waitlist" events, the same hashed network and the same opt-outs. The email is sent on its own, only after you tick the box that says you are 18 or older, and is stored with the day only; it is used to tell you when the beta opens, and is deleted within 13 months. The page takes no photo: the app is planned to score photos on your phone and send no image to us.
- Counts checks on the PaidAtBid page. The PaidAtBid ad bid check (tools.openkrill.app/paidatbid) reads the advertising file you pick inside your browser; the file and everything read from it stay on your device and are never sent to us or anyone else. The page counts the same way as the SeasonLock waitlist: a random visitor code made for each page load and never stored on your device, sent with the page was shown, a file of your own was checked (only that it happened, never the file, its name or any number in it), and, if you pick one, your answer to "Where did you hear about us?" (one of a fixed list), the day, the post or site that sent you, and a one-way keyed hash of your network address with its last part removed; never the address itself. The counts tell us whether to build the weekly service. The email you type is sent on its own, without the visitor code, and stored with the day only; it is used to tell you when the weekly service opens, and is deleted within 13 months. The "Don't count me" button on the page, Do Not Track and Global Privacy Control each stop the page from sending views, checks and that answer.
- Counts visits to CountKeep, and never sees your aid file. The CountKeep page (tools.openkrill.app/countkeep) reads the StudentAid.gov aid data file you choose inside your browser; the file is never sent to us or anyone else. The dated counts it keeps (file date, a SHA-256 fingerprint of the file and each loan's type, loan date, last 4 characters of the award ID, plan, status and counts; never a name, an address or any digit of your SSN) stay in your browser's own storage until you clear them, and leave your device only if you save a copy yourself. Like the SeasonLock page, it sends a random visitor code made for each page load and never stored on your device, that the page was shown, that a new file of yours was added (never its content), and, if you pick one, your answer to "Where did you hear about us?" (one of a fixed list), with the day, the post or site that sent you, and a one-way keyed hash of your network address with its last part removed. The email you type for the monthly reminder is sent on its own, without the visitor code and without any count, to the CountKeep reminder list, which is kept like the newsletter: one confirm link first, one email a month after you confirm, and an unsubscribe link in every email. The "Don't count me" button, Do Not Track and Global Privacy Control each stop the page from sending views, runs and that answer.
- Counts visits to the OrphanSolar early access page. The OrphanSolar page (tools.openkrill.app/orphansolar) works the same way as the Angleproof waitlist, without the "Where did you hear about us?" question: the same random visitor code, the same view and "Reserve my metro" events, the same hashed network and the same opt-outs. The work email you type is sent on its own, without the visitor code, and stored with the day only; it is used once, to tell you when the file for your metro is ready, and is deleted within 13 months. The metro you pick is sent only to the Umami visit count, never stored with your email.
- Keeps the StampName for Windows waitlist. The waitlist page (tools.openkrill.app/stampname-windows) is run by OpenKrill, not by the makers of StampName, a Mac app. It sends only the email you type. It sends no visitor code, no page view and no source, and the page doesn't load the Umami tag. We store your address with the day you joined, with your consent (GDPR Article 6(1)(a)). We use it to count how many people want a Windows version and to email you once if one comes out within 30 days. We delete it within 30 days of the day you joined. We don't share your address with the makers of StampName or with any other third party; our hosting providers only store it for us. To withdraw, or to see, correct, export or delete your address earlier, write to hello@openkrill.app; you can also complain to your data protection authority. We also keep a daily count of joins, just a number with no address, so the total survives the deletes.
- Counts why calls are turned away. When a call is refused (an input that is missing or does not fit, a tool name the plugin does not have, a call limit, or a sign-in token or request that the connect service rejects), one is added to an hourly counter in our database for that plugin, tool, reason, argument shape and kind of caller. The counters are kept for 14 days and are used to make tool descriptions and error messages clearer. The argument shape is only the names of the arguments that were sent and their types (text, number, list and so on), never their values. For an input that does not fit, the counter also keeps the input check's own words, such as "domain is required", which come from the tool's definition. The kind of caller is a broad class worked out from the User-Agent, such as chatgpt, claude, a crawler or a script, or ours for our own checks; the User-Agent itself, network addresses, argument values and answers are not stored.
- Counts why calls fail. When a tool fails after it started (for example a public source it reads is down or answers in a way we cannot read), one is added to an hourly counter in our database for that plugin, tool, kind of error, argument shape, kind of caller and cause. The counters are kept for 14 days and are used to find and fix the failure. The argument shape and the kind of caller are the same as for refused calls above. The cause is our own short description of the failure, at most 120 characters, such as "Nager.Date answered 503": the values of your call's arguments wherever they appear, quoted values, anything a source sent back, links, email addresses, phone numbers, paths and numbers are removed from it before it is stored. What remains is the wording of a message in our code, which in normal use holds no argument value and no answer.
- Keeps what you ask Site Check. Site SEO & AI Crawler Audit tools take an optional sentence,
user_goal: what you want to find out, in your words. We keep the URL and goal for 30 days to improve the tool. A row holds the time, the tool, the host and path of the address checked (never its query), the goal (cut to 280 characters, with emails, phone numbers and secrets taken out as in the input log) and a hash of the caller that changes every day, so a row cannot be tied to a person or followed from one day to the next. No network address, cookie, account data or chat is stored. A scheduled job deletes every row older than 30 days. The operator reads the most frequent asks of the week on a private page to decide what to build, on our legitimate interest in improving the tool (GDPR Article 6(1)(f)). The goal is optional: leave it out and only the address is kept. This applies to calls through the Agent Tools gateway (api.openkrill.app/gateway/mcp). While the ChatGPT store reviews Site Check, its own server atsitecheck.openkrill.app, which the ChatGPT app and the Claude connector use, does not take the goal and adds no row to this list of asks. Its calls still go into the 14-day input log described above, like the calls of every other plugin. Do not put a name or other personal details in the goal. - Records what agents search for. The API and the gateway have a tool,
index_tools, that finds the right tool for a task described in plain words. Each search adds one to a daily counter in our database for the search words, which server got the search (the API or the gateway), the kind of caller (the same broad class as above) and how many tools it found, with the score of the best match and whether a tool fit. A search that no tool fits tells us which tool to build next. Before the words are stored, links, email addresses and phone numbers are removed, the text is lowercased and cut to 120 characters. The counters are kept for 90 days and are read by the operator, on a private operator page, to decide what to build. Network addresses, the User-Agent and the conversation are not stored. Describe the task, not a person, in a search. - Joins one day's steps of a caller. So we can see where agents get stuck across tools, each search with
index_tools, tool call, turned-away call and feedback report on the API, the gateway and the plugins hosted with it adds one step to a daily path in our database. A step holds only its kind (a search, whether a tool fit it, a call, an error, a turned-away call or a report) and, for a call, the server and tool name. The path is filed under a day code: a one-way hash of the network address and the User-Agent, mixed with a second random value that is replaced at each midnight UTC, held only in memory and never stored or logged. So the steps of one day can be read in order, and nothing links one day to the next. The path also holds the same client family as above. Network addresses, the User-Agent, keys, arguments and search words are not stored in it. Paths are kept for 14 days and are read by the operator only as daily totals: the number of paths, the common path shapes and the paths that ended on a turned-away call, an error or a search no tool fit. - Checks that it works. About every quarter of an hour a scheduled job of ours makes one fixed test call (a known question about a public subject, such as a holiday calendar or a public regulation) to one of the plugins, as a check that the plugin and its sources are working. It stores whether the test passed, how long it took and the kind of failure, in our database for 14 days. These test calls are not counted as use, and nothing about a person is involved.
- Searches public filings and job boards. For Buyer Signals, our server reads the SEC EDGAR full-text search (efts.sec.gov) and the Form D filings it returns (www.sec.gov), then, only if you name a role, the public job-board feeds of up to six of the companies found (Greenhouse, Lever and Ashby), at most four requests at a time and about 35 requests in all, with a User-Agent that names this service and a support address. Only company facts are read from a filing (the company name, state, industry group, amount offered and the date); the people and addresses listed in a filing are ignored, and nothing is taken from LinkedIn, Google, Reddit or the Y Combinator directory. The tool-complaint lookup and the buying-intent lookup read the public Algolia Hacker News search API and the Stack Exchange API, drop author names, profile links and anything shaped like an address before anything is returned, and return tool names, themes, short quotes under 15 words and source links only. The service you name in a buying-intent lookup is sent to those two public APIs as a search word. Results hold companies, public links and counts only, with no emails, phone numbers, usernames or named people. Searches are limited to a set number per day for each network and across all users: the only things written for this are daily counters, one for all users and one per network keyed by a short one-way hash of the address that is mixed with the date, so it cannot be turned back into an address or followed from one day to the next, and rows older than three days are deleted. The question you asked is not stored.
- Keeps the Etsy niches people ask for. For Etsy Listing Signals, the niche words of each call (for example "cat mom") are stored with a count and the UTC day, so our collector can search that niche from its next run. Nothing else about the call or the caller is stored with them. A niche nobody asked for in 14 days is deleted. The Etsy listing readings the tool shows are public Etsy data read through the Etsy Open API; readings older than 6 hours are never shown.
- Analyses your images and keeps style profiles. For Taste Profile, each image you add is sent by its link to Cloudflare Workers AI (the model
@cf/google/gemma-4-26b-a4b-it), which writes a short description of its layout, type, colours, texture and hierarchy; a second Workers AI model (@cf/baai/bge-m3) turns that description, and any search text, into numbers used for matching. The image itself is never stored by us. What is stored, in our database, is that description (with text that looks like a link, email address or phone number removed), the image's file name or the last part of its link without any query string, the numbers used for search, and the style rules you save. They sit under a random profile key that the first call returns and that only you hold; we store only a one-way hash of the key, so a lost key cannot be recovered and nobody can list or read profiles without it. A profile is deleted 90 days after it was last used, or at once when you ask for it with delete_profile, which removes the descriptions, search numbers and saved rules. There are no accounts. Daily counters for the plugin hold only totals and a short one-way hash of the network and the key, rotating at UTC midnight. - Sorts a file you paste. For Inbox Document Sort, the email, PDF or text you send is read in memory for that one answer and then dropped. It is not stored or cached. Like every call, it goes into the 14-day input log, cleaned and cut to 2 KB, and the daily call count. It does not read a mailbox and does not run a paid OCR model.
Feedback from agents
Every plugin and the API have two optional tools, submit_feedback and get_feedback_reply (also POST /v1/feedback and GET /v1/feedback/{ticket}), for an agent to say what it needs or what broke. Apart from the 14-day input log, the search words described under "Records what agents search for" and the Site Check goals described under "Keeps what you ask Site Check", this is the one place where we keep text an agent wrote. Feedback calls do not go into the input log; they are kept as follows:
- What is stored. The message (at most 1000 characters), its kind (need_tool, need_data, bug or other), the tool it names if any, the error text that tool returned if the agent sends it (at most 500 characters), which host it came through (for example tariffs, or api) and the version of the server there, the UTC day, a ticket id, and the reply once there is one. Links, email addresses and phone numbers are removed from the message and the error text before they are stored, and the same is done to the reply.
- What is not stored. No network address, user agent, API key, token or conversation content is stored with the feedback.
- Limits. The network address is used in memory, for about a minute, to allow 5 submissions a minute. The daily cap per network uses the same kind of short one-way hash bucket as the API, which changes every day and is deleted after three days. A global daily total is also kept. Refused and accepted calls are counted in the aggregate call counters described above.
- Replies. A reply is written by an automated assistant, a language model reached through a proxy we run. It is given only the feedback text, quoted as data, and a list of our tools; it has no tools of its own and its reply is stored as text, never run. The feedback text is therefore sent to that model provider (xAI) to produce the reply. Do not put anything private in feedback.
- Fixes. When a fix we ship answers a report, the report also stores the fix's commit and day, the UTC day
get_feedback_replyfirst showed that fix, and the day we found the fix did not hold, if it did not. Only the day is stored for a read, not who read it; a read from our own checks or a known bot is not recorded. - Retention. Feedback and its reply are deleted after 90 days. It is read by the operator to decide what to build, and appears, shortened, on a private operator page.
What it never does
- It stores no prompts or conversation content, and no tool arguments beyond the 14-day input log of cleaned arguments, the cache and its stored copies, the 24-hour download files, the feedback an agent chooses to submit, the Etsy niches asked for, the Taste Profile descriptions and saved rules (kept 90 days after last use), the Site Check goals (30 days), the host names in the fetch log (14 days) and in the Site Check limits (up to an hour), and the argument names and types in the refusal and failure counts, all described above.
- The plugins have no accounts, cookies, third-party analytics or advertising trackers, and we sell or share nothing. The visit and call counts above run on our own Umami server. The email sign-ups are the optional newsletter, described below, and the waitlist pages described above.
- It never asks for, and you should never send it, personal or sensitive information. Questions about public job openings, domain names, public packages, the references in a paper, public holidays, tariff codes or company registers need none, and a package.json check needs only the dependency names and versions: never send source code, tokens or passwords. Tax Numbers needs no name, tax identification number or account detail, only a year, a filing status and amounts. Dev Facts Check needs only a product, license, web feature or RFC name. Paper Finder needs only topic words or a paper identifier: never send an unpublished manuscript or private notes. Market Indicators needs only prices, never account, portfolio or position details.
Service providers
The API and the plugins run on our own rented server at OVHcloud, which also holds our database and the logs described above, with Cloudflare in front of it. Cloudflare processes requests on our behalf to deliver them and protect them from attacks, under its own privacy policy. Daily copies of the monitoring log are kept in our Google Drive storage. The job boards that are read are public pages of the companies you ask about; the plugin sends them only the request for those public listings. Cloudflare Registrar, when that lookup is configured, and domain registries receive only the domain name being checked, and the package sources receive only the package names and versions being checked. The outside services Site SEO & AI Crawler Audit calls, and what each receives, are listed in its item above. Crossref, doi.org and OpenAlex receive the reference text you ask Citation Checker about, and operate under their own terms and privacy policies. The stores you ask Store Price Tracker about receive an ordinary request for their public product feed from our servers, not from your device. Nager.Date and OpenHolidays receive only the country code, region and year of the holiday calendar being read. The UK Trade Tariff and the US International Trade Commission receive only the product description or tariff code being looked up. The European Commission (VIES), GLEIF, the French government company search and the Brønnøysund Register Centre receive only the VAT number, company name, LEI or registration number being checked, and for a consultation number the requester's VAT number, under their own terms and privacy policies. For EU Business & VAT Checker's company_from_domain, Wikidata, Cloudflare's public DNS and the registry of the domain ending (through its public RDAP service, found in IANA's public RDAP directory, which receives no domain) receive only the domain name being looked up (Wikidata also the host as given, and the DNS check also the host of any redirect); the company's own website, and any address it redirects to, receives an ordinary request for its robots.txt, home page and up to three legal, imprint, terms, privacy or about pages from our servers, not from your device; and SEC EDGAR receives only the SEC filer number being read, each under its own terms and privacy policy. The part of a work email address before the @ reaches none of them. The World Bank and the IMF receive only the country codes, indicator and year being looked up, under their own terms and privacy policies. Cloudflare, Google, IANA and the domain registries receive only the domain name being looked up (and for DKIM the selector name), under their own terms and privacy policies. The National Vulnerability Database and FIRST receive only the CVE ids being looked up, or for the exploited list a date range, under their own terms and privacy policies. The UK Trade Tariff and the US International Trade Commission receive the product titles and tariff codes you ask Shop Duty Desk about. A store you give Catalog QA Desk or Ad Angle Map receives an ordinary request for its public product feed from our servers, not from your device. endoflife.date, the SPDX project at spdx.org, webstatus.dev, the RFC Editor and the IETF Datatracker receive only the product and version, license, web feature or RFC number or title words being looked up, under their own terms and privacy policies. Europe PMC, Crossref and arXiv receive only the topic words, filters or paper identifier being looked up, under their own terms and privacy policies. Frankfurter and the European Central Bank, whose euro reference rates it serves, receive only the currency pair and date range being read, under their own terms and privacy policies. Hacker News (Algolia), GitHub and Apple receive only the product name or product identifier that Industry Pulse looks up, from our servers. The audio you give Transcript Kit goes to Cloudflare Workers AI, which runs the speech model, and the images you give Taste Profile and the search texts go to Cloudflare Workers AI too, under Cloudflare's own privacy policy; a link you give it receives an ordinary request for that file from our servers. DefiLlama receives the pool id or the chain and token addresses being looked up, and GoPlus receives the token addresses, under their own terms and privacy policies. Yahoo Finance and Coinbase receive only the ticker or pair being charted, under their own terms and privacy policies.
API customers
The API at api.openkrill.app works without a key. A call without a key adds to a shared monthly count of billable results, and to a daily count for a coarse bucket of the network address it came from: a short one-way hash of the address and the day, shared by many addresses, that changes every day and is deleted after three days. It is used only to cap how many calls one network can make a day, and the address itself is not stored. With a key, the API stores a hash of the key (never the key itself) and a monthly count of billable results per key. Request contents are handled as described above.
Connecting an agent (OAuth)
An AI agent or MCP client can connect at connect.openkrill.app and receive an access token. There is no account, email address, password or sign-in, and no person is asked anything. To connect, the client registers itself, so we store what it states about itself: its client name and its redirect addresses, which an agent client chooses and which may include a company or product name. Connecting also stores a record of the grant and the issued tokens. Access tokens, authorization codes and client secrets are kept only as hashes, the data attached to a grant is encrypted with a key only the token holder can unwrap, and a grant holds nothing but the client's identifier. We do not store prompts or answers for connected clients, and their tool arguments only in the 14-day input log described above, and calls with a token are metered and rate limited under a number derived from the client's identifier, not under a name. A client that has not been used for 90 days is deleted, access tokens last one hour and refresh tokens at most 90 days, and a client can revoke its tokens at any time. The network address of a registration or sign-in attempt is used in memory, for about a minute, to limit repeated attempts, and is not stored. A short event line (the client name at registration, the granted scope, and any error code) is written to our operational logs; it contains no token, argument or address. The client's family (for example claude or cursor) is also counted in aggregate, as described under monitoring above.
Public guides on this site
The install guides, role guides and glossary are static pages. Opening one does not create an account, and the pages do not store what you read. A tool call those pages describe is handled under the rules above for that plugin.
The weekly newsletter
Agent Tools weekly is an optional email list you join on the newsletter page or in a page footer. Our other email lists, such as the CountKeep reminder, are kept the same way:
- What is stored. Your email address, the list you joined, whether you confirmed, and when each of those happened. Nothing else: no name, no network address with the sign-up, and no record of opens or clicks.
- Double opt-in. We email one confirm link. Until you open it you get nothing else, and an address that never confirms is never sent an issue.
- Where it lives. In listmonk, an open-source list manager, on our own server. Our own mail server sends every email from weekly@news.openkrill.app. No outside mail or marketing service receives your address. A nightly backup copy is kept for 30 days.
- Limits. The network address of a sign-up is used in memory, for about a minute, to allow 2 sign-ups a minute. The one exception is a sign-up that arrives through a reader's share link: for that one we keep a keyed hash of the network address, which cannot be read back into the address, for its own day and no longer, to count at most 3 readers from one network a day.
- Leaving. Every email has an unsubscribe link and a List-Unsubscribe header. The preferences page linked in every email also lets you download your data or delete it entirely.
- Share links. A confirmed reader of a list with share links gets one email with their own link, and can ask for it again from the counter page; that page never says whether an address is on a list. The link carries a keyed code, never an account id, so it is safe to post. A visit from that link sets the code in the sign-up form, and we keep a keyed hash of the address and the list for 30 days, to count that sign-up once the reader confirms, plus a keyed hash of the network for its own day, to count at most 3 readers from one network a day. Both are deleted on time by the service itself, whether or not anyone signs up. The reader who shared the link sees a count, never who joined; the public count names nobody. A reader who unsubscribes or deletes their data loses their code and their count, and the sign-up log line is deleted after 30 days.
Questions and changes
Sales emails we send to companies have their own notice: how we handle data in our sales emails.
Questions about this policy and privacy requests go to support@openkrill.app, as described under Your rights. Other questions go through the support page. If what is processed or stored ever changes, this page changes first and its date above is updated.