Agents leave receipts. We read 1.46 million of them
Written by Hollie Aghajani, Knut Melvær, J.Requena
Most "state of AI" reports we have seen run on surveys. You ask people how they use AI, they tell you what they hope is true, and you get an optimistic picture of a future that hasn't shown up yet.
We wanted firmer ground, so we did two things a survey doesn't. We measured what teams actually do, from the one place that can't round up: their AI agents' own tool calls. And we interviewed content leaders about why they do it. Quantitative reach, qualitative depth.
What we mean by "AI agent tool calls"
An AI agent (like Claude or ChatGPT) acts on its own to complete a task, not just answering a question. To get work done, it makes tool calls: individual requests to a system to do one thing. Query a document. Edit a field. Publish a change.
Every tool call in this report is one such request hitting Sanity's MCP server: a single, logged action an agent took against real content. When we say "agent actions," we mean the same thing. One action, one tool call, one row in the data.
Between September 2025 and April 2026, AI agent tool calls on Sanity's MCP server grew from 7,400 a month to 521,000. Across that window we logged 1.46 million calls, from 12,300 users across 12,500 organizations. What we see has gone past pilots. It's production work, running daily, and still counting.
The full report is at research.sanity.io/ai-content-ops, including a prompt that helps you get started with this in your org. This post goes into what's behind the research.
The heaviest AI user we found isn't an engineer
Eight percent of users drive 68% of the activity. That part won't surprise anyone. What stands out is that the most intense user in the entire dataset is a content marketer working through a chat window, not a developer on the command line.
The heavy content work that used to land on an engineer's plate, scripting a migration, wiring up a batch job, is now being done by the people who own the content, in plain language. AI isn't just making developers faster. It's moving the work off them entirely, to the people who know what the content is supposed to say.
What separates the power users isn't better models or more engineers. It's one person who owns the work and a few recurring workflows that compound. Often that person was never going to be an engineer in the first place.
9% of the work replaces weeks of it
Ninety-one percent of activity is daily work: querying, editing, publishing. The leverage is in the other 9%. Migration is 3% of calls, but each project replaces weeks of engineering work. Localization is 2%, but it used to mean an agency contract and weeks of back-and-forth.
None of it happens without structured content underneath. You can't ask an agent to expire a breaking-news flag or translate every product description into Japanese if the content is trapped in a page template. Structure is what makes content legible to an agent. That's why Sanity is the AI Content Operating System, not a place to store pages.
When agents tell you what they were trying to do
Even a couple of years in, there isn't much established practice for how to design and run agentic services at scale. "The agent as a user" is still a fresh field. What's interesting about agents is that they can tell us what they're trying to achieve when they make a tool call.
So we added a way to let them.
When an AI agent calls our MCP server, it can tell us why, in its own words. Every tool carries an optional intent field, and the models fill it in:
- “Publish 20 imported blog posts migrated from WordPress.”
- “Translating UI strings from English to Urdu (batch 6 of 6, final batch).”
- “Re-noindex article with incomplete body update to prevent template content exposure.”
The intent field is defined once and added to every agent-facing tool the server exposes over the Model Context Protocol. The field's description tells the model what to write: the goal, not the operation. Nothing in the tool logic reads it. It rides along as telemetry, logged once per call at the transport layer.