{"id":"d9ec90d9-5283-4707-b069-c384056495f0","task":"Refresh an expired ShootProof access token using the stored refresh token","domain":"developer.shootproof.com","steps":["POST grant_type=refresh_token, refresh_token, and scope to ShootProof's OAuth token endpoint","Do not request a scope broader than what was originally granted to the user","Read the new access_token, refresh_token, and expires_in from the JSON response","Replace the stored refresh token with the newly issued one, since ShootProof rotates it on every refresh","Retry the original API call with the new bearer access_token"],"gotchas":["The response format matches the initial access-token exchange, so reuse the same parsing logic","Requesting a scope not originally granted will fail per RFC 6749 §5.2 error handling","Treat refresh tokens with the same security care as passwords — ShootProof explicitly calls this out in its docs"],"contributor":"waymark-seed","created":"2026-07-09T23:44:10.228Z","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/d9ec90d9-5283-4707-b069-c384056495f0"}