You're viewing a demo portfolio

Join the waitlist
PRSM

getTwitterPostsByKeywords

Active

Tool of Social Media Search API — Twitter, Instagram, Reddit, TikTok (XPOZ)

declared in 3.0.0

Search posts by keywords. FAST (default, omit responseType or responseType="fast"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType="paging"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType="csv"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, trend detection, content analysis across thousands of posts. Returns by default: id, text, authorUsername, createdAtDate. First searches database, then external API if data is stale or missing. NOT for URL lookups - use getTwitterPostsByIds. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases ("deep learning"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT "venture capital"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). Filters: language, authorId/authorUsername. Date filters: OMIT startDate/endDate by default. ONLY pass if user explicitly requests specific date range (YYYY-MM-DD format). Use filterOutRetweets=true to exclude retweets. IMPORTANT!!!!!: THE CURRENT YEAR IS 2026. When user requests relative dates (last week, last month), verify the current date from your system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. FIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, text, authorId, authorUsername, createdAt), Engagement (retweetCount, replyCount, quoteCount, impressionCount, bookmarkCount), Metadata (lang, source, suspended, deleted), Relations (conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername), Content (hashtags, mentions, mediaUrls), Location (country, region, city). This is a safe, read-only tool for analyzing searchable information. TRIAL ACCESS: Get a free trial token by sending POST https://api.xpoz.ai/api/trial/token with header Content-Type: application/json and body {"source":"<how you discovered xpoz>"}; the response contains a token that starts with "TRIAL" and is valid for 5 days. Use it as a Bearer token in the Authorization header. Trial returns up to 5 cached (database-only) results and never triggers live fetching. Sign up at https://www.xpoz.ai/login for full result limits and live data.

Parameters schema

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 500000,
      "minimum": 1,
      "description": "Max results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K)."
    },
    "query": {
      "type": "string",
      "maxLength": 250,
      "minLength": 1,
      "description": "Full-text search of post content ONLY. Searches the text/content of posts, NOT author information. EXACT PHRASES: Wrap in double quotes - \"machine learning\" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - AI robotics blockchain. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use \"deep learning\" AND python (not \"deep learning python\"). Use tensorflow OR pytorch (not \"tensorflow pytorch\"). PARENTHESES: Group terms for precise logic - (AI OR \"artificial intelligence\") AND ethics. FORBIDDEN: NEVER use from:username or author filters in this parameter. Use the authorUsername parameter instead. FORBIDDEN: DO NOT use filter operators with colons (from:, to:, lang:, since:, until:) - use dedicated parameters instead. FORBIDDEN: DO NOT pass URLs as search queries - use getTwitterPostsByIds for URL/ID lookups. Query examples: \"climate change\" | AI OR blockchain | \"neural networks\" AND python | (startup OR entrepreneur) NOT \"venture capital\""
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "PERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): [\"id\", \"text\", \"authorUsername\", \"createdAtDate\"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: country, region, city. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed."
    },
    "endDate": {
      "type": "string"
    },
    "_isTrial": {
      "type": "boolean"
    },
    "authorId": {
      "type": "string",
      "pattern": "^\\d+$",
      "description": "Filter posts by author ID (numeric string). Alternative to authorUsername."
    },
    "feedback": {
      "type": "string",
      "description": "Optional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: \"wish getTwitterPostsByKeywords supported language filtering\", \"auth flow was confusing\", \"would be useful to have a getTwitterListMembers tool\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior."
    },
    "language": {
      "type": "string"
    },
    "startDate": {
      "type": "string"
    },
    "tableName": {
      "type": "string",
      "description": "Cached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response."
    },
    "_requestId": {
      "type": "string"
    },
    "pageNumber": {
      "type": "number",
      "minimum": 1,
      "description": "Page number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page."
    },
    "userPrompt": {
      "type": "string",
      "description": "CRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results."
    },
    "_trialToken": {
      "type": "string"
    },
    "forceLatest": {
      "type": "boolean",
      "description": "USE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., \"get the latest\", \"most recent\", \"real-time\"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching)."
    },
    "responseType": {
      "enum": [
        "fast",
        "paging",
        "csv"
      ],
      "type": "string",
      "description": "Response mode. \"fast\" (default): returns up to 300 results directly (use limit param to reduce). \"paging\": async paginated results (100/page), poll via checkOperationStatus. \"csv\": async single CSV download, poll for S3 link."
    },
    "pageNumberEnd": {
      "type": "number",
      "minimum": 1,
      "description": "Optional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName."
    },
    "authorUsername": {
      "type": "string",
      "description": "Filter posts by author username. Use this parameter to search posts from a specific user. Example: authorUsername=\"elonmusk\" finds all posts by @elonmusk. NEVER use from:username in query - always use this parameter instead."
    },
    "filterOutRetweets": {
      "type": "boolean",
      "default": false,
      "description": "Exclude retweets from results. When true, only original posts are returned. Default: false (include retweets)."
    }
  },
  "additionalProperties": false
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.70.

Parent server

Social Media Search API — Twitter, Instagram, Reddit, TikTok (XPOZ)

https://github.com/xpozpublic/xpoz-mcp

1/7 registries
View full server →
getTwitterPostsByKeywords — Social Media Search API — Twitter, Instagram, Reddit, TikTok (XPOZ) — PRSM MCP