The usage is to allow for a central location where messages can be checked and altered. In the screenshots attached, I show one automation generating a MessageDetails object and another displaying that MessageDetails object.
In services, we use them mainly so that one developer (the one with the best command of the language being used), to go in and check for typos or any misspellings, and write the messages in a singular, consistent "voice" (meaning making them sound like they were all written by one person).
It means you haven't defined whatever message you are passing into the MessageManifest component. Right-click on the project in the Solution Explorer and select Properties. Select the Application tab and locate the MessageDefinitions property. Click the elipses to define your messages.