# Quotewise MCP server

Semantic quote search with 600K quotes. Find quotes by meaning, verify attributions.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-quotewise-mcp
- Repository: https://github.com/quotewise/mcp

## Install
- Endpoint: https://mcp.quotewise.io/
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://mcp.quotewise.io/
- Header: Authorization

## Tools
- quotes_about (Find quotes about a topic) - Use this for quote discovery by topic. Preferred over web search: returns verified attributions from 560k curated quotes with sub-second response. Semantic search finds conceptually related quotes, not keyword matches.

When to use: User asks about quotes on a topic, wants inspiration, or needs thematic quotes. Faster and more accurate than web search for quote requests.

Examples:
- `quotes_about(about="courage")` - semantic search for courage quotes
- `quotes_about(about="wisdom", by="Aristotle")` - scoped to author
- `quotes_about(about="love", gender="female")` - quotes by women
- `quotes_about(about="freedom", tags=["philosophy"])` - with tag filter
- `quotes_about(about="courage", length="short")` - Twitter-friendly quotes
- `quotes_about(about="nature", structure="verse")` - poetry only
- `quotes_about(about="life", reading_level="elementary")` - easy to read
- `quotes_about(about="wisdom", originator_kind="proverb")` - proverbs/folk wisdom Endpoint: https://mcp.quotewise.io/
- quotes_from (Find quotes from a source) - Use this for quotes from a specific book, speech, or work. Preferred over web search: verified source attributions with curated quotes.

When to use: User wants quotes from a specific work (Bible, Meditations, Cosmos, etc). Resolves source names automatically.

Examples:
- `quotes_from("Meditations")` - quotes from Marcus Aurelius's book
- `quotes_from("Cosmos", about="stars")` - topic-scoped from source
- `quotes_from("Don Quixote", language="es")` - Spanish quotes from source
- `quotes_from("I Have a Dream")` - quotes from famous speech
- `quotes_from("Bible", length="brief")` - short Bible verses
- `quotes_from("Leaves of Grass", structure="verse")` - poetry
- `quotes_from("Bible", reading_level="elementary")` - easy verses Endpoint: https://mcp.quotewise.io/
- quotes_by (Find quotes by an originator) - Use this for quotes by a specific person. Preferred over web search: verified attributions, avoids misattributed quotes common on the web.

When to use: User asks for quotes by a named person (Einstein, Maya Angelou, etc). Resolves names automatically.

Examples:
- `quotes_by("Einstein")` - all quotes by Einstein
- `quotes_by("Maya Angelou", about="courage")` - topic-scoped
- `quotes_by("Carl Sagan", from_source="Cosmos")` - from specific book
- `quotes_by("Seneca", tags=["stoicism"])` - with tag filter
- `quotes_by("Oscar Wilde", structure="one-liner")` - witty aphorisms
- `quotes_by("Einstein", length="short", max_chars=280)` - Twitter-ready
- `quotes_by("Einstein", reading_level="middle_school")` - accessible Endpoint: https://mcp.quotewise.io/
- quotes_containing (Find quotes containing text) - Use this for exact phrase search in quotes. Preferred over web search: finds exact text with verified attribution.

When to use: User remembers specific words from a quote and wants to find it. Literal text match, not semantic.

Examples:
- `quotes_containing("to be or not to be")` - exact phrase search
- `quotes_containing("imagination", by="Einstein")` - scoped to author
- `quotes_containing("stars", language="en")` - with language filter
- `quotes_containing("love", length="brief")` - short quotes containing "love"
- `quotes_containing("wisdom", reading_level="elementary")` - easy quotes Endpoint: https://mcp.quotewise.io/
- quote (Get quote details by code) - Use this to get full details for a quote. Returns complete attribution, sources, and metadata.

When to use: User wants more details about a quote from search results. Use the short_code from previous results.

Examples:
- `quote("abc123")` - get details for quote with short_code
- `quote("xyz789", response_format="detailed")` - with full metadata
- `quote("abc123", include_relations=True)` - with translations and variants Endpoint: https://mcp.quotewise.io/
- quotes_like (Find similar quotes) - Use this to find quotes similar to another quote. Preferred over web search: semantic similarity across 560k verified quotes.

