Quotewise
REMOTE · MCP.QUOTEWISE.IO · SCANNED AUG 3
Semantic quote search with 600K quotes. Find quotes by meaning, verify attributions.
Available components
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 →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (collection). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7216 tokens (~360/item across 20 items; 19 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 Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · mcp.quotewise.io
claude mcp add --transport http quotewise-mcp https://mcp.quotewise.io/
[mcp_servers.quotewise-mcp] url = "https://mcp.quotewise.io/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"quotewise-mcp": {
"type": "remote",
"url": "https://mcp.quotewise.io/",
"enabled": true
}
}
} openclaw mcp add quotewise-mcp --url https://mcp.quotewise.io/ --transport streamable-http
mcp_servers:
quotewise-mcp:
url: "https://mcp.quotewise.io/" {
"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.
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.
- 2 Aug 26 +1
- Server version: 3.3.1 → 3.4.5 functional
- 31 Jul 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
- 30 Jul 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
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 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
- 26 Jul 26 63
First indexed and scored.
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 3 Aug 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 | 4 Jun 2026 | 3 Sept 2026 | ECDSA 256 | ECDSA-SHA256 | 6645e22e8a8396691374b45602d3f4a7 |
| 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 |
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 No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
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/ |
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.
cite_quote Cite quote ~54
Render a quote citation for AI assistants.
| Name | Type | Req | Description |
|---|---|---|---|
| quote | string | yes | Quote short code or supported legacy identifier |
| style | string | — | Citation style: casual, mla, chicago, apa, csl-json, or all |
No output schema declared.
No examples provided.
collection Manage quote collections ~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
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Collection operation |
| description | — | — | Collection description (used for create/update) |
| limit | integer | — | Max results (list action) |
| name | — | — | Collection name/slug (required for create/get/update/delete) |
| page | — | — | Page number |
| page_size | — | — | Items per page |
| quote_code | — | — | Quote short_code for collect_from_public |
| response_format | string | — | Response detail level |
| slug | — | — | Collection slug for public_detail/system_detail/collect_from_public |
| tab | — | — | Browse tab: featured, recent, or popular |
| token | — | — | Share token for shared_detail |
| username | — | — | Username for public_detail/collect_from_public |
No output schema declared.
No examples provided.
collection_quotes Manage quotes in collections ~588
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
| Name | Type | Req | Description |
|---|---|---|---|
| about | — | — | Semantic search within collection (e.g., 'courage') |
| action | string | yes | Quote operation: add, remove, list, or public_list |
| by | — | — | Originator name (e.g., 'Einstein') |
| circumstance | — | — | Per-collection circumstance override (used with add action) |
| collection | — | — | Collection name/slug identifier. Use 'all' to search across all collections. |
| content_rating | — | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| framing | — | — | Curator editorial framing for the quote (used with add action) |
| gender | — | — | Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans). |
| language | — | — | Language (e.g., 'en', 'French') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| limit | integer | — | Max results (list action) |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| max_chars | — | — | Max chars (280=Twitter, 500=Threads) |
| notes | — | — | Private notes for the quote (used with add action) |
| page | integer | — | Page number for pagination |
| quote | — | — | Quote short_code or ID (required for add/remove actions) |
| reading_level | — | — | Filter 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_format | string | — | Response detail level |
| slug | — | — | Collection slug for public_list lookup |
| structure | — | — | Structure: prose/verse/one-liner |
| token | — | — | Share token for public_list lookup |
| username | — | — | Username for public_list lookup |
No output schema declared.
No examples provided.
flag_content Flag content for moderation ~262
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
| Name | Type | Req | Description |
|---|---|---|---|
| evidence_url | — | — | URL supporting the flag (e.g., QuoteInvestigator link) |
| flag_type | string | yes | Type of flag: spam (advertising/promotional), misattributed (wrong author), typo (text error), nested (quote within quote), broken_link (dead URL) |
| originator_slug | — | — | Originator slug (e.g., 'albert-einstein') |
| quote_ref | — | — | Quote short_code (6-char identifier, e.g., 'abc123') |
| reason | string | yes | Explanation of the issue (required) |
| sighting_id | — | — | QuoteSighting database ID (for broken_link flags) |
| source_id | — | — | Source database ID |
No output schema declared.
No examples provided.
originators Search or browse 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
| Name | Type | Req | Description |
|---|---|---|---|
| born_on | — | — | Filter 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_gte | — | — | Lower-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_lte | — | — | Upper-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_on | — | — | Filter 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_gte | — | — | Lower-bound filter on death-date year (inclusive). Same semantics as born_year_gte, applied to death_date / death_date_edtf. |
| died_year_lte | — | — | Upper-bound filter on death-date year (inclusive). Same semantics as born_year_lte, applied to death_date / death_date_edtf. |
| gender | — | — | Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans). |
| language | — | — | Filter by quote language (ISO 639-1 code, e.g., 'en', 'fr', 'de') |
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| min_quotes | — | — | Minimum quote count threshold |
| name | — | — | Exact lookup for originator name (resolved internally) → single result |
| response_format | string | — | Response detail level - concise (slug, name, quote_count, descriptions_i18n, web_url) or detailed (+ biography excerpt, confidence_tier, similarity_score) |
| search | — | — | Fuzzy search query for originators (minimum 2 characters) → multiple results |
| sort | string | — | Sort order for results when browsing (not using name/search) |
| tags | — | — | Filter by originator category tags (e.g., ['Poets', 'Politicians', 'Catholic Bishops']) |
No output schema declared.
No examples provided.
originators_like Find similar originators ~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
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| originator | string | yes | Originator name to find similar ones for (resolved internally) |
| response_format | string | — | Response 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 Propose content 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
| Name | Type | Req | Description |
|---|---|---|---|
| attribution_notes | — | — | Notes about attribution (for attribution edits) |
| disputed | — | — | Mark attribution as disputed (for attribution edits) |
| edit_type | string | yes | Type of edit: text (fix quote text), tag_add (add tag), tag_remove (remove tag), attribution (fix attribution) |
| new_text | — | — | Corrected quote text (required for text edits) |
| originator_id | — | — | New originator ID (for attribution edits) |
| quote_ref | string | yes | Quote short_code (6-char identifier, required) |
| tag_text | — | — | Tag to add/remove (required for tag edits) |
No output schema declared.
No examples provided.
quote Get quote details by code ~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
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | Quote code (e.g., 'abc123') |
| include | — | — | Include extra data: 'collections' |
| include_relations | boolean | — | Include related quotes (translations, variants, etc.) |
| response_format | string | — | Response detail level |
No output schema declared.
No examples provided.
quote_random Discover a random quote ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| content_rating | string | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| language | — | — | Language code (e.g., 'en', 'es', 'de') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| max_chars | — | — | Maximum characters (e.g., 280 for Twitter) |
| response_format | string | — | Response detail level |
| structure | — | — | Structure: prose (single line), verse (multi-line), one-liner (single sentence) |
No output schema declared.
No examples provided.
quote_relations Get 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
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | Quote short_code (e.g., 'abc123') |
| direction | — | — | Filter by direction: outgoing, incoming, or both |
| include_audit | boolean | — | Include audit/non-displayable relation edges for trusted curator callers |
| relation_type | — | — | Filter by relation type: intra_translation, cross_translation, variant, revision_of, misattributed_from, semantic_equivalent, inspired_by |
| response_format | string | — | Response detail level |
No output schema declared.
No examples provided.
quotes_about Find quotes about a topic ~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
| Name | Type | Req | Description |
|---|---|---|---|
| about | string | yes | Concept/idea to search semantically |
| by | — | — | Originator name (e.g., 'Einstein') |
| content_rating | — | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| exclude_misattributed | boolean | — | Exclude misattributed quotes (default True) |
| from_source | — | — | Source name (e.g., 'Cosmos'). Use 'any' for quotes with any source. |
| gender | — | — | Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans). |
| language | — | — | Language (e.g., 'en', 'French') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| max_chars | — | — | Max chars (280=Twitter, 500=Threads) |
| originator_kind | — | — | Filter quotes by originator kind: person, tradition (proverb/folk/saying), character (fictional), organization, collective, anonymous, work, lore. |
| reading_level | — | — | Filter 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_format | string | — | Response detail level |
| structure | — | — | Structure: prose/verse/one-liner |
| tags | — | — | Tag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags. |
No output schema declared.
No examples provided.
quotes_by Find quotes by an originator ~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
| Name | Type | Req | Description |
|---|---|---|---|
| about | — | — | Topic (semantic, e.g., 'courage', 'love') |
| content_rating | — | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| exclude_misattributed | boolean | — | Exclude misattributed quotes (default True) |
| from_source | — | — | Source name (e.g., 'Cosmos', 'Meditations'). Use 'any' for quotes with any source. |
| gender | — | — | Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans). |
| language | — | — | Language (e.g., 'en', 'French') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| max_chars | — | — | Max chars (280=Twitter, 500=Threads) |
| originator | string | yes | Originator name (e.g., 'Einstein', 'Shakespeare') |
| originator_kind | — | — | Filter quotes by originator kind: person, tradition (proverb/folk/saying), character (fictional), organization, collective, anonymous, work, lore. |
| reading_level | — | — | Filter 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_format | string | — | Response detail level |
| structure | — | — | Structure: prose/verse/one-liner |
| tags | — | — | Tag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags. |
No output schema declared.
No examples provided.
quotes_containing Find quotes containing text ~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
| Name | Type | Req | Description |
|---|---|---|---|
| by | — | — | Originator name (e.g., 'Einstein') |
| content_rating | — | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| from_source | — | — | Source name (e.g., 'Cosmos'). Use 'any' for quotes with any source. |
| language | — | — | Language (e.g., 'en', 'French') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| max_chars | — | — | Max chars (280=Twitter, 500=Threads) |
| phrase | string | yes | Text phrase to find (exact match) |
| reading_level | — | — | Filter 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_format | string | — | Response detail level |
| structure | — | — | Structure: prose/verse/one-liner |
No output schema declared.
No examples provided.
quotes_from Find quotes from a source ~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
| Name | Type | Req | Description |
|---|---|---|---|
| about | — | — | Topic (semantic, e.g., 'love', 'courage') |
| account_role | — | — | Social source account role: official or fan/archivist |
| by | — | — | Originator name (for multi-author works) |
| content_rating | — | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| evidence_kind | — | — | Canonical source kind: platform container or book |
| gender | — | — | Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, …) and groups (queer, lgbtq, trans). |
| language | — | — | Language (e.g., 'en', 'French') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| max_chars | — | — | Max chars (280=Twitter, 500=Threads) |
| reading_level | — | — | Filter 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_format | string | — | Response detail level |
| source | string | yes | Source/work name (fuzzy matched - use exact titles like 'Cosmos', 'Don Quixote', 'The Little Prince') |
| structure | — | — | Structure: prose/verse/one-liner |
| tags | — | — | Tag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags. |
No output schema declared.
No examples provided.
quotes_like Find similar quotes ~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
| Name | Type | Req | Description |
|---|---|---|---|
| by | — | — | Originator name (e.g., 'Einstein') |
| content_rating | — | — | Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content. |
| from_source | — | — | Source name (e.g., 'Cosmos'). Use 'any' for quotes with any source. |
| language | — | — | Language (e.g., 'en', 'French') |
| length | — | — | Filter quotes by word-count category: brief (≤15 words), short (≤35 words), medium (36–100 words), long (101–200 words), or passage (201+ words). |
| limit | integer | — | Max results |
| living | — | — | Filter quotes by originator living status (living/alive vs deceased/historical). |
| max_chars | — | — | Max chars (280=Twitter, 500=Threads) |
| quote | string | yes | Quote 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_level | — | — | Filter 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_format | string | — | Response detail level |
| structure | — | — | Structure: prose/verse/one-liner |
No output schema declared.
No examples provided.
search_proverbs 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
| Name | Type | Req | Description |
|---|---|---|---|
| about | — | — | Topic to search semantically (e.g., 'patience', 'friendship') |
| include_relations | boolean | — | Include related quotes (translations, variants) |
| include_sub_traditions | boolean | — | Include sub-traditions when filtering by tradition (default: False) |
| language | — | — | Language (e.g., 'en', 'French') |
| limit | integer | — | Max results |
| response_format | string | — | Response detail level |
| sub_tradition | — | — | Specific sub-tradition within parent (e.g., 'Bedouin' within 'Arabic') |
| tradition | — | — | Cultural tradition (e.g., 'African', 'Chinese', 'Jewish', 'Greek') |
No output schema declared.
No examples provided.
sources Search or browse 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
| Name | Type | Req | Description |
|---|---|---|---|
| by | — | — | Filter by originator/author name (resolved internally, e.g., 'Carl Sagan') |
| language | — | — | Filter by language code (ISO 639-1, e.g., 'en', 'fr', 'de') |
| limit | integer | — | Max results |
| min_quotes | — | — | Minimum quote count threshold |
| name | — | — | Exact lookup for source name (fuzzy matched - use exact titles like 'Cosmos', 'Don Quixote', 'The Little Prince') |
| response_format | string | — | Response detail level - concise (name, type, count, url) or detailed (+ identifiers, originators) |
| search | — | — | Fuzzy search query for sources (minimum 2 characters) |
| sort | string | — | Sort order: popular (by quote_count), name, recent |
| source_type | — | — | Filter by type: book, speech, poem, article, letter, interview, etc. |
No output schema declared.
No examples provided.
status Check server and authentication 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 Identify quote attribution ~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
| Name | Type | Req | Description |
|---|---|---|---|
| quote | string | yes | Quote 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_format | string | — | Response detail level |
No output schema declared.
No examples provided.