Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Quotewise

REMOTE · MCP.QUOTEWISE.IO · SCANNED SEP 20

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

Available components

+1 this week 92 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security92
Transport & Reachability100
Schema Quality & AI Usability72
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 7313 tokens (~348/item across 21 items; 20 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the Quotewise MCP server?

Quotewise is a hosted endpoint at https://mcp.quotewise.io/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.quotewise.io

# add to Claude Code
claude mcp add --transport http quotewise-mcp 'https://mcp.quotewise.io/'
// .cursor/mcp.json
{
  "mcpServers": {
    "quotewise-mcp": {
      "url": "https://mcp.quotewise.io/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "quotewise-mcp": {
      "type": "http",
      "url": "https://mcp.quotewise.io/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.quotewise-mcp]
url = "https://mcp.quotewise.io/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "quotewise-mcp": {
      "type": "remote",
      "url": "https://mcp.quotewise.io/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add quotewise-mcp --url 'https://mcp.quotewise.io/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  quotewise-mcp:
    url: "https://mcp.quotewise.io/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "quotewise-mcp": {
      "Transport": "http",
      "Url": "https://mcp.quotewise.io/"
    }
  }
}
# add to Vellum
assistant mcp add quotewise-mcp -t streamable-http -u 'https://mcp.quotewise.io/'
// mcp.json
{
  "mcpServers": {
    "quotewise-mcp": {
      "type": "http",
      "url": "https://mcp.quotewise.io/"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 17 Sept 26 +1
    • Authorization: partial → pass security
    • Server version: 3.4.6 → 3.4.7 functional
  • 31 Aug 26 0
    • Schema quality: excellent → good functional
    • “collection_quotes” reworded the description of “about” cosmetic
    • “collection_quotes” reworded the description of “collection” cosmetic
  • 26 Aug 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 0
    • Stability: 0.97 → pass security
  • 24 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Aug 26 0
    • Authorization: fail → pass security
    • First check of Authorization: partial security
  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 8 Aug 26 0
    • Server version: 3.4.5 → 3.4.6 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://mcp.quotewise.io/

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=quotewise.io CN=WE1,O=Google Trust Services,C=US 3 Aug 2026 1 Nov 2026 ECDSA 256 ECDSA-SHA256 877d0b85dfb6bb900e066287ba228afe
SANs: quotewise.io, *.quotewise.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.quotewise.io. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
quotewise.io. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.quotewise.io/.well-known/oauth-protected-resource/mcp", scope="quotes:read quotes:write collections:read collections:write"

Bearer resource_metadata="https://mcp.quotewise.io/.well-known/oauth-protected-resource/mcp", scope="quotes:read quotes:write collections:read collections:write"

Protected resource metadata

Document https://mcp.quotewise.io/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://mcp.quotewise.io/mcp
Authorisation server https://quotewise.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.quotewise.io/ Verified 200
http (plaintext) http://mcp.quotewise.io/ HTTPS enforced 301 https://mcp.quotewise.io/
MCP tools · 20 exposed · ~7,181 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cite_quote ~54

Render a quote citation for AI assistants.

NameTypeReqDescription
quotestringyesQuote short code or supported legacy identifier
stylestringCitation style: casual, mla, chicago, apa, csl-json, or all

No output schema declared.

No examples provided.

collection ~294

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

NameTypeReqDescription
actionstringyesCollection operation
descriptionCollection description (used for create/update)
limitintegerMax results (list action)
nameCollection name/slug (required for create/get/update/delete)
pagePage number
page_sizeItems per page
quote_codeQuote short_code for collect_from_public
response_formatstringResponse detail level
slugCollection slug for public_detail/system_detail/collect_from_public
tabBrowse tab: featured, recent, or popular
tokenShare token for shared_detail
usernameUsername for public_detail/collect_from_public

No output schema declared.

No examples provided.

collection_quotes ~623

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

NameTypeReqDescription
aboutSemantic search within collection (e.g., 'courage'); requires a single named collection (not collection='all' — use quotes_about for global search)
actionstringyesQuote operation: add, remove, list, or public_list
byOriginator name (e.g., 'Einstein')
circumstancePer-collection circumstance override (used with add action)
collectionCollection name/slug identifier. Use 'all' to search across all collections (not combinable with 'about' — semantic search requires a single named collection).
content_ratingFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
framingCurator editorial framing for the quote (used with add action)
genderFilter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans).
languageLanguage (e.g., 'en', 'French')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
limitintegerMax results (list action)
livingFilter quotes by originator living status (living/alive vs deceased/historical).
max_charsMax chars (280=Twitter, 500=Threads)
notesPrivate notes for the quote (used with add action)
pageintegerPage number for pagination
quoteQuote short_code or ID (required for add/remove actions)
reading_levelFilter quotes by reading level (elementary/middle_school/high_school/college). Supported languages: en, es, fr, de, it, nl, ru, pt. Combining reading_level with an unsupported language returns an err…
response_formatstringResponse detail level
slugCollection slug for public_list lookup
structureStructure: prose/verse/one-liner
tokenShare token for public_list lookup
usernameUsername for public_list lookup

No output schema declared.

No examples provided.

flag_content ~250

Flag content for moderation review. Authentication is required. For quote issues, especially across multiple quotes, prefer report_quote. Use this tool for originator, source, and sighting flags. Provide exactly ONE entity identifier. 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

NameTypeReqDescription
evidence_urlURL supporting the flag (e.g., QuoteInvestigator link)
flag_typestringyesType of flag: spam (advertising/promotional), misattributed (wrong author), typo (text error), nested (quote within quote), broken_link (dead URL)
originator_slugOriginator slug (e.g., 'albert-einstein')
quote_refQuote short_code (6-char identifier, e.g., 'abc123')
reasonstringyesExplanation of the issue (required)
sighting_idQuoteSighting database ID (for broken_link flags)
source_idSource database ID

No output schema declared.

No examples provided.

originators ~1,042

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

NameTypeReqDescription
born_onFilter by birth month-day. Strict 'MM-DD' (zero-padded, hyphen-separated). Matches ^\d{2}-\d{2}$. Uses exact birth_date only; EDTF is not consulted for month-day filters. Example: '04-20' for April 2…
born_year_gteLower-bound filter on birth-date year (inclusive). Non-zero signed integer. Negative values represent BCE years (e.g., -500 means 500 BCE). Year 0 is rejected — use -1 for 1 BCE or 1 for 1 CE. Falls…
born_year_lteUpper-bound filter on birth-date year (inclusive). Same semantics as born_year_gte. If only one bound is supplied, the other side is unbounded. When both are supplied, born_year_lte must be >= born_y…
died_onFilter by death month-day. Strict 'MM-DD' (zero-padded, hyphen-separated). Matches ^\d{2}-\d{2}$. Uses exact death_date only. Example: '12-25'.
died_year_gteLower-bound filter on death-date year (inclusive). Same semantics as born_year_gte, applied to death_date / death_date_edtf.
died_year_lteUpper-bound filter on death-date year (inclusive). Same semantics as born_year_lte, applied to death_date / death_date_edtf.
genderFilter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans).
languageFilter by quote language (ISO 639-1 code, e.g., 'en', 'fr', 'de')
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
min_quotesMinimum quote count threshold
nameExact lookup for originator name (resolved internally) → single result
response_formatstringResponse detail level - concise (slug, name, quote_count, descriptions_i18n, web_url) or detailed (+ biography excerpt, confidence_tier, similarity_score)
searchFuzzy search query for originators (minimum 2 characters) → multiple results
sortstringSort order for results when browsing (not using name/search)
tagsFilter by originator category tags (e.g., ['Poets', 'Politicians', 'Catholic Bishops'])

No output schema declared.

No examples provided.

originators_like ~267

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

NameTypeReqDescription
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
originatorstringyesOriginator name to find similar ones for (resolved internally)
response_formatstringResponse detail level - concise (slug, name, quote_count, descriptions_i18n, web_url) or detailed (+ biography excerpt, confidence_tier, similarity_score)

No output schema declared.

No examples provided.

propose_edit ~257

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

NameTypeReqDescription
attribution_notesNotes about attribution (for attribution edits)
disputedMark attribution as disputed (for attribution edits)
edit_typestringyesType of edit: text (fix quote text), tag_add (add tag), tag_remove (remove tag), attribution (fix attribution)
new_textCorrected quote text (required for text edits)
originator_idNew originator ID (for attribution edits)
quote_refstringyesQuote short_code (6-char identifier, required)
tag_textTag to add/remove (required for tag edits)

No output schema declared.

No examples provided.

quote ~161

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

NameTypeReqDescription
codestringyesQuote code (e.g., 'abc123')
includeInclude extra data: 'collections'
include_relationsbooleanInclude related quotes (translations, variants, etc.)
response_formatstringResponse detail level

No output schema declared.

No examples provided.

quote_random ~204

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.

NameTypeReqDescription
content_ratingstringFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
languageLanguage code (e.g., 'en', 'es', 'de')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
max_charsMaximum characters (e.g., 280 for Twitter)
response_formatstringResponse detail level
structureStructure: prose (single line), verse (multi-line), one-liner (single sentence)

No output schema declared.

No examples provided.

quote_relations ~207

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

NameTypeReqDescription
codestringyesQuote short_code (e.g., 'abc123')
directionFilter by direction: outgoing, incoming, or both
include_auditbooleanInclude audit/non-displayable relation edges for trusted curator callers
relation_typeFilter by relation type: intra_translation, cross_translation, variant, revision_of, misattributed_from, semantic_equivalent, inspired_by
response_formatstringResponse detail level

No output schema declared.

No examples provided.

quotes_about ~636

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

NameTypeReqDescription
aboutstringyesConcept/idea to search semantically
byOriginator name (e.g., 'Einstein')
content_ratingFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
exclude_misattributedbooleanExclude misattributed quotes (default True)
from_sourceSource name (e.g., 'Cosmos'). Use 'any' for quotes with any source.
genderFilter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans).
languageLanguage (e.g., 'en', 'French')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
max_charsMax chars (280=Twitter, 500=Threads)
originator_kindFilter quotes by originator kind: person, tradition (proverb/folk/saying), character (fictional), organization, collective, anonymous, work, lore.
reading_levelFilter quotes by reading level (elementary/middle_school/high_school/college). Supported languages: en, es, fr, de, it, nl, ru, pt. Combining reading_level with an unsupported language returns an err…
response_formatstringResponse detail level
structureStructure: prose/verse/one-liner
tagsTag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags.

No output schema declared.

No examples provided.

quotes_by ~606

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

NameTypeReqDescription
aboutTopic (semantic, e.g., 'courage', 'love')
content_ratingFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
exclude_misattributedbooleanExclude misattributed quotes (default True)
from_sourceSource name (e.g., 'Cosmos', 'Meditations'). Use 'any' for quotes with any source.
genderFilter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans).
languageLanguage (e.g., 'en', 'French')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
max_charsMax chars (280=Twitter, 500=Threads)
originatorstringyesOriginator name (e.g., 'Einstein', 'Shakespeare')
originator_kindFilter quotes by originator kind: person, tradition (proverb/folk/saying), character (fictional), organization, collective, anonymous, work, lore.
reading_levelFilter quotes by reading level (elementary/middle_school/high_school/college). Supported languages: en, es, fr, de, it, nl, ru, pt. Combining reading_level with an unsupported language returns an err…
response_formatstringResponse detail level
structureStructure: prose/verse/one-liner
tagsTag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags.

