Skip to main content
Glama
Panda Web Security Tools

Panda Web Security Tools

Website Change Monitor: Page Diffs, Price & Keyword Alerts

website_change_monitor
Read-only

Monitor web pages over time and get alerts on added or removed text, price changes, and keyword appearances. Track competitor pricing, terms, or product pages on a schedule with optional webhook notifications.

Instructions

Check a watch list of web pages against snapshots saved by your previous run and report added and removed text, change percent, price changes and keyword appear/disappear alerts, with an optional webhook when something changes. Unlike ai_search_seo_audit (one-time quality audit) and hidden_ai_instructions_scanner (concealed AI-directed text), this is stateful diffing over time. Use when you need to track competitor pricing, terms, product or careers pages on a schedule. Do not use for a one-off page read or audit (use ai_search_seo_audit), or for pages behind a login. Parameters: the first run per monitorName only saves baselines (status 'baseline saved'); reuse the same monitorName for every later run, and use a new name for a separate watch list. cssSelector, ignorePatterns and ignoreNumbersAndDates cut false alarms from banners, counters and timestamps. Below minChangePercent the old snapshot is kept, so small edits accumulate. onlyReportChanges shrinks output but every page checked is still billed; unreachable pages are free. webhookUrl posts outside the Apify run; only set it if you control that endpoint. Returns per item: agentSummary, url, label, status, changed, changePercent, addedCount, removedCount, addedLines, removedLines, prices, priceChanges, keywordsPresent, keywordsAppeared, keywordsDisappeared, titleBefore, titleAfter, previousCheckAt.

Behavior: read-only; runs the Apify Actor pandadad0214/website-change-monitor (https://apify.com/pandadad0214/website-change-monitor) on your own Apify account. Price: $0.0015 per page checked. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxPages when you leave it unset, so it also limits what is billed; setting maxPages higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Input Schema

NameRequiredDescriptionDefault
urlsNoPages to watch. One URL per line. Optional label after ' | ' (e.g. https://acme.com/pricing | Acme pricing). Leave empty for a 2-page demo.
maxPagesNoMaximum pages. You pay per page checked, so this also caps the cost.
webhookUrlNoWebhook URL for changes (optional). Optional https URL (Slack/Zapier/Make/n8n webhook). Gets a JSON POST listing changed pages, only when something changed.
cssSelectorNoOnly watch this part (CSS selector). Optional. Compare only the matching elements, e.g. main or #pricing. Ignores headers, footers and banners.
monitorNameNoMonitor name. Snapshots are saved in your account under this name (key-value store panda-change-monitor-). Use different names for separate watch lists; each run compares with the last run of the same name.default
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
watchKeywordsNoAlert keywords. Optional. Reports when any of these words appear on or disappear from a page.
ignorePatternsNoIgnore text matching (regex). Optional regular expressions removed before comparing (counters, timestamps, rotating promos).
minChangePercentNoMinimum change to report (%). Changes smaller than this are reported as 'unchanged (below threshold)' and the old snapshot is kept, so small edits add up.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
onlyReportChangesNoDataset: changed pages only. Skip unchanged pages in the dataset (handy for alerts and integrations). Every page checked is still billed; failed pages never are.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
ignoreNumbersAndDatesNoIgnore dates and times. Strip dates and clock times before comparing, to avoid noise from 'updated today' widgets.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld/non-idempotent, but the description adds substantial context beyond them: the first-run-only-saves-baselines state machine, that the webhook posts outside the Apify run and only when something changed, that unreachable pages are free while unchanged pages are still billed at $0.0015/page, the run_max_charge_usd cap, and the 5-15 s / 300 s timeout envelope. It even reconciles with annotations by asserting 'read-only' while disclosing the persistent key-value snapshot store.

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?

The critical framing (what it is, what it is not, when to use) is front-loaded in the first three sentences, and the return-field list and billing paragraphs are placed after the decision-relevant content. It is long and some parameter prose duplicates the schema verbatim, but for a 13-parameter stateful tool with non-obvious cost semantics the density is largely earned.

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 having no output schema, the description enumerates the returned fields (agentSummary, status, addedLines, priceChanges, keywordsAppeared, titleBefore/After, previousCheckAt) and the envelope shape {actor, count, items}. It also covers cost model, spend cap, timeout remediation, and webhook side effects, leaving no material gap for calling the tool correctly.

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 baseline is 3; the description goes further by explaining cross-parameter interactions the schema only states locally, notably that the first run per monitorName only saves a baseline and must be reused for later runs, and that run_max_items fills maxPages when left unset and therefore also bounds billing. It restates some parameters (webhookUrl, onlyReportChanges, ignorePatterns) that the schema already documents well, so it stops short of a 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?

States a specific verb and resource ('Check a watch list of web pages against snapshots saved by your previous run') and enumerates the concrete outputs: added/removed text, change percent, price changes, keyword alerts. It explicitly names the two sibling tools it is not (ai_search_seo_audit, hidden_ai_instructions_scanner) and characterizes itself as 'stateful diffing over time', so an agent can discriminate without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('track competitor pricing, terms, product or careers pages on a schedule') and explicit when-not ('Do not use for a one-off page read or audit (use ai_search_seo_audit), or for pages behind a login'), naming the alternative to select instead. Exclusions cover both the wrong task shape and an unsupported page class.

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