13 October 2026
Bot user agents could be a surprisingly good way to advertise to developers
I built an MCP server for Fantasy Premier League and submitted it to one MCP directory. The next day I had more than 100 different agents in my logs.
I started looking up the user agents, and with some help from Claude, checking who was behind them. There were quite a lot of interesting ones.
None of them seemed to have anything to do with Fantasy Premier League, and as far as I can tell no humans have used my MCP yet. Getting agents to use something turns out to be much easier than getting humans to.
A few things I kept wondering about:
- Are these user agents a form of advertising for their creators? Can you actually get traffic from people like me, scrolling through Grafana and reading user-agent strings? One of them belongs to an online game, and I can't see why an online game would care about monitoring a football app.
- Why are there so many MCP health-monitoring tools? There seem to be dozens of directories checking the health of other MCP servers. Is anyone making money from that? Scanning the web like this takes effort and resources, and it's hard to imagine people doing it for fun.
- Some vibe coders really do put localhost in their user-agent strings, e.g.
ToolVetProbe/1.0 (+http://localhost:8787/methodology).
The actual headcount
I went through my production nginx and application logs, the same logs I ship to Grafana/Loki. This snapshot ends on 12 October 2026 at about 19:39 UTC. The nginx files I still have go back to 28 September; the MCP traffic starts on 7 October.
Across my two MCP endpoints (/mcp and /chatgpt), leaving out my own home network and clients I'd labelled as tests, I found:
| Measure | Count |
|---|---|
| HTTP requests to the two MCP endpoints | 4,142 |
| Distinct exact user-agent strings | 145 |
| Requests from the busiest string, SentinelOracle | 1,725 |
| Tool calls in my application log, excluding labelled tests | 104 |
145 strings doesn't mean 145 agents. A user agent is just how a caller describes itself. Every version counts separately, and browsers, generic HTTP libraries and missing headers are in there too. Several services can share a string, one service can send several, and anyone can copy somebody else's name tag.
4,142 requests doesn't mean 4,142 FPL questions either. An MCP client can initialise, acknowledge the initialisation and list the tools without ever calling one. The Streamable HTTP spec explains why each of those shows up as a separate POST, including the 202s for notifications.
My application log counts something different: tools actually being run. Those 104 calls span 7–12 October: 97 worked and 7 returned tool errors. 20 were labelled claude, 21 chatgpt and 63 other. Those are my own rough labels, not verified identities, and definitely not a count of people. Some of my own connector checks are probably in there too.
I still don't know how to properly count humans using my MCP. It looks like a much harder problem than getting agents to ping me.
Who came to the party?
I had a script follow the public URLs in the headers. Here are some of the more memorable visitors. Counts are HTTP requests to my MCP endpoints, not tool calls, and the descriptions come from their own pages unless I say otherwise.
| Name in my logs | Requests | What I found behind the URL |
|---|---|---|
SentinelOracle/0.1 |
1,725 | Glimind, a tool reliability service: preflight checks, routing, telemetry. Its docs say its probes initialise and list capabilities without calling tools. |
rokmcp-collector/0.2 |
235 | Points at rokmcp.com/bot, which returned 503 when I checked, so I couldn't find out what it does. |
GolemreachTrustBot/0.1 |
64 | A registry health and tool-change probe, run by a fantasy MMORPG where humans and AI agents share a world. A different sort of fantasy league. |
BrickBlueBot/0.1 (two variants) |
53 | Brick Blue's registry crawler, indexing agent tools and checking how they can be used. Unlike most visitors, its policy allows a few calls to selected read-only tools. |
histor/0.1.0 |
39 | HISTOR, a signed transparency log for tool definitions: it tracks whether the descriptions and schemas an agent trusts change later. |
LEGION-tlog/1.0 |
36 | Another tool-definition transparency probe. It says it hashes public tool lists, records changes and never calls tools. |
ProofBench/0.1 |
32 | Claims to be an MCP registry health probe, but its hostname didn't resolve when I checked. No idea what it really is. |
WellknownBot/0.1 |
26 | Wellknown's live agent/tool index. Its header even includes a link to my FPL Cat listing and a separate claim link. |
agent-tools.cloud-crawler/0.1 |
24 | A discovery directory mixing MCP servers, agent cards and paid APIs, with liveness and safety checks. |
FaceabotProbe/1.0 |
16 | Faceabot's health report, checking whether public agent tools actually respond. |
referencesource-mcp-health/0.1 |
12 | Reference Source's MCP health survey, which does a real handshake and lists tools instead of counting any HTTP response as success. |
mcp.market uptime check |
11 | A marketplace's documented uptime checks, next to its grading rubric for reliability and security. |
GlideMcpIndex/1.0 |
9 | Glide's hosted-MCP directory, publishing endpoint status, uptime and latency. |
There were also 356 requests from AgentRankProbe/0.1, whose link points at a Tailscale hostname, so I didn't go digging. Another 348 came from Python/3.11 aiohttp/3.14.4, and every one got a 406. Something is failing at the HTTP layer for them, but I can't tell who they are or which header they're getting wrong.
And there were names I was happy to see: Claude-User sent 195 requests, openai-mcp/1.0.0 sent 51, and a version labelled (Codex) sent 16. That's encouraging, but it's still not 262 people managing their teams.
The long tail has research crawlers, schema archives, maintenance monitors and clients called just node, Ruby or curl. Some of the documentation URLs were broken. Two pointed at localhost or 127.0.0.1, like CALLSET-Directory/1 (+http://127.0.0.1:4319/market?source=directory; ...), which would mean my computer if I clicked them. So yes, people really do ship bots with their localhost URLs in the user agent.
Why are there so many?
A public registry is a ready-made crawl queue. Nobody needs to find my little football app through Google: they can go through the list of published MCP endpoints and ask each one what it offers.
That's enough to support a few different kinds of projects:
- Discovery: sort tools by what they can do, then help other agents find them.
- Reliability: check whether yesterday's useful endpoint still answers today.
- Security and change tracking: record a tool's description and schema, and notice when they change.
- Research: measure protocol support, authentication and the shape of the ecosystem.
That also explains why they keep coming back. A directory only needs to import a listing once, but a service selling up-to-date reliability or change detection has to keep checking.
Glimind's SentinelOracle alone made 41.6% of all the requests in this snapshot. One service checking in over and over can dominate your traffic without asking a single football question.
My guess is that a big part of this traffic is infrastructure being built around agents. The headers and the bots' own policy pages back that up. What they don't tell me is which of these crawlers are actually driven by an LLM, whether several of them belong to the same people, or whether anyone is paying for what they're building.
There might be an AI agent on the other end. There might also be a cron job with excellent branding.
Is the user agent an ad?
It certainly worked on me.
I saw an unfamiliar name in Grafana, followed its URL and learned about a product. As a way to reach a developer who has just shipped an MCP server, that's remarkably precise.
The good version is a calling card: who runs this bot, what it reads, how often it comes back, and how to contact them or opt out. That's much better than an anonymous python-requests.
But the same URL can also be the start of a sales funnel.
Wellknown's header has three links: its bot policy, my existing listing, and a page to claim it. The listing page says verified owners get more frequent checks, alerts and a ranking boost. I never went looking for that service; its bot introduced it to me. My FPL Cat listing there shows that path pretty clearly.
Brick Blue's bot page is written for people who found its name in their logs: it explains the crawler, invites you to claim a listing and shows how to connect to its hub. It also describes a separate, limited outreach mechanism, which is more openly promotional than just leaving a contact URL. I can't tell from my logs whether that outreach ever reached my server.
So my take: a URL in a user agent can be responsible disclosure and developer marketing at the same time. The marketing effect is real; it worked on me. But my logs can't prove that advertising was the motive behind any particular request, and a broken bot page isn't evidence of bad intent.
What I took away
Getting bots to visit was the easy part: one directory listing and they came on their own. Getting a person to ask my MCP a real FPL question is the hard part, and I don't yet have a good way to even count when that happens. If you've solved telling human MCP usage apart from crawlers, I'd love to hear how.
If you play FPL and use Claude, you can try it yourself: add https://fplcat.com/mcp as a custom connector and ask it about your team, captain picks, injuries or fixtures. The rest of the site is at fplcat.com.
More FPL strategy
- The Top 100's GW6 Bets: Newcastle Disappoints, Brighton Pays Off
- I Let My FPL AI Pick a Free Hit. It Dropped Haaland.
- Rate Your FPL Team With AI: Talk FPL With ChatGPT or Claude
- Best FPL DEFCON Defenders: Who to Pick and Who Was Best Last Season
- FPL Injuries: International Duty Is No Riskier Than a Gameweek
- Fulham: An FPL Team to Watch Before Their Two Easiest Fixtures of the Season
- FPL DEFCON Midfielders: 16 with Attacking Returns (GW1–5)
- How FPL Bonus Points Work: The BPS Explained (2026/27)
- What the Top 100 FPL Managers Did Differently: The Elite Template After GW5
- Inside the World's #1 FPL Team: Every Chip, Every Transfer, Gameweek by Gameweek
- Should You Buy Pascal Groß in FPL? Not Yet — Here's Why
- Welcome to FPL Cat
- Fantasy Premier League Fixture Difficulty Ratings: What They Do (and Don't) Tell You