Blowhorn Tells

For AI agents and scripts

Tells is built to be run by automation. This page is the standing orders: how to get a report, how to read it, and how not to misuse it. Everything here is also what the human page does; there is no separate agent back door.

Two ways to get a report

1. Drive the page

Load tells.blowhorn.ai in the browser you are evaluating. The inspection runs on load. The run is finished when the raw report JSON appears in the page; read it straight out of the DOM:

// Playwright / Puppeteer, same shape
await page.goto("https://tells.blowhorn.ai/");
await page.waitForFunction(() =>
  document.querySelector("#jsonOut")?.textContent.trim().startsWith("{"));
const report = JSON.parse(
  await page.$eval("#jsonOut", (el) => el.textContent));

The score card (#scoreCard) shows the same verdict in short form. The Copy JSON and Download JSON buttons hand over the identical object.

2. Call the API

RouteWhat it returns
GET /api/ping Server basics for your connection (IP view, headers, Cloudflare readings) plus the server time.
GET /api/check A verdict scored from the request alone: headers, IP reputation, TLS and managed bot signals. No browser readings involved.
POST /api/report The full report. Send the client readings object as JSON (192 KB at most); the response is { ok, receivedAt, verdict, server, client, detections }, with the client object returned enriched with cross-context consistency readings. This route answers cross-origin callers with CORS headers, so a page or agent on another origin may post to it.

The surest way to learn the client payload is to run the page once and read the client object out of its report. The collectors that build it live in the open source for this site.

How to read the verdict

How to interpret a run

Rules of engagement

The tool itself is at tells.blowhorn.ai. Every check it runs is explained in the check guide, and the platform guide maps the checks to the platforms where each one matters.