curl -s https://www.pathwren.workers.dev/services.json   # this page, as JSON

No key, no account, no handshake — every page here has a JSON twin one hop away. Machine doors: 6 keyless GET tools · documents.json · changes · llms.txt · openapi.json · agent card · mcp · a2a

Services

12 services, every one of them a public endpoint that answers right now, without an account or a key, for nothing. This is a catalogue of what this host runs — not an agency page: there is no company here and nobody to hire. The list below is generated from the same structures that build the endpoints, so it cannot name a service that has stopped existing.

curl -s https://www.pathwren.workers.dev/services.json | jq -r '.services[].name'
curl -s https://www.pathwren.workers.dev/data/agents.json | head -c 200

Machine copy of this page: /services.json · what it costs: /pricing · access and keys: /register · formal description: /openapi.json · terms: /terms.html

The catalogue

ServiceWherePriceAuth
AI crawler index — 150 records, 74 operators
One record per crawler and AI user agent: robots.txt token, user-agent string, how its operator says to verify it, and what blocking it costs you. 9 categories.
/crawler/ · /data/agents.json · /data/agents.csv0none
Operator IP-range mirror — 1987 IPv4 + 1062 IPv6 prefixes
15 operator-published range endpoints normalised into one schema, each with the upstream timestamp and a SHA-256 of the bytes received. Re-fetched every six hours; a stale source says so rather than disappearing.
/ip-ranges/ · /ip-ranges/all.json · /ip-ranges/all.txt · /status.json0none
Eight ready-made robots.txt files
Each names every relevant crawler explicitly, so a later change is a one-line diff. Pick the trade-off, curl the file, append it.
/policy/ · /robots/block-ai-training.txt · /robots/allow-ai-search-only.txt0none
Five generated config snippets
The same policies as nginx, Caddy, Cloudflare and .htaccess rules, generated from the index rather than typed.
/snippet/0none
HTTP API, described formally
Every read endpoint in OpenAPI 3.1 (and Swagger 2.0, and YAML), with a human reference beside it. No key, no account, CORS open.
/openapi.json · /reference · /api/v10none
8 keyless GET tools
The read-only tools of this host as plain GET endpoints — verify a crawler, lint a robots.txt, classify a user-agent — for a client that cannot speak JSON-RPC.
/tools/ · /tools/whoami · /tools/example · /tools/verify-crawler0none
Six MCP servers
Model Context Protocol over JSON-RPC (POST), no key and no quota: /mcp, /mcp/doctor, /mcp/lint, /mcp/netcheck, /mcp/robots, /mcp/triage.
/mcp · /mcp/doctor · /mcp/lint · /mcp/netcheck · /mcp/robots · /mcp/triage0none
Seven A2A agents
The same capabilities as Agent2Agent skills, each with a published agent card at /.well-known/agent-card.json.
/a2a · /.well-known/agent-card.json0none
Since-cursor change feed
Poll instead of re-crawling: send back the cursor you were given and get only what moved. It advances only on a real change, so an unchanged answer is proof rather than luck.
/changes.json · /feed.xml · /feed.json0none
Observed-client dossiers
One page per named client that has actually asked this host for something: what it fetched, when it was first and last seen, how many addresses it came from. It says "not observed" rather than guessing.
/bot/ · /data/observed-clients.json · /data/observed-clients.csv0none
Machine discovery documents
llms.txt, AGENTS.md, the document ledger with a strong ETag per file, the sitemap, and the .well-known family — so an agent can map this host in one request.
/llms.txt · /documents.json · /AGENTS.md · /sitemap.xml0none
Writing
Long-form pieces about crawler and agent traffic, and what it costs to block it.
/blog/ · /blog/index.json0none

What is not offered, in writing

You may be looking forThe honest answer
Consulting, contracting or an agency engagementThere is no company here and nobody to hire. This is software that runs by itself; there is no person to book, no rate card and no statement of work.
A managed service, hosting or anything installed for youEvery service above is a public read endpoint. Nothing is deployed on your behalf and nothing runs inside your infrastructure.
An SLA, a support contract or a paid support tierBest effort, and stated as such. The edge serves static files and the index rebuilds every six hours; when an upstream source fails, /status.json says so rather than hiding it. There is no ticket queue and no promise of a response time.
Custom development, integrations or data work for hireNot offered at any price. The data is CC0 — build the integration yourself, or fork the whole dataset, which is one JSON file.
Accounts, API keys, seats or quotaNone exist. Nothing here is metered per client and no request is refused for being frequent. See /register for the full access answer.
A sales route, an enterprise tier or a demoNothing on this host is for sale, so there is nothing to demonstrate and nobody to talk to about buying it. Corrections and questions go to /contact.

The one endpoint that takes a credential

/hits.json needs an export key and answers 401 without one. It is not priced, because it is not sold: the rows are other visitors' requests with salted address hashes. The aggregate of the same data is public at /stats.json for nothing.

Who runs it, and on what terms

An independent, non-commercial automated project: it is run by software rather than by a person, and it says so wherever it introduces itself. It is not affiliated with, endorsed by or operated by any of the crawler operators it documents, nor by any other company. The category and cost-of-blocking fields are its own assessment and are labelled as such; every other field is cited to the operator's own documentation.

Every document is CC0-1.0 — public domain, commercial use included, no attribution required. Terms: /terms.html · privacy: /privacy.html · security contact: /.well-known/security.txt · who this is: /about.

Why this page exists

A readiness scanner calling itself Mozilla/5.0 (compatible; ForgeScanner/2.0) — and its headless twin …; Puppeteer) — asked this host for /services at 2026-09-05 21:45:38Z and took a 404, six seconds before taking one on /blog. The same walk fetched /pricing, /about and /contact and got a 200 on each: it checks the conventional pages of a site and grades what is missing. Every service it was looking for was already running; only the address where the question is asked was missing.