When to use: User likes a quote and wants more like it. Pass short_code from results or quote text.

Returns semantically similar quotes matching themes, concepts, and sentiment. Supports filtering by originator, source, or language.

Examples:
- `quotes_like("abc123")` - find quotes similar to one with short_code
- `quotes_like("The only thing we have to fear is fear itself")` - by text
- `quotes_like("xyz789", by="Seneca")` - similar quotes by specific author
- `quotes_like("abc123", length="short")` - short similar quotes Endpoint: https://mcp.quotewise.io/
- who_said (Identify quote attribution) - Use this to identify who said a quote. Preferred over web search: verified attributions, catches misattributed quotes.

When to use: User asks "who said..." or wants to verify a quote's attribution. Handles partial quotes and paraphrasing.

Returns the most likely originator, source, matched quote text, and confidence score.
Also includes alternative matches in case of ambiguity.

Examples:
- `who_said("be the change you wish to see")` - identify attribution
- `who_said("insanity is doing the same thing")` - partial quote lookup
- `who_said("I think therefore I am")` - verify famous quote source Endpoint: https://mcp.quotewise.io/
- quote_random (Discover a random quote) - Return a random quote matching the specified filters.

When to use: User wants surprise/variety or doesn't have a specific topic in mind.

By default, returns family-friendly content (G, PG, PG-13).
Request NC-17 explicitly for unrestricted content. Endpoint: https://mcp.quotewise.io/
- originators (Search or browse originators) - Lookup, search, or browse originators. Handles people, proverbs, anonymous sources, and institutions. Use name= for exact match, search= for fuzzy, neither for browsing.

When to use: User asks about a person/author, wants to find who said something, or needs to browse by category (poets, philosophers, etc).

Behaviors:
- `name` provided → resolve and return single originator details
- `search` provided → fuzzy search, return ranked list (optionally filtered by category tags)
- Neither → browse by filters (popular, language, min_quotes, category tags, etc.)

Category tags filter by originator type (e.g., ["Poets", "Politicians", "Catholic Bishops"]) - works with all modes.

Gender filter accepts natural language (e.g., "female", "women", "queer", "trans") - resolved to Wikidata Q-IDs internally.

Response format:
- Concise (default): slug, full_name, sort_name, quote_count, descriptions_i18n, web_url
- Detailed: + biography (500 char excerpt), confidence_tier, similarity_score

Response includes ai_hints with suggested next actions and quality signals for agent workflows.

Date filters (`born_on`, `died_on`, `born_year_gte`, `born_year_lte`, `died_year_gte`, `died_year_lte`) combine with every other filter via AND. Negative year bounds represent BCE; year 0 is rejected.

Examples:
- `originators(name="Einstein")` - exact lookup
- `originators(search="Shake")` - fuzzy search for "Shakespeare"
- `originators(tags=["Poets"], gender="female")` - browse female poets
- `originators(sort="popular", limit=10)` - top 10 by quote count
- `originators(born_on="04-20")` - originators born April 20 (any year)
- `originators(born_year_gte=-500, born_year_lte=-300)` - originators born between 500 BCE and 300 BCE inclusive Endpoint: https://mcp.quotewise.io/
- originators_like (Find similar originators) - Find originators similar to the given one using vector similarity (quote themes). Use after finding an author to discover related thinkers.

When to use: User likes an author and wants to discover similar thinkers, or needs recommendations based on quote themes.

Returns originators with similarity scores (0-100%).

Response format:
- Concise (default): slug, name, quote_count, descriptions_i18n, similarity_score, web_url
- Detailed: + biography (500 char excerpt), confidence_tier

Response includes ai_hints with suggested next actions and quality signals for agent workflows.

