Skip to main content
Glama
si-essence

changedetection-mcp

by si-essence

changedetection_update_watch

Idempotent

Update an existing changedetection.io watch's URL, schedule, filters, notifications, or conditions by UUID. Omit confirm to preview changes as a dry run before applying.

Instructions

Update a watch. PUT /api/v1/watch/{uuid}. Same writable fields as create, plus last_viewed. Omit confirm for a dry-run.

Input Schema

NameRequiredDescriptionDefault
tagNoDeprecated. Comma-separated tag names, matched case-insensitively and created when missing.
urlNo
bodyNo
tagsNoTag UUIDs. Unknown UUIDs are stored but resolve to no group.
uuidYesWatch UUID.
proxyNo
titleNoWatch title, not the HTML page title.
methodNo
pausedNo
confirmNoSet to the boolean true to execute the write. Omit this field for a dry-run preview. false and the string true are rejected.
headersNoHTTP headers for the fetch. Authorization and cookie values are redacted in output.
processorNotext_json_diff is the default. restock_diff tracks stock and price.
conditionsNo
llm_intentNoPlain-English intent for AI change filtering.
ignore_textNo
last_viewedNoUnix timestamp. Set higher than last_changed to mark the watch viewed.
extract_textNo
link_to_openNoHuman-facing URL to open instead of url. Empty string means use url.
trigger_textNo
browser_stepsNo
fetch_backendNoFetcher. Common values: system, html_requests, html_webdriver.
in_stock_onlyNorestock_diff: only notify on in-stock transitions.
include_filtersNo
webdriver_delayNo
filter_text_addedNo
notification_bodyNo
notification_urlsNoApprise notification URLs for this watch. Tokens in URLs are redacted in output.
check_unique_linesNo
llm_change_summaryNoInstructions for the AI to summarise changes in notifications.
notification_mutedNo
notification_titleNo
time_between_checkNo
filter_text_removedNo
ignore_status_codesNo
llm_backend_profileNoWatch: boolean on/off. Tag: true/false/null ternary AI control.
notification_formatNo
strip_ignored_linesNo
time_schedule_limitNo
filter_text_replacedNo
follow_price_changesNorestock_diff: track price changes.
trim_text_whitespaceNo
subtractive_selectorsNo
conditions_match_logicNo
remove_duplicate_linesNo
use_page_title_in_listNo
llm_change_summary_modeNo
notification_screenshotNo
track_ldjson_price_dataNo
extract_lines_containingNo
sort_text_alphabeticallyNo
webdriver_js_execute_codeNo
text_should_not_be_presentNo
history_snapshot_max_lengthNo
price_change_threshold_percentNo
time_between_check_use_defaultNo
filter_failure_notification_sendNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare non-read-only but idempotent and non-destructive, so the safety profile is covered; the description adds the confirm/dry-run gate, which is valuable. However, it never says whether the update is a partial patch or a full replace, what happens to omitted fields, or whether permissions/auth are needed. For a 56-field mutation that ambiguity is material.

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?

Three tight fragments, zero filler, with the purpose front-loaded before the endpoint and field hints. The brevity is appropriate stylistically, though it is achieved partly by offloading information elsewhere rather than by efficient compression.

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?

Given 56 parameters, nested objects, low schema coverage, and no output schema, this description is far too thin. An agent cannot determine update semantics, which fields are required for a valid PUT, or what a successful response looks like without consulting another tool or the full spec.

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

Parameters2/5

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

Schema description coverage is only 29%, so the description needs to compensate, but it delegates almost everything to "same writable fields as create, plus last_viewed." That forces the agent to open changedetection_create_watch to understand the 55 non-uuid fields, and it still leaves partial-vs-full semantics unresolved. The only field-level addition is the last_viewed note, which is already documented in 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 and resource ("Update a watch") and anchors it to an existing resource via the required uuid and the PUT endpoint. It also distinguishes itself from create by saying the writable fields are the same as create, plus last_viewed. It does not, however, distinguish itself from setter siblings such as set_watch_state or set_watch_muted that also mutate a watch.

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?

The only explicit usage guidance is "Omit confirm for a dry-run," which is a useful call pattern for a destructive-ish mutation. There is no statement of when to prefer this over update_tag, set_watch_state, set_watch_muted, or create_watch. Usage is implied by the verb rather than spelled out.

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