OSM's tile server blocks apps without a valid identifying User-Agent (contextily's default is a random UUID, which OSM rejects with an 'Access blocked' error tile). Switched to ESRI WorldGrayCanvas, a free no-key light-gray basemap comparable to CartoDB Positron, and set a proper User-Agent header (jetlag-maps/0.1) on contextily requests per OSM tile usage policy.