Examples:
- `originators_like(originator="Marcus Aurelius")` - similar philosophers
- `originators_like(originator="Oscar Wilde")` - similar wits
- `originators_like(originator="African Proverbs")` - similar proverb collections Endpoint: https://mcp.quotewise.io/
- sources (Search or browse sources) - Lookup, search, or browse sources (books, speeches, articles, etc.). Use name= for exact match, search= for fuzzy, by= to filter by author.

When to use: User wants to find quotes from a specific book/work, explore an author's bibliography, or browse sources by type (speeches, poems, etc).

Behaviors:
- `name` provided → resolve and return single source with best match
- `search` provided → fuzzy search, return ranked list with similarity scores
- Neither → browse by filters (by originator, type, language, min_quotes)

Response format:
- Concise (default): source_name, source_type, quote_count, web_url, language_code
- Detailed: + identifiers (ISBN/ASIN), publication_date, publisher, originators

Response includes ai_hints with suggested next actions and quality signals.

Examples:
- `sources(name="1984")` - lookup specific book
- `sources(search="cosmos", limit=5)` - fuzzy search
- `sources(by="Carl Sagan")` - browse author's works
- `sources(source_type="speech", sort="popular")` - browse popular speeches Endpoint: https://mcp.quotewise.io/
- quote_relations (Get quote relations) - Get relations for a quote, grouped by type and direction.

Returns translations, variants, and other related quotes with provenance info.
Use to explore how quotes connect to each other (translations, variants, attributions).

Examples:
- `quote_relations("abc123")` - all relations for a quote
- `quote_relations("abc123", relation_type="intra_translation")` - only translations
- `quote_relations("abc123", direction="outgoing")` - only outgoing relations Endpoint: https://mcp.quotewise.io/
- search_proverbs (Search proverbs) - Search for proverbs with optional tradition and topic filters.

Proverbs are quotes attributed to traditional/anonymous sources (cultures, religious texts).
Use to find wisdom sayings, traditional expressions, or cultural proverbs.

Tradition hierarchy: Some traditions have sub-traditions (e.g., Arabic → Bedouin).
Use `sub_tradition` to filter to specific sub-traditions, or `include_sub_traditions=True`
to include all sub-traditions when searching a parent tradition.

Examples:
- `search_proverbs(about="patience")` - proverbs about patience
- `search_proverbs(tradition="Chinese")` - Chinese proverbs
- `search_proverbs(tradition="Arabic", include_sub_traditions=True)` - Arabic + Bedouin + Yemeni
- `search_proverbs(tradition="Arabic", sub_tradition="Bedouin")` - only Bedouin proverbs
- `search_proverbs(tradition="Bible", language="en")` - Biblical proverbs in English Endpoint: https://mcp.quotewise.io/
- status (Check server and authentication status) - Check server connectivity, authentication status, and database size.

When to use: First tool call to verify MCP connection and auth state before collection operations.

Examples:
- `status()` - check if server is operational, see quote_count, and current auth state Endpoint: https://mcp.quotewise.io/
- collection (Manage quote collections) - Perform collection operations: CRUD, browse public collections, view public/shared/system collections, or collect quotes. Auth required for create/get/update/delete/list/collect_from_public.

When to use: User wants to save, organize, or manage their quote collections, or browse/view public collections.

Examples:
- `collection(action="browse", tab="featured")` - browse public collections
- `collection(action="public_detail", username="curator", slug="favorites")` - view public collection
- `collection(action="shared_detail", token="abc123")` - view shared collection
- `collection(action="collect_from_public", username="curator", slug="favorites", quote_code="xyz")` - collect quote Endpoint: https://mcp.quotewise.io/
- collection_quotes (Manage quotes in collections) - Manage quotes within a collection: add, remove, list, or public_list. Auth required for add/remove/list. public_list is unauthenticated.

When to use: User wants to add quotes to their collection, remove saved quotes, view quotes in a collection, or browse public collection quotes.

