Sydney service businesses · 15 sites scanned 25 Aug 2026

Agents are already knocking.Your website can't open the door.

We scanned fifteen Sydney plumbers, clinics and agencies. One had a single action an agent could complete. Mapping what a site can already do is built and measured; publishing it where agents look is what we are building next.

  • 45.7

    Mean agent-readiness score out of 100, across 15 Sydney service sites

    Source:packages/scanner/benchmark/reports/summary.json

  • 1 of 15

    Sites with a single action an agent could actually complete

    Source:packages/scanner/benchmark/reports/summary.json

  • 15 of 15

    Publish no WebMCP, no MCP endpoint and no ARD catalog

    Source:packages/scanner/benchmark/reports/*.json

01What we measured

Fifteen real Sydney sites. Nobody screened them for looking bookable.

Five trades businesses, five clinics, five real estate agencies, found the way a customer's agent would find them: plain searches for a plumber, a physio and a real estate agent in Sydney. Read-only, sequential, nothing filled and nothing submitted. Here is what an agent gets today.

0 of 15Scored 70 or above. The range was 12 to 69.

The best of the fifteen missed agent-ready by one point.Source: packages/scanner/benchmark/reports/summary.json
15 of 15
No WebMCP, no MCP endpoint, no ARD catalog. No exceptions.The standards shipped in 2026. The implementation did not.Source: packages/scanner/benchmark/reports/*.json
10 of 15
Have no form and no booking widget at allSource: packages/scanner/benchmark/reports/summary.json
8 of 15
Offer an agent nothing but a phone numberAn agent asked to book a plumber cannot dial.Source: packages/scanner/benchmark/reports/summary.json
4 of 5
Of the sites that do have a real form put a CAPTCHA in front of itSource: packages/scanner/benchmark/reports/*.json
9 of 15
Publish no machine-readable opening hoursSource: packages/scanner/benchmark/reports/summary.json
Mean score and what an agent can reach, by vertical
VerticalSitesMean scoreForm or widgetAgent can complete
Trades558.04 of 51 of 5
Clinics547.61 of 50 of 5
Real estate531.40 of 50 of 5

Two of the real estate sites have no form and no phone link either. There is no machine-actionable way in at all, not even a number an agent could read off the page.

Source: packages/scanner/benchmark/reports/summary.json

The one that works did not do it on purpose.

The single agent-callable action in the sample is a ServiceM8 booking widget on a plumber's site. The only way in that exists today came from software the business bought for its own reasons, not from anything the business did for agents.

Source: packages/scanner/benchmark/reports/summary.json

Then we opened the same fifteen sites in a real browser.

A read-only fetch reads the HTML it is handed. The Mapper renders the page, waits for scripts, clicks, and follows a link or two. It reached 28 actions across 14 of the 15 sites that a fetch of the entry page could not see, and 11 of the 15 then produced a complete, executable action map. These sites are far more reachable than they look. The wall is not discovery. The wall is the CAPTCHA and the consent tick at the end.

73.3%
Of sites produced a complete action map once a browser was used. 11 of 15.Source: packages/mapper/benchmark/results.json
28
Actions a fetch of the entry page missed, found by rendering, clicking or following a link, across 14 of 15 sitesSource: packages/mapper/benchmark/results.json
19 of 26
Sandbox fills the site's own validation acceptedSource: packages/mapper/benchmark/results.json
7
Failures, every one of them a required CAPTCHA field or a required consent tickNot one failure was our data being rejected. The gap is a statement about those forms.Source: packages/mapper/benchmark/results.json

02One job, twice

Watch an agent lose a job, then win the same one.

Same customer, same request, same plumber. On the left, the site as fifteen of fifteen sites stand today. On the right, the same site latched.

Booking attempt · unlatched

<sydney-plumber>.com.au

  1. CustomerBook me a plumber in Marrickville for Thursday morning. Blocked kitchen drain.
  2. AgentSearching. Four Sydney plumbers. Trying the first.
  3. AgentGET https://<sydney-plumber>.com.au/200 OKsucceeded
  4. AgentGET /.well-known/ai-catalog.json404. No ARD catalog. True of 15 of the 15 sites scanned.blocked
  5. AgentReading navigator.modelContextundefined. No WebMCP declaration. 15 of 15.blocked
  6. AgentLooking for an MCP endpointNone advertised. 15 of 15.blocked
  7. AgentFalling back to the page. Rendering.in progress
  8. WebsiteContact form found on /contact-us/. Five fields.Not in the fetched HTML. Only a browser gets this far.
  9. AgentFilling name, email, phone, suburb, job descriptionEvery value accepted by the site's own validation.succeeded
  10. WebsiteRequired field: g-recaptcha-responseCAPTCHA sits on 4 of the 5 scanned sites that have a real form.blocked
  11. AgentI cannot complete a CAPTCHA. I do not try.blocked
  12. AgentFalling back to the phone number: tel:+61 2 ....8 of 15 sites offer an agent nothing else.blocked
  13. AgentI cannot make phone calls.blocked
  14. ResultNo booking. The agent hands the customer a phone number and stops.blocked

blocked

Zero actions completed. The job goes to whoever answers next, and nothing on the site recorded that anybody tried.

Composed from the 25 August scan and the 26 August browser run over fifteen Sydney service sites. Every blocker in it is one we hit, and every count is in the artefacts below. The business is not named: these defects belong to the web, not to one plumber.

Booking attempt · latched

<sydney-plumber>.com.au

  1. CustomerBook me a plumber in Marrickville for Thursday morning. Blocked kitchen drain.
  2. AgentGET /.well-known/ai-catalog.json200 OK. One catalog entry, published and kept current by Frontlatch.succeeded
  3. AgentConnecting to the hosted MCP endpointThree tools: check_availability, request_quote, book_job.succeeded
  4. Agentcheck_availability(service: "blocked-drain", date: "2026-09-03")Three windows returned.succeeded
  5. Frontlatchbook_job was verified by the owner on 25 Aug. Agent identity signed. Request is inside the limits the owner set.No action fires without that verification. Sandbox is the default everywhere.succeeded
  6. Agentbook_job(window: "Thu 08:00 to 10:00", suburb: "Marrickville", contact: ...)in progress
  7. FrontlatchRouted into the booking software the business already runs.Native integration first. Email or webhook where there is no integration.succeeded
  8. WebsiteJob created. Owner notified.succeeded
  9. AgentBooked. Thursday, 8 to 10am. Confirmation sent to you.succeeded
  10. ResultOne verified completed action. That is the only thing Frontlatch charges for.succeeded

succeeded

One booking, logged, attributed to a signed agent identity, and in the owner's inbox before the customer put the phone down.

Not a recording. This is the flow specified in docs/03, and it is not live: the hosted layer is Phase 1 and the write path is Phase 2. No site is running it, and Frontlatch has no customers.

03What Frontlatch does

Five steps. Two of them are built and measured. Three are not.

The site keeps its design, its CMS and its forms. Frontlatch is designed to sit on top and give agents a machine-readable way to do the things the site already does. Two of the five steps below are built and measured today. The other three are what the money and the calls are for.

  1. Built and measured. Scan

    Built and run by hand. 15 real sites, 25 Aug 2026. Self-serve scanning is not open yet.

    Any domain, free. A score out of 100 across crawlability, structured data, action affordances, form quality and agent interface, plus the specific list of what is blocking an agent. The CAPTCHA. The unlabelled field. The missing catalog.

  2. Built and measured. Map

    Built. 73.3% of the same 15 sites produced a complete map.

    A real browser opens the site, waits for scripts, clicks the things a person would click and follows a link or two, then writes down every action it finds as typed inputs, validations and side effects. That is the Action Graph.

  3. Not built yet. Publish

    Phase 1. Not built.

    One Action Graph, three standards emitted: MCP tool definitions, WebMCP declarations and an ARD catalog at /.well-known/ai-catalog.json. Hosted and persistent, because WebMCP alone dies with the tab. Multi-standard on purpose. We are not betting a customer on one spec winning.

  4. Not built yet. Verify

    Phase 2. Not built.

    The owner confirms each action, sets the hours, sets a volume cap, and says which fields an agent may fill. Nothing fires until they do, and every executed action is logged, attributed and notified in real time. This is the part the business will not skip, so neither do we.

  5. Not built yet. Route and meter

    Phase 2 and 3. Not built.

    The booking is designed to land in the software the business already runs, the ServiceM8 and Cliniko class of tool for trades and clinics, with email or a webhook as the fallback where there is none. No integration is built and neither company is a partner. Metered per completed action, with dedupe and replay logs, so an attribution argument is settled by the record rather than by opinion.

We ran 81 sandbox fills across fifteen businesses we have never spoken to, and submitted none of them.

Every fill was synthetic: a reserved test email domain and a fictional phone range. Payment fields were never filled, consent boxes never ticked, honeypots never touched. Then we audited every outbound request the browser made, in the URL, the headers and the body, through base64 and HTML entities as well as percent-encoding, and checked it against the exact strings we had typed.

629
Submission attempts neutralised across the runSource: packages/mapper/benchmark/results.json
5,449
Outbound requests audited in URL, headers and bodySource: packages/mapper/benchmark/outbound/
0
Requests carrying anything we typed reached any of those businessesSource: packages/mapper/benchmark/outbound/
0
Executable actions emitted. Every mapped action is unverified by construction.Source: packages/mapper/benchmark/results.json

The audit was built to be able to fail, and it did once, during construction: a lead-capture route that was never a form submission. It was found, closed, evidenced and written up before this run.

04What it costs

You pay for a completed action, not for being seen.

An audit tells you your score. A visibility tool tells you an AI mentioned you. Neither of those is a booked job. The scan and the traffic report are free forever, and the money only moves when an agent completes something real.

  1. Scan and agent analytics

    Freeforever

    The score, the blocker list, the one-line traffic tracker and the weekly agent-traffic report it generates. No account and nothing to cancel.

  2. Hosted action layer

    $149 to $249per site, per month

    Mapped and owner-verified actions, hosted MCP, WebMCP and ARD, a dashboard, and notifications on every attempt.

  3. Per verified completed action

    $30 to $45per action, by vertical

    A booked job, a submitted quote, an appointment. Trades $45, clinics $30, real estate $35, each set under what that vertical already pays for a lead.

  4. Agency

    Wholesale, around 40% offwhite-label, minimum 10 sites

    Scan a whole client book in an afternoon, one fleet dashboard, your brand on the report.

The number to compare it against is your cost per lead.

Whatever you already pay for a qualified job through Google Local Services or a lead marketplace, you pay it whether the job lands or not. A completed booking is priced against that number rather than against a software budget, and it is charged only when the job is actually booked.

Source: issues/closed/decision-005-per-action-price-points-for-probe.md

Straight up: none of this is live yet.

Frontlatch has zero customers, zero sites running the hosted layer, and no signed partners. The traffic collector is live and no site has installed it yet, so our own agent-traffic number is not a low number, it is an unmeasured one. The prices above are the range being tested on twenty calls, not a price list. When any of that changes, this paragraph changes with it.

  • 0CustomersSource: docs/STATUS.md
  • 0Committed partnersSource: docs/STATUS.md
  • 0Sites measuring their agent trafficSource: docs/STATUS.md

For the record on why any of this matters now: automated requests were measured at roughly 57.5 per cent of HTML web traffic, per WorkOS and Cloudflare Radar in June 2026, and only about 3.16 per cent of agentic activity reaches a checkout or completed action, in HUMAN's April 2026 data as reported in May 2026. Agents are browsing. They are almost never finishing. Those are other people's measurements, cited with dates, not ours.

Source: docs/00-thesis.md

05Start here

Send us a domain. We will tell you what an agent can and cannot do with it.

You get the score out of 100, the five category breakdowns, and the named list of what is stopping an agent on that site. It is the same scan that produced the scores, the blocker counts and the per-vertical table on this page. Free, and free permanently, because the scan is how we find out whether any of this is real.

Read the method first

Or count them yourself.

One line of script, before the closing body tag, on every page. It counts the AI agents arriving at the site and catches the ones that tried to use a form and failed. It is byte-for-byte identical on every site that installs it. No site ID, no account key, nothing to fill in.

<script async src="https://tracker.frontlatch.com/t.js"></script>

It watches. It never touches the site, the forms or the customers.

Sydney service businesses first: trades, then clinics, then real estate. Fifteen sites scanned so far, and the benchmark grows to fifty.