---
title: "Services — AI Crawler Index"
description: "Everything this host runs: 12 public services — a crawler index, an IP-range mirror, an HTTP API, MCP servers, A2A agents and feeds. All free, all keyless. No consulting, no SLA, nobody to hire."
canonical: "https://www.pathwren.workers.dev/services"
url: "https://www.pathwren.workers.dev/services.md"
format: "markdown"
source: "the bytes of /services, in the build that wrote the page"
generator: "surfaces/ai-crawler-index/build.py"
generated: "2026-09-05T22:29:56+00:00"
license: "CC0-1.0"
---

# Services

> Everything this host runs: 12 public services — a crawler index, an IP-range mirror, an HTTP API, MCP servers, A2A agents and feeds. All free, all keyless. No consulting, no SLA, nobody to hire.

**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.

```bash
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](https://www.pathwren.workers.dev/services.json) ·
what it costs: [/pricing](https://www.pathwren.workers.dev/pricing) ·
access and keys: [/register](https://www.pathwren.workers.dev/register) ·
formal description: [/openapi.json](https://www.pathwren.workers.dev/openapi.json) ·
terms: [/terms.html](https://www.pathwren.workers.dev/terms.html)

## The catalogue

| Service | Where | Price | Auth |
| --- | --- | --- | --- |
| **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/](https://www.pathwren.workers.dev/crawler/) · [/data/agents.json](https://www.pathwren.workers.dev/data/agents.json) · [/data/agents.csv](https://www.pathwren.workers.dev/data/agents.csv) | 0 | none |
| **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/](https://www.pathwren.workers.dev/ip-ranges/) · [/ip-ranges/all.json](https://www.pathwren.workers.dev/ip-ranges/all.json) · [/ip-ranges/all.txt](https://www.pathwren.workers.dev/ip-ranges/all.txt) · [/status.json](https://www.pathwren.workers.dev/status.json) | 0 | none |
| **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/](https://www.pathwren.workers.dev/policy/) · [/robots/block-ai-training.txt](https://www.pathwren.workers.dev/robots/block-ai-training.txt) · [/robots/allow-ai-search-only.txt](https://www.pathwren.workers.dev/robots/allow-ai-search-only.txt) | 0 | none |
| **Five generated config snippets** The same policies as nginx, Caddy, Cloudflare and .htaccess rules, generated from the index rather than typed. | [/snippet/](https://www.pathwren.workers.dev/snippet/) | 0 | none |
| **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](https://www.pathwren.workers.dev/openapi.json) · [/reference](https://www.pathwren.workers.dev/reference) · [/api/v1](https://www.pathwren.workers.dev/api/v1) | 0 | none |
| **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/](https://www.pathwren.workers.dev/tools/) · [/tools/whoami](https://www.pathwren.workers.dev/tools/whoami) · [/tools/example](https://www.pathwren.workers.dev/tools/example) · [/tools/verify-crawler](https://www.pathwren.workers.dev/tools/verify-crawler) | 0 | none |
| **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](https://www.pathwren.workers.dev/mcp) · [/mcp/doctor](https://www.pathwren.workers.dev/mcp/doctor) · [/mcp/lint](https://www.pathwren.workers.dev/mcp/lint) · [/mcp/netcheck](https://www.pathwren.workers.dev/mcp/netcheck) · [/mcp/robots](https://www.pathwren.workers.dev/mcp/robots) · [/mcp/triage](https://www.pathwren.workers.dev/mcp/triage) | 0 | none |
| **Seven A2A agents** The same capabilities as Agent2Agent skills, each with a published agent card at /.well-known/agent-card.json. | [/a2a](https://www.pathwren.workers.dev/a2a) · [/.well-known/agent-card.json](https://www.pathwren.workers.dev/.well-known/agent-card.json) | 0 | none |
| **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](https://www.pathwren.workers.dev/changes.json) · [/feed.xml](https://www.pathwren.workers.dev/feed.xml) · [/feed.json](https://www.pathwren.workers.dev/feed.json) | 0 | none |
| **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/](https://www.pathwren.workers.dev/bot/) · [/data/observed-clients.json](https://www.pathwren.workers.dev/data/observed-clients.json) · [/data/observed-clients.csv](https://www.pathwren.workers.dev/data/observed-clients.csv) | 0 | none |
| **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](https://www.pathwren.workers.dev/llms.txt) · [/documents.json](https://www.pathwren.workers.dev/documents.json) · [/AGENTS.md](https://www.pathwren.workers.dev/AGENTS.md) · [/sitemap.xml](https://www.pathwren.workers.dev/sitemap.xml) | 0 | none |
| **Writing** Long-form pieces about crawler and agent traffic, and what it costs to block it. | [/blog/](https://www.pathwren.workers.dev/blog/) · [/blog/index.json](https://www.pathwren.workers.dev/blog/index.json) | 0 | none |

## What is not offered, in writing

| You may be looking for | The honest answer |
| --- | --- |
| Consulting, contracting or an agency engagement | There 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 you | Every 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 tier | Best 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 hire | Not 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 quota | None 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 demo | Nothing 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](https://www.pathwren.workers.dev/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](https://www.pathwren.workers.dev/terms.html) ·
privacy: [/privacy.html](https://www.pathwren.workers.dev/privacy.html) ·
security contact: [/.well-known/security.txt](https://www.pathwren.workers.dev/.well-known/security.txt) ·
who this is: [/about](https://www.pathwren.workers.dev/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](https://www.pathwren.workers.dev/blog/). The same walk fetched [/pricing](https://www.pathwren.workers.dev/pricing),
[/about](https://www.pathwren.workers.dev/about) and [/contact](https://www.pathwren.workers.dev/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.

## Sitemap

- [Full sitemap (XML)](https://www.pathwren.workers.dev/sitemap.xml) — every page, with dates
- [Full sitemap (markdown)](https://www.pathwren.workers.dev/sitemap.md) — the same map, readable
- [llms.txt](https://www.pathwren.workers.dev/llms.txt) — the whole host in one text file
- [documents.json](https://www.pathwren.workers.dev/documents.json) — every document, with its ETag
- [A2A agents](https://www.pathwren.workers.dev/a2a.html)
- [About and method](https://www.pathwren.workers.dev/about.html)
- [API](https://www.pathwren.workers.dev/api.html)
- [Changelog](https://www.pathwren.workers.dev/changelog.html)
- [Compliance](https://www.pathwren.workers.dev/compliance)
- [Contact](https://www.pathwren.workers.dev/contact)
- [Impressum · Anbieterkennzeichnung](https://www.pathwren.workers.dev/impressum)
- [AI Crawler Index](https://www.pathwren.workers.dev/index.html)
- [No model runs here](https://www.pathwren.workers.dev/inference.html)
- [Legal](https://www.pathwren.workers.dev/legal)
- [MCP server](https://www.pathwren.workers.dev/mcp-doctor.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-lint.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-netcheck.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-robots.html)
- [MCP transport: the GET and HEAD leg](https://www.pathwren.workers.dev/mcp-transport.html)
- [MCP server](https://www.pathwren.workers.dev/mcp-triage.html)
- [MCP server](https://www.pathwren.workers.dev/mcp.html)
- [Packages](https://www.pathwren.workers.dev/packages.html)
- [Pricing](https://www.pathwren.workers.dev/pricing)
- [Privacy](https://www.pathwren.workers.dev/privacy.html)
- [API reference](https://www.pathwren.workers.dev/reference)
- [Access, keys and sign-up](https://www.pathwren.workers.dev/register)
- [Security posture](https://www.pathwren.workers.dev/security.html)
- [Services](https://www.pathwren.workers.dev/services)
- [Upstream status](https://www.pathwren.workers.dev/status.html)
- [Terms of use](https://www.pathwren.workers.dev/terms.html)
- [Trust](https://www.pathwren.workers.dev/trust)

## Machine copies of this page

- [HTML (canonical)](https://www.pathwren.workers.dev/services)
- [JSON](https://www.pathwren.workers.dev/services.json)
- [Markdown](https://www.pathwren.workers.dev/services.md) — this document

This document is a markdown rendering of [https://www.pathwren.workers.dev/services](https://www.pathwren.workers.dev/services), generated from that page's own bytes in the same build. The HTML page is canonical.
