# TheySaidSo MCP

> TheySaidSo connects your AI agent to a massive quote database. You can pull the Quote of the Day, search for quotes by author or theme, fetch random inspiration, and list available categories—all without leaving your chat client.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** quotes, motivation, inspiration, content-generation, wisdom

## Description

TheySaidSo hooks your AI agent up to a massive quote database. You don't have to leave your chat client; you just run a command and get curated wisdom or context pulled right into the conversation flow.

**Getting Today’s Quote:**
You use `get_quote_of_the_day` to retrieve the single featured quote for the current day. If you want that quote focused on a specific topic—say, 'management' or 'inspiration'—you can optionally filter it using a thematic category tag.

**Discovering Topics:**
Before filtering anything, run `list_qod_categories`. That tool spits out a list of every available theme and category in the database. This lets you see what tags you can use to narrow down your daily quote selection.

**Searching the Database Deeply:**
The `search_quotes` function is how you dig through the whole damn thing. You can run deep searches using specific text phrases that appear anywhere in the quotes. You also control the search by filtering on a single author's name or enforcing limits on the quote’s character length, letting you pinpoint an exact saying without skimming thousands of results.

**Pulling Random Inspiration:**
You need random ideas? `get_random_quotes` pulls one or more quotes from the database. You can control that batch by limiting the selection to a specific author's work, filtering by relevant tags, or specifying a minimum and maximum character count for those results.

This server lets you handle multiple quote needs—from finding today’s curated thought to executing complex searches across thousands of records. When you run `get_quote_of_the_day`, it gives you the featured quote; if you're not sure what categories are available, running `list_qod_categories` shows you all your options for that daily filter.

If finding today’s curated wisdom isn't enough, and you need to find a specific saying, use `search_quotes`. You can tell it to look through the entire database using precise text queries. Need quotes from Shakespeare but only those under 20 words? Use `search_quotes` with both an author filter and a length constraint. You can even search for phrases that include multiple authors or themes.

When you just need a quick burst of random context, you use `get_random_quotes`. This tool pulls a selection of quotes; you'll notice you can limit this batch by specifying tags like 'funny' or 'life', or narrow it down to only works from one specific author. It gives you control over the volume—you tell it how many random results you want, and you filter that entire set using multiple criteria. You don't just get *a* quote; you get a controlled selection of quotes based on your exact rules.

## Tools

### list_qod_categories
Lists all available themes and categories that you can use to filter the daily quote.

### get_quote_of_the_day
Retrieves today's featured quote, which you can optionally filter using a category tag.

### get_random_quotes
Pulls one or more random quotes from the database. You can limit this selection by author, tag, or desired length.

### search_quotes
Performs a deep search of the entire database using text queries, specific authors, or length constraints.

## Prompt Examples

**Prompt:** 
```
What is the quote of the day for inspiration?
```

**Response:** 
```
The inspirational quote of the day is: 'Believe you can and you're halfway there.' — Theodore Roosevelt.
```

**Prompt:** 
```
List all available categories for the quote of the day.
```

**Response:** 
```
I've retrieved the categories for you. You can choose from: inspire, management, sports, life, funny, love, art, and students.
```

**Prompt:** 
```
Search for quotes about 'success' by 'Steve Jobs'.
```

**Response:** 
```
I found a relevant quote by Steve Jobs: 'If you really look closely, most overnight successes took a long time.' Would you like to see more from him?
```

## Capabilities

### Retrieve Quote of Day
Gets the single curated quote featured for today, allowing filtering by thematic category.

### Discover Available Themes
Lists all content categories (like 'life' or 'art') that can be used to filter the daily quote.

### Search Quote Database
Finds quotes by running deep text searches, filtering results by author name, or enforcing length limits.

### Fetch Random Quotes Batch
Pulls a selection of random quotes and allows you to filter that batch by specific tags or authors.

## Use Cases

### Drafting a LinkedIn Post
A marketing manager needs a quick, authoritative quote about leadership. Instead of Googling 'best quotes on leadership,' they prompt their agent: 'Give me a daily inspiration quote for the management category.' The agent uses `get_quote_of_the_day` and returns the perfect caption.