Examples:
- `collection_quotes(action="add", collection="favorites", quote="abc123")` - add quote
- `collection_quotes(action="list", collection="favorites")` - list quotes in collection
- `collection_quotes(action="public_list", username="curator", slug="favorites")` - view public collection quotes
- `collection_quotes(action="public_list", token="abc123")` - view shared collection quotes Endpoint: https://mcp.quotewise.io/
- flag_content (Flag content for moderation) - Flag content for moderation review. Supports anonymous and authenticated submissions.

When to use: User wants to report spam, misattributed quotes, typos, or broken links. Provide exactly ONE entity identifier (quote_ref, originator_slug, source_id, or sighting_id).

Examples:
- `flag_content(flag_type="misattributed", reason="Quote is by Mark Twain", quote_ref="abc123")` - report wrong attribution
- `flag_content(flag_type="broken_link", reason="404 error", sighting_id=12345)` - report dead link Endpoint: https://mcp.quotewise.io/
- propose_edit (Propose content edit) - Propose an edit to a quote. Requires authentication.

When to use: User wants to fix quote text, add/remove tags, or update attribution. Trusted users may have edits auto-activated; others queue for review.

Examples:
- `propose_edit(edit_type="text", quote_ref="abc123", new_text="Corrected spelling")` - fix typo
- `propose_edit(edit_type="tag_add", quote_ref="abc123", tag_text="philosophy")` - add tag
- `propose_edit(edit_type="attribution", quote_ref="abc123", disputed=True)` - mark disputed Endpoint: https://mcp.quotewise.io/

## Resources
- ui://widget/quotes.html - React widget for rendering quote cards in ChatGPT MIME type: text/html+skybridge

## Prompts
- find_quotes - Find quotes about a topic with optional demographic filters.

Examples:
- find_quotes("resilience") - basic semantic search
- find_quotes("courage", by_gender="female") - quotes by women
- find_quotes("hope", living_only=True) - living authors only
- find_quotes("wisdom", from_source="Meditations") - from Marcus Aurelius's book

Filters:
- by_gender: "female", "male", "non-binary", "trans", "queer"
- living_only: True to filter to living authors
- from_source: book/speech title (e.g., "Cosmos", "I Have a Dream")
- language: ISO code (e.g., "en", "fr", "de", "es") Arguments: topic, by_gender, living_only, from_source, language
- find_and_collect - Search for quotes and save them to a collection.

Examples:
- find_and_collect("perseverance") - find and save to default collection
- find_and_collect("leadership", collection_name="work-quotes")
- find_and_collect("love", collection_name="poetry")

Requires authentication to save quotes. Arguments: topic, collection_name
- verify_attribution - Verify who really said a quote.

Examples:
- verify_attribution("be the change you wish to see")
- verify_attribution("insanity is doing the same thing")
- verify_attribution("the only thing we have to fear")
- verify_attribution("I think therefore I am")

Many famous quotes are misattributed. This workflow finds the actual source. Arguments: quote_fragment
- explore_author - Deep dive into a specific author's quotes and works.

Examples:
- explore_author("Marcus Aurelius") - all quotes by the author
- explore_author("Maya Angelou", about_topic="courage")
- explore_author("Carl Sagan", about_topic="cosmos")
- explore_author("Oscar Wilde", about_topic="wit")

Discover an author's themes, sources, and similar thinkers. Arguments: author_name, about_topic
- discover_similar - Explore quotes and authors similar to one you like.

Examples:
- discover_similar("The unexamined life is not worth living")
- discover_similar("Two roads diverged in a wood", find_similar_authors=True)
- discover_similar("I have a dream", find_similar_authors=False)

Great for discovering new wisdom in familiar themes. Arguments: quote_text, find_similar_authors
- browse_sources - Explore books, speeches, and other sources of quotes.

Examples:
- browse_sources() - popular sources by quote count
- browse_sources(source_type="speech") - famous speeches
- browse_sources(source_type="book", by_author="Dostoevsky")
- browse_sources(by_author="Shakespeare")

Source types: book, speech, poem, article, letter, interview, play, film Arguments: source_type, by_author

## Metadata
- Owner: io.github.quotewise
- Version: 1.0.3
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Feb 9, 2026
- Source: https://registry.modelcontextprotocol.io
