# PaperQuotes MCP

> PaperQuotes lets your AI client access a massive library of quotes. You can search by author or tag, fetch the quote of the day, and pull specific lines of wisdom right into your workflow. It's built for content writers, researchers, and developers who need verifiable inspiration fast.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** quotes, inspiration, authors, literature, content-discovery

## Description

This server lets your AI client tap into a massive library of quotes—it's not some sketchy quote generator; it’s a structured database you can query directly. You don't need to mess around with random searching; you just tell your agent what you want, and the data pops out.

**`get_qod`**: You invoke this tool when you just need immediate inspiration. It pulls one curated Quote of the Day right into your workflow, zero parameters needed. This is perfect for kicking off a post or starting a daily review—you get the quote instantly.

**`list_tags`**: Before you start building content around a specific topic, you gotta know what categories exist. You call this tool to pull a complete list of all available tags used across every single quote in the database. This lets you see the full scope of topics—you're looking for something about 'courage'? Use this first so your agent knows exactly what filters it can apply.

**`search_authors`**: If you only know a name, run this tool to confirm if that writer actually exists in our collection. It checks the PaperQuotes database and returns details confirming the author's existence and relevant information. You use this when you need verification before pulling quotes by a specific person.

**`list_quotes`**: This is your main workhorse. You pull multiple quotes from the entire system, but you don't get everything—you filter it down to exactly what you need. Your agent requires filters like an author name, relevant tags, or a specific language code to narrow results. You can combine these criteria: for example, you might ask it for quotes that are *by* 'Shakespeare' **and** tagged with 'love,' and only in English. The system pulls all matching instances simultaneously.

When your agent runs through this process, the workflow looks like this: First, you hit `list_tags` to map out potential themes. Next, if you’re focusing on a specific writer, you run `search_authors` just to make sure that name is valid and has associated data in the system. Then, when you're ready for content, you use `list_quotes`, feeding it all the verified criteria—the author name from the previous step, the tags from your initial discovery, and any language restriction. This mechanism ensures every quote returned is verifiable against the database rules.

This setup means your AI client never guesses; it always knows its source. You get a full spectrum of literary data: curated daily hits via `get_qod`, comprehensive topic mapping through `list_tags`, author verification with `search_authors`, and complex, filtered content pulls using `list_quotes`. You're running professional-grade research directly from your chat interface.

## Tools

### search_authors
Finds authors by name within the PaperQuotes database, confirming their existence and details.

### get_qod
Retrieves one curated Quote of the Day, requiring no input parameters.

### list_quotes
Pulls multiple quotes from the database. Requires filters like author name, tags, and language.

### list_tags
Returns a list of all available tags used to categorize every quote in the system.

## Prompt Examples

**Prompt:** 
```
Get the Quote of the Day in English.
```

**Response:** 
```
I've retrieved today's quote: 'The only way to do great work is to love what you do.' — Steve Jobs. Would you like to see more quotes from Steve Jobs?
```

**Prompt:** 
```
Search for authors named 'Marcus Aurelius'.
```

**Response:** 
```
I found 'Marcus Aurelius' in the database. I can now list his quotes for you using the list_quotes tool. Should I proceed?
```

**Prompt:** 
```
List 5 quotes about 'wisdom' and 'courage'.
```

**Response:** 
```
I've found several quotes matching those tags. Here are 5 selections including insights from ancient philosophers and modern thinkers. Would you like the full metadata for any of these?
```

## Capabilities

### Get Daily Inspiration
Invoke `get_qod` to retrieve one pre-selected, curated Quote of the Day.

### Filter Quotes by Criteria
Use `list_quotes` to pull multiple quotes from the database after filtering by author, tag, or language.

### Identify Specific Authors
Run `search_authors` to check if a specific writer exists in the PaperQuotes library.

### Explore Content Categories
Call `list_tags` to get a list of all available tags and topics for filtering quotes.

## Use Cases

### Writing a 'Best Of' Newsletter
The goal is to gather 5 diverse quotes for a weekly round-up. The user tells the agent this, and it executes `list_tags` first to suggest themes (e.g., leadership). Then, it runs `list_quotes`, filtering by those suggested tags and pulling varied results.

