Skip to main content
Glama
rusty4444

changedetection-mcp

by rusty4444

ChangeDetection.io MCP Server

An MCP (Model Context Protocol) server that gives AI agents native access to ChangeDetection.io — the open-source website change detection and monitoring platform.

Features

  • Watch Management — Create, list, update, delete, and trigger rechecks on watches

  • Change History — Browse snapshot history and get diffs between any two points in time

  • Per-watch action fuse — get_snapshot_diff arms a configurable limit on follow-up mutating actions for that watch so one noisy page cannot cascade into unlimited rechecks or edits

  • Tag Management — Organise watches with tags/groups

  • Search — Full-text search through watches by URL or title

  • System Info — Quick health and stats readout

Related MCP server: mult-fetch-mcp-server

Why This Exists

No MCP server existed for ChangeDetection.io despite it being one of the most popular self-hosted tools (31k+ GitHub stars). This server fills that gap, letting AI agents:

  • "Watch this product page and notify me when it changes"

  • "Show me all my failed watches"

  • "What changed on this page yesterday?"

  • "Set up a watch for this job listing"

Quick Start

Prerequisites

  • A running ChangeDetection.io instance (self-hosted or SaaS)

  • An API key from Settings → API

Installation

pip install changedetection-mcp

Configuration

Add to your MCP client config (Claude Desktop, Cursor, Hermes Agent, etc.):

{
  "mcpServers": {
    "changedetection": {
      "command": "changedetection-mcp",
      "env": {
        "CHANGEDETECTION_BASE_URL": "http://localhost:5000",
        "CHANGEDETECTION_API_KEY": "your-api-key-here"
      }
    }
  }
}

Usage with Hermes Agent

Create ~/.hermes/skills/changedetection/SKILL.md (see skill/ directory) or configure as an MCP server:

hermes mcp add changedetection --command "changedetection-mcp"
hermes config set changedetection.base_url "http://localhost:5000"
hermes config set changedetection.api_key "your-api-key"

API Coverage

Tool

Description

list_watches

List all watches (optional tag filter, limit/offset)

get_watch

Get full details of a single watch

create_watch

Create a new watch from a URL

update_watch

Update an existing watch (pause, rename, change schedule, etc.)

delete_watch

Delete a watch and all its history

recheck_watch

Trigger an immediate recheck

get_watch_history

List change history snapshots for a watch

get_snapshot_diff

Get diff between two snapshots

search_watches

Full-text search by URL or title

list_tags

List all tags/groups

create_tag

Create a tag for organisation

get_system_info

Get server stats (watch count, uptime, version)

Safety Fuse: Per-Watch Action Limit

When an agent asks for a page diff, that diff can prompt follow-up actions such as immediate rechecks, watch edits, or deletes. To stop one noisy site from triggering a cascade, get_snapshot_diff arms a per-watch fuse before returning.

By default, each diff allows 3 mutating MCP actions for that watch. The fuse applies to:

  • recheck_watch

  • update_watch

  • delete_watch

After the budget is exhausted, those tools return a clear blocked message instead of calling the ChangeDetection.io API. The fuse is in-process and per watch UUID; watches without an armed fuse are unaffected.

Configuration:

# Default: 3. Set 0 to disable the fuse globally.
export CHANGEDETECTION_MCP_ACTION_LIMIT_PER_WATCH=3

Per call, override the default with the optional action_limit argument on get_snapshot_diff:

get_snapshot_diff(uuid="...", from_timestamp="previous", to_timestamp="latest", action_limit=1)

Use action_limit=0 to disable the fuse for that watch, or call get_snapshot_diff again with a higher value to re-arm it.

Development

git clone https://github.com/rusty4444/changedetection-mcp.git
cd changedetection-mcp
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"

License

MIT — see LICENSE.

Available Tools

12 tools
create_tagB

Create a new tag/group for organising watches.

NameRequiredDescriptionDefault
titleYesThe tag display name

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. For a mutating tool it discloses nothing about whether duplicate titles are rejected, whether the caller needs prior tag permissions, or whether the new tag is returned immediately, leaving the agent to discover these by trial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the verb and resource, containing no redundant or padded text. Appropriate for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, return values need not be described. However, for a mutation tool with zero annotations and no stated failure modes or identifier rules, the description is only minimally complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter is fully documented in the schema ('The tag display name'), so the baseline is 3. The description's 'tag/group' phrasing adds a small conceptual hint but no format, length, or uniqueness constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Create) and resource (tag/group), with the added scope note that tags organise watches. It is clearly distinguishable from list_tags and the watch-* siblings by verb alone, though it never names a sibling or clarifies when creating versus other tag operations applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_tags for discovering existing tags before creating a duplicate. Usage is only implied by the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_watchC

