{"rule_id":"AB-028","category":"content_negotiation","icon":"🔀","title":"Vary Header","short_description":"Your site tells caches that content varies based on the requested format.","user_value":"Without a Vary header, caches may serve the wrong format to agents — JSON to someone who asked for HTML.","wrong_example":"No Vary header. Caches serve stale or wrong formats.","right_example":"Vary header ensures each agent gets the correct format from caches.","effort_hint":"quick","estimated_cost":"$0","severity":"low","pillar":"discovery","version":"1.0.0","counted_in_score":true,"check":{"type":"header_check","sources":["content_negotiation"],"target":"/"},"fix":{"eligible":true,"type":"deterministic","note":"Add Vary: Accept header to responses that support content negotiation"},"checklist_anchor":"#AB-028","checklist_url":"/agent-readiness-checklist#AB-028","html_url":"/rules/AB-028","json_url":"/rules/AB-028.json","related_rules":[{"rule_id":"AB-015","title":"Agent User-Agent Format","category":"content_negotiation"},{"rule_id":"AB-016","title":"JSON Format Support","category":"content_negotiation"},{"rule_id":"AB-017","title":"Plain Text Format Support","category":"content_negotiation"},{"rule_id":"AB-018","title":"Markdown Format Support","category":"content_negotiation"},{"rule_id":"AB-019","title":"Preferred Format Selection","category":"content_negotiation"},{"rule_id":"AB-029","title":"No Redirect on Negotiation","category":"content_negotiation"}]}