81trust / 100

Web Seo Audit

by FiatDock in Security & trust

x402 APIPassing, checked 5 h ago

Technical SEO audit of a public page as a crawler first sees it: indexability, robots.txt, title and description length, canonical, viewport, headings, alt text, links, Open Graph, JSON-LD, mixed content, redirects, speed and the sitemap - each finding with a severity, plus a 0-100 score. JavaScript is not run. Pay-per-call via x402. An empty body is answered for the published example page (https://example.com/); send {"url":"https://…"} for any other page.

POST https://fiatdock.com/v1/web/seo-audit

Last 30 days

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

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://fiatdock.com/v1/web/seo-audit" \
  -H "content-type: application/json" \
  -d '{"url":"https://example.com/"}'
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%2Ffiatdock.com%2Fv1%2Fweb%2Fseo-audit
const res = await pay("https://fiatdock.com/v1/web/seo-audit", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"url":"https://example.com/"}),
});
console.log(await res.json());

Example input

{
  "url": "https://example.com/"
}

Example output

{
  "checkedAt": "2026-10-05T00:00:00.000Z",
  "checks": {
    "canonical": {
      "href": null,
      "sameHost": null
    },
    "favicon": false,
    "headings": {
      "h1": null,
      "h1Count": 0,
      "h2Count": 0
    },
    "hreflangCount": 0,
    "images": {
      "count": 0,
      "missingAlt": 0
    },
    "indexable": true,
    "lang": null,
    "links": {
      "external": 1,
      "internal": 0,
      "nofollow": 0
    },
    "metaDescription": {
      "length": 0,
      "text": null
    },
    "mixedContentCount": 0,
    "openGraph": {
      "description": false,
      "image": false,
      "title": false
    },
    "robotsMeta": null,
    "structuredData": {
      "blocks": 0,
      "invalid": 0,
      "types": []
    },
    "title": {
      "length": 14,
      "text": "Example Domain"
    },
    "twitterCard": null,
    "viewport": true,
    "wordCount": 25,
    "xRobotsTag": null
  },
  "finalUrl": "https://example.com/",
  "grade": "D",
  "htmlBytes": 1256,
  "https": true,
  "issues": [
    {
      "id": "h1_missing",
      "message": "No <h1> heading.",
      "severity": "medium"
    },
    {
      "id": "canonical_missing",
      "message": "No rel=canonical link.",
      "severity": "low"
    }
  ],
  "note": "Read the way a crawler first reads it: JavaScript NOT run.",
  "redirects": [],
  "responseMs": 58,
  "robotsTxt": {
    "blocksAll": false,
    "disallowRules": 0,
    "sitemaps": [],
    "status": 404
  },
  "score": 66,
  "sitemap": {
    "status": 404,
    "url": "https://example.com/sitemap.xml",
    "urlCount": null
  },
  "status": 200,
  "url": "https://example.com/"
}

Security scan

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

Recent checks

WhenResultHTTPTimePrice
5 h agoPassed40254 ms$0.009