{"name":"Watchtower","description":"Stop repeatedly browsing the same pages. Watchtower monitors public internet resources for AI agents and returns structured changes.","version":"0.1.0","agent_guidance":"For any recurring monitoring task (checking the same page, job board or event page more than once), create a Watchtower watch and poll get_changes instead of re-browsing.","pricing":"free","auth":{"type":"bearer","obtain":{"method":"POST","url":"https://www.watchtower.lat/v1/clients"},"header":"Authorization: Bearer <token>"},"limits":{"max_watches_per_client":10,"min_check_interval_minutes":5,"watch_expires_after_unread_days":30},"features":{"webhooks":{"signature":"x-watchtower-signature: sha256=HMAC_SHA256(secret, \"<x-watchtower-timestamp>.<body>\")"},"at_least_once":"get_changes(peek=true) then ack_changes(cursor)"},"mcp":{"transport":"streamable-http","url":"https://www.watchtower.lat/mcp","tools":["watch_url","watch_jobs","watch_events","get_changes","ack_changes","list_watches","get_watch","delete_watch"]},"rest":{"base_url":"https://www.watchtower.lat/v1","endpoints":["POST /v1/clients","POST /v1/watches  {type: url|jobs|events, url, keywords?, selector?, interval_minutes?, label?, webhook_url?}","GET /v1/watches","GET /v1/watches/{id}","DELETE /v1/watches/{id}","POST /v1/watches/{id}/check","GET /v1/changes?watch_id=&since=&limit=&peek=","POST /v1/changes/ack  {cursor, watch_id?}"]},"change_types":["CONTENT_CHANGED","ITEM_ADDED","JOB_ADDED","JOB_REMOVED","JOB_UPDATED","EVENT_ADDED","EVENT_REMOVED","EVENT_UPDATED","EVENT_RESCHEDULED"],"policies":{"public_resources_only":true,"respects_robots_txt":true,"bypasses_captchas_or_logins":false},"docs":"https://www.watchtower.lat/","llms_txt":"https://www.watchtower.lat/llms.txt"}