MentionForge
Qué hace este MCP
Performs cited social listening for brands, products, and competitors, including mention research, sentiment and risk analysis, share-of-voice comparisons, digests, and draft replies.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['brand', 'competitors'], 'properties': {'brand': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Primary brand, product, or company to compare. Required. Do not include URLs.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum mentions to return (integer 1â\x80\x9350). Default 20. Does not change the $0.02 USDC price.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}, 'competitors': {'type': 'array', 'items': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'maxItems': 2, 'minItems': 1, 'description': 'One or two competitor names. Required.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'brands', 'share_of_voice', 'brands_detail', 'citations', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Billing and freshness for this call', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Canonical vs-query used for gather'}, 'brands': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Brand plus competitors in request order'}, 'signals': {'type': 'object', 'required': ['risk', 'spike', 'reasons'], 'properties': {'risk': {'enum': ['low', 'elevated', 'high'], 'type': 'string', 'description': 'Crisis-style risk from volume spike and negatives'}, 'spike': {'type': 'boolean', 'description': 'True when the latest trend bucket is elevated vs earlier mean'}, 'reasons': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short reasons the agent can quote'}}, 'description': 'Spike and negative-concentration flags', 'additionalProperties': False}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'title', 'source'], 'properties': {'url': {'type': 'string', 'description': 'Source URL'}, 'title': {'type': 'string', 'description': 'Source title'}, 'source': {'type': 'string', 'description': 'Publisher or site label'}}, 'additionalProperties': False}, 'description': 'Compact citations (max 8)'}, 'brands_detail': {'type': 'array', 'items': {'type': 'object', 'required': ['brand', 'sentiment', 'mention_count', 'themes'], 'properties': {'brand': {'type': 'string', 'description': 'Brand name'}, 'themes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to three theme labels'}, 'sentiment': {'type': 'number', 'description': 'Mean sentiment of mentions attributed to this brand'}, 'mention_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Attributed mention count'}}, 'additionalProperties': False}, 'description': 'Per-brand compact rollup'}, 'share_of_voice': {'type': 'array', 'items': {'type': 'object', 'required': ['brand', 'mentions', 'engagement', 'share'], 'properties': {'brand': {'type': 'string', 'description': 'Brand or `other` when no brand token matched'}, 'share': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Fraction of fused mentions (0â\x80\x931)'}, 'mentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to this brand'}, 'engagement': {'type': 'number', 'description': 'Sum of engagement for attributed mentions'}}, 'additionalProperties': False}, 'description': 'Longest-brand-first attribution'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum mentions to return (integer 1â\x80\x9350). Default 20. Does not change the $0.02 USDC price.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Brand, product, or topic to score for volume spikes and negative concentration. Required. Max 200 characters.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'signals', 'negatives', 'next_queries', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Billing and freshness for this call', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Echo of the researched query'}, 'signals': {'type': 'object', 'required': ['risk', 'spike', 'reasons'], 'properties': {'risk': {'enum': ['low', 'elevated', 'high'], 'type': 'string', 'description': 'Crisis-style risk from volume spike and negatives'}, 'spike': {'type': 'boolean', 'description': 'True when the latest trend bucket is elevated vs earlier mean'}, 'reasons': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short reasons the agent can quote'}}, 'description': 'Crisis-style risk from volume spike and negatives', 'additionalProperties': False}, 'negatives': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}}, 'additionalProperties': False}, 'description': 'Up to 5 most negative mentions'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Follow-up queries'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum mentions to return (integer 1â\x80\x9350). Default 20. Does not change the $0.02 USDC price.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Brand or topic whose mentions should seed unsent reply drafts. Required.'}, 'quote': {'type': 'string', 'maxLength': 500, 'description': 'Optional quote text. Never fetched as a URL.'}, 'stance': {'enum': ['supportive', 'neutral', 'defensive'], 'type': 'string', 'description': 'Optional tone for the unsent draft. Default neutral. This tool never posts.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}, 'mention_id': {'type': 'string', 'maxLength': 80, 'description': 'Optional mention id from this gather.'}, 'mention_url': {'type': 'string', 'maxLength': 500, 'description': 'Optional mention URL used only as an id match. MentionForge never fetches this URL.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['drafts', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Billing and freshness for this call', 'additionalProperties': False}, 'drafts': {'type': 'array', 'items': {'type': 'object', 'required': ['text', 'source_url', 'mention_id', 'unsent'], 'properties': {'text': {'type': 'string', 'description': 'Unsent reply copy. Review before sending. This tool does not post.'}, 'unsent': {'type': 'boolean', 'const': True, 'description': 'Always true. MentionForge never posts replies.'}, 'mention_id': {'type': 'string', 'description': 'Mention id from this gather'}, 'source_url': {'type': 'string', 'description': 'URL of the mention this draft is about'}}, 'additionalProperties': False}, 'maxItems': 3, 'description': 'One to three unsent drafts'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum mentions to return (integer 1â\x80\x9350). Default 20. Does not change the $0.02 USDC price.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Brand, product, or topic to digest. Required. Max 200 characters.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'groups', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Billing and freshness for this call', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Echo of the researched query'}, 'groups': {'type': 'object', 'required': ['praise', 'pain', 'news', 'reviews', 'reply_worthy'], 'properties': {'news': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}}, 'additionalProperties': False}, 'description': 'Up to 5 news-intent mentions'}, 'pain': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}}, 'additionalProperties': False}, 'description': 'Up to 5 complaint mentions'}, 'praise': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}}, 'additionalProperties': False}, 'description': 'Up to 5 praise mentions'}, 'reviews': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}}, 'additionalProperties': False}, 'description': 'Up to 5 review-platform mentions'}, 'reply_worthy': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}}, 'additionalProperties': False}, 'description': 'Up to 5 questions or complaints worth a human reply'}}, 'description': 'Grouped mentions, each list capped at 5', 'additionalProperties': False}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Company, product, or brand to identify on Wikipedia and Wikidata. Required. Max 200 characters.'}, 'language': {'type': 'string', 'pattern': '^[a-z]{2}$', 'description': 'Optional ISO 639-1 two-letter Wikipedia language code.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'title', 'description', 'as_of'], 'properties': {'as_of': {'type': 'string', 'description': 'When this card was produced (ISO-8601)'}, 'query': {'type': 'string', 'description': 'Sanitized entity query'}, 'title': {'type': 'string', 'description': 'Best Wikipedia or Wikidata label'}, 'description': {'type': 'string', 'description': 'Short identity blurb'}, 'official_url': {'type': 'string', 'description': 'Official site from Wikidata P856 when present'}, 'wikidata_url': {'type': 'string', 'description': 'Wikidata entity URL when found'}, 'wikipedia_url': {'type': 'string', 'description': 'Allowlisted Wikipedia page when found'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'view': {'enum': ['full', 'compact'], 'type': 'string', 'description': 'Optional snapshot size: full or compact.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'timeframe', 'volume', 'sentiment', 'themes', 'mentions', 'citations', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'degraded': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional list of degraded or skipped adapters'}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused, new billing'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Optional 0â\x80\x931 confidence in the aggregate'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries the agent can issue'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Request metadata including billing and freshness', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Echo of the researched query'}, 'themes': {'type': 'array', 'items': {'type': 'object', 'required': ['theme', 'count', 'examples'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many mentions support this theme'}, 'theme': {'type': 'string', 'description': 'Short theme label clustered from mention text'}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short supporting snippets'}}, 'additionalProperties': False}, 'description': 'Ranked themes extracted from mentions'}, 'voices': {'type': 'array', 'items': {'type': 'object', 'required': ['author', 'platform', 'mentions', 'engagement'], 'properties': {'author': {'type': 'string', 'description': 'Display name or handle'}, 'mentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many fused mentions this author has'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this voice was seen on'}, 'engagement': {'type': 'number', 'description': 'Sum of engagement'}}, 'additionalProperties': False}, 'description': 'Top non-placeholder authors by engagement'}, 'volume': {'type': 'object', 'required': ['total', 'by_platform', 'trend'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Total mentions in the window after filtering'}, 'trend': {'type': 'array', 'items': {'type': 'object', 'required': ['t', 'count'], 'properties': {'t': {'type': 'string', 'description': 'Bucket start (ISO-8601)'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions in this bucket'}}, 'additionalProperties': False}, 'description': 'Time-bucketed mention counts across the window'}, 'by_platform': {'type': 'object', 'required': ['x', 'reddit', 'web', 'reviews', 'news'], 'properties': {'x': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to x'}, 'web': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to web'}, 'news': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to news'}, 'reddit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to reddit'}, 'reviews': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to reviews'}}, 'description': 'Per-platform mention counts (zeros when a surface returned nothing)', 'additionalProperties': False}}, 'description': 'Mention counts and trend for the window', 'additionalProperties': False}, 'signals': {'type': 'object', 'required': ['risk', 'spike', 'reasons'], 'properties': {'risk': {'enum': ['low', 'elevated', 'high'], 'type': 'string', 'description': 'Crisis-style risk from volume spike and negatives'}, 'spike': {'type': 'boolean', 'description': 'True when the latest trend bucket is elevated vs earlier mean'}, 'reasons': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short reasons the agent can quote'}}, 'description': 'Spike and negative-concentration flags for this window', 'additionalProperties': False}, 'summary': {'type': 'string', 'description': 'Executive summary when include_summary was true'}, 'markdown': {'type': 'string', 'description': 'Deterministic pasteable brief when include_markdown was true'}, 'mentions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'timestamp', 'text', 'engagement', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Stable mention id within this response'}, 'url': {'type': 'string', 'description': 'Canonical URL of the mention, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated to the engine cap'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'aspects': {'type': 'array', 'items': {'enum': ['pricing', 'support', 'reliability', 'security', 'performance'], 'type': 'string', 'description': 'Product aspect tagged from mention text'}, 'description': 'Optional product aspects tagged on this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'relevance': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Optional 0â\x80\x931 overlap with the query'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 (negative) to 1 (positive)'}, 'timestamp': {'type': 'string', 'description': 'When the mention was published or accessed (ISO-8601 when known)'}, 'engagement': {'type': 'number', 'description': 'Relative engagement score (0 when unknown)'}}, 'additionalProperties': False}, 'description': 'Cited mention rows (may be empty â\x80\x94 empty windows still succeed)'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'title', 'source', 'accessed_at'], 'properties': {'url': {'type': 'string', 'description': 'Source URL'}, 'title': {'type': 'string', 'description': 'Source title'}, 'source': {'type': 'string', 'description': 'Publisher or site label'}, 'accessed_at': {'type': 'string', 'description': 'When MentionForge fetched this source (ISO-8601)'}}, 'additionalProperties': False}, 'description': 'Sources used to build the brief'}, 'sentiment': {'type': 'object', 'required': ['overall', 'positive', 'neutral', 'negative', 'distribution'], 'properties': {'neutral': {'type': 'number', 'description': 'Share of neutral mentions (percent)'}, 'overall': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Aggregate sentiment from -1 to 1'}, 'negative': {'type': 'number', 'description': 'Share of negative mentions (percent)'}, 'positive': {'type': 'number', 'description': 'Share of positive mentions (percent)'}, 'by_platform': {'type': 'object', 'description': 'Optional per-platform sentiment from -1 to 1', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'distribution': {'type': 'object', 'required': ['positive', 'neutral', 'negative', 'by_platform'], 'properties': {'neutral': {'type': 'number', 'description': 'Neutral share (percent)'}, 'negative': {'type': 'number', 'description': 'Negative share (percent)'}, 'positive': {'type': 'number', 'description': 'Positive share (percent)'}, 'by_platform': {'type': 'object', 'description': 'Mention counts keyed by platform id', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}}, 'description': 'Breakdown of sentiment classes', 'additionalProperties': False}}, 'description': 'Aggregate and per-class sentiment', 'additionalProperties': False}, 'timeframe': {'anyOf': [{'type': 'string', 'description': 'Named window echoed back'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days', 'additionalProperties': False}], 'description': 'Echo of the requested window'}, 'share_of_voice': {'type': 'array', 'items': {'type': 'object', 'required': ['brand', 'mentions', 'engagement', 'share'], 'properties': {'brand': {'type': 'string', 'description': 'Brand or `other` when no brand token matched'}, 'share': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Fraction of fused mentions (0â\x80\x931)'}, 'mentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to this brand'}, 'engagement': {'type': 'number', 'description': 'Sum of engagement for attributed mentions'}}, 'additionalProperties': False}, 'description': 'Present when the query is a vs / multi-brand compare'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'include_backends': {'type': 'boolean', 'description': 'Optional boolean. Default true.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'payments_ready'], 'properties': {'status': {'type': 'string', 'description': '`ok` when the MCP factory ran'}, 'payments_ready': {'type': 'boolean', 'description': 'True when paid research_mentions can settle on this origin'}, 'source_backends': {'type': 'object', 'required': ['reddit', 'x', 'web', 'news', 'reviews'], 'properties': {'x': {'type': 'string', 'description': 'x adapter mode: web or api'}, 'web': {'type': 'string', 'description': 'web adapter mode: wiki or brave+wiki'}, 'news': {'type': 'string', 'description': 'news adapter mode'}, 'reddit': {'type': 'string', 'description': 'reddit adapter mode: public or oauth'}, 'reviews': {'type': 'string', 'description': 'reviews adapter mode'}}, 'description': 'Non-secret adapter modes. Native Reddit/X are optional operator upgrades. Omitted when include_backends is false.', 'additionalProperties': False}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'include_catalog': {'type': 'boolean', 'description': 'Optional boolean. Default true.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'price_usdc', 'amount_atomic', 'asset', 'network', 'pay_to', 'asset_address', 'eip712', 'free_trial_calls', 'trial', 'endpoint', 'mcp', 'tool', 'payments_ready', 'idempotency_header'], 'properties': {'mcp': {'type': 'string', 'description': 'Streamable HTTP MCP URL'}, 'name': {'type': 'string', 'description': 'Product name'}, 'tool': {'type': 'string', 'description': 'Paid MCP tool name (`research_mentions`)'}, 'asset': {'type': 'string', 'description': 'Asset symbol (USDC)'}, 'tools': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind'], 'properties': {'kind': {'enum': ['free', 'paid'], 'type': 'string', 'description': 'free never charges; paid shares the 10-call trial'}, 'name': {'type': 'string', 'description': 'MCP tool name'}, 'price_usdc': {'type': 'string', 'description': 'List price when paid (`0.02`)'}}, 'additionalProperties': False}, 'description': 'Catalog of MCP tools. Paid tools share one 10-call trial. Omitted when include_catalog is false.'}, 'trial': {'type': 'object', 'required': ['header_wallet', 'header_sandbox'], 'properties': {'header_wallet': {'type': 'string', 'description': 'Header for trial EOA (`X-Wallet`)'}, 'header_sandbox': {'type': 'string', 'description': 'Header for operator sandbox key (`X-Sandbox-Key`)'}}, 'description': 'How to consume the free trial', 'additionalProperties': False}, 'eip712': {'type': 'object', 'required': ['name', 'version'], 'properties': {'name': {'type': 'string', 'description': 'EIP-712 token name (USD Coin on Base mainnet)'}, 'version': {'type': 'string', 'description': 'EIP-712 version'}}, 'description': 'Permit domain extras', 'additionalProperties': False}, 'pay_to': {'type': 'string', 'description': 'Public payTo address for x402 exact (not a private key)'}, 'network': {'type': 'string', 'description': 'CAIP-2 network (eip155:8453 on production)'}, 'endpoint': {'type': 'string', 'description': 'REST POST /v1/research URL'}, 'endpoints': {'type': 'array', 'items': {'type': 'object', 'required': ['method', 'path', 'kind'], 'properties': {'kind': {'enum': ['free', 'paid'], 'type': 'string', 'description': 'free never charges; paid shares the $0.02 resource'}, 'path': {'type': 'string', 'description': 'REST path'}, 'method': {'type': 'string', 'description': 'HTTP method'}}, 'additionalProperties': False}, 'description': 'REST surfaces. Paid POST routes verify against /v1/research x402 requirements. Omitted when include_catalog is false.'}, 'price_usdc': {'type': 'string', 'description': 'List price in USDC (`0.02`)'}, 'amount_atomic': {'type': 'string', 'description': 'Atomic USDC amount (`20000` = $0.02)'}, 'asset_address': {'type': 'string', 'description': 'USDC contract on the advertised network'}, 'payments_ready': {'type': 'boolean', 'description': 'True when this origin can verify/settle x402'}, 'free_trial_calls': {'type': 'number', 'description': 'Trial calls per wallet (10)'}, 'idempotency_header': {'type': 'string', 'description': 'Send this header on every research call (`Idempotency-Key`)'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Optional integer 1â\x80\x9350. Does not change the $0.02 USDC price.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Brand, product, or topic whose time-series to return. Required. Max 200 characters.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'timeframe', 'volume', 'sentiment', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Billing and freshness for this call', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Echo of the researched query'}, 'volume': {'type': 'object', 'required': ['total', 'by_platform', 'trend'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Total mentions in the window after filtering'}, 'trend': {'type': 'array', 'items': {'type': 'object', 'required': ['t', 'count'], 'properties': {'t': {'type': 'string', 'description': 'Bucket start (ISO-8601)'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions in this bucket'}}, 'additionalProperties': False}, 'description': 'Time-bucketed mention counts across the window'}, 'by_platform': {'type': 'object', 'required': ['x', 'reddit', 'web', 'reviews', 'news'], 'properties': {'x': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to x'}, 'web': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to web'}, 'news': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to news'}, 'reddit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to reddit'}, 'reviews': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to reviews'}}, 'description': 'Per-platform mention counts (zeros when a surface returned nothing)', 'additionalProperties': False}}, 'description': 'Mention counts and time-bucketed trend for the window', 'additionalProperties': False}, 'signals': {'type': 'object', 'required': ['risk', 'spike', 'reasons'], 'properties': {'risk': {'enum': ['low', 'elevated', 'high'], 'type': 'string', 'description': 'Crisis-style risk from volume spike and negatives'}, 'spike': {'type': 'boolean', 'description': 'True when the latest trend bucket is elevated vs earlier mean'}, 'reasons': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short reasons the agent can quote'}}, 'description': 'Spike and negative-concentration flags', 'additionalProperties': False}, 'sentiment': {'type': 'object', 'required': ['overall', 'positive', 'neutral', 'negative', 'distribution'], 'properties': {'neutral': {'type': 'number', 'description': 'Share of neutral mentions (percent)'}, 'overall': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Aggregate sentiment from -1 to 1'}, 'negative': {'type': 'number', 'description': 'Share of negative mentions (percent)'}, 'positive': {'type': 'number', 'description': 'Share of positive mentions (percent)'}, 'by_platform': {'type': 'object', 'description': 'Optional per-platform sentiment from -1 to 1', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'distribution': {'type': 'object', 'required': ['positive', 'neutral', 'negative', 'by_platform'], 'properties': {'neutral': {'type': 'number', 'description': 'Neutral share (percent)'}, 'negative': {'type': 'number', 'description': 'Negative share (percent)'}, 'positive': {'type': 'number', 'description': 'Positive share (percent)'}, 'by_platform': {'type': 'object', 'description': 'Mention counts keyed by platform id', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}}, 'description': 'Breakdown of sentiment classes', 'additionalProperties': False}}, 'description': 'Aggregate and per-class sentiment for the same window', 'additionalProperties': False}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days', 'additionalProperties': False}], 'description': 'Echo of the requested window'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum mentions to return (integer 1â\x80\x9350). Default 20. Does not change the $0.02 USDC price.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Brand, product, or topic whose mention rows to export. Required. Max 200 characters.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'mentions', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Billing and freshness for this call', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Echo of the researched query'}, 'mentions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'text', 'timestamp', 'engagement', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Mention id from this gather'}, 'url': {'type': 'string', 'description': 'Canonical URL, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 to 1'}, 'timestamp': {'type': 'string', 'description': 'When the mention was published or accessed (ISO-8601 when known)'}, 'engagement': {'type': 'number', 'description': 'Relative engagement score (0 when unknown)'}}, 'additionalProperties': False}, 'description': 'Flat mention rows only â\x80\x94 no themes, digest groups, or share of voice'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'view': {'enum': ['full', 'compact'], 'type': 'string', 'description': 'Optional response size. `full` (default when omitted) returns the complete mention list; `compact` returns at most 8 mentions and 8 citations. Does not change the $0.02 USDC price or aggregates.'}, 'focus': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent filter applied only to returned `mentions` (praise, complaint, question, buying, news, other). Volume and sentiment stay on the full fused set.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum mentions to return (integer 1â\x80\x9350). Default 20. Does not change the $0.02 USDC price.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Natural-language or structured query about a product, company, brand, topic, or competitor. Required. Max 200 characters.'}, 'language': {'type': 'string', 'pattern': '^[a-z]{2}$', 'description': 'Optional ISO 639-1 two-letter code (e.g. en). Omit for mixed-language results.'}, 'platforms': {'type': 'array', 'items': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Mention surface id: x, reddit, web, reviews, or news'}, 'default': ['x', 'reddit', 'web', 'reviews', 'news'], 'maxItems': 5, 'minItems': 1, 'description': 'Which surfaces to search. Default all of x, reddit, web, reviews, news. x and reddit use public/web adapters unless the operator enabled native APIs â\x80\x94 this is not a guarantee of official Reddit or X search.'}, 'timeframe': {'anyOf': [{'enum': ['24h', '7d', '30d', '90d'], 'type': 'string', 'description': 'Named lookback: 24h, 7d, 30d, or 90d.'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days'}], 'default': '7d', 'description': 'Lookback window: 24h, 7d, 30d, or 90d, or a {from,to} ISO-8601 range (max 90 days). Default 7d.'}, 'min_engagement': {'type': 'number', 'minimum': 0, 'description': 'Optional minimum engagement score. Omit to include all mentions in the window.'}, 'include_summary': {'type': 'boolean', 'default': True, 'description': 'When true (default), include an executive `summary` string. Set false for mentions-only payloads.'}, 'include_markdown': {'type': 'boolean', 'description': 'When true, add a deterministic `markdown` brief for pasting into an agent context. Does not change the $0.02 USDC price.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'timeframe', 'volume', 'sentiment', 'themes', 'mentions', 'citations', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['request_id', 'latency_ms', 'sources_used', 'billing'], 'properties': {'as_of': {'type': 'string', 'description': 'When this intelligence was produced (ISO-8601)'}, 'billing': {'type': 'object', 'required': ['amount_usdc', 'tx_hash', 'free_trial'], 'properties': {'tx_hash': {'type': ['string', 'null'], 'description': 'Settlement transaction hash, or null until settle / on trial'}, 'free_trial': {'type': 'boolean', 'description': 'True when this call used trial or sandbox and was not settled'}, 'amount_usdc': {'type': 'string', 'description': 'USDC charged for this call (`0` on trial/sandbox/replay)'}}, 'description': 'Charge record for this call (never cached)', 'additionalProperties': False}, 'degraded': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional list of degraded or skipped adapters'}, 'freshness': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'live = this call; cached = research body reused, new billing'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Optional 0â\x80\x931 confidence in the aggregate'}, 'latency_ms': {'type': 'number', 'description': 'Engine wall time in milliseconds (not billed)'}, 'request_id': {'type': 'string', 'description': 'Request correlation id'}, 'next_queries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 3, 'description': 'Up to three follow-up queries the agent can issue'}, 'sources_used': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Adapter ids that contributed data'}}, 'description': 'Request metadata including billing and freshness', 'additionalProperties': False}, 'query': {'type': 'string', 'description': 'Echo of the researched query'}, 'themes': {'type': 'array', 'items': {'type': 'object', 'required': ['theme', 'count', 'examples'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many mentions support this theme'}, 'theme': {'type': 'string', 'description': 'Short theme label clustered from mention text'}, 'examples': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short supporting snippets'}}, 'additionalProperties': False}, 'description': 'Ranked themes extracted from mentions'}, 'voices': {'type': 'array', 'items': {'type': 'object', 'required': ['author', 'platform', 'mentions', 'engagement'], 'properties': {'author': {'type': 'string', 'description': 'Display name or handle'}, 'mentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'How many fused mentions this author has'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this voice was seen on'}, 'engagement': {'type': 'number', 'description': 'Sum of engagement'}}, 'additionalProperties': False}, 'description': 'Top non-placeholder authors by engagement'}, 'volume': {'type': 'object', 'required': ['total', 'by_platform', 'trend'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Total mentions in the window after filtering'}, 'trend': {'type': 'array', 'items': {'type': 'object', 'required': ['t', 'count'], 'properties': {'t': {'type': 'string', 'description': 'Bucket start (ISO-8601)'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions in this bucket'}}, 'additionalProperties': False}, 'description': 'Time-bucketed mention counts across the window'}, 'by_platform': {'type': 'object', 'required': ['x', 'reddit', 'web', 'reviews', 'news'], 'properties': {'x': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to x'}, 'web': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to web'}, 'news': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to news'}, 'reddit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to reddit'}, 'reviews': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to reviews'}}, 'description': 'Per-platform mention counts (zeros when a surface returned nothing)', 'additionalProperties': False}}, 'description': 'Mention counts and trend for the window', 'additionalProperties': False}, 'signals': {'type': 'object', 'required': ['risk', 'spike', 'reasons'], 'properties': {'risk': {'enum': ['low', 'elevated', 'high'], 'type': 'string', 'description': 'Crisis-style risk from volume spike and negatives'}, 'spike': {'type': 'boolean', 'description': 'True when the latest trend bucket is elevated vs earlier mean'}, 'reasons': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Short reasons the agent can quote'}}, 'description': 'Spike and negative-concentration flags for this window', 'additionalProperties': False}, 'summary': {'type': 'string', 'description': 'Executive summary when include_summary was true'}, 'markdown': {'type': 'string', 'description': 'Deterministic pasteable brief when include_markdown was true'}, 'mentions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'url', 'author', 'timestamp', 'text', 'engagement', 'sentiment'], 'properties': {'id': {'type': 'string', 'description': 'Stable mention id within this response'}, 'url': {'type': 'string', 'description': 'Canonical URL of the mention, or empty when the source had no permalink'}, 'text': {'type': 'string', 'description': 'Mention body, truncated to the engine cap'}, 'author': {'type': 'string', 'description': 'Display name or handle; may be empty'}, 'intent': {'enum': ['praise', 'complaint', 'question', 'buying', 'news', 'other'], 'type': 'string', 'description': 'Optional intent class for this mention'}, 'aspects': {'type': 'array', 'items': {'enum': ['pricing', 'support', 'reliability', 'security', 'performance'], 'type': 'string', 'description': 'Product aspect tagged from mention text'}, 'description': 'Optional product aspects tagged on this mention'}, 'platform': {'enum': ['x', 'reddit', 'web', 'reviews', 'news'], 'type': 'string', 'description': 'Surface this mention was gathered from'}, 'relevance': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Optional 0â\x80\x931 overlap with the query'}, 'sentiment': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Per-mention sentiment from -1 (negative) to 1 (positive)'}, 'timestamp': {'type': 'string', 'description': 'When the mention was published or accessed (ISO-8601 when known)'}, 'engagement': {'type': 'number', 'description': 'Relative engagement score (0 when unknown)'}}, 'additionalProperties': False}, 'description': 'Cited mention rows (may be empty â\x80\x94 empty windows still succeed)'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'title', 'source', 'accessed_at'], 'properties': {'url': {'type': 'string', 'description': 'Source URL'}, 'title': {'type': 'string', 'description': 'Source title'}, 'source': {'type': 'string', 'description': 'Publisher or site label'}, 'accessed_at': {'type': 'string', 'description': 'When MentionForge fetched this source (ISO-8601)'}}, 'additionalProperties': False}, 'description': 'Sources used to build the brief'}, 'sentiment': {'type': 'object', 'required': ['overall', 'positive', 'neutral', 'negative', 'distribution'], 'properties': {'neutral': {'type': 'number', 'description': 'Share of neutral mentions (percent)'}, 'overall': {'type': 'number', 'maximum': 1, 'minimum': -1, 'description': 'Aggregate sentiment from -1 to 1'}, 'negative': {'type': 'number', 'description': 'Share of negative mentions (percent)'}, 'positive': {'type': 'number', 'description': 'Share of positive mentions (percent)'}, 'by_platform': {'type': 'object', 'description': 'Optional per-platform sentiment from -1 to 1', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'distribution': {'type': 'object', 'required': ['positive', 'neutral', 'negative', 'by_platform'], 'properties': {'neutral': {'type': 'number', 'description': 'Neutral share (percent)'}, 'negative': {'type': 'number', 'description': 'Negative share (percent)'}, 'positive': {'type': 'number', 'description': 'Positive share (percent)'}, 'by_platform': {'type': 'object', 'description': 'Mention counts keyed by platform id', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}}, 'description': 'Breakdown of sentiment classes', 'additionalProperties': False}}, 'description': 'Aggregate and per-class sentiment', 'additionalProperties': False}, 'timeframe': {'anyOf': [{'type': 'string', 'description': 'Named window echoed back'}, {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Custom range end (ISO-8601). Must be later than `from`. Window max 90 days.'}, 'from': {'type': 'string', 'description': 'Custom range start (ISO-8601). Must be earlier than `to`.'}}, 'description': 'Custom inclusive ISO-8601 from/to window, maximum 90 days', 'additionalProperties': False}], 'description': 'Echo of the requested window'}, 'share_of_voice': {'type': 'array', 'items': {'type': 'object', 'required': ['brand', 'mentions', 'engagement', 'share'], 'properties': {'brand': {'type': 'string', 'description': 'Brand or `other` when no brand token matched'}, 'share': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Fraction of fused mentions (0â\x80\x931)'}, 'mentions': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Mentions attributed to this brand'}, 'engagement': {'type': 'number', 'description': 'Sum of engagement for attributed mentions'}}, 'additionalProperties': False}, 'description': 'Present when the query is a vs / multi-brand compare'}}, 'additionalProperties': False}
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['need'], 'properties': {'need': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Goal sentence describing what you want to learn or do. Required. Max 200 characters.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['tool', 'reason', 'example_args'], 'properties': {'tool': {'type': 'string', 'description': 'Single tool to call next'}, 'reason': {'type': 'string', 'description': 'Why this tool fits the need'}, 'example_args': {'type': 'object', 'description': 'Sanitized example arguments for that tool', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}
Cambios recientes en herramientas
Servidores MCP similares
Prowlo — Reddit & X for AI agents
Indexes and searches Reddit and X-related social data, discovers communities, monitors keywords, finds engagement opportunities, …
Influship
Discovers, profiles, compares, and evaluates social-media creators, and retrieves their posts, engagement data, captions, and vid…
tiktok
Provides TikTok creator, video, hashtag, sound, comment, audience, analytics, search, and watermark-free download data.
mentiondrop
Monitors brand, competitor, and industry mentions from Reddit, Google News, and search, then provides sentiment and relevance ana…
Creator SKILL — Influencer Discovery
Finds and analyzes influencers across TikTok, Instagram, and YouTube.
KOLens
Searches TikTok KOLs, retrieves profiles, manages lists, and provides alerts for influencer intelligence.
Creator SKILL v2 — Influencer Discovery
Provides influencer discovery across TikTok, Instagram, and YouTube.
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…