No CDN, no bot vendor, nothing in the path but this server. The reading below is not an example: it is what the classifier made of the request you just sent, and it is already in the log.
7 signals fired · agent from 50
Scored from HTTP headers alone. Nothing has executed yet, so there is no attestation and this is tier 3 by definition — for a browser too.
attestationAbsent
no weight
no browser attestation submitted (tier 3, definitional)
knownAgentUserAgent
+60
matched claudebot
genericBot
+40
isbot matched Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +c
missingSecFetch
+30
none of Sec-Fetch-Mode, Sec-Fetch-Site or Sec-Fetch-Dest present
missingAcceptLanguage
+15
no Accept-Language header
hostingAsn
+15
hosting network: AMAZON-02
missingDeviceId
+10
no deviceId on the request
visit cdcd5154-e0aa-4ed0-a8b4-1d98c504ebbc · untagged — add ?ref=your-label to group one run together in the log
Waiting for JavaScript. If you are reading this in a client that does not execute scripts, that is the result: there is no second request, the classifier never sees an attestation from you, and request 1 above is the whole story.
Signature-Agent, or RFC 9421
Signature and Signature-Input). Terminal: nothing else is
consulted, and the signature is not verified. A browser never sends one.
The marker follows your latest request, not this visit as a whole. Loading this
page is two requests: the GET that delivered the HTML, then a
POST once the page has run and has an attestation to send. They are
classified independently and can land in different tiers — which is the normal
case for a browser, and the reason the two panels above disagree.
curl -s http://agent-signals.agentic-commerce-lab.ai/api/probe | jq
# force the hosting signal without an ASN lookup
curl -s 'http://agent-signals.agentic-commerce-lab.ai/api/probe?hosting=1&asn=Amazon-02' | jq
# post an attestation the way the page does
curl -s http://agent-signals.agentic-commerce-lab.ai/api/probe -X POST \
-H 'content-type: application/json' \
-d '{"attestation":{"nonce":"x","webdriver":true,"userAgentData":null,"permissions":{}}}' | jq
Network lookup for the hosting signal is on. Private and loopback addresses are skipped, so it stays quiet in local development.
Three tiers, and only the third is probabilistic. A Web Bot Auth header (RFC 9421) is a caller declaring itself an agent, which ends the decision. A coherent browser attestation is a human. Neither means the request did not come from this application's own client — which is a definition, not a guess.
The signature is not verified. Verifying it would answer which operator is calling, and nothing here turns on that: every agent is treated the same, so a forged declaration only volunteers its owner for the agent class. That changes if being signed ever earns something better than a bill.
Weighted signals then set confidence within a tier. Every weight traces to a measurement in Fayolle et al., arXiv:2606.30119. The heaviest ones fire on self-contradiction rather than on any single spoofable attribute, because that study's most transferable finding is that stealth increases detectability.
Browser-resident assistants are scoped as human by decision: that is a person using their own browser. TLS fingerprinting is rejected — 10 of 15 tools in the study's dataset share a JA4 fingerprint with a human.
The site at / is ordinary content with something to do,
and no mention of any of this. It prints a reference code and asks for it back in a
form, so a submission only counts if the caller rendered the page, read it, and
returned the session cookie it was given. That criterion is what separates
“a POST arrived” from “the caller completed the task”.
Each submission is logged with its outcome, so you can compare completion rates across tools rather than just verdicts.