此 MCP 可以做什么
Searches a large curated quote collection by meaning, wording, author, source, proverb tradition, and similarity, with attribution and collection tools.
工具
输入模式
{'type': 'object', 'required': ['quote'], 'properties': {'quote': {'type': 'string', 'minLength': 3, 'description': 'Quote short code or supported legacy identifier'}, 'style': {'type': 'string', 'default': 'casual', 'description': 'Citation style: casual, mla, chicago, apa, csl-json, or all'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['action'], 'properties': {'tab': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Browse tab: featured, recent, or popular'}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Collection name/slug (required for create/get/update/delete)'}, 'page': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Page number'}, 'slug': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Collection slug for public_detail/system_detail/collect_from_public'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Max results (list action)'}, 'token': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Share token for shared_detail'}, 'action': {'enum': ['create', 'get', 'update', 'delete', 'list', 'browse', 'public_detail', 'shared_detail', 'system_detail', 'collect_from_public'], 'type': 'string', 'description': 'Collection operation'}, 'username': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Username for public_detail/collect_from_public'}, 'page_size': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Items per page'}, 'quote_code': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Quote short_code for collect_from_public'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Collection description (used for create/update)'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['action'], 'properties': {'by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Originator name (e.g., 'Einstein')"}, 'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number for pagination'}, 'slug': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Collection slug for public_list lookup'}, 'about': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Semantic search within collection (e.g., 'courage'); requires a single named collection (not collection='all' â\x80\x94 use quotes_about for global search)"}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Max results (list action)'}, 'notes': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Private notes for the quote (used with add action)'}, 'quote': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Quote short_code or ID (required for add/remove actions)'}, 'token': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Share token for public_list lookup'}, 'action': {'enum': ['add', 'remove', 'list', 'public_list'], 'type': 'string', 'description': 'Quote operation: add, remove, list, or public_list'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['female', 'trans woman', 'queer'], 'description': 'Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, â\x80¦) and groups (queer, lgbtq, trans).'}, 'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'framing': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Curator editorial framing for the quote (used with add action)'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'username': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Username for public_list lookup'}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Max chars (280=Twitter, 500=Threads)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose/verse/one-liner'}, 'collection': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Collection name/slug identifier. Use 'all' to search across all collections (not combinable with 'about' â\x80\x94 semantic search requires a single named collection)."}, 'circumstance': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Per-collection circumstance override (used with add action)'}, 'reading_level': {'anyOf': [{'enum': ['elementary', 'middle_school', 'high_school', 'college'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['elementary', 'college'], 'description': '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 error.'}, 'content_rating': {'anyOf': [{'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'description': 'MPAA-style content rating for quotes.\n\nValues match database content_rating field values exactly.\nMember names follow Django TextChoices convention (no underscores).\n\nCompatible with Django TextChoices API:\n- .label: Human-readable label (e.g., "General Audience")\n- .choices: List of (value, label) tuples for model fields'}, {'type': 'null'}], 'default': None, 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['flag_type', 'reason'], 'properties': {'reason': {'type': 'string', 'maxLength': 2000, 'minLength': 5, 'description': 'Explanation of the issue (required)'}, 'flag_type': {'enum': ['spam', 'misattributed', 'typo', 'nested', 'broken_link'], 'type': 'string', 'description': 'Type of flag: spam (advertising/promotional), misattributed (wrong author), typo (text error), nested (quote within quote), broken_link (dead URL)'}, 'quote_ref': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Quote short_code (6-char identifier, e.g., 'abc123')"}, 'source_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Source database ID'}, 'sighting_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'QuoteSighting database ID (for broken_link flags)'}, 'evidence_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'URL supporting the flag (e.g., QuoteInvestigator link)'}, 'originator_slug': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Originator slug (e.g., 'albert-einstein')"}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': 'Exact lookup for originator name (resolved internally) â\x86\x92 single result'}, 'sort': {'enum': ['popular', 'name', 'recent'], 'type': 'string', 'default': 'popular', 'description': 'Sort order for results when browsing (not using name/search)'}, 'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': "Filter by originator category tags (e.g., ['Poets', 'Politicians', 'Catholic Bishops'])"}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['female', 'trans woman', 'queer'], 'description': 'Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, â\x80¦) and groups (queer, lgbtq, trans).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'search': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': 'Fuzzy search query for originators (minimum 2 characters) â\x86\x92 multiple results'}, 'born_on': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "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 20."}, 'died_on': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "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'."}, 'language': {'anyOf': [{'type': 'string', 'maxLength': 5, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': "Filter by quote language (ISO 639-1 code, e.g., 'en', 'fr', 'de')"}, 'min_quotes': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Minimum quote count threshold'}, 'born_year_gte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "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 â\x80\x94 use -1 for 1 BCE or 1 for 1 CE. Falls back to birth_date_edtf when exact birth_date is null AND the EDTF value encodes a single specific year (BCE and approximate-year markers like '1850~' accepted; intervals like '1850/1852' and century-only values like '18XX' excluded)."}, 'born_year_lte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': '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_year_gte.'}, 'died_year_gte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Lower-bound filter on death-date year (inclusive). Same semantics as born_year_gte, applied to death_date / death_date_edtf.'}, 'died_year_lte': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Upper-bound filter on death-date year (inclusive). Same semantics as born_year_lte, applied to death_date / death_date_edtf.'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level - concise (slug, name, quote_count, descriptions_i18n, web_url) or detailed (+ biography excerpt, confidence_tier, similarity_score)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['originator'], 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 20, 'minimum': 1, 'description': 'Max results'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'originator': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Originator name to find similar ones for (resolved internally)'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level - concise (slug, name, quote_count, descriptions_i18n, web_url) or detailed (+ biography excerpt, confidence_tier, similarity_score)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['edit_type', 'quote_ref'], 'properties': {'disputed': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Mark attribution as disputed (for attribution edits)'}, 'new_text': {'anyOf': [{'type': 'string', 'maxLength': 10000}, {'type': 'null'}], 'default': None, 'description': 'Corrected quote text (required for text edits)'}, 'tag_text': {'anyOf': [{'type': 'string', 'maxLength': 100}, {'type': 'null'}], 'default': None, 'description': 'Tag to add/remove (required for tag edits)'}, 'edit_type': {'enum': ['text', 'tag_add', 'tag_remove', 'attribution'], 'type': 'string', 'description': 'Type of edit: text (fix quote text), tag_add (add tag), tag_remove (remove tag), attribution (fix attribution)'}, 'quote_ref': {'type': 'string', 'description': 'Quote short_code (6-char identifier, required)'}, 'originator_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'New originator ID (for attribution edits)'}, 'attribution_notes': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'default': None, 'description': 'Notes about attribution (for attribution edits)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'minLength': 3, 'description': "Quote code (e.g., 'abc123')"}, 'include': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': "Include extra data: 'collections'"}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}, 'include_relations': {'type': 'boolean', 'default': False, 'description': 'Include related quotes (translations, variants, etc.)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language code (e.g., 'en', 'es', 'de')"}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Maximum characters (e.g., 280 for Twitter)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose (single line), verse (multi-line), one-liner (single sentence)'}, 'content_rating': {'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'default': 'PG-13', 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'minLength': 3, 'description': "Quote short_code (e.g., 'abc123')"}, 'direction': {'anyOf': [{'enum': ['outgoing', 'incoming', 'both'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by direction: outgoing, incoming, or both'}, 'include_audit': {'type': 'boolean', 'default': False, 'description': 'Include audit/non-displayable relation edges for trusted curator callers'}, 'relation_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by relation type: intra_translation, cross_translation, variant, revision_of, misattributed_from, semantic_equivalent, inspired_by'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['about'], 'properties': {'by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Originator name (e.g., 'Einstein')"}, 'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': "Tag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags."}, 'about': {'type': 'string', 'minLength': 2, 'description': 'Concept/idea to search semantically'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['female', 'trans woman', 'queer'], 'description': 'Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, â\x80¦) and groups (queer, lgbtq, trans).'}, 'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Max chars (280=Twitter, 500=Threads)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose/verse/one-liner'}, 'from_source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Source name (e.g., 'Cosmos'). Use 'any' for quotes with any source."}, 'reading_level': {'anyOf': [{'enum': ['elementary', 'middle_school', 'high_school', 'college'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['elementary', 'college'], 'description': '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 error.'}, 'content_rating': {'anyOf': [{'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'description': 'MPAA-style content rating for quotes.\n\nValues match database content_rating field values exactly.\nMember names follow Django TextChoices convention (no underscores).\n\nCompatible with Django TextChoices API:\n- .label: Human-readable label (e.g., "General Audience")\n- .choices: List of (value, label) tuples for model fields'}, {'type': 'null'}], 'default': None, 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'originator_kind': {'enum': ['person', 'tradition', 'character', 'organization', 'collective', 'anonymous', 'work', 'lore'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['person', 'tradition'], 'description': 'Filter quotes by originator kind: person, tradition (proverb/folk/saying), character (fictional), organization, collective, anonymous, work, lore.'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}, 'exclude_misattributed': {'type': 'boolean', 'default': True, 'description': 'Exclude misattributed quotes (default True)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['originator'], 'properties': {'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': "Tag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags."}, 'about': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Topic (semantic, e.g., 'courage', 'love')"}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['female', 'trans woman', 'queer'], 'description': 'Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, â\x80¦) and groups (queer, lgbtq, trans).'}, 'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Max chars (280=Twitter, 500=Threads)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose/verse/one-liner'}, 'originator': {'type': 'string', 'minLength': 2, 'description': "Originator name (e.g., 'Einstein', 'Shakespeare')"}, 'from_source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Source name (e.g., 'Cosmos', 'Meditations'). Use 'any' for quotes with any source."}, 'reading_level': {'anyOf': [{'enum': ['elementary', 'middle_school', 'high_school', 'college'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['elementary', 'college'], 'description': '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 error.'}, 'content_rating': {'anyOf': [{'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'description': 'MPAA-style content rating for quotes.\n\nValues match database content_rating field values exactly.\nMember names follow Django TextChoices convention (no underscores).\n\nCompatible with Django TextChoices API:\n- .label: Human-readable label (e.g., "General Audience")\n- .choices: List of (value, label) tuples for model fields'}, {'type': 'null'}], 'default': None, 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'originator_kind': {'enum': ['person', 'tradition', 'character', 'organization', 'collective', 'anonymous', 'work', 'lore'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['person', 'tradition'], 'description': 'Filter quotes by originator kind: person, tradition (proverb/folk/saying), character (fictional), organization, collective, anonymous, work, lore.'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}, 'exclude_misattributed': {'type': 'boolean', 'default': True, 'description': 'Exclude misattributed quotes (default True)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['phrase'], 'properties': {'by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Originator name (e.g., 'Einstein')"}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'phrase': {'type': 'string', 'minLength': 2, 'description': 'Text phrase to find (exact match)'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Max chars (280=Twitter, 500=Threads)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose/verse/one-liner'}, 'from_source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Source name (e.g., 'Cosmos'). Use 'any' for quotes with any source."}, 'reading_level': {'anyOf': [{'enum': ['elementary', 'middle_school', 'high_school', 'college'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['elementary', 'college'], 'description': '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 error.'}, 'content_rating': {'anyOf': [{'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'description': 'MPAA-style content rating for quotes.\n\nValues match database content_rating field values exactly.\nMember names follow Django TextChoices convention (no underscores).\n\nCompatible with Django TextChoices API:\n- .label: Human-readable label (e.g., "General Audience")\n- .choices: List of (value, label) tuples for model fields'}, {'type': 'null'}], 'default': None, 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['source'], 'properties': {'by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Originator name (for multi-author works)'}, 'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'default': None, 'description': "Tag names (e.g., ['philosophy']). Use ['any'] for quotes with any tags."}, 'about': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Topic (semantic, e.g., 'love', 'courage')"}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'gender': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['female', 'trans woman', 'queer'], 'description': 'Filter by originator gender. Accepts single terms (male, female, non-binary, trans man, trans woman, â\x80¦) and groups (queer, lgbtq, trans).'}, 'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'source': {'type': 'string', 'minLength': 2, 'description': "Source/work name (fuzzy matched - use exact titles like 'Cosmos', 'Don Quixote', 'The Little Prince')"}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Max chars (280=Twitter, 500=Threads)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose/verse/one-liner'}, 'account_role': {'anyOf': [{'enum': ['official', 'fan'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Social source account role: official or fan/archivist'}, 'evidence_kind': {'anyOf': [{'enum': ['platform', 'book'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Canonical source kind: platform container or book'}, 'reading_level': {'anyOf': [{'enum': ['elementary', 'middle_school', 'high_school', 'college'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['elementary', 'college'], 'description': '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 error.'}, 'content_rating': {'anyOf': [{'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'description': 'MPAA-style content rating for quotes.\n\nValues match database content_rating field values exactly.\nMember names follow Django TextChoices convention (no underscores).\n\nCompatible with Django TextChoices API:\n- .label: Human-readable label (e.g., "General Audience")\n- .choices: List of (value, label) tuples for model fields'}, {'type': 'null'}], 'default': None, 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['quote'], 'properties': {'by': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Originator name (e.g., 'Einstein')"}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'quote': {'type': 'string', 'minLength': 2, 'description': "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."}, 'length': {'anyOf': [{'enum': ['brief', 'short', 'medium', 'long', 'passage'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['short', 'brief'], 'description': 'Filter quotes by word-count category: brief (â\x89¤15 words), short (â\x89¤35 words), medium (36â\x80\x93100 words), long (101â\x80\x93200 words), or passage (201+ words).'}, 'living': {'enum': ['living', 'deceased'], 'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['living', 'deceased'], 'description': 'Filter quotes by originator living status (living/alive vs deceased/historical).'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'max_chars': {'anyOf': [{'type': 'integer', 'maximum': 4000, 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Max chars (280=Twitter, 500=Threads)'}, 'structure': {'anyOf': [{'enum': ['prose', 'verse', 'one-liner'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Structure: prose/verse/one-liner'}, 'from_source': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Source name (e.g., 'Cosmos'). Use 'any' for quotes with any source."}, 'reading_level': {'anyOf': [{'enum': ['elementary', 'middle_school', 'high_school', 'college'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['elementary', 'college'], 'description': '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 error.'}, 'content_rating': {'anyOf': [{'enum': ['G', 'PG', 'PG-13', 'R', 'NC-17'], 'type': 'string', 'description': 'MPAA-style content rating for quotes.\n\nValues match database content_rating field values exactly.\nMember names follow Django TextChoices convention (no underscores).\n\nCompatible with Django TextChoices API:\n- .label: Human-readable label (e.g., "General Audience")\n- .choices: List of (value, label) tuples for model fields'}, {'type': 'null'}], 'default': None, 'examples': ['PG', 'PG-13'], 'description': "Filter quotes by maximum MPAA-style content rating. Cumulative: requesting 'PG' includes G and PG content."}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['quote_short_codes', 'category'], 'properties': {'context': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'default': None, 'description': 'Shared explanation applied to every quote'}, 'category': {'enum': ['misattributed', 'garbage', 'nested', 'typo', 'wrong_date', 'offensive', 'source_suggestion'], 'type': 'string'}, 'source_url': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}], 'default': None, 'description': 'Earliest, most direct source URL; required for source_suggestion'}, 'quote_short_codes': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 25, 'minItems': 1, 'description': 'Short codes of quotes to report (1â\x80\x9325)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'about': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Topic to search semantically (e.g., 'patience', 'friendship')"}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'language': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Language (e.g., 'en', 'French')"}, 'tradition': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Cultural tradition (e.g., 'African', 'Chinese', 'Jewish', 'Greek')"}, 'sub_tradition': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Specific sub-tradition within parent (e.g., 'Bedouin' within 'Arabic')"}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level'}, 'include_relations': {'type': 'boolean', 'default': False, 'description': 'Include related quotes (translations, variants)'}, 'include_sub_traditions': {'type': 'boolean', 'default': False, 'description': 'Include sub-traditions when filtering by tradition (default: False)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'by': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': "Filter by originator/author name (resolved internally, e.g., 'Carl Sagan')"}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': "Exact lookup for source name (fuzzy matched - use exact titles like 'Cosmos', 'Don Quixote', 'The Little Prince')"}, 'sort': {'enum': ['popular', 'name', 'recent'], 'type': 'string', 'default': 'popular', 'description': 'Sort order: popular (by quote_count), name, recent'}, 'limit': {'type': 'integer', 'default': 25, 'maximum': 50, 'minimum': 1, 'description': 'Max results'}, 'search': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': 'Fuzzy search query for sources (minimum 2 characters)'}, 'language': {'anyOf': [{'type': 'string', 'maxLength': 5, 'minLength': 2}, {'type': 'null'}], 'default': None, 'description': "Filter by language code (ISO 639-1, e.g., 'en', 'fr', 'de')"}, 'min_quotes': {'anyOf': [{'type': 'integer', 'minimum': 1}, {'type': 'null'}], 'default': None, 'description': 'Minimum quote count threshold'}, 'source_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Filter by type: book, speech, poem, article, letter, interview, etc.'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'concise', 'description': 'Response detail level - concise (name, type, count, url) or detailed (+ identifiers, originators)'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['quote'], 'properties': {'quote': {'type': 'string', 'minLength': 3, 'description': "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': {'enum': ['concise', 'detailed'], 'type': 'string', 'default': 'detailed', 'description': 'Response detail level'}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…
VarynForge
Supports SEO research and content planning through niche analysis, competitor and keyword research, opportunity discovery, and wr…
Tmdb
Provides TMDB-based movie, television, and people discovery, metadata, credits, recommendations, videos, and trend-related entert…
AfterLaunch: the agentic growth marketing engine
Runs growth-marketing workflows covering SEO, AI-search visibility, competitor analysis, content planning, distribution channels,…
Setlist Fm
Provides setlist.fm concert research by artist, venue, city, country, and date, including artist records, concert histories, and …
Watchmode
Searches streaming catalogs and availability across regions, services, genres, networks, titles, and release dates.
Vimeo
Searches and retrieves public Vimeo videos, channels, categories, and related metadata.