No output schema declared.

No examples provided.

quotes_containing ~416

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

NameTypeReqDescription
byOriginator name (e.g., 'Einstein')
content_ratingFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
from_sourceSource name (e.g., 'Cosmos'). Use 'any' for quotes with any source.
languageLanguage (e.g., 'en', 'French')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
max_charsMax chars (280=Twitter, 500=Threads)
phrasestringyesText phrase to find (exact match)
reading_levelFilter quotes by reading level (elementary/middle_school/high_school/college). Supported languages: en, es, fr, de, it, nl, ru, pt. Combining reading_level with an unsupported language returns an err…
response_formatstringResponse detail level
structureStructure: prose/verse/one-liner

No output schema declared.

No examples provided.

quotes_from ~567

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

NameTypeReqDescription
aboutTopic (semantic, e.g., 'love', 'courage')
account_roleSocial source account role: official or fan/archivist
byOriginator name (for multi-author works)
content_ratingFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
evidence_kindCanonical source kind: platform container or book
genderFilter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans).
languageLanguage (e.g., 'en', 'French')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
max_charsMax chars (280=Twitter, 500=Threads)
reading_levelFilter quotes by reading level (elementary/middle_school/high_school/college). Supported languages: en, es, fr, de, it, nl, ru, pt. Combining reading_level with an unsupported language returns an err…
response_formatstringResponse detail level
sourcestringyesSource/work name (fuzzy matched - use exact titles like 'Cosmos', 'Don Quixote', 'The Little Prince')
structureStructure: prose/verse/one-liner
tagsTag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags.

