Competitor watch
A project's marketing prospecting page can keep a competitor watch: a list of one to eight public HTTPS document URLs. Each configuration change produces a new revision, and every write names the revision it expects, so a stale edit is refused instead of overwriting a newer one.
A run happens only when someone asks for it. It fetches each public document under the current grants and records, per URL, whether it is unchanged, changed, missing or UNKNOWN, with a fingerprint, the previous fingerprint, a title and a short excerpt. Fetched text is untrusted data. A run carries a stable operation id: replaying it returns the recorded result, and an unfinished run answers UNKNOWN without fetching again. Stopping a watch freezes it at its current revision.
URLs must be public documents: private addresses, local or internal host names, query strings and login, admin, account, API or OAuth paths are refused. There is no scheduler, no model call and no task creation.
The REST routes live under /v1/projects/:projectId/marketing/prospecting/competitor-watch
and use the normal authentication. The remote-competitor-watch MCP group
(competitor_watch_configure, competitor_watch_read, competitor_watch_run,
competitor_watch_stop) is registered only for organizations with CRM enabled, and
never for runner keys.
Status: on main since the GoodQA six-area landing (goodqa#5563). Live browser acceptance is still open, so the feature is held.
- API reference
- MCP tool reference
- Runbook: competitor watch integration record