Skip to the page

Competitor monitoring with MCP: a table your agent rechecks on a schedule

SpecStream

Monitoring · · 7 min read

Competitor monitoring over MCP works best when your agent owns a table of facts instead of a pile of page diffs. Connect the agent to SpecStream's MCP server at https://api.specstream.ai/mcp, describe the facts you track for each competitor, approve the price, and turn the table into a monitor. Each run reads the live web again, labels every row changed, unchanged or no longer matching, and sends only the new and changed rows to Slack, a sheet, your CRM or a signed webhook.

Below: what Visualping's monitoring study says to watch, the setup in six steps, the prompts to paste, how the agent reads what changed, and what each run costs.

What 14,678 competitor monitors show

Visualping published the largest public count of what competitor watchers track: its H1 2026 competitor monitoring report covers 14,678 competitor page monitors run by 8,161 of its self-serve users from January 1 to June 30, 2026. Four numbers from it shape a monitor:

Finding Number
Monitors that saw at least one change in six months 77.5% (11,381 of 14,678)
Share of monitors on homepages and top-level pages 38.4%
Share of monitors on pricing and plans pages 1.4%
Pricing monitors that saw at least one change 84.5%

A separate Visualping analysis of more than 17 million checks in March 2026 found that 11.5% of checks detected a change worth an alert. The report counts a monitor once whether its page changed one time or twenty, and its rates are not adjusted for how often each monitor checks, so read them as six-month incidence, as Visualping says.

What follows for your monitor:

  • Watch the facts that move. 84.5% of pricing monitors saw a change in six months, yet pricing pages hold 1.4% of the monitors. Plan names, prices and limits are the rows to track first.
  • Expect noise from whole pages. Most competitor pages change at some point, and most checks find nothing worth an alert. An alert that names the fact that moved is the one your team reads.
  • Check on a calendar that fits the fact. A weekly recheck of prices catches a change within seven days; a daily one runs seven times as many rechecks.

Why a table and not a page diff

A page watcher counts pages and checks. Visualping's paid plans start at $14 a month for 1,000 checks across 10 pages, and changedetection.io's $8.99 monthly subscription includes 5,000 page watches. Each alert says a page moved, and your agent still has to work out which fact moved with it.

A SpecStream monitor counts rows. A row is one set of facts about one competitor, for example a plan with its monthly price, its seat limit and the page that prints them. When a run rechecks the row, a changed value comes back with its earlier value and the page where the new one was seen. Values that did not change keep the date they were first read, so the agent never mistakes a recheck for news.

A page watcher A SpecStream monitor
What it tracks Pages you list Facts you describe, on pages SpecStream finds
What an alert holds The page changed The fact, its value before and now, and the page
New competitors Only pages you add New matches for the request arrive as new rows
Where it lands Email or a feed of diffs Slack, a sheet, your CRM, a signed webhook or your agent

Set it up

  1. Connect your agent. Add the MCP server https://api.specstream.ai/mcp (Streamable HTTP). A client that supports OAuth signs you in; any other client sends your API key as Authorization: Bearer <key>. Setup for each client has the exact lines. In a client that reads mcpServers, the entry is:
{
  "mcpServers": {
    "specstream": {
      "url": "https://api.specstream.ai/mcp",
      "headers": { "Authorization": "Bearer YOUR_SPECSTREAM_API_KEY" }
    }
  }
}
  1. Describe the table. Write it the way you would brief an analyst: the competitors, the facts per row, and the conditions every row must meet. The agent sends it to compile, which reads it back as conditions and facts you can edit.
  2. Price it. quote_capacity_work returns the most the run can cost. It spends nothing, and the quote lasts 30 minutes.
  3. Approve and run. authorize_capacity_work starts the work with the maximum you approved in confirm_max_cents. get_find follows it, and list_find_rows reads the rows with their sources.
  4. Make it a monitor. create_capacity_schedule repeats the work hourly to yearly, in your timezone, with a limit per run and a limit per month (monthly_maximum_cents). A run that would go past either limit, or past the balance, is blocked: nothing runs and nothing is charged.
  5. Choose where changes go. set_schedule_delivery sends new and changed rows to notifications, a Slack channel, a connected tool such as Google Sheets or HubSpot, or a signed webhook. create_webhook adds the webhook and shows its signing secret once.

Prompts to paste

Paste these into an agent connected over MCP, one at a time:

Use SpecStream. Build a table of the paid plans of linear.app, notion.so and asana.com: plan name, monthly price per seat, seat limit, and the page that prints them. Show me the price before you run it.
Make that table a monitor: recheck it every Monday at 9am Paris time, up to $2 a run and $10 a month, and post new and changed rows in #competitors on Slack.
What changed in the competitor plans table since last week? Give me each changed value, before and now, with its page.

How the agent reads what changed

  • get_collection_changes compares the table with its earlier results: each changed fact, before and after, and where it was seen.
  • get_revisit reads what one recheck looked at: what still holds, what changed, and what it could not reach. It pages with next_after until that is null.
  • list_capacity_occurrences lists each run of the monitor, completed, blocked or missed, with the reason.
  • update_capacity_schedule pauses, resumes or deletes the monitor. Missed runs are never bought later.

A page that could not be read on a run leaves its row as it was, and the run says so. Your agent never reports a fetch failure as a price cut.

What it costs

Building the table is billed per delivered row: 5¢, 15¢ or $1 depending on what the row needs, plus 5¢ for a person's email and 15¢ for a phone. A recheck charges half the row rate for a row that changed or is new, and 1¢ for a row that comes back unchanged.

Take 3 competitors with 4 paid plans each: 12 rows. If the quote prices them at the 5¢ rate, the table costs 60¢ to build. A weekly recheck that finds nothing new costs 12¢, so a quiet month of Mondays costs under 50¢. Duplicates and rows a page contradicts are not charged, and a run that finds nothing costs nothing. New accounts get $10 of credit, no card. Billing has the details.

Signals you do not have to build

Some competitor news is filed before it is announced. SpecStream reads SEC Form D filings (funding rounds), Form 8-K filings (new executives) and state WARN notices (layoffs), and on Signals each one becomes a request your agent can watch. For records SpecStream already holds, lists come with a monthly feed of the rows the source adds each week, $19 a month minimum.

When the agent needs one fact now, not a table kept up to date, search_web answers from the live web at $5 per 1,000 searches of up to 10 results, and read_pages returns the main text of the pages you name at $0.80 per 1,000 pages. Both are on the same MCP server and key. See the Search API and the Extract API.

More on monitors: Monitoring and keeping data up to date.

More from the blog

Every post