No output schema declared.

No examples provided.

quotes_like ~450

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

NameTypeReqDescription
byOriginator name (e.g., 'Einstein')
content_ratingFilter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content.
from_sourceSource name (e.g., 'Cosmos'). Use 'any' for quotes with any source.
languageLanguage (e.g., 'en', 'French')
lengthFilter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words).
limitintegerMax results
livingFilter quotes by originator living status (living/alive vs deceased/historical).
max_charsMax chars (280=Twitter, 500=Threads)
quotestringyesQuote identifier: either a short code (e.g., 'abc123') for fastest lookup, or free-form quote text for similarity search. Short codes are preferred when available.
reading_levelFilter quotes by reading level (elementary/middle_school/high_school/college). Supported languages: en, es, fr, de, it, nl, ru, pt. Combining reading_level with an unsupported language returns an err…
response_formatstringResponse detail level
structureStructure: prose/verse/one-liner

No output schema declared.

No examples provided.

report_quote ~77

Report one issue category across one or more quotes for human moderation.

NameTypeReqDescription
categorystringyes
contextShared explanation applied to every quote
quote_short_codesarrayyesShort codes of quotes to report (1–25)
source_urlEarliest, most direct source URL; required for source_suggestion

No output schema declared.

No examples provided.

search_proverbs ~373

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

