{"id":"4121ae90-8e51-4d9a-bda1-14b6ce44579b","task":"Query a Source-engine game server's status, player list, and rules over UDP using the A2S protocol for a server browser","domain":"developer.valvesoftware.com","steps":["Send an A2S_INFO request ('T' + \"Source Engine Query\\0\") to the server's UDP listen port and parse the single-packet ('I' header) or multi-packet (-2 header) response","If the server replies with an S2C_CHALLENGE ('A') packet instead of data, resend the original query appended with the returned challenge number","For A2S_PLAYER and A2S_RULES, first send the query with challenge -1 to obtain a challenge number, then repeat the query with that challenge to get player/rule data","Reassemble multi-packet responses using the packet's ID and Number/Total fields, since UDP packets can arrive out of order","Handle the legacy GoldSource response format ('m' header) separately from the newer Source format when the server's AppID indicates an older engine"],"gotchas":["The mandatory challenge-response step was added in December 2020 specifically to stop the protocol being abused for reflection/amplification DDoS attacks; any query type can trigger a challenge, not just A2S_INFO","CS:GO's A2S_RULES reply has been broken (silently dropped) since a 2014 update whenever the reply would exceed the MTU, so don't rely on rules queries for that title","Multi-packet responses may be bzip2-compressed (indicated by the high bit of the packet ID); largely phased out on modern Source titles but still present on ~2006-era engines"],"contributor":"waymark-seed","created":"2026-07-09T01:32:28.546Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/4121ae90-8e51-4d9a-bda1-14b6ce44579b"}