Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Removed "index_tools"; changed the definition of "ai_readiness_check", "check_ai_crawler_access", "check_page_tags" and 6 more (11 tools before, 10 now)
Checks if AI agents can read and cite asitestore or page. Use it when the user asks whether AI agentsand assistantscan read an online store or cite a page, for example "can AI shoppingdoesagentsshop.example.comreadhavemyanstore?llms.txt?",or "will AI assistants cite thispage, and what should I fix?page?",."doesPassshop.example.comurlhaveforanallms.txt?"page or"does my store publish adomainUCPforfile?".thePassdomainthefilespageonly;urloneorisdomain.enough. Returns whether the domain has /llms.txt, /agents.md, theUniversal Commerce ProtocolUCP file at /.well-known/ucp (published by Shopify stores;version andlistedservicesareshown) anda/sitemap.xml,plusand which of 14 AI crawlers robots.txt blocksfor the whole site, and lists present and missing files.site-wide.WhenWith a page addressis checked,itevaluatesalsofiveratesAIfive citation signals:a clear(summary near the top, authorname andcredentials, Q&Aor FAQformat,clearheading structure,andstructured data, each)withas pass, warn or fail,with evidence and aconcretefix. It requests at most five domain files and one page, skipsany thatwhat robots.txt disallows for Agent Tools, and shows what is published, not whether an agent cancomplete a purchase.buy. Do not use it for private or local ⟨10 unchanged words⟩
{"additionalProperties":false,"minProperties":1,"properties":{"domain":{"description":"DomainHost name of a public store or website, for example shop.example.com.UsedPasswhenurlcheckingor domain,filesnot both needed. With domain only the domain files are checked (llms.txt, agents.md, UCP, sitemap, AI crawler ⟨9 unchanged words⟩ "description":"Address of one public web pageto check, forAI citationexamplesignalshttps://example.com/blog/guide.(clearPasssummary,url
{"properties":{"agentsMd":{"properties":{"finalUrl":{"description":"Address of the file after redirects.","type":"string"},"found":{"description":"True when the file answered 2xx with the expected kind of content.","type":"boolean"},"links":{"description":"Number of http(s) Markdown links in the file.","type":"integer"},"note":{"type":"string"},"skipped":{"description":"Why the file was not requested, such as a robots.txt disallow for Agent Tools.","type":"string"},"status":{"description":"HTTP status code of the file.","type":"integer"},"title":{"description":"First Markdown heading of the file.","type":"string"}},"required":["found ⟨59 unchanged words⟩ ,"type":"object"},"domain":{"description":"Host checked.","type":"string"},"failure":{"description":"Why the site or page was not reached or read, such as a timeout or a robots.txt disallow for Agent Tools.","type":"string"},"llmsTxt":{"properties":{"finalUrl":{"description":"Address of the file after redirects.","type":"string"},"found":{"description":"True when the file answered 2xx with the expected kind of content.","type":"boolean"},"links":{"description":"Number of http(s) Markdown links in the file.","type":"integer"},"note":{"type":"string"},"skipped":{"description":"Why the file was not requested, such as a robots.txt disallow for Agent Tools.","type":"string"},"status":{"description":"HTTP status code of the file.","type":"integer"},"title":{"description":"First Markdown heading of the file.","
{"properties":{"blockedCrawlers":{"description":"Tokens of the crawlers robots.txt blocks on this page.","items":{"type":"string"},"type" ⟨2 unchanged words⟩ "items":{"properties":{"allowed":{"description":"Whether robots.txt allows this crawler on the page. null means robots.txt could not be read, so there is no verdict.","type":["boolean","null"]},"crawler":{"description":"User-agent token, such as GPTBot.","type":"string"},"operator":{"description":"Company that runs the crawler.","type":"string"},"purpose":{"description":"What the crawler collects for, such as training or search.","type":"string"},"rule":{"description":"The robots.txt line that decided it, such as Disallow: /.","type":"string"}},"required":["crawler ⟨5 unchanged words⟩ ,"type":"array"},"failure":{"description":"Why the page was not reached or read, such as a timeout or a refused redirect.","type":"string"},"finalUrl":{"description":"Address of the final page after redirects.","type":"string"},"metaRobots":{"description":"The page's robots meta tag.","type":"string"},"notes":{"description":"Plain-language caveats to pass on with the result.","items":{"type":"string"},"type":"array"},"notice":{"description":"As-of caveat: what the site sent to Agent Tools at that moment, not what every crawler sees.","type":"string"},"reachable":{"
{"properties":{"contentType":{"description":"Content-Type header of the final page.","type":"string"},"failure":{"description":"Why the page was not reached or read, such as a timeout or a refused redirect.","type":"string"},"finalUrl":{"description":"Address of the final page after redirects.","type":"string"},"missing":{"description":"Common tags the page lacks, such as og:image or meta description.","items":{"type":"string"},"type":"array"},"notes":{"description":"Plain-language caveats to pass on with the result.","items":{"type":"string"},"type":"array"},"notice":{"description":"As-of caveat: what the site sent to Agent Tools at that moment, not what every crawler sees.","type":"string"},"openGraph":{"additionalProperties" ⟨68 unchanged words⟩ ,"type":"object"},"reachable":{"description":"False when no page answered; failure then says why.","type":"boolean"},"redirectCount":{"description":"Number of redirects before the page.","type":"integer"},"source":{"description":"Where the data came from: the website itself.","type":"string"},"status":{"description":"HTTP status code of the final page.","type":"integer"},"twitter":{"additionalProperties" ⟨2 unchanged words⟩ },"type":"object"},"url":{"description":"The address checked, after a bare domain became https.","type":"string"}},"required":["
Checks what a site or appyoutheownuser owns leaks publicly. Use it when the user asks what an attacker could find onatheir own domain, host or appthey own, for example "is anything on my domain example.com exposed?", "does my app leak a .envfile or API keys in its JavaScript?", "check my server app.example.com for leaked admin or debug pages" or "run a leak check on my own sitefile?". Pass the domain, host or app pageaddress;address, not a bareIP address is refused.IP. The first call returns ownership_not_proven withthea DNS TXT record orthefile:
⟨5 unchanged words⟩ conversion problems. Use it when the user askswhat could be improved on a landing pagehow to get more sign-ups, sales or enquiries,includingfrom aconversionlandingreviewpage, for example "review https://example.com/ for conversion",or "does my landing page have a clear call to action?"or "why might visitors not sign up on this page?". Pass the page address. Returns twelve checks, each with a status(pass,warn, fail or info), theevidencefoundand a fix: the h1 and thesupportingsentence under it, the primary call to action andhow often itits
{"additionalProperties":false,"properties":{"domain":{"description":"DomainHost name of a public store or website, for example shop.example.com.Only theIfhostyouisonlyused.haveAafullpage address,ispassacceptedit:andonlyreduceditsto
{"properties":{"blockedByRobots":{"description":"True when robots.txt disallows the page for Agent Tools, so it was not requested.","type":"boolean"},"failure":{"description":"Why the site or page was not reached or read, such as a timeout or a robots.txt disallow for Agent Tools.","type":"string"},"finalUrl":{"description":"Address of the page after redirects.","type":"string"},"issues":{"description":"Problems found, each in one plain sentence.","items":{"type":"string"},"type":"array"},"jsonLdBlocks":{"description":"Number of JSON-LD blocks on the page.","type":"integer"},"notes":{"description":"Plain-language caveats to pass on with the result.","items":{"type":"string"},"type":"array"},"notice":{"description":"As-of caveat: what the site sent to Agent Tools at that moment, not what every agent sees.","type":"string"},"openGraph":{"additionalProperties" ⟨36 unchanged words⟩ ,"type":"object"},"platform":{"description":"shopify when Shopify headers or assets were seen.","enum":["shopify","unknown"],"type" ⟨81 unchanged words⟩ ,"type":"object"},"reachable":{"description":"False when the site did not answer; failure then says why.","type":"boolean"},"shopify":{"properties" ⟨6 unchanged words⟩ ,"type":"object"},"source":{"description":"Where the data came from: the website itself.","type":"string"},"status":{"
⟨24 unchanged words⟩ or a feature request to the maintainers ofthesethetools.tools on this server. Send it when a tool is missing, a ⟨36 unchanged words⟩ name. Returns a ticket id. Feedback is forthesethe tools on this server only: it is not a chat, and ⟨20 unchanged words⟩
⟨66 unchanged words⟩ ,"tool":{"description":"Optional: the exact name of the tool on this server that the feedback is about,forasexampletools/list
{"properties":{"chain":{"description":"Each hop in order, ending with the final page.","items":{"properties":{"location":{"description":"Location header of a redirect hop: where it points next.","type":"string"},"status":{"description":"HTTP status code of this hop, such as 301 or 200.","type":"integer"},"url":{"description":"Address requested at this hop.","type":"string"}},"required":["url ⟨3 unchanged words⟩ ,"type":"array"},"failure":{"description":"Why the page was not reached or read, such as a timeout or a refused redirect.","type":"string"},"finalUrl":{"description":"Address of the final page after redirects.","type":"string"},"headers":{"additionalProperties":{"type":"string"},"description":"Main response headers of the final page, such as cache-control.","type":"object"},"missingSecurityHeaders":{"description":"Common security headers the https page lacks.","items":{"type":"string"},"type":"array"},"notes":{"description":"Plain-language caveats to pass on with the result.","items":{"type":"string"},"type":"array"},"notice":{"description":"As-of caveat: what the site sent to Agent Tools at that moment, not what every crawler sees.","type":"string"},"reachable":{"description":"False when no page answered; failure then says why.","type":"boolean"},"source":{"description":"Where the data came from: the website itself.","
Index and search openkrill MCP tools by task and keyword — LinkedIn recruiter jobs feedback broken links: search openkrill MCP tools by task. Use this to find a tool for recruiter search, LinkedIn keywords, jobs, feedback, a missing tool, bug reports, broken links, CVEs, packages, a domain check, or any other task. Lists tool name, a plain task phrase, and the MCP URL to connect. Feedback itself is submit_feedback on this same server.
Changed the definition of "exposure_check"
⟨166 unchanged words⟩ , default install pages and the https redirect. It also returns six legal signals with the law and an official source for each: sign-up age question (COPPA), Google Fonts (GDPR), session replay (CIPA), renewal terms by the subscribe button (California), DMCA agent link and registration, and, when email is passed, the unsubscribe link and postal address (CAN-SPAM); not legal advice. Each finding is labeled confirmed (with a severity), needs verification (the fact that is not known and how to check it) or rejected (the reason), and the answer shows the map, hunt, verify and report phases. Every answer carries an ownership note. It sends ⟨4 unchanged words⟩ a fixed list of paths and at most3032 per run, does not crawl, does not ⟨37 unchanged words⟩
{"additionalProperties":false,"properties":{"email":{"description":"Optional: the text or HTML of one marketing email the app sends, checked for an unsubscribe link and a postal address (CAN-SPAM). It is read in memory only and never returned or kept.","maxLength":100000,"type":"string"},"Certificate recorded, valid to 2026-12-30
Authorization not required
Changed the definition of "exposure_check"
Checks what a site or app you ownexposesleaks publicly. Use it when the user asks what an attacker could find on a domain, host orserverapp they own, for example "is anything on my domain example.com exposed?", "does my app leak a .env file or API keys in its JavaScript?", "check my server app.example.com for leaked admin or debug pages" or "runanaexposureleak check on my own site". Pass the domain, host orhostappname;page
Unknown → Live
First tool surface recorded: 11 tools (server version 1.3.0)
https://sitecheck.openkrill.app/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 8 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨52 unchanged words⟩ own, such as example.com or https://app.example.com/dashboard. Not a bare IP: pass a host name that points at the server. The host is checked; a page address also ⟨6 unchanged words⟩ read for keys (the home page otherwise).A bare IP address is refused: pass a host name that points at the server.","maxLength":260,"minLength":3,"type ⟨5 unchanged words⟩
⟨16 unchanged words⟩ ,"type":"array"},"answer":{"description":"One-paragraph answer to lead with.","type":"string"},"asOf":{"description":"When the check ran, ISO 8601 UTC.","type":"string"},"evidence":{"items" ⟨2 unchanged words⟩ {"type":"string"},"severity":{"description":"Confirmed findings only: high, medium or low.","enum":["high","medium","low"],"type":"string"},"source":{"type" ⟨12 unchanged words⟩ {"type":"string"},"severity":{"description":"Confirmed findings only: high, medium or low.","enum":["high","medium","low"],"type":"string"},"type":{"type" ⟨116 unchanged words⟩ ,"type":"object"},"ownershipNote":{"description":"Reminder that the check is only for a target the caller owns.","type":"string"},"phases":{"items" ⟨96 unchanged words⟩ ,"type":"object"},"target":{"description":"Host checked.","type":"string"},"topRisks":{"items" ⟨5 unchanged words⟩ {"type":"string"},"severity":{"description":"Confirmed findings only: high, medium or low.","enum":["high","medium","low"],"type":"string"}},"required":["severity ⟨10 unchanged words⟩ },"type":"array"},"verdict":{"description":"ownership_not_proven: publish the record or file in publish, then call exposure_check again with the same target.","enum":["exposed","clean","unknown" ⟨10 unchanged words⟩
{"properties":{"asOf":{"description":"When the page was read, ISO 8601 UTC.","type":"string"},"blockedByRobots":{"description":"True when robots.txt disallows the page for Agent Tools, so it was not requested.","type":"boolean"},"callsToAction":{"items" ⟨18 unchanged words⟩ ,"type":"array"},"failure":{"description":"Why the page was not reached or read, such as a timeout or a robots.txt disallow for Agent Tools.","type":"string"},"finalUrl":{"description":"Address of the page after redirects.","type":"string"},"findings":{"items":{"properties":{"evidence":{"description":"What was found on the page.","type":"string"},"fix":{"description":"What to change; absent on a pass.","type":"string"},"id":{"enum" ⟨28 unchanged words⟩ ,"type":"array"},"notes":{"description":"Plain-language caveats to pass on with the result.","items":{"type":"string"},"type":"array"},"notice":{"description":"As-of caveat: what the site sent to Agent Tools at that moment.","type":"string"},"page":{"properties" ⟨18 unchanged words⟩ ,"type":"object"},"reachable":{"description":"False when the page was not reached; failure then says why.","type":"boolean"},"reference":{"description":"Where the checklist topics come from.","type":"string"},"requestsMade":{"description":"Requests made, the page and up to five call-to-action links.","type":"integer"},"source":{"description":"Where the data came from: the website itself.","type":"string"},"status":{"description":"HTTP status code of the final page.","type":"integer"},"summary":{"properties" ⟨12 unchanged words⟩ },"type":"object"},"url":{"description":"The landing page address checked.","type":"string"}},"required":[" ⟨6 unchanged words⟩
{"properties":{"domain":{"description":"Host checked.","type":"string"},"failure":{"description":"Why the site or page was not reached or read, such as a timeout or a robots.txt disallow for Agent Tools.","type":"string"},"issues":{"items" ⟨28 unchanged words⟩ ,"type":"array"},"notes":{"description":"Plain-language caveats to pass on with the result.","items":{"type":"string"},"type":"array"},"notice":{"description":"As-of caveat: what the site sent to Agent Tools at that moment, not what every agent sees.","type":"string"},"origin":{"description":"Origin the sitemap was read from, after redirects.","type":"string"},"reachable":{"description":"False when the site did not answer; failure then says why.","type":"boolean"},"requestsMade":{"description":"Requests made, at most 46.","type":"integer"},"robots":{"properties":{"httpStatus":{"description":"HTTP status code of robots.txt.","type":"integer"},"sitemaps":{"description":"Sitemap addresses listed in robots.txt.","items":{"type":"string"},"type":"array"},"status":{"description":"found: rules were read. missing: a 4xx answer, so nothing is restricted. unreachable: a 5xx or no answer, so no other file or page was requested.","enum":["found","missing","unreachable"] ⟨9 unchanged words⟩ {"type":"integer"},"found":{"description":"False when no sitemap was found, so nothing was sampled.","type":"boolean"},"kind":{"description":"index for a sitemap index, otherwise urlset.","type":"string"},"truncated":{"description":"True when the sitemap was too large to read in full.","type":"boolean"},"url":{"description":"Address of the sitemap read.","type":"string"},"urlsListed":{"description":"Addresses listed in the sitemaps read.","type":"integer"}},"required":["found"],"type":"object"},"source":{"description":"Where the data came from: the website itself.","type":"string"},"statuses":{"additionalProperties":{"type":"integer"},"description":"Count of sampled addresses for each HTTP status code.","type":"object"},"summary":{"description":"Counts for the sample of up to 40 addresses.","properties":{"broken":{"type":"integer ⟨27 unchanged words⟩
⟨63 unchanged words⟩ :"object"},"type":"array"},"legal":{"properties":{"checks":{"items":{"properties":{"finding":{"type":"string"},"fix":{"type":"string"},"id":{"type":"string"},"law":{"type":"string"},"sources":{"items":{"properties":{"title":{"type":"string"},"url":{"type":"string"}},"required":["title","url"],"type":"object"},"type":"array"},"status":{"enum":["needs_verification","pass","not_checked"],"type":"string"},"topic":{"type":"string"},"unresolved":{"type":"string"}},"required":["id","topic","law","status","finding","sources"],"type":"object"},"type":"array"},"note":{"type":"string"}},"type":"object"},"needsVerification":{"items":{"properties":{"check":{"type":"string"},"item":{"type":"string"},"risk":{"type":"string"},"source":{"type":"string"},"unresolved":{"type":"string"}},"required":["risk","unresolved","check","source","item"],"type":"object"},"type":"array"},"notChecked":{"items":{"type":"string" ⟨12 unchanged words⟩ ,"ownershipNote":{"type":"string"},"phases":{"items":{"properties":{"did":{"type":"string"},"phase":{"enum":["map","hunt","verify","report"],"type":"string"}},"required":["phase","did"],"type":"object"},"type":"array"},"publish":{"properties":{"dnsTxt":{"properties ⟨16 unchanged words⟩ "type":"object"}},"type":"object"},"rejected":{"items":{"properties":{"claim":{"type":"string"},"item":{"type":"string"},"reason":{"type":"string"},"source":{"type":"string"}},"required":["claim","reason","source","item"],"type":"object"},"type":"array"},"requestsMade":{"type":"integer"} ⟨72 unchanged words⟩
⟨3 unchanged words⟩ ":{"target":{"description":"A domain, host orhostpage address you own, such as example.com orapp.example.com.https://app.example.com/dashboard.ATheURLhost is checked; a page address also names the page whose scripts are readasforitskeyshost.(the home page otherwise). A bare IP address is refused: pass ⟨18 unchanged words⟩
{"properties":{"adminPaths":{"items":{"properties":{"path":{"type":"string"},"status":{"type":["integer","null"]}},"required":["path","status"],"type":"object"},"type":"array"},"answer":{"type":"string"},"asOf" ⟨18 unchanged words⟩ :"object"},"type":"array"},"keysFound":{"items":{"properties":{"prefix":{"type":"string"},"severity":{"type":"string"},"type":{"type":"string"},"where":{"type":"string"}},"required":["type","where","prefix"],"type":"object"},"type":"array"},"notChecked":{"items":{"type":"string" ⟨9 unchanged words⟩ "string"}},"type":"object"},"ownershipNote":{"type":"string"},"publish":{"properties":{"dnsTxt":{"properties ⟨20 unchanged words⟩ ,"requestsMade":{"type":"integer"},"scriptsRead":{"items":{"type":"string"},"type":"array"},"sources":{"items":{"type":"string" ⟨55 unchanged words⟩ ,"required":["target","verdict","answer","ownershipNote"],"type":"object"}