Nicolas Sitter
Live project

Agent tools — and who actually calls them

This site publishes its research and its AI-hotel-visibility data as tools an AI agent can call, over three surfaces: WebMCP in the browser, MCP at /api/mcp, and an A2A agent (PACT) at /a2a. Every call is logged. The counts below are at most a minute old.

Why

There is a great deal written about making a website “agent-ready” and almost no data on whether anything then turns up. Our own census of the MCP ecosystem found that 48% of probed travel and hotel MCP servers expose zero working actions — plenty of announcements, far fewer live endpoints. The obvious next question is what happens after you build one.

So this page is the experiment run on ourselves. The tools are real, the logging is unconditional, and the number is whatever it is. If the answer stays almost nobody for months, that is the finding, and it is more useful than another guide telling you to ship an MCP server.

Live data

Tool calls
63
invocations, not handshakes
Succeeded
83%
52 of 63 tool calls
Handshakes
122
a client connected
Named clients
10
42 calls unidentified
Last tool call
12 Oct
since 16 Sept 2026
Last handshake
29 Oct
connected, tools untouched

These are two different events and the split matters. A handshake is an MCP client connecting — initialize, which this server logs as its own row because connecting at all is a real observation. A tool call is an agent actually invoking something. This page used to add them together, which is why it once read “185 tool calls” and dated itself to the most recent handshake. Clients connect, list the tools, and then mostly do not call them — on the numbers above, the gap between those two dates is the finding.

Tool calls per day
0112226 Sept29 Sept3 Oct6 Oct9 Oct13 Oct16 Oct21 Oct24 Oct27 Oct

Bars count tool invocations only; hover a day to see how many handshakes it also had.

Which clients

ClientTool callsHandshakesTools
unidentified4208
Anthropic/ClaudeAI11755
claude-code8414
trinity-research/0.1101
claude-code/lebonbon-audit101
ziwei-ore010
local-test010
trinity-research010
firewall-check010
Anthropic/Toolbox010
Anthropic010

An MCP client names itself in initialize — which this server never requires, so a hand-rolled request can skip it and land here too. WebMCP has no handshake at all, so every WebMCP call is structurally unidentified here, not just uncooperative. A tool can also volunteer a client argument (see “How” below); this column reflects whichever identity won.

Which tools

ToolCallsAvg ms
list_race_explorers145
get_article12294
search_research_articles1133
get_ai_hotel_landscape_manifest8123
get_ai_citation_sources7826
get_chain_vs_independent_mix5408
get_hotel_brand_leaderboard3239
get_ai_hotel_visibility3374

By surface

SurfaceTool callsHandshakes
webmcp39—
mcp24122

By actor

ActorTool calls
agent60
human3

Every webmcp call is classed agent unconditionally — a human reading this page cannot trigger executeTool(), so the surface itself is proof, unlike a self-reported name. On mcp, “agent” means the caller named itself somehow; “unknown” is a real answer, not rounded up to look better.

Most recent calls

ToolSurfaceClientRowsms
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpziwei-ore——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcplocal-test——
initializemcpclaude-code——

How

MCP server

Any MCP client, anywhere. JSON-RPC 2.0 over HTTP, stateless, no auth.

https://nicolassitter.com/api/mcp
WebMCP

The same tools registered into the page via document.modelContext, for an agent driving a browser tab. Chrome-only and pre-standard.

Both surfaces read one registry, so a tool exists on both or on neither. Every tool goes through this site’s own public HTTP API rather than the database — they cannot return anything you could not fetch yourself.

Every tool also accepts an optional client string — “identify yourself, e.g. ‘my-agent/1.0’”. It does nothing functionally. WebMCP has no handshake of its own to supply a name, and this server never requires MCP’s initialize either, so this is the only lever either surface has for a caller to be named instead of showing up as “unidentified.” Whether callers bother is itself a measurement.

The 8 tools

ToolReads
search_research_articlesSearch Nicolas Sitter's published research on AI search, answer engines and hotel technology by …
get_articleFetch one research article by its URL slug — the last path segment of a /research/<slug> URL…
get_ai_hotel_landscape_manifestRead the manifest for the AI Hotel Landscape dataset: which AI platforms are tracked (ChatGPT, G…
get_ai_hotel_visibilityGet the hotels an AI platform actually recommends for a destination in a given week, ranked by h…
get_hotel_brand_leaderboardGet the chain-brand leaderboard for one AI platform in one week: which hotel groups (Marriott, A…
get_ai_citation_sourcesGet what an AI platform cites when it answers hotel questions — the mix of source categories (OT…
get_chain_vs_independent_mixGet the share of chain hotels versus independents versus vacation rentals in what each AI platfo…
list_race_explorersList the endurance races this site publishes results explorers for — L'Étape du Tour, the Marath…

What is logged

Recorded
  • Tool name, surface, success, duration
  • The client’s self-reported name and version
  • Truncated user agent
  • Whitelisted parameters only, capped at 200 characters
Never recorded
  • IP addresses
  • Cookies, session ids, fingerprints
  • Any parameter not on a tool’s own whitelist
  • Anything at all about human readers of this page

The whitelist is per tool and additive by choice: a tool that gains a parameter does not start logging it until someone says so.