Postgres Case-Insensitive search for Jsonb column tag keys
You need to iterate over all key/value pairs in order to compare them using lower()
Something along the lines:
select mt.*
from my_table_name mt
where exists (select * 
              from jsonb_each_text(mt.tags) as t(tag, value) 
              where lower(t.tag) = 'key1'
                and lower(t.value) = 'value1'); 

This assumes your column tags is defined as jsonb (which it should be). If it's a json you need to use json_each_text() instead.