PageWatch - page-to-data extraction and change monitoring
Extract prices, lists, tables, events from static pages and watch them for changes.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pagewatch": {
"url": "https://pagewatch.zenith-ops.workers.dev/mcp"
}
}
}Remote endpoints
https://pagewatch.zenith-ops.workers.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢extract_page(url, mode, selector, attr, fields, ...)
Fetch one public static web page and extract structured data from it (text, attr, list, table, price, events, page, links, json). Free tier: 30 calls per day per client. No JavaScript rendering.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"mode": {
"type": "string",
"enum": [
"text",
"attr",
"list",
"table",
"price",
"events",
"page",
"links",
"json"
],
"description": "What to extract. Default text for extract_page, page for watch_page."
},
"selector": {
"type": "string",
"description": "CSS selector (required for text, attr, list)."
},
"attr": {
"type": "string",
"description": "Attribute name for mode=attr."
},
"fields": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "mode=list: {\"name\": \"css\" or \"css@attr\"}."
},
"match": {
"type": "string",
"description": "mode=links: regular expression filter."
},
"jsonpath": {
"type": "string",
"description": "mode=json: JSONPath-lite such as $.a.b[0]."
},
"sameHost": {
"type": "boolean"
},
"all": {
"type": "boolean"
},
"tableIndex": {
"type": "integer",
"minimum": 0
},
"paid": {
"type": "boolean",
"description": "true: use the paid endpoint (x402). The result is the payment requirements unless a payment header is sent."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟡watch_page(url, mode, selector, attr, fields, ...)
Create a monitor that checks a public page on a schedule and records changes. Returns monitor id, manage token (shown once), feed and events URLs. Free plan: checks every 60 minutes or slower, 3 active monitors per client, 30 days.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"mode": {
"type": "string",
"enum": [
"text",
"attr",
"list",
"table",
"price",
"events",
"page",
"links",
"json"
],
"description": "What to extract. Default text for extract_page, page for watch_page."
},
"selector": {
"type": "string",
"description": "CSS selector (required for text, attr, list)."
},
"attr": {
"type": "string",
"description": "Attribute name for mode=attr."
},
"fields": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "mode=list: {\"name\": \"css\" or \"css@attr\"}."
},
"match": {
"type": "string",
"description": "mode=links: regular expression filter."
},
"jsonpath": {
"type": "string",
"description": "mode=json: JSONPath-lite such as $.a.b[0]."
},
"sameHost": {
"type": "boolean"
},
"all": {
"type": "boolean"
},
"tableIndex": {
"type": "integer",
"minimum": 0
},
"interval_minutes": {
"type": "integer",
"minimum": 15
},
"webhook_url": {
"type": "string",
"description": "https URL for signed change notifications."
},
"paid": {
"type": "boolean",
"description": "true: use the paid endpoint (x402). The result is the payment requirements unless a payment header is sent."
}
},
"required": [
"url"
],
"additionalProperties": false
}🟢get_changes(id, limit)
Read the latest state and the change log of a monitor by id.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"id"
],
"additionalProperties": false
}Community
Evidence