{
  "data": {
    "tool": {
      "category": "",
      "endpoint": "https://api.monity.ai/plugins/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/monity.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/monity.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/monity.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 12334,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 8
          },
          "findings": [
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "cancel_editor_preview",
              "message": "none of its 2 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "get_editor_preview",
              "message": "none of its 2 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "load_editor_preview",
              "message": "none of its 2 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "open_task_editor",
              "message": "none of its 2 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "save_task_editor",
              "message": "none of its 2 parameters has a description",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC15",
              "severity": "warn",
              "tool": "load_editor_preview",
              "message": "inputSchema uses $ref/$defs",
              "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
            },
            {
              "rule": "TC15",
              "severity": "warn",
              "tool": "save_task_editor",
              "message": "inputSchema uses $ref/$defs",
              "fix": "Inline the referenced schemas. Pydantic and zod-to-json-schema emit $defs for nested models; most can be told not to."
            },
            {
              "rule": "TC18",
              "severity": "warn",
              "tool": "cancel_editor_preview",
              "message": "destructiveHint is false but the name says \"cancel\"",
              "fix": "If it deletes, overwrites or moves money, destructiveHint should be true."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "27 of 27 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-11-10T02:33:20Z",
        "count": 27,
        "schemaTokens": 12334,
        "status": "ok",
        "tools": [
          {
            "name": "get_editor_capabilities",
            "title": "Task editor availability",
            "description": "Whether this connection may open the embedded task editor.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "open_task_editor",
            "title": "Create or edit a task",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "format": "uuid",
                  "type": "string"
                },
                "workspaceId": {
                  "exclusiveMinimum": 0,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "load_editor_preview",
            "title": "Load task preview",
            "description": "Fetch the configured public page in Monity and run its browser steps for an editor preview; does not save a task.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "sessionId": {
                  "format": "uuid",
                  "type": "string"
                },
                "settings": {
                  "additionalProperties": false,
                  "properties": {
                    "actions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "active": {
                            "type": "boolean"
                          },
                          "id": {
                            "maxLength": 100,
                            "type": "string"
                          },
                          "selector": {
                            "maxLength": 500,
                            "type": "string"
                          },
                          "type": {
                            "enum": [
                              "CLICK",
                              "TYPE",
                              "SELECT",
                              "MOUSEOVER",
                              "SCROLL",
                              "WAIT",
                              "REFRESH",
                              "BLOCK"
                            ],
                            "type": "string"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "maxLength": 1000,
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "active": {
                      "type": "boolean"
                    },
                    "aiNotificationActive": {
                      "type": "boolean"
                    },
                    "aiNotificationPrompt": {
                      "maxLength": 4000,
                      "type": "string"
                    },
                    "aiOutputActive": {
                      "type": "boolean"
                    },
                    "aiOutputPrompt": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "alertOnError": {
                      "type": "boolean"
                    },
                    "blockAds": {
                      "type": "boolean"
                    },
                    "compareDomElementAttributes": {
                      "anyOf": [
                        {
                          "additionalProperties": true,
                          "properties": {
                            "domSelector": {
                              "anyOf": [
                                {
                                  "maxLength": 2000,
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "xpath": {
                              "anyOf": [
                                {
                                  "maxLength": 2000,
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "compareType": {
                      "enum": [
                        "AUTO",
                        "VISUAL",
                        "TEXT",
                        "HTML",
                        "ELEMENT"
                      ],
                      "type": "string"
                    },
                    "crop": {
                      "anyOf": [
                        {
                          "additionalProperties": true,
                          "properties": {
                            "cropperPosition": {
                              "$ref": "#/properties/settings/properties/crop/anyOf/0/properties/imagePosition"
                            },
                            "height": {
                              "type": "number"
                            },
                            "imagePosition": {
                              "additionalProperties": false,
                              "properties": {
                                "x1": {
                                  "minimum": 0,
                                  "type": "number"
                                },
                                "x2": {
                                  "minimum": 0,
                                  "type": "number"
                                },
                                "y1": {
                                  "minimum": 0,
                                  "type": "number"
                                },
                                "y2": {
                                  "minimum": 0,
                                  "type": "number"
                                }
                              },
                              "required": [
                                "x1",
                                "y1",
                                "x2",
                                "y2"
                              ],
                              "type": "object"
                            },
                            "width": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "imagePosition"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "disableJs": {
                      "type": "boolean"
                    },
                    "doubleCheckBeforeAlert": {
                      "type": "boolean"
                    },
                    "forceHtmlSnapshot": {
                      "type": "boolean"
                    },
                    "frequency": {
                      "enum": [
                        "5",
                        "15",
                        "30",
                        "60",
                        "180",
                        "360",
                        "720",
                        "1440",
                        "10080",
                        "302400"
                      ],
                      "type": "string"
                    },
                    "jobSchedules": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "exactDate": {
                            "maxLength": 30,
                            "type": "string"
                          },
                          "exactDateEnabled": {
                            "type": "boolean"
                          },
                          "frequency": {
                            "anyOf": [
                              {
                                "maxLength": 20,
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "monthlyDayOfMonth": {
                            "anyOf": [
                              {
                                "maximum": 31,
                                "minimum": 1,
                                "type": "integer"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "timeConditionsEnabled": {
                            "type": "boolean"
                          },
                          "timeFrom": {
                            "maxLength": 5,
                            "type": "string"
                          },
                          "timeTo": {
                            "maxLength": 5,
                            "type": "string"
                          },
                          "timezone": {
                            "anyOf": [
                              {
                                "maxLength": 100,
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "uuid": {
                            "maxLength": 100,
                            "type": "string"
                          },
                          "weekDays": {
                            "items": {
                              "enum": [
                                "Mo",
                                "Tu",
                                "We",
                                "Th",
                                "Fr",
                                "Sa",
                                "Su"
                              ],
                              "type": "string"
                            },
                            "maxItems": 7,
                            "type": "array"
                          }
                        },
                        "required": [
                          "weekDays",
                          "timeConditionsEnabled",
                          "timeFrom",
                          "timeTo",
                          "exactDateEnabled",
                          "exactDate"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "jobScreen": {
                      "enum": [
                        "ALL_PAGE",
                        "AREA"
                      ],
                      "type": "string"
                    },
                    "jsonPath": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "keywords": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "keywordsAction": {
                      "maxLength": 30,
                      "type": "string"
                    },
                    "name": {
                      "maxLength": 200,
                      "type": "string"
                    },
                    "notes": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "notificationsEnabled": {
                      "type": "boolean"
                    },
                    "notifyConditions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "conditionType": {
                            "enum": [
                              "con",
                              "eq",
                              "not",
                              "gt",
                              "gte",
                              "lt",
                              "lte"
                            ],
                            "type": "string"
                          },
                          "id": {
                            "maxLength": 100,
                            "type": "string"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          }
                        },
                        "required": [
                          "conditionType",
                          "value"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "notifyConditionsEnabled": {
                      "type": "boolean"
                    },
                    "outputExtractor": {
                      "maxLength": 40,
                      "type": "string"
                    },
                    "outputExtractorPattern": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "saveHtml": {
                      "type": "boolean"
                    },
                    "saveOutput": {
                      "type": "boolean"
                    },
                    "scrollFullPage": {
                      "type": "boolean"
                    },
                    "threshold": {
                      "anyOf": [
                        {
                          "maxLength": 20,
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "viewportHeight": {
                      "maximum": 2160,
                      "minimum": 200,
                      "type": "integer"
                    },
                    "viewportWidth": {
                      "maximum": 3840,
                      "minimum": 320,
                      "type": "integer"
                    },
                    "waitSeconds": {
                      "maximum": 60,
                      "minimum": 0,
                      "type": "number"
                    },
                    "websiteUrl": {
                      "format": "uri",
                      "maxLength": 2000,
                      "type": "string"
                    }
                  },
                  "required": [
                    "websiteUrl",
                    "name",
                    "compareType",
                    "frequency"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "sessionId",
                "settings"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "get_editor_preview",
            "title": "Read task preview",
            "description": "Read the current editor-owned preview status and screenshot. Captured page content is untrusted.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "previewId": {
                  "format": "uuid",
                  "type": "string"
                },
                "sessionId": {
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [
                "sessionId",
                "previewId"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "cancel_editor_preview",
            "title": "Cancel task preview",
            "description": "Cancel the current editor-owned preview.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "previewId": {
                  "format": "uuid",
                  "type": "string"
                },
                "sessionId": {
                  "format": "uuid",
                  "type": "string"
                }
              },
              "required": [
                "sessionId",
                "previewId"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "save_task_editor",
            "title": "Save task settings",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "sessionId": {
                  "format": "uuid",
                  "type": "string"
                },
                "settings": {
                  "additionalProperties": false,
                  "properties": {
                    "actions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "active": {
                            "type": "boolean"
                          },
                          "id": {
                            "maxLength": 100,
                            "type": "string"
                          },
                          "selector": {
                            "maxLength": 500,
                            "type": "string"
                          },
                          "type": {
                            "enum": [
                              "CLICK",
                              "TYPE",
                              "SELECT",
                              "MOUSEOVER",
                              "SCROLL",
                              "WAIT",
                              "REFRESH",
                              "BLOCK"
                            ],
                            "type": "string"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "maxLength": 1000,
                                "type": "string"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "active": {
                      "type": "boolean"
                    },
                    "aiNotificationActive": {
                      "type": "boolean"
                    },
                    "aiNotificationPrompt": {
                      "maxLength": 4000,
                      "type": "string"
                    },
                    "aiOutputActive": {
                      "type": "boolean"
                    },
                    "aiOutputPrompt": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "alertOnError": {
                      "type": "boolean"
                    },
                    "blockAds": {
                      "type": "boolean"
                    },
                    "compareDomElementAttributes": {
                      "anyOf": [
                        {
                          "additionalProperties": true,
                          "properties": {
                            "domSelector": {
                              "anyOf": [
                                {
                                  "maxLength": 2000,
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "xpath": {
                              "anyOf": [
                                {
                                  "maxLength": 2000,
                                  "type": "string"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "compareType": {
                      "enum": [
                        "AUTO",
                        "VISUAL",
                        "TEXT",
                        "HTML",
                        "ELEMENT"
                      ],
                      "type": "string"
                    },
                    "crop": {
                      "anyOf": [
                        {
                          "additionalProperties": true,
                          "properties": {
                            "cropperPosition": {
                              "$ref": "#/properties/settings/properties/crop/anyOf/0/properties/imagePosition"
                            },
                            "height": {
                              "type": "number"
                            },
                            "imagePosition": {
                              "additionalProperties": false,
                              "properties": {
                                "x1": {
                                  "minimum": 0,
                                  "type": "number"
                                },
                                "x2": {
                                  "minimum": 0,
                                  "type": "number"
                                },
                                "y1": {
                                  "minimum": 0,
                                  "type": "number"
                                },
                                "y2": {
                                  "minimum": 0,
                                  "type": "number"
                                }
                              },
                              "required": [
                                "x1",
                                "y1",
                                "x2",
                                "y2"
                              ],
                              "type": "object"
                            },
                            "width": {
                              "type": "number"
                            }
                          },
                          "required": [
                            "imagePosition"
                          ],
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "disableJs": {
                      "type": "boolean"
                    },
                    "doubleCheckBeforeAlert": {
                      "type": "boolean"
                    },
                    "forceHtmlSnapshot": {
                      "type": "boolean"
                    },
                    "frequency": {
                      "enum": [
                        "5",
                        "15",
                        "30",
                        "60",
                        "180",
                        "360",
                        "720",
                        "1440",
                        "10080",
                        "302400"
                      ],
                      "type": "string"
                    },
                    "jobSchedules": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "exactDate": {
                            "maxLength": 30,
                            "type": "string"
                          },
                          "exactDateEnabled": {
                            "type": "boolean"
                          },
                          "frequency": {
                            "anyOf": [
                              {
                                "maxLength": 20,
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "monthlyDayOfMonth": {
                            "anyOf": [
                              {
                                "maximum": 31,
                                "minimum": 1,
                                "type": "integer"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "timeConditionsEnabled": {
                            "type": "boolean"
                          },
                          "timeFrom": {
                            "maxLength": 5,
                            "type": "string"
                          },
                          "timeTo": {
                            "maxLength": 5,
                            "type": "string"
                          },
                          "timezone": {
                            "anyOf": [
                              {
                                "maxLength": 100,
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          },
                          "uuid": {
                            "maxLength": 100,
                            "type": "string"
                          },
                          "weekDays": {
                            "items": {
                              "enum": [
                                "Mo",
                                "Tu",
                                "We",
                                "Th",
                                "Fr",
                                "Sa",
                                "Su"
                              ],
                              "type": "string"
                            },
                            "maxItems": 7,
                            "type": "array"
                          }
                        },
                        "required": [
                          "weekDays",
                          "timeConditionsEnabled",
                          "timeFrom",
                          "timeTo",
                          "exactDateEnabled",
                          "exactDate"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "jobScreen": {
                      "enum": [
                        "ALL_PAGE",
                        "AREA"
                      ],
                      "type": "string"
                    },
                    "jsonPath": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "keywords": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "keywordsAction": {
                      "maxLength": 30,
                      "type": "string"
                    },
                    "name": {
                      "maxLength": 200,
                      "type": "string"
                    },
                    "notes": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "notificationsEnabled": {
                      "type": "boolean"
                    },
                    "notifyConditions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "conditionType": {
                            "enum": [
                              "con",
                              "eq",
                              "not",
                              "gt",
                              "gte",
                              "lt",
                              "lte"
                            ],
                            "type": "string"
                          },
                          "id": {
                            "maxLength": 100,
                            "type": "string"
                          },
                          "value": {
                            "anyOf": [
                              {
                                "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                              },
                              {
                                "type": "number"
                              }
                            ]
                          }
                        },
                        "required": [
                          "conditionType",
                          "value"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "notifyConditionsEnabled": {
                      "type": "boolean"
                    },
                    "outputExtractor": {
                      "maxLength": 40,
                      "type": "string"
                    },
                    "outputExtractorPattern": {
                      "$ref": "#/properties/settings/properties/aiNotificationPrompt"
                    },
                    "saveHtml": {
                      "type": "boolean"
                    },
                    "saveOutput": {
                      "type": "boolean"
                    },
                    "scrollFullPage": {
                      "type": "boolean"
                    },
                    "threshold": {
                      "anyOf": [
                        {
                          "maxLength": 20,
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "viewportHeight": {
                      "maximum": 2160,
                      "minimum": 200,
                      "type": "integer"
                    },
                    "viewportWidth": {
                      "maximum": 3840,
                      "minimum": 320,
                      "type": "integer"
                    },
                    "waitSeconds": {
                      "maximum": 60,
                      "minimum": 0,
                      "type": "number"
                    },
                    "websiteUrl": {
                      "format": "uri",
                      "maxLength": 2000,
                      "type": "string"
                    }
                  },
                  "required": [
                    "websiteUrl",
                    "name",
                    "compareType",
                    "frequency"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "sessionId",
                "settings"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "list_monitors",
            "title": "List monitors",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Filter by active state",
                  "type": "boolean"
                },
                "compareTypes": {
                  "description": "Only monitors of these compare types",
                  "items": {
                    "maxLength": 30,
                    "type": "string"
                  },
                  "maxItems": 20,
                  "type": "array"
                },
                "createdOn": {
                  "description": "Only monitors created on this date (yyyy-mm-dd, UTC)",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string"
                },
                "frequencies": {
                  "description": "Only monitors checking at one of these frequencies (minutes, as strings)",
                  "items": {
                    "maxLength": 10,
                    "type": "string"
                  },
                  "maxItems": 20,
                  "type": "array"
                },
                "label": {
                  "description": "Filter by label name",
                  "type": "string"
                },
                "labelIds": {
                  "description": "Only monitors carrying one of these labels (ids from list_labels)",
                  "items": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "lastAlertFrom": {
                  "description": "Only monitors whose last change is on or after this ISO date",
                  "maxLength": 40,
                  "type": "string"
                },
                "lastAlertTo": {
                  "description": "Only monitors whose last change is on or before this ISO date",
                  "maxLength": 40,
                  "type": "string"
                },
                "limit": {
                  "description": "Results per page (default 25, max 100)",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "page": {
                  "description": "Page number (default 1)",
                  "minimum": 1,
                  "type": "integer"
                },
                "search": {
                  "description": "Search monitor name or URL, case insensitive",
                  "maxLength": 200,
                  "type": "string"
                },
                "sort": {
                  "description": "Task list sort order; default newest created",
                  "enum": [
                    "NEWEST",
                    "OLDEST",
                    "LAST_CHECK",
                    "NEXT_CHECK",
                    "MOST_RECENT_ALERT",
                    "ALPHABETICAL_A-Z",
                    "ALPHABETICAL_Z-A",
                    "recent"
                  ],
                  "type": "string"
                },
                "thresholds": {
                  "description": "Only monitors with one of these change thresholds",
                  "items": {
                    "maxLength": 20,
                    "type": "string"
                  },
                  "maxItems": 20,
                  "type": "array"
                },
                "workspaceId": {
                  "description": "Only monitors in this workspace (from list_workspaces)",
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "list_labels",
            "title": "List labels",
            "description": "List the labels on monitors in the monity.ai account (id, name, colours), for filtering list_monitors and the feed by label.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_monitor",
            "title": "Get monitor",
            "description": "Get one monitor's configuration summary by uuid (type, frequency, threshold, extractor, labels, skills and their alert rules, timestamps).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_latest_result",
            "title": "Get latest result",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_check_history",
            "title": "Get check history",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "detail": {
                  "description": "Each check in full, with its evidence links, as get_check returns it. Used by the Monity view; leave unset for a summary.",
                  "type": "boolean"
                },
                "from": {
                  "description": "ISO date lower bound (inclusive)",
                  "type": "string"
                },
                "includeHidden": {
                  "description": "Include changes the user hid (hide_change). Default false.",
                  "type": "boolean"
                },
                "limit": {
                  "description": "Results per page (default 10 here, max 100)",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "page": {
                  "description": "Page number (default 1)",
                  "minimum": 1,
                  "type": "integer"
                },
                "sort": {
                  "description": "Order (default newest first)",
                  "enum": [
                    "newest",
                    "oldest"
                  ],
                  "type": "string"
                },
                "status": {
                  "description": "Filter by status: ALERT_SENT, CHANGE, NO_CHANGE, or ERROR",
                  "type": "string"
                },
                "taskPanel": {
                  "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.",
                  "type": "boolean"
                },
                "to": {
                  "description": "ISO date upper bound (inclusive)",
                  "type": "string"
                },
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_check",
            "title": "Get check detail",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "checkId": {
                  "description": "Check id (from get_check_history)",
                  "type": "string"
                },
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid",
                "checkId"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "view_check_screenshot",
            "title": "View a check screenshot",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "checkId": {
                  "description": "Check id (from get_check_history), or 'latest' for the most recent completed check. Defaults to 'latest'.",
                  "type": "string"
                },
                "maxHeight": {
                  "description": "Height bound, default 3000, max 4000. Full-page captures are very tall, so this is what usually decides the scale.",
                  "type": "integer"
                },
                "maxWidth": {
                  "description": "Longest width to scale to, default 1200, max 4000",
                  "type": "integer"
                },
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                },
                "view": {
                  "description": "Which image: 'current' (default), 'previous', or 'diff' with changes highlighted",
                  "enum": [
                    "current",
                    "previous",
                    "diff"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_account",
            "title": "Get account and plan",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "list_workspaces",
            "title": "List workspaces",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "get_recent_changes",
            "title": "Get recent changes across all monitors",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "alertedOnly": {
                  "description": "true (default) returns only checks that detected a change and alerted; false returns every completed check",
                  "type": "boolean"
                },
                "from": {
                  "description": "ISO date lower bound, inclusive — e.g. last week's date for a weekly report",
                  "type": "string"
                },
                "includeHidden": {
                  "description": "Include changes the user hid (hide_change) or their team hid in Monity (teamHidden: true). Default false.",
                  "type": "boolean"
                },
                "label": {
                  "description": "Only monitors carrying this label",
                  "type": "string"
                },
                "limit": {
                  "description": "Results per page (default 25, max 100)",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "monitorUuid": {
                  "description": "Restrict to a single monitor (from list_monitors)",
                  "type": "string"
                },
                "page": {
                  "description": "Page number (default 1)",
                  "minimum": 1,
                  "type": "integer"
                },
                "status": {
                  "description": "Explicit status filter: ALERT_SENT, CHANGE, NO_CHANGE or ERROR. Ignored when alertedOnly is true.",
                  "type": "string"
                },
                "to": {
                  "description": "ISO date upper bound (inclusive)",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "open_monity",
            "title": "Monitors and changes",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {},
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "create_monitor",
            "title": "Create monitor",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "actions": {
                  "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.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "active": {
                        "description": "Defaults to true; false keeps the step but skips it",
                        "type": "boolean"
                      },
                      "selector": {
                        "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.",
                        "type": "string"
                      },
                      "type": {
                        "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",
                        "enum": [
                          "CLICK",
                          "TYPE",
                          "SELECT",
                          "MOUSEOVER",
                          "SCROLL",
                          "WAIT",
                          "REFRESH",
                          "BLOCK"
                        ],
                        "type": "string"
                      },
                      "value": {
                        "description": "Text to type for TYPE, option to pick for SELECT, milliseconds for WAIT (max 60000), pixels for SCROLL",
                        "type": [
                          "string",
                          "number"
                        ]
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "compareType": {
                  "description": "Comparison mode (default AUTO)",
                  "enum": [
                    "AUTO",
                    "VISUAL",
                    "TEXT",
                    "HTML"
                  ],
                  "type": "string"
                },
                "frequency": {
                  "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.",
                  "enum": [
                    "5",
                    "15",
                    "30",
                    "60",
                    "180",
                    "360",
                    "720",
                    "1440",
                    "10080",
                    "302400"
                  ],
                  "type": "string"
                },
                "jsonPath": {
                  "description": "For JSON API endpoints: JSONPath to the value to monitor, e.g. $.data.items[0].price. Starts with '$'.",
                  "type": "string"
                },
                "keywords": {
                  "description": "TEXT monitors only: comma-separated keywords to watch for, e.g. \"sold out, unavailable\"",
                  "type": "string"
                },
                "keywordsAction": {
                  "description": "TEXT monitors only: alert when keywords are ADDED to the page (default) or REMOVED from it",
                  "enum": [
                    "ADDED",
                    "REMOVED"
                  ],
                  "type": "string"
                },
                "labels": {
                  "description": "Label names to file the monitor under (up to 10); existing labels with the same name are reused.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "name": {
                  "description": "Monitor name (defaults to the URL host/path)",
                  "type": "string"
                },
                "notifyConditions": {
                  "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.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "conditionType": {
                        "description": "con = output contains value, eq = equals, not = does not equal, gt/gte/lt/lte = numeric comparison of the extracted output",
                        "enum": [
                          "con",
                          "eq",
                          "not",
                          "gt",
                          "gte",
                          "lt",
                          "lte"
                        ],
                        "type": "string"
                      },
                      "value": {
                        "description": "Comparison value (number for gt/gte/lt/lte)",
                        "type": [
                          "string",
                          "number"
                        ]
                      }
                    },
                    "required": [
                      "conditionType",
                      "value"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "notifyWhen": {
                  "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.",
                  "type": "string"
                },
                "outputExtractor": {
                  "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.",
                  "enum": [
                    "NONE",
                    "NUMBER",
                    "REGEX"
                  ],
                  "type": "string"
                },
                "outputExtractorPattern": {
                  "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+)'",
                  "type": "string"
                },
                "selector": {
                  "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.",
                  "type": "string"
                },
                "websiteUrl": {
                  "description": "Absolute http(s) URL of the page to monitor",
                  "type": "string"
                },
                "workspaceId": {
                  "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.",
                  "type": "integer"
                }
              },
              "required": [
                "websiteUrl"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "update_monitor",
            "title": "Update monitor",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "actions": {
                  "anyOf": [
                    {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "active": {
                            "description": "Defaults to true; false keeps the step but skips it",
                            "type": "boolean"
                          },
                          "selector": {
                            "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.",
                            "type": "string"
                          },
                          "type": {
                            "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",
                            "enum": [
                              "CLICK",
                              "TYPE",
                              "SELECT",
                              "MOUSEOVER",
                              "SCROLL",
                              "WAIT",
                              "REFRESH",
                              "BLOCK"
                            ],
                            "type": "string"
                          },
                          "value": {
                            "description": "Text to type for TYPE, option to pick for SELECT, milliseconds for WAIT (max 60000), pixels for SCROLL",
                            "type": [
                              "string",
                              "number"
                            ]
                          }
                        },
                        "required": [
                          "type"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    {
                      "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."
                },
                "active": {
                  "description": "true resumes checks, false pauses them",
                  "type": "boolean"
                },
                "frequency": {
                  "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.",
                  "enum": [
                    "5",
                    "15",
                    "30",
                    "60",
                    "180",
                    "360",
                    "720",
                    "1440",
                    "10080",
                    "302400"
                  ],
                  "type": "string"
                },
                "jsonPath": {
                  "description": "For JSON API endpoints: JSONPath to the value to monitor, e.g. $.data.items[0].price. Starts with '$'. Pass null to clear.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "keywords": {
                  "description": "TEXT monitors only: comma-separated keywords to watch for, e.g. \"sold out, unavailable\" Pass null to clear.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "keywordsAction": {
                  "description": "TEXT monitors only: alert when keywords are ADDED to the page (default) or REMOVED from it",
                  "enum": [
                    "ADDED",
                    "REMOVED"
                  ],
                  "type": "string"
                },
                "labels": {
                  "anyOf": [
                    {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    {
                      "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."
                },
                "name": {
                  "description": "New monitor name",
                  "type": "string"
                },
                "notifyConditions": {
                  "anyOf": [
                    {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "conditionType": {
                            "description": "con = output contains value, eq = equals, not = does not equal, gt/gte/lt/lte = numeric comparison of the extracted output",
                            "enum": [
                              "con",
                              "eq",
                              "not",
                              "gt",
                              "gte",
                              "lt",
                              "lte"
                            ],
                            "type": "string"
                          },
                          "value": {
                            "description": "Comparison value (number for gt/gte/lt/lte)",
                            "type": [
                              "string",
                              "number"
                            ]
                          }
                        },
                        "required": [
                          "conditionType",
                          "value"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    {
                      "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."
                },
                "notifyWhen": {
                  "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.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "outputExtractor": {
                  "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.",
                  "enum": [
                    "NONE",
                    "NUMBER",
                    "REGEX"
                  ],
                  "type": "string"
                },
                "outputExtractorPattern": {
                  "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.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "run_monitor",
            "title": "Run a check now",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "delete_monitor",
            "title": "Delete monitor",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "hide_change",
            "title": "Hide a change",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "checkId": {
                  "description": "Check id of the change (from get_recent_changes or get_check_history)",
                  "type": "string"
                },
                "uuid": {
                  "description": "Monitor uuid",
                  "type": "string"
                }
              },
              "required": [
                "uuid",
                "checkId"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "unhide_change",
            "title": "Show a hidden change again",
            "description": "Show a change the user hid with hide_change in their history and recent changes again.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "checkId": {
                  "description": "Check id of the hidden change",
                  "type": "string"
                },
                "uuid": {
                  "description": "Monitor uuid",
                  "type": "string"
                }
              },
              "required": [
                "uuid",
                "checkId"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "pause_monitor",
            "title": "Pause monitor",
            "description": "Pause a monitor (stops scheduled checks; history is kept).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          },
          {
            "name": "resume_monitor",
            "title": "Resume monitor",
            "description": "Resume a paused monitor. Subject to the plan's active-monitor limit.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "uuid": {
                  "description": "Monitor uuid (from list_monitors)",
                  "type": "string"
                }
              },
              "required": [
                "uuid"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": true,
              "readOnlyHint": false
            }
          },
          {
            "name": "get_feed",
            "title": "Get the feed",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "cursor": {
                  "description": "From the previous page's nextCursor",
                  "maxLength": 200,
                  "type": "string"
                },
                "includeHidden": {
                  "description": "Also list changes the team hid in Monity (teamHidden: true). Default false.",
                  "type": "boolean"
                },
                "includeRead": {
                  "description": "Also list changes already marked read",
                  "type": "boolean"
                },
                "labelIds": {
                  "description": "Only changes on monitors carrying one of these labels (ids from list_labels)",
                  "items": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  },
                  "maxItems": 50,
                  "type": "array"
                },
                "limit": {
                  "description": "Items per page (default 20, max 50)",
                  "maximum": 50,
                  "minimum": 1,
                  "type": "integer"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": true
            }
          },
          {
            "name": "mark_feed_read",
            "title": "Mark feed items read",
            "description": "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.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "all": {
                  "description": "Mark everything in the feed read",
                  "type": "boolean"
                },
                "checkId": {
                  "description": "The change to mark; omit with all: true",
                  "maxLength": 100,
                  "type": "string"
                },
                "unread": {
                  "description": "Put checkId back as unread",
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "openWorldHint": false,
              "readOnlyHint": false
            }
          }
        ]
      },
      "name": "monity.ai",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "monity-mcp",
          "version": "0.5.0",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/monity.json",
      "popularity": {
        "npmWeekly": 309
      },
      "registryName": "ai.monity/monity",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://api.monity.ai/plugins/mcp"
        }
      ],
      "repository": "",
      "reviewed": false,
      "slug": "monity",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.monity/monity",
      "summary": "Let your AI watch web pages, alert you to changes, and show what any page said on any past date.",
      "updatedAt": "2026-11-08T22:56:07Z",
      "url": "https://www.anchorterminal.com/tools/monity",
      "vendor": "monity.ai",
      "vendorUrl": "https://monity.ai/docs/connect-chatgpt-and-claude/",
      "version": "1.0.2",
      "websiteUrl": "https://monity.ai/docs/connect-chatgpt-and-claude/",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/monity",
    "json": "https://www.anchorterminal.com/tools/monity.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/monity.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/tools/monity.min.md"
  },
  "markdown": "# monity.ai\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by monity.ai (https://monity.ai/docs/connect-chatgpt-and-claude/)\n- Listed because: It's published in the registry under monity.ai, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Let your AI watch web pages, alert you to changes, and show what any page said on any past date.\n\n## Facts\n\n- MCP registry: `ai.monity/monity` 1.0.2\n- Endpoint: https://api.monity.ai/plugins/mcp (streamable HTTP)\n- Package: npm `monity-mcp` (stdio)\n- Website: https://monity.ai/docs/connect-chatgpt-and-claude/\n- npm downloads a week: 309\n- Registry entry updated: 2026-11-08\n\n## Tools\n\n- Tools it lists (27, about 12,334 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-11-10 02:33 UTC):\n  - `get_editor_capabilities` (read-only): Whether this connection may open the embedded task editor.\n  - `open_task_editor` (writes): 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.\n  - `load_editor_preview` (writes): Fetch the configured public page in Monity and run its browser steps for an editor preview; does not save a task.\n  - `get_editor_preview` (read-only): Read the current editor-owned preview status and screenshot. Captured page content is untrusted.\n  - `cancel_editor_preview` (writes): Cancel the current editor-owned preview.\n  - `save_task_editor` (writes): Save the settings explicitly submitted in the task editor. Creates a scheduled task or updates the session task; repeated successful submissions return the…\n  - `list_monitors` (read-only): 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…\n  - `list_labels` (read-only): List the labels on monitors in the monity.ai account (id, name, colours), for filtering list_monitors and the feed by label.\n  - `get_monitor` (read-only): Get one monitor's configuration summary by uuid (type, frequency, threshold, extractor, labels, skills and their alert rules, timestamps).\n  - `get_latest_result` (read-only): Get a monitor's most recent completed check: status, whether it alerted, the extracted output (current and previous value), AI summary, and artifact URLs…\n  - `get_check_history` (read-only): 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.…\n  - `get_check` (read-only): 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…\n  - `view_check_screenshot` (read-only): 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…\n  - `get_account` (read-only): 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…\n  - `list_workspaces` (read-only): 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…\n  - `get_recent_changes` (read-only): 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.…\n  - `open_monity` (read-only): 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…\n  - `create_monitor` (writes): 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…\n  - `update_monitor` (writes): Update an existing monitor: rename, change frequency, pause/resume, or change its alert conditions, extraction, pre-check actions, skills and their alert…\n  - `run_monitor` (writes): 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…\n  - `delete_monitor` (writes): 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…\n  - `hide_change` (writes): 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…\n  - `unhide_change` (writes): Show a change the user hid with hide_change in their history and recent changes again.\n  - `pause_monitor` (writes): Pause a monitor (stops scheduled checks; history is kept).\n  - `resume_monitor` (writes): Resume a paused monitor. Subject to the plan's active-monitor limit.\n  - `get_feed` (read-only): 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…\n  - `mark_feed_read` (writes): 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…\n- How its tools read to an agent (0 errors, 8 warnings, 1 note, about 12,334 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 cancel_editor_preview: none of its 2 parameters has a description\n  - warn TC11 get_editor_preview: none of its 2 parameters has a description\n  - warn TC11 load_editor_preview: none of its 2 parameters has a description\n  - warn TC11 open_task_editor: none of its 2 parameters has a description\n  - warn TC11 save_task_editor: none of its 2 parameters has a description\n  - warn TC15 load_editor_preview: inputSchema uses $ref/$defs\n  - warn TC15 save_task_editor: inputSchema uses $ref/$defs\n  - warn TC18 cancel_editor_preview: destructiveHint is false but the name says \"cancel\"\n  - note TC24 server: 27 of 27 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/monity.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-10",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "monity.ai",
        "url": ""
      }
    ],
    "description": "monity.ai, an MCP server by monity.ai, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Let your AI watch web pages, alert you to changes, and show what any page said on any past date.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "monity.ai",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/monity",
    "published": "",
    "section": "indexed",
    "title": "monity.ai: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-11-10",
    "url": "https://www.anchorterminal.com/tools/monity"
  },
  "tokens": {
    "markdown": 1800,
    "slim": 1730
  },
  "version": 1
}