NameTypeReqDescription
aboutTopic to search semantically (e.g., 'patience', 'friendship')
include_relationsbooleanInclude related quotes (translations, variants)
include_sub_traditionsbooleanInclude sub-traditions when filtering by tradition (default: False)
languageLanguage (e.g., 'en', 'French')
limitintegerMax results
response_formatstringResponse detail level
sub_traditionSpecific sub-tradition within parent (e.g., 'Bedouin' within 'Arabic')
traditionCultural tradition (e.g., 'African', 'Chinese', 'Jewish', 'Greek')

No output schema declared.

No examples provided.

sources ~437

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

NameTypeReqDescription
byFilter by originator/author name (resolved internally, e.g., 'Carl Sagan')
languageFilter by language code (ISO 639-1, e.g., 'en', 'fr', 'de')
limitintegerMax results
min_quotesMinimum quote count threshold
nameExact lookup for source name (fuzzy matched - use exact titles like 'Cosmos', 'Don Quixote', 'The Little Prince')
response_formatstringResponse detail level - concise (name, type, count, url) or detailed (+ identifiers, originators)
searchFuzzy search query for sources (minimum 2 characters)
sortstringSort order: popular (by quote_count), name, recent
source_typeFilter by type: book, speech, poem, article, letter, interview, etc.

No output schema declared.

No examples provided.

status ~58

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

who_said ~202

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

NameTypeReqDescription
quotestringyesQuote text or fragment to identify. Can be partial, paraphrased, or exact text. Examples: 'be the change you wish to see', 'insanity is doing the same thing'
response_formatstringResponse detail level

No output schema declared.

No examples provided.

Common questions

What is the Quotewise MCP server?

Quotewise is an MCP server listed in the public MCP registry as io.github.quotewise/mcp. Semantic quote search with 600K quotes. Find quotes by meaning, verify attributions. This page covers its hosted endpoint (https://mcp.quotewise.io/).

Is the Quotewise MCP server safe to use?

Quotewise scores 92 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Quotewise MCP server expose?

Quotewise exposes 20 tools: quotes_about, quotes_from, quotes_by, quotes_containing, quote, and 15 more. Their descriptions and schemas cost roughly 7,181 tokens of context every time the server is loaded.

Does the Quotewise MCP server require authentication?

Yes. Quotewise asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Quotewise MCP server still maintained?

Quotewise is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.