Create a new URL watch to monitor for changes.

NameRequiredDescriptionDefault
tagNoOptional tag/group name to organise this watch under
urlYesThe URL to watch for changes
titleNoOptional human-readable title for the watch
pausedNoStart paused (True) or active immediately (False, default)
minutes_between_checksNoCheck interval in minutes (default: 60). Set null for server default.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it says nothing about side effects, auth requirements, duplicate-URL handling, or whether the watch starts active or paused. The paused/interval defaults live only in the schema, so the description adds almost no behavioral context for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with the verb and resource front-loaded and zero waste. It is efficient, though its brevity reflects under-specification rather than pure conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return-value explanation is correctly omitted, and all parameters are covered by the schema. However, for an unannotated mutation tool the description is thin on behavior and routing, leaving an agent without enough to call it confidently in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter is self-documented (url, tag, title, paused, minutes_between_checks), so the schema does the heavy lifting. The description adds no format, constraint, or default detail beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new URL watch') plus the resource's purpose ('monitor for changes'). Clear enough that an agent distinguishes it from update_watch/delete_watch, but it offers no explicit differentiation from sibling create tools like create_tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative guidance. Nothing tells the agent when to create a watch versus using list_watches/search_watches or how this relates to create_tag. Usage is only inferred from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_watchB

Permanently delete a watch and all its history.

NameRequiredDescriptionDefault
uuidYesThe watch UUID to delete

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose the two safety-critical traits: deletion is permanent and cascades to all watch history. However, it omits permissions/auth requirements, any confirmation or recovery semantics, and whether related resources (e.g., snapshots or tags) are affected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the destructive scope stated immediately and zero filler. Nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one fully documented parameter) and an output schema exists, so return values need no explanation. What is missing for a no-annotation destructive tool is any usage context or preconditions, leaving the agent to infer them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% ('The watch UUID to delete'), so the single parameter is fully documented in structured data. The description adds nothing beyond restating the operation, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (delete) plus resource (watch) with a scope qualifier ('and all its history'), so the agent knows exactly what is removed. It is distinguishable from create_watch/update_watch/list_watches by the verb alone, but it never names or contrasts a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no precondition (e.g., look up the watch first via get_watch), and no note on when to prefer update_watch or recheck_watch instead. Usage is only inferable from the verb and the word 'Permanently'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_snapshot_diffC

Get the diff between two snapshots of a watched URL.

NameRequiredDescriptionDefault
uuidYesThe watch UUID
action_limitNoMaximum mutating actions this MCP server will allow for this watch after returning the diff. Defaults to CHANGEDETECTION_MCP_ACTION_LIMIT_PER_WATCH (3). Set 0 to disable.
to_timestampYesLater snapshot timestamp. Use 'latest' or 'previous' as shortcuts.
from_timestampYesEarlier snapshot timestamp. Use 'latest' or 'previous' as shortcuts.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and falls short. Critically, it says nothing about the action_limit parameter's semantics — that this tool consumes a budget of *mutating* actions after returning the diff — so an agent could reasonably assume this is a pure read. It also omits auth requirements, error behavior when a timestamp is invalid, and any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity edges toward under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the 100% schema coverage handles parameters. However, for a tool with an undocumented side-effect budget (action_limit) and no annotations, the description is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents uuid, from_timestamp, to_timestamp, and action_limit (including the 'latest'/'previous' shortcuts). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'get the diff between two snapshots of a watched URL' clearly states what the tool returns. It does not, however, distinguish itself from the sibling get_watch_history, which an agent could plausibly confuse with snapshot comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance, no prerequisites (e.g., snapshots must already exist), and never names an alternative such as get_watch_history for listing snapshots. Usage is only faintly inferable from the phrase 'between two snapshots'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_system_infoA

Get ChangeDetection.io server stats and health.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Get' implies a read-only operation and the output schema documents the returned stats, but the description says nothing about authentication/permission requirements (e.g. admin API key) or any rate limiting. It is a minimal disclosure for a no-parameter diagnostic tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with zero filler, front-loaded with the verb and the exact resource. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema covering return values, the description needs only to name the resource and scope, which it does. The one gap is the absence of any note on access requirements for a server-diagnostics endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and a specific resource ('ChangeDetection.io server stats and health'), so the agent knows exactly what it returns. It doesn't explicitly differentiate itself from the watch/tag siblings, but the system-level scope makes the distinction self-evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the tool for checking server health, but the description gives no explicit when-to-use trigger, no prerequisites, and no mention of alternatives. For a zero-parameter read tool this is adequate but not helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watchC