### Writing an Academic Article
A student needs to verify an obscure historical saying. They can't rely on general search engines. They use `search_quotes`, inputting key phrases and narrowing results by specific authors, ensuring the attribution is correct.

### Building a Daily App Feature
A developer wants an app that displays random motivation daily. Instead of hardcoding sources, they ask their agent to run `get_random_quotes`, filtering by 'life' and asking for 3 results. The API handles the batch retrieval.

### Curating a Podcast Episode
A podcaster needs material spanning several moods (funny, inspirational, love). They ask their agent to run `list_qod_categories` first to see options, and then use `get_random_quotes` multiple times with different tags.

## Benefits

- Stops manual searching. Instead of opening a separate quote website, you just ask your agent to run `search_quotes` for an exact phrase, getting the result instantly in chat.
- Never get stuck on inspiration again. Use `get_random_quotes` to pull multiple quotes based on tags like 'love' or 'success', giving you immediate options for a draft.
- Know your limits. Before asking for the daily quote, run `list_qod_categories`. This shows you every theme available—you won't accidentally ask for one that doesn't exist.
- Contextual depth in seconds. Need a motivational line for an article? Use `get_quote_of_the_day` and filter it by 'management'. It pulls the exact quote, ready to copy.
- Better data control means reliable output. You aren't just getting *a* quote; you are running a specific function (`search_quotes`) that respects your criteria for author or character count.

## How It Works

The bottom line is: you ask your agent for wisdom, and it runs the right tool call against the database.

1. Subscribe to the TheySaidSo server on Vinkius.
2. Provide your API key (if required for high usage) to your AI client.
3. Ask your agent a natural language question, specifying which tool it needs to run (e.g., 'What's the quote of the day for life?').

## Frequently Asked Questions

**How do I find all possible categories for get_quote_of_the_day?**
You run the `list_qod_categories` tool first. This returns a list of every available theme, like 'funny,' 'art,' or 'students.' You must use one of those names when calling get_quote_of_the_day.

**Is there a difference between getting random quotes and searching quotes?**
Yeah, big difference. `get_random_quotes` gives you a mix of unrelated lines based on filters (like author or tag). `search_quotes`, however, performs a precise query for specific text phrases.

**Can I use get_quote_of_the_day in a workflow?**
Absolutely. You can ask your agent to run it as the first step in a multi-step task—for example, 'Get the quote of the day and then draft a paragraph around it.' It handles the tool call for you.

**What if I want quotes from multiple authors?**
You'll need to use `search_quotes` or run `get_random_quotes` multiple times. The random function is better for getting a mix of different voices.

**If I hit a rate limit using `search_quotes`, what should my AI client do?**
You need to implement exponential backoff in your agent's code. The server will return a 429 error with specific headers indicating how long to wait before trying again. This prevents repeated failure loops.

**How does the data returned by `get_quote_of_the_day` differ based on categories?**
The structure remains consistent, but the content changes dramatically. When you specify a category like 'management', the quote provided reflects themes specific to that field. The system uses your input to filter the daily selection.

**When I use `get_random_quotes`, are there limits on how many quotes I can retrieve at once?**
The maximum number of random quotes you get depends on your API plan. For basic usage, we recommend requesting a small batch (1-5) to maintain reliable performance and keep prompts clean.

**What are the minimum requirements for calling `search_quotes`?**
You must provide at least one search parameter—either a text query, an author name, or a length constraint. The tool won't execute if no criteria are supplied.

**How can I get a specific type of quote for today?**
You can use the `get_quote_of_the_day` tool and provide a `category` such as 'inspire', 'management', 'life', or 'funny' to get a curated quote matching that theme.

**How do I know which categories are available for the Quote of the Day?**
Simply run the `list_qod_categories` tool. It will return a complete list of valid categories that you can use to filter your daily quotes.

**Is it possible to search for quotes by a specific person?**
Yes! Use the `search_quotes` tool and provide the `author` name. You can also combine this with a `query` string to find specific topics mentioned by that author.