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 two surfaces. Every call is logged. The counts below are live.

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
61
invocations, not handshakes
Succeeded
82%
50 of 61 tool calls
Handshakes
66
a client connected
Named clients
5
41 calls unidentified
Last tool call
24 Sept
since 16 Sept 2026
Last handshake
7 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 “127 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
020406016 Sept24 Sept26 Sept28 Sept1 Oct3 Oct5 Oct7 Oct

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

Which clients

ClientTool callsHandshakesTools
unidentified4108
Anthropic/ClaudeAI11365
claude-code8284
claude-code/lebonbon-audit101
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_citation_sources7826
get_ai_hotel_landscape_manifest7118
get_chain_vs_independent_mix4440
get_hotel_brand_leaderboard3239
get_ai_hotel_visibility3374

By surface

SurfaceTool callsHandshakes
webmcp39—
mcp2266

By actor

ActorTool calls
agent59
human2

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——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——
initializemcpclaude-code——
initializemcpAnthropic/ClaudeAI——

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.