{"rule_id":"AB-060","category":"bot_auth","icon":"🔑","title":"Bot Public Keys","short_description":"Public keys for verified bots are reachable and valid.","user_value":"Public keys are needed to verify bot signatures. If they're unreachable, signature verification fails.","wrong_example":"Public keys are listed but unreachable. Signature verification fails.","right_example":"All public keys are reachable and valid for signature verification.","effort_hint":"moderate","estimated_cost":"$10-50","severity":"medium","pillar":"executability","version":"1.0.0","counted_in_score":false,"check":{"type":"http_probe","sources":["bot-auth"],"target":"/.well-known/http-message-signatures-directory"},"fix":{"eligible":false,"type":"assisted","note":"Ensure each publicKeyUrl returns 200 with valid key material"},"checklist_anchor":"#AB-060","checklist_url":"/agent-readiness-checklist#AB-060","html_url":"/rules/AB-060","json_url":"/rules/AB-060.json","related_rules":[{"rule_id":"AB-023","title":"MCP Auth Discovery","category":"bot_auth"},{"rule_id":"AB-058","title":"Bot Signatures Directory","category":"bot_auth"},{"rule_id":"AB-059","title":"Bot Directory Members","category":"bot_auth"},{"rule_id":"AB-063","title":"Protected Resource Metadata","category":"bot_auth"},{"rule_id":"AB-067","title":"Web Bot Auth Directory","category":"bot_auth"},{"rule_id":"AB-128","title":"OAuth2 preferred over static API keys","category":"bot_auth"},{"rule_id":"AB-129","title":"Credentials via headers not query params","category":"bot_auth"},{"rule_id":"AB-130","title":"OAuth scopes defined","category":"bot_auth"},{"rule_id":"AB-131","title":"Token revocation endpoint available","category":"bot_auth"},{"rule_id":"AB-132","title":"Token introspection supported","category":"bot_auth"}]}