Bothy

About BothyBot

BothyBot is the web crawler for Bothy, operated by Highland. If it has visited your site and you want to know why - or you would rather it did not - this page is the whole story.

How to identify it

Every request we make carries this exact user-agent string:

BothyBot/1.0 (+https://bothy.tools/bot)

Requests are also cryptographically signed, so you can verify a request really came from us rather than from something borrowing our name. See verifying our requests.

BothyBot is a Cloudflare Verified Bot, in the Search Engine Optimization category. Cloudflare checks our signature at its edge, so sites behind Cloudflare see our requests marked as verified.

What it is for

BothyBot reads public pages on Catholic diocesan, parish and school websites so that the people who run those sites can answer two questions: what does our own website actually say, and what are visitors asking that it does not answer.

The crawled text powers a search and question-answering assistant that a site owner embeds on their own site, and content-gap reports we send to that site's owner. We crawl a site for the organisation that runs it, or, before they sign up, to prepare a one-off readiness report we offer them, capped at a few hundred pages.

The same name and signature are on our smaller readiness checks: a site's home page, /robots.txt, a few of its pages and the files AI assistants look for.

We do not sell the content, and we do not use it to train foundation models.

How it behaves

How to block it

Add this to your /robots.txt:

User-agent: BothyBot
Disallow: /

Or slow us down instead of stopping us:

User-agent: BothyBot
Crawl-delay: 10

We re-read robots.txt at least daily, so a block takes effect within a day without you having to tell us. If you want it to take effect immediately, or you want your content removed from an existing index, email us and we will action it by hand.

Verifying our requests

Our requests are signed with HTTP Message Signatures (RFC 9421), using the Web Bot Auth profile. Each request carries Signature-Agent, Signature-Input and Signature headers.

The Signature-Agent we send is:

https://bothy.tools

Our Ed25519 public keys are published as a JWKS at:

https://bothy.tools/.well-known/http-message-signatures-directory

Anything claiming to be BothyBot without a signature that verifies against a key in that directory is not us, and you should feel free to block it.

If you are our customer and your site is blocking us

Most sites behind Cloudflare need to do nothing: Cloudflare lets verified bots through its default bot protection. You only need a rule if your site blocks or challenges verified bots, or has its own WAF rule that catches us.

A bot challenge is indistinguishable from a dead site to a crawler that will not solve it, so if we are being challenged we may be reporting your pages as unreachable. The fix is one custom rule in your own dashboard: Security → WAF → Custom rules → Create rule, with the action set to Skip, placed above any existing bot-blocking rule.

(http.user_agent contains "BothyBot" and any(http.request.headers["signature-agent"][*] contains "bothy.tools"))

Note the second condition. A user-agent string is trivially spoofed, so a rule matching on our name alone would open your site to anyone who types it. Requiring our Signature-Agent header narrows it to requests that at least claim our key directory. Keep both conditions.

Contact

Questions, complaints, removal requests, or a host that needs us to back off: hello@madebyhighland.com. A human reads it.