{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_y4bfp8cuepxr","handle":"lat-watchtower-watchtower","url":"https://wellknown.network/agents/lat-watchtower-watchtower","links":{"self":"https://wellknown.network/agents/lat-watchtower-watchtower/record.json","html":"https://wellknown.network/agents/lat-watchtower-watchtower","markdown":"https://wellknown.network/agents/lat-watchtower-watchtower/record.md","api":"https://wellknown.network/api/v1/agents/lat-watchtower-watchtower","status":"https://wellknown.network/api/v1/agents/lat-watchtower-watchtower/status","claim":"https://wellknown.network/agents/lat-watchtower-watchtower/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/lat-watchtower-watchtower/claim.json","badge":"https://wellknown.network/agents/lat-watchtower-watchtower/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/lat-watchtower-watchtower/history","tools":"https://wellknown.network/api/v1/agents/lat-watchtower-watchtower/tools"},"ard":{"identifier":"urn:air:watchtower.lat:server:lat-watchtower-watchtower","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Watchtower","summary":"Job alerts for AI agents: describe a role once, get only new postings from 1,000+ tech job boards.","description":"Job alerts for AI agents: describe a role once, get only new postings from 1,000+ tech job boards.","publisher":{"name":"lat.watchtower","url":null},"homepage":"https://watchtower.lat/","repository":"https://github.com/connorlagana/watchtower","version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://watchtower.lat/mcp?ref=registry","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-03T16:48:44.788836Z","publishedAt":"2026-10-03T16:48:44.788836Z","registryName":"lat.watchtower/watchtower"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":0.554,"provenance":"derived"}],"categories":["dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 2h ago.","lastOkAt":"2026-10-10T23:23:25.280Z","lastProbedAt":"2026-10-10T23:23:25.280Z","statusComputedAt":"2026-10-10T23:24:12.461Z","reliability30d":{"probes":20,"successRate":1,"p50Ms":169,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":20,"ok":20,"authBoundaryOk":0,"serviceOk":20,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T23:23:25.280Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":318,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T17:28:46.560Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":173,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T10:27:52.424Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":178,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T03:26:08.005Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":172,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:27:14.363Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":154,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:31:52.461Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":222,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:29:05.980Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":159,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:27:06.290Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":156,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:23:33.561Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":158,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T12:25:59.130Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":156,"error":null,"detail":{"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"toolCount":8,"toolsHash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","serverName":"watchtower","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"watch_jobs","description":"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 experienc"},{"name":"search_jobs","description":"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 quer"},{"name":"list_companies","description":"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 cove"},{"name":"get_changes","description":"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:"},{"name":"list_watches","description":"List all active watches for your client with their health, last check time and number of pending (undelivered) changes."},{"name":"get_watch","description":"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."},{"name":"ack_changes","description":"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 "},{"name":"delete_watch","description":"Stop monitoring. Frees one of your watch slots. Delete watches you no longer need."}],"package":null,"toolSurface":{"id":"ts_yr46ta7xj7z9","endpointId":"ep_3usk9534es3u","hash":"deb5fcbda4542cd35340db5a85bd6e82fddab8064feb2cde5baf836f506282e3","toolCount":8,"serverName":"watchtower","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-08T00:26:32.193Z","lastSeenAt":"2026-10-10T23:23:25.282Z","observations":12,"toolNames":["watch_jobs","search_jobs","list_companies","get_changes","list_watches","get_watch","ack_changes","delete_watch"],"distinctSurfaces":5},"endpointFacts":[{"id":"ep_3usk9534es3u","url":"https://watchtower.lat/mcp?ref=registry","type":"mcp_streamable_http","factsCheckedAt":"2026-10-07T03:24:08.944Z","auth":{"observedAt":"2026-10-07T03:24:09.102Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-07T03:24:09.112Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"watchtower.lat","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-09-30T01:18:18.000Z","validTo":"2026-12-29T01:18:17.000Z","daysToExpiry":78,"sanCount":1,"fingerprint256":"43:73:52:A9:DB:E4:EC:1E:F6:AF:03:54:57:E2:E5:B7:7E:AB:86:91:B4:41:12:A5:E7:4A:21:D9:E4:8B:EC:19"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"lat.watchtower/watchtower","url":"https://registry.modelcontextprotocol.io/v0/servers/lat.watchtower%2Fwatchtower","firstSeenAt":"2026-10-05T17:21:59.745Z","fetchedAt":"2026-10-08T18:22:06.066Z","normalizedAt":"2026-10-08T18:22:06.066Z"}]},"firstSeenAt":"2026-10-05T17:21:59.745Z","updatedAt":"2026-10-10T23:25:16.694Z"}