Zero-dependency vanilla JavaScript probe for the eleven Kinetic Gain Protocol Suite documents at any domain's
/.well-known/paths.
import { probeWellKnown } from "@kineticgain/well-known-probe";
const result = await probeWellKnown("kineticgain.com");
console.log(`Score: ${result.score}/100 — tier: ${result.tier}`);
console.log(`Published: ${result.published.join(", ")}`);
console.log(`Missing: ${result.missing.join(", ")}`);Runs in the browser, Node 18+, Deno, and Bun — anywhere fetch exists. No dependencies. No bundler. No build step. Drop it in.
The Suite specifies that vendors publish disclosure documents at predictable /.well-known/ paths — aeo.json, agents/index.json, decisions/index.json, eleven total. Reading those endpoints from a browser tab, a CI check, a Greasemonkey userscript, an Express middleware, or a Node CLI is the same shape of code — fetch + JSON parse + score. This library is that code, factored out, with zero dependencies.
It's the shared core of the Vendor AI Disclosure Inspector browser extension and the companion Tampermonkey/Greasemonkey userscript (both coming in the same trio). You can also drop it into your own app — vendor self-validation widget, build-time crawl, anywhere.
npm install @kineticgain/well-known-probeOr, since it's zero-dep ESM with no build step, just copy src/ into your project and import directly.
<script type="module">
import { probeWellKnown } from "https://unpkg.com/@kineticgain/well-known-probe/src/index.js";
const result = await probeWellKnown("vendor.example.com");
document.getElementById("score").textContent = result.score;
</script>node examples/cli.js kineticgain.com{
"domain": "kineticgain.com",
"probedAt": "2026-05-18T07:42:11.182Z",
"score": 27,
"tier": "minimal",
"published": ["aeo", "agents", "decisions"],
"missing": [
"prompts", "evidence", "toolCards", "tutorCards",
"studentAI", "classroomAUP", "clinicalAI", "incidents"
]
}import { probeWellKnown } from "@kineticgain/well-known-probe";
const controller = new AbortController();
setTimeout(() => controller.abort(), 30_000); // hard cap on the whole probe
const result = await probeWellKnown("vendor.example.com", {
timeout: 4000, // per-fetch timeout (ms)
signal: controller.signal,
scheme: "https",
fetch: globalThis.fetch, // override for instrumentation / proxying
});Probes all eleven Suite paths in parallel. See index.d.ts for the full TypeScript types.
| Option | Default | Purpose |
|---|---|---|
timeout |
5000 |
Per-fetch timeout (ms). Each spec has its own budget. |
signal |
undefined |
External AbortSignal to cancel the whole probe. |
fetch |
globalThis.fetch |
Override the fetch implementation. Useful for tests, proxies, or running through a CORS-friendly relay. |
scheme |
'https' |
URL scheme. Use 'http' for localhost testing. |
import { SUITE_PATHS } from "@kineticgain/well-known-probe";
// { aeo: { url: "/.well-known/aeo.json", discriminator: "aeo_version" }, ... }Frozen object. Add your own paths by composing — don't mutate this one.
Pure mapping function. Cutoffs: ≥90 comprehensive · ≥60 strong · ≥30 partial · ≥1 minimal · 0 none. Match the AI Procurement Pulse reporting bands.
For specs that ship a top-level <thing>_version field (currently aeo and classroomAUP), a 200 OK with the wrong JSON shape does NOT count as published. You can't game the Pulse by serving a 200 of unrelated JSON at the well-known URL — the probe verifies the discriminator before marking the spec found.
| Repo | How |
|---|---|
kineticgain-vendor-inspector |
Chrome / Firefox extension that uses this lib in its popup |
| Tampermonkey / Greasemonkey userscript | Single .user.js file that imports this lib via bundled copy |
| Procurement Pulse | Same probe logic, server-side, against ~1,200 domain universe |
| aeo-crawler | Heavyweight crawler for the same paths; this lib is the lightweight per-domain version |
| Kinetic Gain Protocol Suite | The specs whose presence this library detects |
- v0.2: enumerate child documents — when
agents/index.jsonlists multiple Agent Cards, recursively probe each one + return the deepestagent_card_versionfound - v0.3: signature verification — when a document references a
signing_key_url, fetch the key and verify the ed25519 signature client-side (Web Crypto API in the browser; node:crypto in Node) - v0.4: drift detection — accept a previous
ProbeResultand diff against it; useful for monitoring vendor disclosure changes over time
MIT.