1001 SEO Media
All posts
By 1001 SEO Mediamcpclaudecursorpromptwatchagency workflow

MCP in the Agency Workflow: Claude, Cursor, and Promptwatch Data

How we wire Promptwatch into Claude and Cursor over MCP so the agent reads live visibility data, proposes actions, and a human still ships the change.

Most of the "MCP" content online describes the protocol in the abstract. This is not that. This is the concrete workflow we run on client accounts where the analyst already lives in a code editor or a chat window, and where copying CSVs out of a dashboard every week is the bottleneck. We connect Promptwatch to Claude and Cursor over the Model Context Protocol, the agent reads the project's live visibility data, and a human still ships the change. The platform is at Promptwatch, the platform we run client programs on, and its MCP server is the piece that makes the loop fast.

If you have never used MCP, the short version is that it lets a model call tools on a server the way a function calls another function. Promptwatch hosts a streamable HTTP server. You point Claude Desktop or Cursor at it, authenticate with a key, and the model gains a set of read and write tools that operate on your actual project data. A read-only key hides the write tools, which is what we hand to junior analysts. A full key is what the account lead holds.

The tools we actually call

There are many tools on the server. We use a small subset on a normal retainer. The read tools that matter for weekly review are listPrompts and getPrompt for the prompt list and per-prompt detail, getVisibilityTimeSeries for the trend, getCitations and getCitationTopPages for where the client is being cited, getCompetitorHeatmap for share of voice, listContentGapPrompts and getContentGapRecommendations for what to write next, getCrawlerTrend and getTopCrawlerPages for the crawl diagnostic, and getVisitorTrend with getVisitorTopPages for the traffic loop. For social and ad context we use listRedditCitations, listYoutubeCitations, and listAds.

The write tools we use are narrower. createContent and listContentSlots drive the Content Agents review inbox. acceptContentSlot, publishContentLive push a reviewed draft. createActionItem and updateActionItemStatus let the agent file a ticket in Unified Actions rather than narrating it. createPromptsBulk is how we add a new cohort without touching the UI. createReport is how the agent assembles the monthly deck source.

That is the working set. The rest of the server exists, but a workflow that calls twenty tools is a workflow no one trusts. We keep the call graph small and readable.

A real weekly loop in Cursor

Here is the loop we run most weeks on a client that publishes to Webflow. The analyst opens Cursor with the project repo checked out. The MCP connection is configured in .cursor/mcp.json pointing at the Promptwatch server with a read-write key.

The analyst prompts the agent: pull last week's visibility trend for the frozen prompt list, flag any prompt that flipped from cited to absent, and for each flip pull the crawler trend and the top crawler pages for the affected section. The agent calls getVisibilityTimeSeries, reads the deltas, then for each degraded prompt calls getCrawlerTrend and getTopCrawlerPages. It returns a short table: prompt, last cited date, crawler hit count this week, top page, and the HTTP status distribution.

That table is the work. A prompt that flipped off and whose top page returned a 5xx is a fix, not a content brief. A prompt that flipped off and whose crawler hits are healthy is a content gap. The agent proposes the next step for each row: file an action item for the 5xx, or pull a content gap recommendation for the absent prompt. We let it call createActionItem for the infrastructure row and listContentGapPrompts for the content row. Two write calls. Both are reversible. Neither publishes anything.

For the content row, the agent calls getContentGapRecommendations, drafts a brief, and we review it in the thread. If the brief is good, the analyst asks the agent to call createContent to drop a draft into the Content Agents review inbox. The draft does not publish. It waits. A human opens the inbox, edits the draft, and either acceptContentSlot to push it as a CMS draft or publishContentLive to ship it. Most weeks we push as draft. Autopublish stays off.

The same loop in Claude

In Claude Desktop the loop is the same, the surface is different. The Claude connector runs on the same MCP server, so the tools are identical. We use Claude when the deliverable is a written brief or a client email rather than a code change. The analyst opens a thread, asks the agent to pull the week's competitor heatmap and the content gap prompts, and the agent calls getCompetitorHeatmap and listContentGapPrompts. It returns the rows. The analyst asks for a one-page brief on the top three gaps. The agent writes it. We edit the brief and paste it into the client deck.

The reason this beats copy-paste out of a dashboard is that the agent can hold the whole project in context and reason across tools. "Which competitor gained on the prompts we lost, and which of their pages are now cited instead of ours" is a question that takes three tools to answer and one the dashboard was not built for. The agent calls getCompetitorHeatmap, then getCitations for the gained competitor, then getCitationTopPages. The answer is a row, not a screenshot.

Guardrails we keep

We keep three guardrails on every MCP-driven account. The first is a read-only key for anyone who is not the account lead. A junior analyst pulling data with listPrompts and getVisibilityTimeSeries cannot accidentally publish a draft. The second is that write tools that publish, publishContentLive especially, are only ever called by a human in the loop, never by the agent on its own initiative. The agent can call createContent to draft. It does not call publishContentLive without a human saying go. The third is that every action item the agent files in Unified Actions gets ranked by a human before it gets done. The agent can propose. It does not prioritize.

We also do not let the agent edit the prompt list mid-trend. createPromptsBulk is for adding a new cohort with a clear start date, not for quietly inserting prompts that make the trend look better. The frozen list rule from the program holds inside the MCP workflow too.

What this replaces and what it does not

This replaces the weekly export-and-paste ritual. It does not replace judgment. The agent is fast at pulling rows and proposing the next call. It is bad at knowing which row matters to this client this week. That ranking is the work the account lead is paid for. MCP gets the rows in front of the human faster. It does not decide for the human.

If your team already lives in Cursor or Claude and you want the visibility data wired in instead of exported, write to us at hello@1001seomedia.com. We will scope the MCP connection, set the keys by role, and run the first weekly loop with you so the guardrails are in place before the agent touches anything live.