Get detailed information about a specific watch.

NameRequiredDescriptionDefault
uuidYesThe watch UUID

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but it says nothing about permissions, behavior for an unknown/invalid UUID, or what 'detailed information' actually encompasses — a vague phrase for a tool whose output schema the agent cannot see in the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with zero filler. It is efficient, though its brevity borders on under-specification rather than tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. For a simple single-record getter that is minimally adequate, but with no annotations and no usage context, the definition stops short of what an agent needs to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single 'uuid' parameter documented as 'The watch UUID'. The description adds no format, source, or acquisition guidance for that identifier, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('a specific watch') with the scope narrowed to a single record, which implicitly separates it from list_watches. However, it does not name or distinguish itself from near-neighbors like get_watch_history or get_snapshot_diff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus list_watches or search_watches, and no mention of prerequisites such as needing a UUID from a prior listing call. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watch_historyB

List the snapshot history (timestamps) for a watched URL.

NameRequiredDescriptionDefault
uuidYesThe watch UUID

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it only reveals that the return contains timestamps. It says nothing about ordering (newest first?), pagination, or whether history grows unbounded, though the read-only nature is strongly implied by "List". The presence of an output schema lowers the bar for return-shape disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the action front-loaded and the parenthetical adding real clarification. Nothing is wasted, though the sentence is so short that there was little to trim in the first place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema, the description covers the core purpose adequately. It omits ordering/pagination expectations and any hint of how this history relates to get_snapshot_diff, which is the main gap given the dense sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (uuid) with 100% schema description coverage, so the schema already documents it as "The watch UUID". The description adds matching scope ("a watched URL") but no format, lookup, or failure semantics beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (snapshot history) scoped to "a watched URL", which is more precise than the bare name. It does not explicitly contrast itself with nearby siblings like get_watch or get_snapshot_diff, so an agent must infer the boundary. Clear but not sibling-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus get_watch (current state) or get_snapshot_diff (change comparison), and no note that the uuid must reference an existing watch. Usage is only implied by the name and purpose. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tagsA

List all tag groups used to organise watches.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only operation via the verb 'List' and scope via 'all', but does not disclose pagination, ordering, authentication, or rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the action and scope without wasted words. Nothing is repeated or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a zero-parameter list tool and the presence of an output schema, the description covers what an agent needs to invoke it. Its gaps are minor: no indication of ordering or pagination, but the output schema handles return-value details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain. The baseline for zero parameters is 4, and the description adds no misleading parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('tag groups used to organise watches'), making clear what the tool returns and distinguishing it from siblings like list_watches or create_tag. An agent can tell this tool apart without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance and names no alternatives. It simply states the tool's function, leaving the agent to infer that this is the route for retrieving tag groups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_watchesB

List all watched URLs with their current status.

NameRequiredDescriptionDefault
tagNoOptional tag name to filter by

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'List' reasonably implies a read-only operation and 'with their current status' hints at the payload, but pagination, result limits, and whether status history is included are all unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is efficient, though perhaps slightly under-specified rather than genuinely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, the description needn't explain return values, and it names what is returned. The remaining gap is the failure to position this against search_watches, which an agent will need in order to pick the right tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single optional 'tag' parameter is documented in the schema itself. The description adds nothing about filtering semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all watched URLs') plus the returned payload ('their current status'), so the operation is unambiguous. It does not, however, distinguish itself from the sibling search_watches, leaving a potential overlap for the agent to resolve.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the neighboring alternatives such as search_watches or get_watch. The agent must infer that this is the unfiltered enumeration path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recheck_watchB

Trigger an immediate recheck of a watch URL.

NameRequiredDescriptionDefault
uuidYesThe watch UUID to recheck

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says only 'trigger an immediate recheck' and discloses nothing about whether the call blocks or is async, whether it can be rate-limited, what permissions are required, or whether the recheck changes stored data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler, which is appropriate for a one-parameter action tool. It is efficient, though it leaves room for one more sentence of behavioral context without becoming bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the single required parameter is fully documented. The remaining gap is behavioral — for a state-changing trigger with no annotations, the description says nothing about effects, permissions, or rate limits, leaving it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter at 100% schema description coverage, the schema already documents 'uuid' as 'The watch UUID to recheck'. The description's phrase 'a watch URL' adds slight framing but no format, source, or validation detail beyond what the schema supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ('trigger') with a specific resource ('a watch URL') and the action is clearly a state-changing recheck, distinct from the read/CRUD siblings like get_watch or update_watch. It does not, however, explicitly name any sibling or contrast itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the tool to call when it wants an on-demand refresh rather than a scheduled one, but the description states no conditions, prerequisites, or alternatives (e.g. when to prefer it over get_watch_history).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_watchesB

