Stai codificando due volte :
json_docs = [json.dumps(doc, default=json_util.default) for doc in stories]
resp = jsonify(data=json_docs)
Ora ogni voce in json_docs è una stringa che rappresenta un oggetto JSON.
Rimuovere il json.dumps() chiama:
resp = jsonify(data=stories)
oppure usa flask.json.dump() con un Response() :
resp = Response(json.dumps({'data': stories}, default=json_util.default),
mimetype='application/json')
Ciò ti consente di utilizzare il tuo json_util.default gestore sugli oggetti cursore ancora.