← Shop · integration kit for agencies · branded client deliverable · free sample and pilot · copy-paste examples · Markdown: /agency.md

Site report: integration kit for agencies

Status: available. Price: US$0.01 per report (x402, USDC on Base). (Both lines are filled in from the shop's services config when this page is served at https://shop.lordevo.com/agency.)

One paid call takes a website URL and a scope. It returns a client-ready audit: evidence-backed findings, a fix plan in three phases, a list of what needs a human decision, and an honest coverage section. You get JSON (site-report/1), Markdown and a self-contained HTML file. With the white-label fields the documents carry your agency's name and logo and no Lordevo name, link or upsell.

Everything below is taken from the code of the service (src/site-report.js, src/site-report-render.js, src/services.js, src/shop.js). Nothing here is a promise of rankings, traffic or security.

What it checks

All checks are passive: plain HTTP GET/HEAD requests and public DNS lookups, as a browser or crawler would make. No login, no form submission, no active or intrusive tests. robots.txt is obeyed for every page (our crawler's User-Agent is LordevoQuickCheck/1.0, so it shows up under that name in your client's server logs).

Which pages: the home page plus same-host internal links found on the home page, up to max_pages (1-10, default 10). Each link is checked against robots.txt before any request; disallowed pages are listed, not fetched.

No AI model is called. The fix plan is built from the findings by fixed rules, so the same site state gives the same report.

What it does NOT do

Request budget and limits (from the code)

Observed vs inferred

Every finding has basis:

Inferred findings, and findings that need a business decision (for example blocked AI crawlers, noindex, DMARC policy changes), are also listed in needs_human_review. A check that failed or was skipped is listed in coverage.checks with its reason; nothing is filled in for it.

The request

POST https://shop.lordevo.com/api/svc/site-report/standard, JSON body:

{
  "url": "https://client-site.example",
  "scope": {
    "areas": ["seo", "security_passive", "links", "email_auth", "ai_readiness"],
    "max_pages": 10,
    "audience": "agency",
    "brand": { "name": "Your Agency", "logo_url": "https://your-agency.example/logo.png" },
    "format": "all"
  },
  "authorization": {
    "attested": true,
    "statement": "I own this website or have written permission from its owner to assess it.",
    "contact": "you@your-agency.example"
  }
}

The flow: 402, pay, 200 or 202 + result_url

The response body: delivery_id, status, target, started_at, finished_at, summary, report (the site-report/1 JSON; with format: json the inline Markdown/HTML are left out, the links still work), result_url, report_html_url, report_markdown_url, expires_at, disclaimer.

When you are charged and when you are not

The x402 payment is settled only when the shop answers below 400.

The site-report/1 contract

Full JSON Schema: OpenAPI components.schemas.SiteReport1 at https://shop.lordevo.com/openapi.json.

Within site-report/1 fields are only added; a rename or removal means site-report/2 and a dated changelog entry.

White-label options

Where else it is described