Search watches by URL or title.

NameRequiredDescriptionDefault
tagNoOptional tag name to narrow results
queryYesSearch term

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Search' implies a read-only operation, but nothing is said about pagination, result caps, matching semantics, or ordering. For a tool with zero annotation coverage this is a significant gap, though an output schema exists to handle return values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that front-loads the verb and resource with no wasted words. Appropriately sized for a two-parameter search tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be described, and both parameters are covered by the schema. What is missing is routing context against the many sibling watch tools, particularly list_watches, leaving the definition just barely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented (query = 'Search term', tag = 'Optional tag name to narrow results'). The description's 'by URL or title' marginally informs what query matches but omits the tag parameter entirely, adding little beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Search watches') plus the matching fields ('by URL or title'), which lets an agent understand the operation. However, it does not distinguish itself from the sibling list_watches, so an agent cannot tell from the description alone which of the two to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus list_watches, which is the obvious alternative for enumerating watches. It also doesn't note that the tag parameter can constrain results, so the routing logic is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_watchC

Update an existing watch's settings.

NameRequiredDescriptionDefault
tagNoNew tag / group assignment
urlNoNew URL to monitor
uuidYesThe watch UUID
titleNoNew title for the watch
pausedNoPause (True) or resume (False) the watch
minutes_between_checksNoNew check interval in minutes. Set null to keep existing.

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose whether updates are partial or full, whether omitted fields are preserved, what permissions are required, or whether the change is reversible — all relevant for a mutation tool. The only partial-update hint ('Set null to keep existing') lives in the schema, not the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that front-loads the verb and resource with no filler. It is efficient, though the brevity reflects under-specification rather than tight coverage of necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no annotations, the description omits critical behavioral context: update semantics, permission requirements, and any side effects. An output schema exists so return values need not be explained, but the mutation behavior itself is left entirely to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter (tag, url, title, paused, minutes_between_checks, uuid). The description adds no syntax, format, or constraint detail beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (watch) with the scope 'existing watch's settings', which is clear enough to distinguish from create_watch and delete_watch. It stops short of naming or contrasting those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'existing watch' implies the tool targets already-created watches, but there is no guidance on when to use this versus create_watch, delete_watch, or recheck_watch, and no prerequisites (e.g., needing the UUID) are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.1.0
    • First observedcreate_tag
    • First observedcreate_watch
    • First observeddelete_watch
    • First observedget_snapshot_diff
    • First observedget_system_info
    • First observedget_watch
    • First observedget_watch_history
    • First observedlist_tags
    • First observedlist_watches
    • First observedrecheck_watch
    • First observedsearch_watches
    • First observedupdate_watch

TDQS

A3.6/5.0

Scored across 12 tools

Disambiguation5/5

Each tool maps to a distinct resource/action (watch CRUD, recheck, history/diff, tags, search, system info). The only near-overlap is list_watches vs search_watches, but descriptions clearly delineate filtering versus listing all.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern (list_, get_, create_, update_, delete_, recheck_, search_). No stylistic deviations.

Tool Count5/5

12 tools is well-scoped for a change-detection server, covering the essential watch lifecycle, snapshots, tags, and health without bloat.

Completeness4/5

Core watch lifecycle (CRUD + recheck + history/diff) and search are present, but tag management only supports list/create (no update/delete) and there is no direct snapshot content retrieval beyond diff. These are minor gaps.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that integrates with the Agent.ai API to provide web text extraction, web screenshots, and YouTube transcript capabilities through a dynamic function loading system.
    100
    14 npm
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that enables AI assistants to fetch web content in multiple formats (HTML, JSON, text, Markdown) with intelligent content extraction, chunk management, and browser automation support.
    5
    78 npm
    15
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server that lets AI agents use your real browser as an API, accessing any website with your login state, no keys or scrapers needed.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for monitoring website changes. Enables tracking URLs, detecting content changes, comparing snapshots, and extracting content with CSS selectors from an AI assistant.
    5 npm
    MIT