Deterministic webpage change detection, hashes and text diffs for recurring monitoring via x402 MCP.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Abort an Actor run that is currently starting or running. For runs with status SUCCEEDED, FAILED, ABORTING, ABORTED, or TIMED-OUT, this call has no effect. The results will include the updated run details after the abort request. USAGE: - Use when you need to stop a run that is taking too long or misconfigured. USAGE EXAMPLES: - user_input: Abort run y2h7sK3Wc - user_input: Gracefully abort run y2h7sK3Wc This tool requires an x402 payment. Include a valid x402 payment signature in the request metadata (_meta["x402/payment"]). Your MCP client must support the x402 payment protocol.
The ID of the Actor run to abort.
If true, the Actor run will abort gracefully with a 30-second timeout.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Abort an Actor run that is currently starting or running. For runs with status SUCCEEDED, FAILED, ABORTING, ABORTED, or TIMED-OUT, this call has no effect. The results will include the updated run details after the abort request. USAGE: - Use when you need to stop a run that is taking too long or misconfigured. USAGE EXAMPLES: - user_input: Abort run y2h7sK3Wc - user_input: Gracefully abort run y2h7sK3Wc This tool requires an x402 payment. Include a valid x402 payment signature in the request metadata (_meta["x402/payment"]). Your MCP client must support the x402 payment protocol.
| Argument | Type | Description |
|---|---|---|
| runId* | string | The ID of the Actor run to abort. |
| gracefully | boolean | If true, the Actor run will abort gracefully with a 30-second timeout. |
{
"type": "object",
"required": [
"runId"
],
"properties": {
"runId": {
"type": "string",
"minLength": 1,
"description": "The ID of the Actor run to abort."
},
"gracefully": {
"type": "boolean",
"description": "If true, the Actor run will abort gracefully with a 30-second timeout."
}
},
"additionalProperties": false
}Get detailed information about a specific Actor run. Returns run result: status, storages (datasets/keyValueStores alias map), stats, summary, nextStep. - summary describes the past (e.g. "SUCCEEDED in 22s. 47 items; 3 fields available."). - nextStep prescribes one primary follow-up action with identifiers interpolated (e.g. "Use get-dataset-items with datasetId=..."). - waitSecs (0–45, default 30) waits up to that many seconds for terminal status before returning. USAGE: - Use to check the status of a run started by any Actor-running tool. - Pass waitSecs > 0 to block until terminal (or until the cap elapses). USAGE EXAMPLES: - user_input: Show details of run y2h7sK3Wc - user_input: Wait for run y2h7sK3Wc to finish This tool requires an x402 payment. Include a valid x402 payment signature in the request metadata (_meta["x402/payment"]). Your MCP client must support the x402 payment protocol.
| Argument | Type | Description |
|---|---|---|
| runId* | string | The ID of the Actor run. |
| waitSecs | integer | Maximum seconds to wait for the run to reach a terminal state (SUCCEEDED, FAILED, ABORTED, TIMED-OUT). 0 returns immediately with the current status. Cap: 45. Default: 30. |
{
"type": "object",
"required": [
"runId"
],
"properties": {
"runId": {
"type": "string",
"minLength": 1,
"description": "The ID of the Actor run."
},
"waitSecs": {
"type": "integer",
"default": 30,
"maximum": 45,
"minimum": 0,
"description": "Maximum seconds to wait for the run to reach a terminal state (SUCCEEDED, FAILED, ABORTED, TIMED-OUT).\n0 returns immediately with the current status. Cap: 45. Default: 30."
}
},
"additionalProperties": false
}Get items (rows) from a dataset — the output/results produced by an Actor run. Returns the rows themselves, not dataset metadata, counts, or a schema. When the user provides a datasetId and asks to retrieve results, output, data, or rows, call this tool directly. Default limit is 20. Use clean=true to skip empty items and hidden fields. USAGE: - Use when you need to read data from a dataset (all items or only selected fields). USAGE EXAMPLES: - user_input: Retrieve results from dataset abc123 - user_input: Get only metadata.url and title from dataset username~my-dataset This tool requires an x402 payment. Include a valid x402 payment signature in the request metadata (_meta["x402/payment"]). Your MCP client must support the x402 payment protocol.
| Argument | Type | Description |
|---|---|---|
| desc | boolean | If true, results are returned in reverse order (newest to oldest). |
| omit | string | Comma-separated list of fields to exclude from results. |
| clean | boolean | If true, returns only non-empty items and skips hidden fields (starting with #). Shortcut for skipHidden=true and skipEmpty=true. |
| limit | integer | Maximum number of items to return. Default is 20. |
| fields | string | Comma-separated list of fields to include in results. Fields in output are sorted as specified. Use dot notation for nested objects (e.g. "metadata.url"); the server auto-flattens parent prefixes. |
Get the value stored under a specific key in a key-value store — a single record, not a listing of all keys. Requires the exact key name. The response preserves the original Content-Encoding; most clients handle decompression automatically. USAGE: - Use when you need to retrieve a specific record (JSON, text, or binary) from a store. USAGE EXAMPLES: - user_input: Get record INPUT from store abc123 - user_input: Get record data.json from store username~my-store This tool requires an x402 payment. Include a valid x402 payment signature in the request metadata (_meta["x402/payment"]). Your MCP client must support the x402 payment protocol.
| Argument | Type | Description |
|---|---|---|
| recordKey* | string | Key of the record to retrieve. |
| keyValueStoreId* | string | Key-value store ID or username~store-name. |
{
"type": "object",
"required": [
"keyValueStoreId",
"recordKey"
],
"properties": {
"recordKey": {
"type": "string",
"minLength": 1,
"description": "Key of the record to retrieve."
},
"keyValueStoreId": {
"type": "string",
"minLength": 1,
"description": "Key-value store ID or username~store-name."
}
},
"additionalProperties": false
}This tool calls the Actor "industrial_platform/web-change-intelligence" and retrieves its output results. Actor description: Website change detector and deterministic diff API for AI agents. Monitor pricing, availability, documentation, policies, and competitor pages. $0.001 per successful comparison. This tool requires an x402 payment. Include a valid x402 payment signature in the request metadata (_meta["x402/payment"]). Your MCP client must support the x402 payment protocol.
| Argument | Type | Description |
|---|---|---|
| url* | string | **REQUIRED** Public http:// or https:// URL to inspect. Example values: "https://example.com/" |
| selector | string | Optional CSS selector that restricts monitoring to a specific part of an HTML page, such as main, #pricing, or .inventory. |
| waitSecs | integer | Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget. |
| previous_hash | string | Optional current_hash from a previous run. Use this for compact changed/unchanged checks when a detailed diff is not required. |
| previous_text | string | Optional current_text returned by a previous run. When provided, the Actor returns deterministic added/removed excerpts and change metrics. |
| offset |
| number |
| Number of items to skip at the start. Default is 0. |
| flatten | string | Comma-separated list of fields to flatten (e.g. flatten="metadata" turns {"metadata":{"url":"x"}} into {"metadata.url":"x"}). Normally derived automatically from dot-notation in `fields`; specify only as a diagnostic override. |
| datasetId* | string | Dataset ID or username~dataset-name. |
{
"type": "object",
"required": [
"datasetId"
],
"properties": {
"desc": {
"type": "boolean",
"description": "If true, results are returned in reverse order (newest to oldest)."
},
"omit": {
"type": "string",
"description": "Comma-separated list of fields to exclude from results."
},
"clean": {
"type": "boolean",
"description": "If true, returns only non-empty items and skips hidden fields (starting with #). Shortcut for skipHidden=true and skipEmpty=true."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Maximum number of items to return. Default is 20."
},
"fields": {
"type": "string",
"description": "Comma-separated list of fields to include in results. Fields in output are sorted as specified. Use dot notation for nested objects (e.g. \"metadata.url\"); the server auto-flattens parent prefixes."
},
"offset": {
"type": "number",
"description": "Number of items to skip at the start. Default is 0."
},
"flatten": {
"type": "string",
"description": "Comma-separated list of fields to flatten (e.g. flatten=\"metadata\" turns {\"metadata\":{\"url\":\"x\"}} into {\"metadata.url\":\"x\"}). Normally derived automatically from dot-notation in `fields`; specify only as a diagnostic override."
},
"datasetId": {
"type": "string",
"minLength": 1,
"description": "Dataset ID or username~dataset-name."
}
},
"additionalProperties": false
}| max_diff_chars | integer | Maximum length returned for each added/removed excerpt. Example values: 12000 |
| max_text_chars | integer | Maximum characters retained before hashing and comparison. Keep this value consistent across repeated checks. Example values: 100000 |
| timeout_seconds | integer | Maximum time allowed for the target request. Example values: 30 |
| ignore_selectors | array | Optional HTML selectors to remove before comparison, useful for clocks, rotating banners, ads, or other volatile regions. |
| include_current_text | boolean | Return current_text so a later run can perform a detailed text comparison. Example values: true |
{
"$id": "https://apify.com/mcp/industrial_platform--web-change-intelligence/schema.json",
"type": "object",
"title": "Web Change Intelligence input",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"title": "URL",
"prefill": "https://example.com/",
"examples": [
"https://example.com/"
],
"description": "**REQUIRED** Public http:// or https:// URL to inspect.\nExample values: \"https://example.com/\""
},
"selector": {
"type": "string",
"title": "CSS selector",
"description": "Optional CSS selector that restricts monitoring to a specific part of an HTML page, such as main, #pricing, or .inventory."
},
"waitSecs": {
"type": "integer",
"default": 30,
"maximum": 45,
"minimum": 0,
"description": "Max seconds (0–45, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget."
},
"previous_hash": {
"type": "string",
"title": "Previous SHA-256 hash",
"description": "Optional current_hash from a previous run. Use this for compact changed/unchanged checks when a detailed diff is not required."
},
"previous_text": {
"type": "string",
"title": "Previous normalized text",
"description": "Optional current_text returned by a previous run. When provided, the Actor returns deterministic added/removed excerpts and change metrics."
},
"max_diff_chars": {
"type": "integer",
"title": "Maximum characters per diff excerpt",
"default": 12000,
"examples": [
12000
],
"description": "Maximum length returned for each added/removed excerpt.\nExample values: 12000"
},
"max_text_chars": {
"type": "integer",
"title": "Maximum normalized text characters",
"default": 100000,
"examples": [
100000
],
"description": "Maximum characters retained before hashing and comparison. Keep this value consistent across repeated checks.\nExample values: 100000"
},
"timeout_seconds": {
"type": "integer",
"title": "Fetch timeout",
"default": 30,
"examples": [
30
],
"description": "Maximum time allowed for the target request.\nExample values: 30"
},
"ignore_selectors": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"title": "Ignore CSS selectors",
"default": [],
"description": "Optional HTML selectors to remove before comparison, useful for clocks, rotating banners, ads, or other volatile regions."
},
"include_current_text": {
"type": "boolean",
"title": "Include normalized current text",
"default": true,
"examples": [
true
],
"description": "Return current_text so a later run can perform a detailed text comparison.\nExample values: true"
}
},
"description": "Fetch a public URL, normalize its content, and compare it against a previous normalized text snapshot or SHA-256 hash.",
"additionalProperties": false
}