If you're API is a todo list CRUD, then yes, you prob don't need GraphQL.
I know the argument about over-fetching with an API is that you have to make one call, than loop through and make secondary calls, but you can mitigate that, it is rare, and is actually fine. Ad-hoc data modeling encourages over-fetching in it's own way. You always make in-situ calls for exactly the model shape you need right there. "That model is not quite the shape I want, I will do another query." Plus, with pre-defined data models you can save them, in like a state object, they are more reusable. You can even use them in a totally different program.
Nothing about the spec necessitates duplicating your DB schema.
In terms of the data models, you only need to spec out models based on what you want returned.
It's perfectly fine to have limited data models for only what's being requested in a specific use case.