### Verifying a Quote for a Presentation
A presenter needs to confirm if a quote attributed to 'Marcus Aurelius' is accurate. They run `search_authors` to validate the author, then use `list_quotes` with that specific author name to pull the exact passage and its context.

### Daily Standup Icebreaker
The team lead wants a quick motivational opener. They prompt their agent for 'Quote of the Day.' The agent simply calls `get_qod` and presents it, keeping the meeting moving without manual lookups.

### Building an Educational Tool
A developer needs to populate a small application section with categorized quotes. They run `list_tags` to map out all possible categories (e.g., 'science', 'art'). Then, they use the full list of tags in multiple calls to `list_quotes` to fill out structured data.

## Benefits

- **Stop searching multiple sites.** You don't have to jump between Google, Wikipedia, and quote websites. Running `list_quotes` pulls everything you need from a single, reliable source.
- **Instant daily content.** Need something quick? Just call `get_qod`. It gives you today's featured quote in one go, perfect for automated social media posts.
- **Precise research targeting.** If you know the author but not what they wrote, use `search_authors` first. This confirms their presence before you waste time filtering quotes.
- **Structured discovery.** Need to know what topics are even available? Run `list_tags`. It shows all categories so your agent knows exactly how to filter for 'wisdom' or 'courage'.
- **Reduced prompt complexity.** Instead of writing, 'Find me a quote about X by Y,' you just ask the agent. The agent handles running `list_quotes` with all the right parameters.
- [object Object]

## How It Works

The bottom line is: your AI client calls a specific tool endpoint, and this server returns structured quote data, nothing more.

1. Subscribe to the PaperQuotes server and provide your API Token.
2. Tell your AI client exactly what you need (e.g., 'List three quotes about failure').
3. The agent runs the `list_quotes` tool, filtering the results against the database parameters.

## Frequently Asked Questions

**How do I find out what topics are available in PaperQuotes?**
You run the `list_tags` tool. This instantly retrieves all categories used to classify quotes, so you know exactly what filters your agent can use next.

**Can I get a quote about my specific job role using list_quotes?**
Yes, if the topic is tagged in the database. Run `list_tags` to find the right category (e.g., 'technology'). Then use `list_quotes`, filtering by that tag.

**What is the easiest way to start writing content with this server?**
Start with `get_qod`. It’s the fastest call and gives you a curated, ready-to-use quote for instant inspiration or daily posting.

**Does PaperQuotes help me find authors who aren't famous?**
You can use `search_authors` to check the database. If they are indexed, the tool will find them and allow you to pull their specific quotes using `list_quotes`.

**When I use `list_quotes`, how does my AI client pass the PaperQuotes API Token?**
You must pass your API token in the designated header field of your request. Vinkius handles secure management, so you never have to worry about exposing it directly to our platform or writing it into prompts.

**If I run multiple searches using `search_authors` quickly, are there rate limits?**
Yes, the standard limit is 10 calls per minute. Exceeding this threshold returns a 429 error code; your AI client should implement exponential backoff to retry.

**When I call `get_qod`, what structured data points should I expect in the response?**
The JSON response always includes the quote text, the author's name, and a source citation date. All fields arrive as standardized data types for reliable parsing into your application.

**Using `list_quotes`, what are the accepted formats for advanced filters like language or time period?**
You pass filter parameters as key-value pairs in the request body. Supported keys include 'language' (e.g., en, es) and 'min_year', ensuring specific data retrieval.

**How can I get a daily inspirational quote?**
You can use the `get_qod` tool. It fetches a curated Quote of the Day, and you can even specify a language preference.

**Can I search for quotes by a specific author?**
Yes. First, use `search_authors` to find the correct author name, then use `list_quotes` with the `author` parameter to see their quotes.

**Is it possible to filter quotes by topic or tag?**
Absolutely. Use the `list_tags` tool to see available categories, and then pass those tags into the `list_quotes` tool to filter the results.