web_monitor
Check a URL for changes since the last snapshot, reporting text updates, price moves, and keyword appearances so you can track pages across calls.
Instructions
Check a URL for changes since the last check, and return what changed.
Compares the page against the last snapshot stored on disk and reports text changes, price moves, and keyword appearances or disappearances. Useful for tracking a page across sessions: docs, prices, availability, job postings.
This checks once per call. It does not schedule itself - an MCP tool is passive. To monitor continuously, call it again from your MCP client or an external scheduler. The first call for a URL only records a baseline and returns no changes.
Use ignore_text (regexes) for values that change on every request such as
timestamps or session ids, and ignore_selector (CSS) for regions that churn
independently such as ad slots. Without them most pages report a change every
time, which is why they exist.
Price watching is independent of min_change_size: a one-character move like
$100.00 to $900.00 is exactly what a text threshold would swallow, so it is
compared as a percentage when price_selector is set.
json_path watches one value inside a JSON response instead of the whole body:
json:$.product.price uses JSONPath, jq:.product.price uses jq (needs the
[json] extra; JSONPath needs it too). Reducing an API response to one field is
what makes it stable enough to monitor - markup and prose churn, a price field
does not. Without json_path the whole body is compared as before.
notify takes target URLs such as webhook://example.com/hook,
dingtalk://oapi.dingtalk.com/robot/send?access_token=X, telegram://TOKEN@CHAT
or smtp://user:pass@host:587?to=a@b.c. When a change is found it is pushed to
those channels, and the send result is reported in notifications. Credentials
stay in the URL and are never echoed back.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>"
},
"name": "web_monitor"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| notify | No | ||
| json_path | No | ||
| state_path | No | ||
| ignore_text | No | ||
| include_diff | No | ||
| price_selector | No | ||
| ignore_selector | No | ||
| keywords_appear | No | ||
| min_change_size | No | ||
| price_change_threshold | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |