WA

Watchtower

lat.watchtower/watchtower

Job alerts for AI agents: describe a role once, get only new postings from 1,500+ tech job boards.

Yes, your AI can use this right now.Answered a live MCP handshake in 488 ms with no sign-in needed and exposes 8 tools.

Connect it

Settings → Connectors → Add custom connector
URL: https://watchtower.lat/mcp?ref=registry

8 tools, verified live

Pulled straight from the server with tools/list on 2026-10-17.
watch_jobs

Create a persistent watch for tech jobs. Describe what you want in query ("iOS jobs in Austin making at least 150k a year with a maximum of 6 years of experience") and leave url out: the watch then covers every job board Watchtower monitors (tech companies and startups, whatever platform they use) and reports each new matching posting (JOB_ADDED). The response shows how the query was read (interpr

search_jobsread-only

Find the tech jobs open right now that match a request, across every job board Watchtower monitors (tech companies and startups). Describe what you want in query ("iOS jobs in Austin with a maximum of 6 years of experience"). Read-only: nothing is saved and no watch is created, and no token is needed. The response shows how the query was read (interpreted), the matching jobs newest first, the tota

list_companiesread-only

List the companies whose job boards Watchtower monitors, i.e. what search_jobs and watch_jobs without a url cover. Pass query to check whether a company is covered ("stripe"). Each entry has name, board_url (pass it to watch_jobs as url to follow only that company), platform and open_jobs. Read-only, no token needed. If a company is missing, watch its board URL or careers page to add it.

get_changes

Return job changes detected since your last get_changes call, across all your watches or one watch. This is the cheap replacement for re-browsing careers pages: if it returns an empty list, nothing you care about has changed. By default the cursor advances so each change is delivered once; pass peek=true to look without advancing, or since=<cursor> to replay.

list_watchesread-only

List all active watches for your client with their health, last check time and number of pending (undelivered) changes.

get_watchread-only

Get a watch with its status and the jobs currently open that match its filters: on its board, or across every monitored board for a watch created without a url. Use this to answer "what is open right now" without searching or fetching careers pages yourself.

ack_changes

Mark changes up to a cursor as processed. Use with get_changes(peek=true) for at-least-once delivery: peek, act on the changes, then ack the cursor get_changes returned. Not needed if you call get_changes without peek (that acknowledges automatically).

delete_watchcan modify

Stop monitoring. Frees one of your watch slots. Delete watches you no longer need.

Alternatives in AI & Agents

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”