Let your AI watch web pages, alert you to changes, and show what any page said on any past date.
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.
Cancel the current editor-owned preview.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http monity https://api.monity.ai/plugins/mcp
Cancel the current editor-owned preview.
| Argument | Type | Description |
|---|---|---|
| previewId* | string | |
| sessionId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId",
"previewId"
],
"properties": {
"previewId": {
"type": "string",
"format": "uuid"
},
"sessionId": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}Watch a web page and alert the user when it changes: price drops, restocks, new posts or listings, status changes, competitor updates, any 'tell me when this page changes'. Creates a website monitor that keeps watching after this conversation ends: monity.ai checks the page on a schedule in its own cloud browser, keeps a full-page screenshot and a full HTML copy of the page for every check, and alerts only when the change matters (an AI summary says what changed). Subject to the account plan's monitor limit. compareType AUTO (default) covers most pages; VISUAL for pixel comparison, TEXT for keyword monitoring, HTML for markup diffs. To watch one element pass selector (a CSS selector). Express the full intent in one call: use notifyWhen for a natural-language alert condition ('price drops below $500'), or notifyConditions + outputExtractor/jsonPath for deterministic threshold alerts without AI.
| Argument | Type | Description |
|---|---|---|
| name | string | Monitor name (defaults to the URL host/path) |
| labels | array | Label names to file the monitor under (up to 10); existing labels with the same name are reused. |
| actions | array | Ordered list of interactions to perform before each check, e.g. [{"type":"CLICK","selector":"#accept-cookies"},{"type":"WAIT","value":1500},{"type":"CLICK","selector":".load-more"}]. Use this when the content to watch is behind a cookie banner, a tab, a "show more" control, or a dropdown. Max 20 steps. Script and JS/CSS injection steps are dashboard-only and rejected here. |
| jsonPath | string | For JSON API endpoints: JSONPath to the value to monitor, e.g. $.data.items[0].price. Starts with '$'. |
| keywords | string | TEXT monitors only: comma-separated keywords to watch for, e.g. "sold out, unavailable" |
| selector | string | CSS selector of ONE element to watch instead of the whole page (e.g. '.product-price' or '#stock-status'). Makes an element monitor that is found by this selector on every check; leave compareType unset. |
| frequency | string | Minutes between checks, as a string: '5', '15', '30', '60' (hourly), '180', '360', '720', '1440' (daily), '10080' (weekly), '302400' (monthly). Omit for the plan default. A frequency faster than the plan allows is raised to the plan minimum. |
| notifyWhen | string | Natural-language alert condition evaluated by AI on every check, e.g. 'notify me when the price drops below $500' or 'alert when the Pro plan changes'. Mutually exclusive with notifyConditions. |
| websiteUrl* | string | Absolute http(s) URL of the page to monitor |
| compareType | string | Comparison mode (default AUTO) |
| workspaceId | integer | Workspace to create the monitor in (from list_workspaces): one of the workspaces this connection may use. Defaults to the person’s personal workspace when they allowed it. |
| keywordsAction | string | TEXT monitors only: alert when keywords are ADDED to the page (default) or REMOVED from it |
| outputExtractor | string | How to extract the monitored value from the page text: NUMBER pulls the first number (good for prices), REGEX applies outputExtractorPattern, NONE keeps the full text. |
| notifyConditions | array | Deterministic alert conditions on the extracted output (no AI credits). All conditions must pass. Requires the output to change. Mutually exclusive with notifyWhen. Not available for HTML monitors. |
| outputExtractorPattern | string | Regular expression for outputExtractor: REGEX — bare pattern or /pattern/flags; the first capture group (or full match) becomes the monitored output, e.g. 'In stock: (\d+)' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"websiteUrl"
],
"properties": {
"name": {
"type": "string",
"description": "Monitor name (defaults to the URL host/path)"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Label names to file the monitor under (up to 10); existing labels with the same name are reused."
},
"actions": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"CLICK",
"TYPE",
"SELECT",
"MOUSEOVER",
"SCROLL",
"WAIT",
"REFRESH",
"BLOCK"
],
"type": "string",
"description": "CLICK a element, TYPE text into it, SELECT a dropdown option, MOUSEOVER to reveal a menu, SCROLL (optionally by pixels), WAIT a number of milliseconds, REFRESH the page, or BLOCK (remove) an element from the page before comparing"
},
"value": {
"type": [
"string",
"number"
],
"description": "Text to type for TYPE, option to pick for SELECT, milliseconds for WAIT (max 60000), pixels for SCROLL"
},
"active": {
"type": "boolean",
"description": "Defaults to true; false keeps the step but skips it"
},
"selector": {
"type": "string",
"description": "How to find the element, as a Playwright selector. CSS by default (\"#accept-cookies\", \".product .price\"); a string starting with \"/\" is treated as XPath (\"//button[contains(text(),'Show more')]\"); Playwright engine prefixes also work, and \"text=Show more\" is usually the most robust choice for a button identified by its label rather than by a hashed class. Required for CLICK, TYPE, SELECT, MOUSEOVER and BLOCK."
}
},
"additionalProperties": false
},
"description": "Ordered list of interactions to perform before each check, e.g. [{\"type\":\"CLICK\",\"selector\":\"#accept-cookies\"},{\"type\":\"WAIT\",\"value\":1500},{\"type\":\"CLICK\",\"selector\":\".load-more\"}]. Use this when the content to watch is behind a cookie banner, a tab, a \"show more\" control, or a dropdown. Max 20 steps. Script and JS/CSS injection steps are dashboard-only and rejected here."
},
"jsonPath": {
"type": "string",
"description": "For JSON API endpoints: JSONPath to the value to monitor, e.g. $.data.items[0].price. Starts with '$'."
},
"keywords": {
"type": "string",
"description": "TEXT monitors only: comma-separated keywords to watch for, e.g. \"sold out, unavailable\""
},
"selector": {
"type": "string",
"description": "CSS selector of ONE element to watch instead of the whole page (e.g. '.product-price' or '#stock-status'). Makes an element monitor that is found by this selector on every check; leave compareType unset."
},
"frequency": {
"enum": [
"5",
"15",
"30",
"60",
"180",
"360",
"720",
"1440",
"10080",
"302400"
],
"type": "string",
"description": "Minutes between checks, as a string: '5', '15', '30', '60' (hourly), '180', '360', '720', '1440' (daily), '10080' (weekly), '302400' (monthly). Omit for the plan default. A frequency faster than the plan allows is raised to the plan minimum."
},
"notifyWhen": {
"type": "string",
"description": "Natural-language alert condition evaluated by AI on every check, e.g. 'notify me when the price drops below $500' or 'alert when the Pro plan changes'. Mutually exclusive with notifyConditions."
},
"websiteUrl": {
"type": "string",
"description": "Absolute http(s) URL of the page to monitor"
},
"compareType": {
"enum": [
"AUTO",
"VISUAL",
"TEXT",
"HTML"
],
"type": "string",
"description": "Comparison mode (default AUTO)"
},
"workspaceId": {
"type": "integer",
"description": "Workspace to create the monitor in (from list_workspaces): one of the workspaces this connection may use. Defaults to the person’s personal workspace when they allowed it."
},
"keywordsAction": {
"enum": [
"ADDED",
"REMOVED"
],
"type": "string",
"description": "TEXT monitors only: alert when keywords are ADDED to the page (default) or REMOVED from it"
},
"outputExtractor": {
"enum": [
"NONE",
"NUMBER",
"REGEX"
],
"type": "string",
"description": "How to extract the monitored value from the page text: NUMBER pulls the first number (good for prices), REGEX applies outputExtractorPattern, NONE keeps the full text."
},
"notifyConditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"conditionType",
"value"
],
"properties": {
"value": {
"type": [
"string",
"number"
],
"description": "Comparison value (number for gt/gte/lt/lte)"
},
"conditionType": {
"enum": [
"con",
"eq",
"not",
"gt",
"gte",
"lt",
"lte"
],
"type": "string",
"description": "con = output contains value, eq = equals, not = does not equal, gt/gte/lt/lte = numeric comparison of the extracted output"
}
},
"additionalProperties": false
},
"description": "Deterministic alert conditions on the extracted output (no AI credits). All conditions must pass. Requires the output to change. Mutually exclusive with notifyWhen. Not available for HTML monitors."
},
"outputExtractorPattern": {
"type": "string",
"description": "Regular expression for outputExtractor: REGEX — bare pattern or /pattern/flags; the first capture group (or full match) becomes the monitored output, e.g. 'In stock: (\\d+)'"
}
},
"additionalProperties": false
}Permanently delete a monitor with all its checks, screenshots and HTML copies. This cannot be undone: confirm with the user first, and use pause_monitor instead when they only want it to stop checking.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
}
},
"additionalProperties": false
}Who is connected and what their monity.ai plan allows: plan name, credit refresh date, active monitors used and slots left per workspace, check credits left (a check normally costs one), and the check frequencies the plan allows. Use it before creating a monitor or changing a frequency, and to explain a refused create.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Get the full detail of one specific check by id, shown as evidence the user can inspect: before/after screenshots with a comparison slider, the highlighted difference, the AI summary of what changed, extracted values (current + previous), and the full HTML copy Monity kept of the page. pageAccess says what the browser reached; when reachedContent is false the check saw a challenge, login or error page, so report that, not a change in content. Each call shows the check to the user as a card: call it once per check, and not for a check another result already shows (get_latest_result does). When you link to a check, use its checkUrl (its comparison in monity.ai), never the raw screenshot, diff or HTML file URLs.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
| checkId* | string | Check id (from get_check_history) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid",
"checkId"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
},
"checkId": {
"type": "string",
"description": "Check id (from get_check_history)"
}
},
"additionalProperties": false
}List a monitor's past checks (newest first): timestamps, status, alerted flag, percent difference, errors. Use get_check for the full detail of one check. pageAccess says what the browser reached; when reachedContent is false the check saw a challenge, login or error page, so report that, not a change in content. To show one change to the user, open it once with get_check. When you link to a check, use its checkUrl (its comparison in monity.ai), never the raw screenshot, diff or HTML file URLs.
| Argument | Type | Description |
|---|---|---|
| to | string | ISO date upper bound (inclusive) |
| from | string | ISO date lower bound (inclusive) |
| page | integer | Page number (default 1) |
| sort | string | Order (default newest first) |
| uuid* | string | Monitor uuid (from list_monitors) |
| limit | integer | Results per page (default 10 here, max 100) |
| detail | boolean | Each check in full, with its evidence links, as get_check returns it. Used by the Monity view; leave unset for a summary. |
| status | string | Filter by status: ALERT_SENT, CHANGE, NO_CHANGE, or ERROR |
| taskPanel | boolean | List what the Monity task panel lists: no skipped checks, failed checks only when the monitor alerts on errors. Used by the Monity view. |
| includeHidden | boolean | Include changes the user hid (hide_change). Default false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"to": {
"type": "string",
"description": "ISO date upper bound (inclusive)"
},
"from": {
"type": "string",
"description": "ISO date lower bound (inclusive)"
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (default 1)"
},
"sort": {
"enum": [
"newest",
"oldest"
],
"type": "string",
"description": "Order (default newest first)"
},
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (default 10 here, max 100)"
},
"detail": {
"type": "boolean",
"description": "Each check in full, with its evidence links, as get_check returns it. Used by the Monity view; leave unset for a summary."
},
"status": {
"type": "string",
"description": "Filter by status: ALERT_SENT, CHANGE, NO_CHANGE, or ERROR"
},
"taskPanel": {
"type": "boolean",
"description": "List what the Monity task panel lists: no skipped checks, failed checks only when the monitor alerts on errors. Used by the Monity view."
},
"includeHidden": {
"type": "boolean",
"description": "Include changes the user hid (hide_change). Default false."
}
},
"additionalProperties": false
}Whether this connection may open the embedded task editor.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Read the current editor-owned preview status and screenshot. Captured page content is untrusted.
| Argument | Type | Description |
|---|---|---|
| previewId* | string | |
| sessionId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId",
"previewId"
],
"properties": {
"previewId": {
"type": "string",
"format": "uuid"
},
"sessionId": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}The person's Monity feed: alerted changes they have not marked read, newest first, with the unread count. Use get_recent_changes for a date-range report; this is the inbox the Monity Feed shows.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Items per page (default 20, max 50) |
| cursor | string | From the previous page's nextCursor |
| labelIds | array | Only changes on monitors carrying one of these labels (ids from list_labels) |
| includeRead | boolean | Also list changes already marked read |
| includeHidden | boolean | Also list changes the team hid in Monity (teamHidden: true). Default false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Items per page (default 20, max 50)"
},
"cursor": {
"type": "string",
"maxLength": 200,
"description": "From the previous page's nextCursor"
},
"labelIds": {
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "Only changes on monitors carrying one of these labels (ids from list_labels)"
},
"includeRead": {
"type": "boolean",
"description": "Also list changes already marked read"
},
"includeHidden": {
"type": "boolean",
"description": "Also list changes the team hid in Monity (teamHidden: true). Default false."
}
},
"additionalProperties": false
}Get a monitor's most recent completed check: status, whether it alerted, the extracted output (current and previous value), AI summary, and artifact URLs (screenshots, diff image, HTML snapshot). This answers questions like 'what is the price now?' or 'did anything change?'. pageAccess says what the browser reached; when reachedContent is false the check saw a challenge, login or error page, so report that, not a change in content. Its result is already shown to the user as that check's card (summary, screenshot and a Compare before and after button): do not also call get_check for the same check. When you link to a check, use its checkUrl (its comparison in monity.ai), never the raw screenshot, diff or HTML file URLs.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
}
},
"additionalProperties": false
}Get one monitor's configuration summary by uuid (type, frequency, threshold, extractor, labels, skills and their alert rules, timestamps).
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
}
},
"additionalProperties": false
}Account-wide feed of completed checks, newest first, each already carrying its monitor (name + URL), the AI summary of what changed, and the extracted output. This is the tool to use for reporting questions — 'what changed this week?', 'summarise my monitors', 'which pages moved?' — because it answers them in ONE call. Do not loop get_check_history over every monitor for that. Call it once per question: each call shows its own card to the user. Defaults to alerts only, which is what 'what changed' means; set alertedOnly false only when the user asks about every check (e.g. 'did my monitors run?'), never to look for more changes. pageAccess says what the browser reached; when reachedContent is false the check saw a challenge, login or error page, so report that, not a change in content. To show one change to the user, open it once with get_check. When you link to a check, use its checkUrl (its comparison in monity.ai), never the raw screenshot, diff or HTML file URLs.
| Argument | Type | Description |
|---|---|---|
| to | string | ISO date upper bound (inclusive) |
| from | string | ISO date lower bound, inclusive — e.g. last week's date for a weekly report |
| page | integer | Page number (default 1) |
| label | string | Only monitors carrying this label |
| limit | integer | Results per page (default 25, max 100) |
| status | string | Explicit status filter: ALERT_SENT, CHANGE, NO_CHANGE or ERROR. Ignored when alertedOnly is true. |
| alertedOnly | boolean | true (default) returns only checks that detected a change and alerted; false returns every completed check |
| monitorUuid | string | Restrict to a single monitor (from list_monitors) |
| includeHidden | boolean | Include changes the user hid (hide_change) or their team hid in Monity (teamHidden: true). Default false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"description": "ISO date upper bound (inclusive)"
},
"from": {
"type": "string",
"description": "ISO date lower bound, inclusive — e.g. last week's date for a weekly report"
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (default 1)"
},
"label": {
"type": "string",
"description": "Only monitors carrying this label"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (default 25, max 100)"
},
"status": {
"type": "string",
"description": "Explicit status filter: ALERT_SENT, CHANGE, NO_CHANGE or ERROR. Ignored when alertedOnly is true."
},
"alertedOnly": {
"type": "boolean",
"description": "true (default) returns only checks that detected a change and alerted; false returns every completed check"
},
"monitorUuid": {
"type": "string",
"description": "Restrict to a single monitor (from list_monitors)"
},
"includeHidden": {
"type": "boolean",
"description": "Include changes the user hid (hide_change) or their team hid in Monity (teamHidden: true). Default false."
}
},
"additionalProperties": false
}Hide one detected change from this user's history and recent changes (for example a false alarm). Nothing is deleted and teammates still see it; unhide_change brings it back, and includeHidden shows hidden ones.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid |
| checkId* | string | Check id of the change (from get_recent_changes or get_check_history) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid",
"checkId"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid"
},
"checkId": {
"type": "string",
"description": "Check id of the change (from get_recent_changes or get_check_history)"
}
},
"additionalProperties": false
}List the labels on monitors in the monity.ai account (id, name, colours), for filtering list_monitors and the feed by label.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}List the website monitors (tasks) in the monity.ai account: name, monitored URL, type, active state, labels, and last/next check times. Use this first to find a monitor's uuid for the other tools.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number (default 1) |
| sort | string | Task list sort order; default newest created |
| label | string | Filter by label name |
| limit | integer | Results per page (default 25, max 100) |
| active | boolean | Filter by active state |
| search | string | Search monitor name or URL, case insensitive |
| labelIds | array | Only monitors carrying one of these labels (ids from list_labels) |
| createdOn | string | Only monitors created on this date (yyyy-mm-dd, UTC) |
| thresholds | array | Only monitors with one of these change thresholds |
| frequencies | array | Only monitors checking at one of these frequencies (minutes, as strings) |
| lastAlertTo | string | Only monitors whose last change is on or before this ISO date |
| workspaceId | integer | Only monitors in this workspace (from list_workspaces) |
| compareTypes | array | Only monitors of these compare types |
| lastAlertFrom | string | Only monitors whose last change is on or after this ISO date |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (default 1)"
},
"sort": {
"enum": [
"NEWEST",
"OLDEST",
"LAST_CHECK",
"NEXT_CHECK",
"MOST_RECENT_ALERT",
"ALPHABETICAL_A-Z",
"ALPHABETICAL_Z-A",
"recent"
],
"type": "string",
"description": "Task list sort order; default newest created"
},
"label": {
"type": "string",
"description": "Filter by label name"
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results per page (default 25, max 100)"
},
"active": {
"type": "boolean",
"description": "Filter by active state"
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Search monitor name or URL, case insensitive"
},
"labelIds": {
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "Only monitors carrying one of these labels (ids from list_labels)"
},
"createdOn": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only monitors created on this date (yyyy-mm-dd, UTC)"
},
"thresholds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 20
},
"maxItems": 20,
"description": "Only monitors with one of these change thresholds"
},
"frequencies": {
"type": "array",
"items": {
"type": "string",
"maxLength": 10
},
"maxItems": 20,
"description": "Only monitors checking at one of these frequencies (minutes, as strings)"
},
"lastAlertTo": {
"type": "string",
"maxLength": 40,
"description": "Only monitors whose last change is on or before this ISO date"
},
"workspaceId": {
"type": "integer",
"description": "Only monitors in this workspace (from list_workspaces)"
},
"compareTypes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 30
},
"maxItems": 20,
"description": "Only monitors of these compare types"
},
"lastAlertFrom": {
"type": "string",
"maxLength": 40,
"description": "Only monitors whose last change is on or after this ISO date"
}
},
"additionalProperties": false
}List the account’s workspaces (business accounts hold several; personal accounts have one). Use this to find the workspaceId to filter list_monitors by, or to create a monitor into a team workspace instead of the key owner’s personal one.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Fetch the configured public page in Monity and run its browser steps for an editor preview; does not save a task.
| Argument | Type | Description |
|---|---|---|
| settings* | object | |
| sessionId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId",
"settings"
],
"properties": {
"settings": {
"type": "object",
"required": [
"websiteUrl",
"name",
"compareType",
"frequency"
],
"properties": {
"crop": {
"anyOf": [
{
"type": "object",
"required": [
"imagePosition"
],
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"imagePosition": {
"type": "object",
"required": [
"x1",
"y1",
"x2",
"y2"
],
"properties": {
"x1": {
"type": "number",
"minimum": 0
},
"x2": {
"type": "number",
"minimum": 0
},
"y1": {
"type": "number",
"minimum": 0
},
"y2": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"cropperPosition": {
"$ref": "#/properties/settings/properties/crop/anyOf/0/properties/imagePosition"
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
},
"name": {
"type": "string",
"maxLength": 200
},
"notes": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"active": {
"type": "boolean"
},
"actions": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"type": {
"enum": [
"CLICK",
"TYPE",
"SELECT",
"MOUSEOVER",
"SCROLL",
"WAIT",
"REFRESH",
"BLOCK"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
}
]
},
"active": {
"type": "boolean"
},
"selector": {
"type": "string",
"maxLength": 500
}
},
"additionalProperties": false
},
"maxItems": 20
},
"blockAds": {
"type": "boolean"
},
"jsonPath": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"keywords": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"saveHtml": {
"type": "boolean"
},
"disableJs": {
"type": "boolean"
},
"frequency": {
"enum": [
"5",
"15",
"30",
"60",
"180",
"360",
"720",
"1440",
"10080",
"302400"
],
"type": "string"
},
"jobScreen": {
"enum": [
"ALL_PAGE",
"AREA"
],
"type": "string"
},
"threshold": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
},
"saveOutput": {
"type": "boolean"
},
"websiteUrl": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"compareType": {
"enum": [
"AUTO",
"VISUAL",
"TEXT",
"HTML",
"ELEMENT"
],
"type": "string"
},
"waitSeconds": {
"type": "number",
"maximum": 60,
"minimum": 0
},
"alertOnError": {
"type": "boolean"
},
"jobSchedules": {
"type": "array",
"items": {
"type": "object",
"required": [
"weekDays",
"timeConditionsEnabled",
"timeFrom",
"timeTo",
"exactDateEnabled",
"exactDate"
],
"properties": {
"uuid": {
"type": "string",
"maxLength": 100
},
"timeTo": {
"type": "string",
"maxLength": 5
},
"timeFrom": {
"type": "string",
"maxLength": 5
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"weekDays": {
"type": "array",
"items": {
"enum": [
"Mo",
"Tu",
"We",
"Th",
"Fr",
"Sa",
"Su"
],
"type": "string"
},
"maxItems": 7
},
"exactDate": {
"type": "string",
"maxLength": 30
},
"frequency": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
},
"exactDateEnabled": {
"type": "boolean"
},
"monthlyDayOfMonth": {
"anyOf": [
{
"type": "integer",
"maximum": 31,
"minimum": 1
},
{
"type": "null"
}
]
},
"timeConditionsEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"viewportWidth": {
"type": "integer",
"maximum": 3840,
"minimum": 320
},
"aiOutputActive": {
"type": "boolean"
},
"aiOutputPrompt": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"keywordsAction": {
"type": "string",
"maxLength": 30
},
"scrollFullPage": {
"type": "boolean"
},
"viewportHeight": {
"type": "integer",
"maximum": 2160,
"minimum": 200
},
"outputExtractor": {
"type": "string",
"maxLength": 40
},
"notifyConditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"conditionType",
"value"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"value": {
"anyOf": [
{
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
{
"type": "number"
}
]
},
"conditionType": {
"enum": [
"con",
"eq",
"not",
"gt",
"gte",
"lt",
"lte"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"forceHtmlSnapshot": {
"type": "boolean"
},
"aiNotificationActive": {
"type": "boolean"
},
"aiNotificationPrompt": {
"type": "string",
"maxLength": 4000
},
"notificationsEnabled": {
"type": "boolean"
},
"doubleCheckBeforeAlert": {
"type": "boolean"
},
"outputExtractorPattern": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"notifyConditionsEnabled": {
"type": "boolean"
},
"compareDomElementAttributes": {
"anyOf": [
{
"type": "object",
"properties": {
"xpath": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"domSelector": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"sessionId": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}Mark one change read (it leaves the feed), unread again, or everything in the feed read. Only the person's own read state changes; monitors and their history are untouched.
| Argument | Type | Description |
|---|---|---|
| all | boolean | Mark everything in the feed read |
| unread | boolean | Put checkId back as unread |
| checkId | string | The change to mark; omit with all: true |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"all": {
"type": "boolean",
"description": "Mark everything in the feed read"
},
"unread": {
"type": "boolean",
"description": "Put checkId back as unread"
},
"checkId": {
"type": "string",
"maxLength": 100,
"description": "The change to mark; omit with all: true"
}
},
"additionalProperties": false
}Show the pages the user watches and what changed on them: open the user's monity.ai home, every monitor with its state and last check, and the latest changes with screenshots. Use it when the user wants an overview of what they watch or to browse changes; for a written report use get_recent_changes.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Open the existing Monity task editor. Omit uuid to create a task in workspaceId. Does not save or load a website until the user acts.
| Argument | Type | Description |
|---|---|---|
| uuid | string | |
| workspaceId | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"uuid": {
"type": "string",
"format": "uuid"
},
"workspaceId": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Pause a monitor (stops scheduled checks; history is kept).
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
}
},
"additionalProperties": false
}Resume a paused monitor. Subject to the plan's active-monitor limit.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
}
},
"additionalProperties": false
}Check an active monitor's page now instead of waiting for its schedule. The check runs in monity.ai's cloud browser and takes up to a minute or two; then get_latest_result shows it. Counts against the plan like any check. Resume a paused monitor first. For a dataset (a uuid from list_datasets) it collects every page again: that takes a few minutes and spends the plan's check credits (1 for each page it visits, 5 more for each page read with AI, 2 a minute for a saved login); if it cannot start, the answer says why (for example, not enough credits). Read the result with get_dataset_rows or get_dataset_changes.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
}
},
"additionalProperties": false
}Save the settings explicitly submitted in the task editor. Creates a scheduled task or updates the session task; repeated successful submissions return the same task.
| Argument | Type | Description |
|---|---|---|
| settings* | object | |
| sessionId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId",
"settings"
],
"properties": {
"settings": {
"type": "object",
"required": [
"websiteUrl",
"name",
"compareType",
"frequency"
],
"properties": {
"crop": {
"anyOf": [
{
"type": "object",
"required": [
"imagePosition"
],
"properties": {
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"imagePosition": {
"type": "object",
"required": [
"x1",
"y1",
"x2",
"y2"
],
"properties": {
"x1": {
"type": "number",
"minimum": 0
},
"x2": {
"type": "number",
"minimum": 0
},
"y1": {
"type": "number",
"minimum": 0
},
"y2": {
"type": "number",
"minimum": 0
}
},
"additionalProperties": false
},
"cropperPosition": {
"$ref": "#/properties/settings/properties/crop/anyOf/0/properties/imagePosition"
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
},
"name": {
"type": "string",
"maxLength": 200
},
"notes": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"active": {
"type": "boolean"
},
"actions": {
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"type": {
"enum": [
"CLICK",
"TYPE",
"SELECT",
"MOUSEOVER",
"SCROLL",
"WAIT",
"REFRESH",
"BLOCK"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "number"
}
]
},
"active": {
"type": "boolean"
},
"selector": {
"type": "string",
"maxLength": 500
}
},
"additionalProperties": false
},
"maxItems": 20
},
"blockAds": {
"type": "boolean"
},
"jsonPath": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"keywords": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"saveHtml": {
"type": "boolean"
},
"disableJs": {
"type": "boolean"
},
"frequency": {
"enum": [
"5",
"15",
"30",
"60",
"180",
"360",
"720",
"1440",
"10080",
"302400"
],
"type": "string"
},
"jobScreen": {
"enum": [
"ALL_PAGE",
"AREA"
],
"type": "string"
},
"threshold": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
},
"saveOutput": {
"type": "boolean"
},
"websiteUrl": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"compareType": {
"enum": [
"AUTO",
"VISUAL",
"TEXT",
"HTML",
"ELEMENT"
],
"type": "string"
},
"waitSeconds": {
"type": "number",
"maximum": 60,
"minimum": 0
},
"alertOnError": {
"type": "boolean"
},
"jobSchedules": {
"type": "array",
"items": {
"type": "object",
"required": [
"weekDays",
"timeConditionsEnabled",
"timeFrom",
"timeTo",
"exactDateEnabled",
"exactDate"
],
"properties": {
"uuid": {
"type": "string",
"maxLength": 100
},
"timeTo": {
"type": "string",
"maxLength": 5
},
"timeFrom": {
"type": "string",
"maxLength": 5
},
"timezone": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"weekDays": {
"type": "array",
"items": {
"enum": [
"Mo",
"Tu",
"We",
"Th",
"Fr",
"Sa",
"Su"
],
"type": "string"
},
"maxItems": 7
},
"exactDate": {
"type": "string",
"maxLength": 30
},
"frequency": {
"anyOf": [
{
"type": "string",
"maxLength": 20
},
{
"type": "null"
}
]
},
"exactDateEnabled": {
"type": "boolean"
},
"monthlyDayOfMonth": {
"anyOf": [
{
"type": "integer",
"maximum": 31,
"minimum": 1
},
{
"type": "null"
}
]
},
"timeConditionsEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"viewportWidth": {
"type": "integer",
"maximum": 3840,
"minimum": 320
},
"aiOutputActive": {
"type": "boolean"
},
"aiOutputPrompt": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"keywordsAction": {
"type": "string",
"maxLength": 30
},
"scrollFullPage": {
"type": "boolean"
},
"viewportHeight": {
"type": "integer",
"maximum": 2160,
"minimum": 200
},
"outputExtractor": {
"type": "string",
"maxLength": 40
},
"notifyConditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"conditionType",
"value"
],
"properties": {
"id": {
"type": "string",
"maxLength": 100
},
"value": {
"anyOf": [
{
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
{
"type": "number"
}
]
},
"conditionType": {
"enum": [
"con",
"eq",
"not",
"gt",
"gte",
"lt",
"lte"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 20
},
"forceHtmlSnapshot": {
"type": "boolean"
},
"aiNotificationActive": {
"type": "boolean"
},
"aiNotificationPrompt": {
"type": "string",
"maxLength": 4000
},
"notificationsEnabled": {
"type": "boolean"
},
"doubleCheckBeforeAlert": {
"type": "boolean"
},
"outputExtractorPattern": {
"$ref": "#/properties/settings/properties/aiNotificationPrompt"
},
"notifyConditionsEnabled": {
"type": "boolean"
},
"compareDomElementAttributes": {
"anyOf": [
{
"type": "object",
"properties": {
"xpath": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"domSelector": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
}
},
"additionalProperties": true
},
{
"type": "null"
}
]
}
},
"additionalProperties": false
},
"sessionId": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}Show a change the user hid with hide_change in their history and recent changes again.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid |
| checkId* | string | Check id of the hidden change |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid",
"checkId"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid"
},
"checkId": {
"type": "string",
"description": "Check id of the hidden change"
}
},
"additionalProperties": false
}Update an existing monitor: rename, change frequency, pause/resume, or change its alert conditions, extraction, pre-check actions, skills and their alert rules. Omitted fields stay unchanged; pass null to clear notifyWhen, notifyConditions, jsonPath, outputExtractorPattern, notifyWebhookUrl, actions or skills.
| Argument | Type | Description |
|---|---|---|
| name | string | New monitor name |
| uuid* | string | Monitor uuid (from list_monitors) |
| active | boolean | true resumes checks, false pauses them |
| labels | any | Label names for the monitor (up to 10). New names create the label in the account; existing labels with the same name are reused. Replaces the monitor's labels: include the ones it already has (get_monitor lists them) to keep them. [] or null removes them all. |
| actions | any | Ordered list of interactions to perform before each check, e.g. [{"type":"CLICK","selector":"#accept-cookies"},{"type":"WAIT","value":1500},{"type":"CLICK","selector":".load-more"}]. Use this when the content to watch is behind a cookie banner, a tab, a "show more" control, or a dropdown. Max 20 steps. Script and JS/CSS injection steps are dashboard-only and rejected here. Replaces the whole list; read the monitor first to keep existing steps. Pass null to remove them all. |
| jsonPath | string | null | For JSON API endpoints: JSONPath to the value to monitor, e.g. $.data.items[0].price. Starts with '$'. Pass null to clear. |
| keywords | string | null | TEXT monitors only: comma-separated keywords to watch for, e.g. "sold out, unavailable" Pass null to clear. |
| frequency | string | Minutes between checks, as a string: '5', '15', '30', '60' (hourly), '180', '360', '720', '1440' (daily), '10080' (weekly), '302400' (monthly). Omit for the plan default. A frequency faster than the plan allows is raised to the plan minimum. |
| notifyWhen | string | null | Natural-language alert condition evaluated by AI on every check, e.g. 'notify me when the price drops below $500' or 'alert when the Pro plan changes'. Mutually exclusive with notifyConditions. Pass null to clear. |
| keywordsAction | string | TEXT monitors only: alert when keywords are ADDED to the page (default) or REMOVED from it |
| outputExtractor | string | How to extract the monitored value from the page text: NUMBER pulls the first number (good for prices), REGEX applies outputExtractorPattern, NONE keeps the full text. |
| notifyConditions | any | Deterministic alert conditions on the extracted output (no AI credits). All conditions must pass. Requires the output to change. Mutually exclusive with notifyWhen. Not available for HTML monitors. Pass null to clear. |
| outputExtractorPattern | string | null | Regular expression for outputExtractor: REGEX — bare pattern or /pattern/flags; the first capture group (or full match) becomes the monitored output, e.g. 'In stock: (\d+)' Pass null to clear. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"name": {
"type": "string",
"description": "New monitor name"
},
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
},
"active": {
"type": "boolean",
"description": "true resumes checks, false pauses them"
},
"labels": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Label names for the monitor (up to 10). New names create the label in the account; existing labels with the same name are reused. Replaces the monitor's labels: include the ones it already has (get_monitor lists them) to keep them. [] or null removes them all."
},
"actions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"CLICK",
"TYPE",
"SELECT",
"MOUSEOVER",
"SCROLL",
"WAIT",
"REFRESH",
"BLOCK"
],
"type": "string",
"description": "CLICK a element, TYPE text into it, SELECT a dropdown option, MOUSEOVER to reveal a menu, SCROLL (optionally by pixels), WAIT a number of milliseconds, REFRESH the page, or BLOCK (remove) an element from the page before comparing"
},
"value": {
"type": [
"string",
"number"
],
"description": "Text to type for TYPE, option to pick for SELECT, milliseconds for WAIT (max 60000), pixels for SCROLL"
},
"active": {
"type": "boolean",
"description": "Defaults to true; false keeps the step but skips it"
},
"selector": {
"type": "string",
"description": "How to find the element, as a Playwright selector. CSS by default (\"#accept-cookies\", \".product .price\"); a string starting with \"/\" is treated as XPath (\"//button[contains(text(),'Show more')]\"); Playwright engine prefixes also work, and \"text=Show more\" is usually the most robust choice for a button identified by its label rather than by a hashed class. Required for CLICK, TYPE, SELECT, MOUSEOVER and BLOCK."
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Ordered list of interactions to perform before each check, e.g. [{\"type\":\"CLICK\",\"selector\":\"#accept-cookies\"},{\"type\":\"WAIT\",\"value\":1500},{\"type\":\"CLICK\",\"selector\":\".load-more\"}]. Use this when the content to watch is behind a cookie banner, a tab, a \"show more\" control, or a dropdown. Max 20 steps. Script and JS/CSS injection steps are dashboard-only and rejected here. Replaces the whole list; read the monitor first to keep existing steps. Pass null to remove them all."
},
"jsonPath": {
"type": [
"string",
"null"
],
"description": "For JSON API endpoints: JSONPath to the value to monitor, e.g. $.data.items[0].price. Starts with '$'. Pass null to clear."
},
"keywords": {
"type": [
"string",
"null"
],
"description": "TEXT monitors only: comma-separated keywords to watch for, e.g. \"sold out, unavailable\" Pass null to clear."
},
"frequency": {
"enum": [
"5",
"15",
"30",
"60",
"180",
"360",
"720",
"1440",
"10080",
"302400"
],
"type": "string",
"description": "Minutes between checks, as a string: '5', '15', '30', '60' (hourly), '180', '360', '720', '1440' (daily), '10080' (weekly), '302400' (monthly). Omit for the plan default. A frequency faster than the plan allows is raised to the plan minimum."
},
"notifyWhen": {
"type": [
"string",
"null"
],
"description": "Natural-language alert condition evaluated by AI on every check, e.g. 'notify me when the price drops below $500' or 'alert when the Pro plan changes'. Mutually exclusive with notifyConditions. Pass null to clear."
},
"keywordsAction": {
"enum": [
"ADDED",
"REMOVED"
],
"type": "string",
"description": "TEXT monitors only: alert when keywords are ADDED to the page (default) or REMOVED from it"
},
"outputExtractor": {
"enum": [
"NONE",
"NUMBER",
"REGEX"
],
"type": "string",
"description": "How to extract the monitored value from the page text: NUMBER pulls the first number (good for prices), REGEX applies outputExtractorPattern, NONE keeps the full text."
},
"notifyConditions": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"conditionType",
"value"
],
"properties": {
"value": {
"type": [
"string",
"number"
],
"description": "Comparison value (number for gt/gte/lt/lte)"
},
"conditionType": {
"enum": [
"con",
"eq",
"not",
"gt",
"gte",
"lt",
"lte"
],
"type": "string",
"description": "con = output contains value, eq = equals, not = does not equal, gt/gte/lt/lte = numeric comparison of the extracted output"
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
],
"description": "Deterministic alert conditions on the extracted output (no AI credits). All conditions must pass. Requires the output to change. Mutually exclusive with notifyWhen. Not available for HTML monitors. Pass null to clear."
},
"outputExtractorPattern": {
"type": [
"string",
"null"
],
"description": "Regular expression for outputExtractor: REGEX — bare pattern or /pattern/flags; the first capture group (or full match) becomes the monitored output, e.g. 'In stock: (\\d+)' Pass null to clear."
}
},
"additionalProperties": false
}Returns the actual screenshot image from a check, so you can SEE the monitored page rather than infer it from a diff percentage. view: 'current' (the page as of this check), 'previous' (the page before it), or 'diff' (the two composited with changes highlighted). Pass checkId 'latest' to see the current state of a monitor without looking up a check id first. Use this to answer 'what does the page look like now?', to judge whether a reported change actually matters, and to work out the right CSS selector for an action or extractor by looking at the layout. These images are for you to look at; to show a change to the user, use get_check, and link a check by its checkUrl.
| Argument | Type | Description |
|---|---|---|
| uuid* | string | Monitor uuid (from list_monitors) |
| view | string | Which image: 'current' (default), 'previous', or 'diff' with changes highlighted |
| checkId | string | Check id (from get_check_history), or 'latest' for the most recent completed check. Defaults to 'latest'. |
| maxWidth | integer | Longest width to scale to, default 1200, max 4000 |
| maxHeight | integer | Height bound, default 3000, max 4000. Full-page captures are very tall, so this is what usually decides the scale. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"uuid"
],
"properties": {
"uuid": {
"type": "string",
"description": "Monitor uuid (from list_monitors)"
},
"view": {
"enum": [
"current",
"previous",
"diff"
],
"type": "string",
"description": "Which image: 'current' (default), 'previous', or 'diff' with changes highlighted"
},
"checkId": {
"type": "string",
"description": "Check id (from get_check_history), or 'latest' for the most recent completed check. Defaults to 'latest'."
},
"maxWidth": {
"type": "integer",
"description": "Longest width to scale to, default 1200, max 4000"
},
"maxHeight": {
"type": "integer",
"description": "Height bound, default 3000, max 4000. Full-page captures are very tall, so this is what usually decides the scale."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.