Skip to main content
Glama

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

getTwitterPostsByIds

Read-onlyIdempotent

Get multiple Twitter posts by numeric IDs (1-100 IDs per request). Returns results directly. Returns only found tweets, omitting not-found IDs for flexibility. First searches database, then external API for missing/stale data in parallel. Use when you have multiple exact post IDs. NOT for search - use getTwitterPostsByKeywords. PERFORMANCE: Much more efficient than multiple single-ID calls. Batches database queries and parallelizes API calls. Optional fields parameter for performance: ["id", "text", "retweetCount"]. Returns: results array with id, text, authorId, createdAt, metrics (retweets, replies, quotes), count, dataSource. This is a safe, read-only tool for analyzing searchable information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldsNoPERFORMANCE 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: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: ["id", "text"] for minimal, ["id", "text", "retweetCount", "likeCount", "hashtags"] for basic analysis, or specify all fields if needed.
postIdsYesArray of numeric Twitter post IDs (1-100 IDs). Examples: ["1849537602858893568", "1849012345678901234"]. Returns only found tweets, omitting not-found IDs.
_isTrialNo
feedbackNoOptional. 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 tool that lists the members of a Twitter list", "loved how fast this was". Captured for product feedback; does not affect tool behavior.
_requestIdNo
userPromptNoCRITICAL 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.
_trialTokenNo
forceLatestNoUSE 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).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / feedback / description
      Previous value: -"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."New value: +"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 tool that lists the members of a Twitter list\", \"loved how fast this was\". Captured for product feedback; does not affect tool behavior."
  2. Changed1 schema field changed
    • changedInput schema / properties / fields / description
      Previous value: -"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."New value: +"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: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: [\"id\", \"text\"] for minimal, [\"id\", \"text\", \"retweetCount\", \"likeCount\", \"hashtags\"] for basic analysis, or specify all fields if needed."
  3. Changed4 schema fields changed
    • addedInput schema / properties / _isTrial
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / _trialToken
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / feedback
      Added value: +{
      +  "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.",
      +  "type": "string"
      +}
    • changedInput schema / properties / fields / description
      Previous value: -"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. 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, 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."New value: +"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."
  4. Changed2 schema fields changed
    • changedInput schema / properties / postIds / description
      Previous value: -"Array of Twitter post IDs to fetch (1-100 IDs). Returns only found tweets, omitting not-found IDs."New value: +"Array of numeric Twitter post IDs (1-100 IDs). Examples: [\"1849537602858893568\", \"1849012345678901234\"]. Returns only found tweets, omitting not-found IDs."
    • addedInput schema / properties / postIds / items / pattern
      Added value: +"^\\d+$"
  5. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds valuable behavioral context beyond those annotations: it explains the lookup order (database first, then external API in parallel), that not-found IDs are omitted, and that results are returned directly. This enriches the agent's understanding without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but well-structured, with the core purpose front-loaded and performance/usage notes clearly separated. While it could be trimmed, every section adds meaningful guidance (e.g., field choices, safe-read confirmation). It is dense but not redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description adequately covers return structure (results array with id, text, authorId, createdAt, metrics), data source behavior, and the omission of not-found IDs. It does not detail error cases or rate limiting, but the provided information is sufficient for an agent to decide and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 63%, and the description adds little beyond what the schema already documents. The postIds and fields parameters have detailed descriptions in the schema highlighting behavior and available options; the description repeats these rather than extending them. Undocumented params like _isTrial, _requestId, _trialToken remain unexplained, and the description does not compensate for those gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets multiple Twitter posts by numeric IDs, specifies the quantity range (1-100), and explicitly differentiates from getTwitterPostsByKeywords by stating 'NOT for search'. This makes the purpose and boundary distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use guidance ('Use when you have multiple exact post IDs'), explicitly excludes search ('NOT for search - use getTwitterPostsByKeywords'), and even suggests performance benefits over multiple single-ID calls. This fully informs the agent's choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.