Skip to main content
Glama

Check website uptime and changes since last check

monitor_website_changes

Checks web pages for uptime and changes since the last check, including content, price, SEO, and visual diffs; reuse a state store to compare against a saved baseline.

Instructions

Checks web pages for uptime and for changes since the last check. Per URL: up/down/blocked status, HTTP status, response time, TTFB, redirect chain, DNS result and TLS days-to-expiry; for pages checked before, a change verdict (baseline | no-change | changed) with a plain-English summary and a unified diffExcerpt. Detects text changes in the whole page or a CSS/XPath region, price changes, list items added/removed, keywords appearing/disappearing, SEO-critical changes (title, meta description, canonical, H1, noindex appearing), robots.txt/sitemap changes and, in browser mode, screenshot pixel differences. The FIRST call for a URL returns changeStatus "baseline": reuse the same stateStoreName on later calls to compare. Saves a private snapshot in the caller's Apify storage (nothing on the target site changes). Dates, times, UUIDs and copyright years are ignored by default; add ignorePatterns/excludeSelectors for false changes. Respects robots.txt; blocked pages are not charged. Browser mode costs 3x an HTTP check. Runs an Apify Actor on the caller's own Apify account (billed by Apify pay-per-event, capped per run).

Input Schema

NameRequiredDescriptionDefault
modeNo"http" is fast and cheap; "browser" renders JavaScript and enables visual diffs (costs 3x).http
urlsYesPages to check, e.g. ["https://shop.example/pricing"]
keywordsNoWords or phrases to watch; reported when they appear or disappear.
monitorsNoOptional per-URL settings that override the global ones.
seoChecksNoFlag SEO-critical changes: title, meta description, canonical, H1, noindex.
visualDiffNoCompare screenshots pixel by pixel (browser mode only).
trackPricesNoDetect and compare prices on the page.
checkSitemapNoAlso compare the site's sitemap.xml.
contentXPathNoXPath of the region to compare
resetBaselineNoDiscard the saved snapshot and start a new baseline.
checkRobotsTxtNoAlso compare the site's robots.txt.
ignorePatternsNoRegexes masked before comparing
keywordAlertOnNoAlert when watched keywords appear, disappear, or both.both
stateStoreNameNoYour snapshot namespace (e.g. a project name); reuse it to compare with earlier calls.default
contentSelectorNoCSS selector of the region to compare
excludeSelectorsNoCSS selectors to ignore when comparing (e.g. ads, timestamps, carousels).
minChangePercentNoIgnore text changes smaller than this percentage of the content.
visualThresholdPercentNoMinimum percentage of changed pixels that counts as a visual change.

Output Schema

NameRequiredDescriptionDefault
runYes
toolYes
itemsYesResult records (trimmed for context). Records often carry a recordType discriminator.
notesYes
dryRunYestrue = built-in SAMPLE data from this server, NOT a real lookup
statusYes"running" = still working; call get_run_results with run.runId later
summaryYes
truncatedYestrue = more records exist than are included here (see datasetUrl)
datasetUrlNo
disclaimerNo
itemsTotalYes
sampleDataYestrue = the Actor returned fictional sample rows (e.g. no credentials configured); never present as real

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.1

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given readOnlyHint=false and idempotentHint=false, the description explains exactly why: it writes a private snapshot to the caller's Apify storage ('nothing on the target site changes'), runs on the caller's own Apify account with pay-per-event billing capped per run, and non-idempotency comes from baseline/diff semantics. It additionally discloses that blocked pages are not charged and that dates/UUIDs/copyright years are ignored by default to suppress false positives.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, then output shape, then the baseline/state workflow, then constraints and billing. The single-dense-paragraph format and the mid-sentence catalog of detection types partly duplicate schema descriptions, which costs a point but does not bury the critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 18 parameters, an output schema, and stateful cross-call behavior, an agent has everything needed to call it correctly: required urls, baseline semantics, state reuse, cost multiplier, false-positive mitigations, and billing model. Return fields are covered by the output schema, and the description's summary of them is a bonus rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already carries the per-parameter text. The description still adds workflow-level meaning the schema cannot: stateStoreName must be reused across calls for comparisons, mode costs 3x in browser, and ignorePatterns/excludeSelectors exist specifically to suppress false changes. Some enumeration (prices, keywords, seoChecks, sitemap) largely restates schema properties, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'Checks web pages for uptime and for changes since the last check,' which cleanly separates it from siblings like full_website_audit (one-off audits) and fetch_clean_markdown (content retrieval). The enumerations that follow (uptime, diff, price/keyword/SEO change detection) confirm the scope without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the stateful workflow explicitly: the first call returns 'baseline' and later calls must reuse the same stateStoreName, and resetBaseline discards the snapshot. It also flags cost tradeoffs (browser mode 3x) and robots.txt blocking. It stops short of naming sibling tools or stating when not to use this versus a full audit, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.