Besides the warranty period that your contractor told you that you had, you might have more time. First, your contractor might have failed in his contractual obligation to fix your roof. And, therefore, might be liable for a breach of contract claim. The statute of limitations period for contract actions in Missouri is five years, and the cause does not start accruing until the damage caused by the breach can be ascertained.
Second, your contractor might have fixed the roof in a negligent manner. And, therefore, might be liable to you for negligence. Additionally, the builder may have violated Missouri's Consumer Protection Act, called the Missouri Merchandising Practices Act. It is imperative to speak with a St. Louis consumer rights lawyer as soon as possible after you discover the faulty work.