78trust / 100

Site Audit

by HALOWERK Agent Tools in Security & trust

x402 APIPassing, checked 3 h ago

Prueft eine Adresse auf Technik, Geschwindigkeit, Sicherheit, Auffindbarkeit und Barrierefreiheit. Je Abschnitt strukturierte Werte, dazu Punkte von 0 bis 100 und eine Befundliste, in der jeder Eintrag einen Beleg traegt: Header, Zeichenkette, URL oder Messwert. Der Schweregrad kritisch bleibt belegter Kompromittierung und offenen Zugaengen vorbehalten. Ausschliesslich lesende Pruefungen, keine Anmeldeversuche, keine Einschleusung, kein Lasttest. Abschnitte laufen parallel; ein Abschnitt, der sc

POST https://tools.halowerk.com/v1/site/audit

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
128 ms typical, 194 ms slowest 5%
Last check
3 h ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://tools.halowerk.com/v1/site/audit" \
  -H "content-type: application/json" \
  -d '{"sections":["tech","speed","security","seo","a11y"],"url":"https://example.com","viewport":"mobile"}'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Ftools.halowerk.com%2Fv1%2Fsite%2Faudit
const res = await pay("https://tools.halowerk.com/v1/site/audit", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"sections":["tech","speed","security","seo","a11y"],"url":"https://example.com","viewport":"mobile"}),
});
console.log(await res.json());

Example input

{
  "sections": [
    "tech",
    "speed",
    "security",
    "seo",
    "a11y"
  ],
  "url": "https://example.com",
  "viewport": "mobile"
}

Example output

{
  "critical_count": 0,
  "final_url": "https://example.com/",
  "findings": [
    {
      "affected": "https://example.com/",
      "evidence": "Antwortkopf enthaelt kein Strict-Transport-Security",
      "fix": "Strict-Transport-Security mit max-age von mindestens einem halben Jahr setzen.",
      "id": "sec_kein_hsts",
      "section": "security",
      "severity": "mittel",
      "title": "Kein HSTS-Header"
    }
  ],
  "score": {
    "a11y": 97,
    "security": 60,
    "seo": 88,
    "speed": 71,
    "tech": 92
  },
  "sections": {
    "a11y": {
      "kontrastfehler": [
        {
          "gefordertes_verhaeltnis": 4.5,
          "gemessenes_verhaeltnis": 1.2,
          "hintergrundfarbe": "#101b2d",
          "selektor": "div.faq > summary",
          "vordergrundfarbe": "#122a4c"
        }
      ],
      "verstoesse_gesamt": 1
    },
    "security": {
      "cname_uebernahme": {
        "risiko": false
      },
      "header": {
        "csp": null,
        "hsts": null,
        "x_frame_options": "SAMEORIGIN"
      },
      "mail": {
        "dmarc": "v=DMARC1; p=quarantine",
        "relay_hinweis": null,
        "spf": "v=spf1 a mx ~all"
      },
      "offene_verzeichnislisten": [],
      "offengelegte_dateien": [],
      "tls": {
        "gueltig_bis": "Sep 20 2026 GMT",
        "tage_verbleibend": 45,
        "version": "TLSv1.3"
      }
    },
    "seo": {
      "bild_alternativtexte": {
        "bilder_gesamt": 12,
        "ohne_alt": 2
      },
      "canonical": "https://example.com/",
      "indexierbarkeit": {
        "indexierbar": true
      },
      "titel": {
        "laenge": 13,
        "text": "Beispielseite"
      },
      "ueberschriften": {
        "anzahl": {
          "h1": 1,
          "h2": 4
        },
        "hierarchie_spruenge": []
      }
    },
    "speed": {
      "cls": 0,
      "gesamtgewicht_kb": 259.8,
      "groesste_ressourcen": [
        {
          "bytes": 35630,
          "typ": "Font",
          "url": "https://example.com/fonts/a.woff2"
        }
      ],
      "inp_ms": null,
      "lcp_ms": 3109,
      "render_blockierend": [
        {
          "bytes": 19723,
          "url": "https://example.com/css/style.css"
        }
      ],
      "ttfb_ms": 133
    },
    "tech": {
      "bildformate": {
        "anteil_modern": 0.75,
        "gesamt": 12,
        "nach_format": {
          "png": 3,
          "webp": 9
        }
      },
      "caching": {
        "cache_control": "max-age=3600",
        "etag": "W/\"1a2b\""
      },
      "drittanbieter_hosts": {
        "anzahl": 4,
        "hosts": [
          "fonts.gstatic.com"
        ]
      },
      "kompression": {
        "aktiv": true,
        "content_encoding": "br"
      },
      "protokoll": {
        "http2": true,
        "http3_advertised": true,
        "http3_genutzt": true,
        "http_version": "HTTP/2"
      },
      "server": "nginx",
      "systeme": [
        {
          "beleg": "meta generator",
          "kategorie":

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
3 h agoPassed402168 ms$0.02
6 h agoPassed402133 ms$0.02
10 h agoPassed402128 ms$0.02
13 h agoPassed402226 ms$0.02
18 h agoPassed402138 ms$0.02
21 h agoPassed402118 ms$0.02
25 h agoPassed402194 ms$0.02
29 h agoPassed402127 ms$0.02
31 h agoPassed402104 ms$0.02
37 h agoPassed402102 ms$0.02