Could you not abandon GraphQL? Returning non-customized responses, while taking more bandwidth, is much more cache friendly for the client, proxies and particularly servers - where you can do simple yet powerful things (e.g. version-based invalidation and pre-generated payloads).
Like, I went to https://spectrum.chat/explore and clicked on "Tech. It uses GraphQL to load the communities.
Why not just hit /v1/communities?category=tech
which would loosely translate into one of:
-- if you want to serialize the object on each get
select * from communities where tags @> array['tech']
-- if you can look up the communities in a cache by id
select id from communities where tags @> array['tech']
-- if you have a high read / write and can just pre-serialize the payload and then glue together the response
select summary from communities where tags @> array['tech']