The naulon fetcher
This page describes the automated requests naulon makes to origin sites: what they are, how to recognize them, and how to allow or block them. It's here for operators who see naulon traffic at their edge, in a WAF, a bot rule or a log line, and want to know what it is before they decide what to do with it.
naulon is a citation toll. It lets a publisher charge AI agents to read and cite their work, and it settles that payment directly from the buyer to the author in USDC. Two parts of that system make outbound HTTP requests, and both are covered below.
Why you'd see us
We do not run a broad crawl of the web, and we do not fetch a site to build a training set. Every request traces to one of two triggers:
- A site connected itself to naulon. When an operator points naulon at their origin, the gate fetches that origin's pages to serve them back through the toll, and during setup reads the site once to draft a catalog. This is the operator's own site, fetched at the operator's direction.
- A buyer paid to read a page. Our research agent fetches a page when an AI agent has agreed to the toll and is paying for that specific read, plus the discovery surfaces (RSS, sitemap, feeds) it needs to find what's for sale.
There is no third trigger. We don't fetch a page speculatively, and we don't revisit to re-scrape content we already paid to read.
How to recognize us
The reliable signal is a signature, not a user-agent string. naulon signs its requests with Web Bot Auth (HTTP Message Signatures, RFC 9421). The public keys are published at a fixed URL on our domain:
https://naulon.app/.well-known/http-message-signatures-directoryEach signed request carries signature, signature-input, and signature-agent.
Verify the signature against that directory and you have cryptographic proof the
request is ours, keyed to a domain only we control. A user-agent string can be
forged; the signature can't.
signature-agent is an RFC 9421 structured-field string, so the quotes are part
of the value on the wire:
signature-agent: "naulon.app"Write an exact-match edge rule against "naulon.app" with the quotes, or match
on "contains naulon.app". A rule that tests equality against a bare naulon.app
never fires.
If you run behind Cloudflare, Vercel, or any other Web Bot Auth verifier, this is the identity it will surface for our traffic.
User agents
The user-agent is a secondary signal: useful for logs and simple rules, but not proof of identity. You'll see these:
| User-agent | What it is |
|---|---|
naulon-wayfarer/0.1 |
The research agent: discovery reads (RSS, sitemap, feeds) and the paid reads a buyer settles for. |
naulon-crawl/1 (+catalog-draft) |
A one-time read of a newly connected site to draft its catalog. |
When the gate serves a connected origin's own content back through the toll, the
request carries the buyer agent's user-agent, not ours. That request is
identified by the naulon.app signature, not by a user-agent.
Allowing or blocking us
- To allow or block all naulon traffic at once, match the verified identity
naulon.app. On Cloudflare, that's a custom rule on the verified bot / signing operator; on your own edge, match thesignature-agentheader once you've verified the signature. Matching the identity holds even if a request arrives wearing a different user-agent. - For a quick user-agent rule, match the fragments in the table above
(
naulon-wayfarer,naulon-crawl). Treat this as intent enforcement for honest traffic, not a security boundary; use the signature for that.
Blocking us means AI agents can't pay to read the blocked pages through naulon. If a publisher connected their site to naulon on purpose, that's usually not what they want; check with them before you block at the edge.
Rate and crawl behavior
Our fetching is demand-driven, not a scheduled sweep. The gate reads a connected origin in response to live agent requests; the research agent reads only what a buyer is paying for plus the discovery surfaces above. There is no bulk crawl to rate-limit, and we don't re-fetch content we've already retrieved.
If naulon traffic is ever causing load you didn't expect, tell us. We'd rather hear it than have you find out at the edge.
Contact
Questions, an unexpected request pattern, or a report about our fetcher: [email protected].