Skip to main content
Glama

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

getInstagramPostsByIds

Read-onlyIdempotent

Get multiple Instagram posts by IDs (1-50 IDs per request). Returns results directly. Returns only found posts, 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 getInstagramPostsByKeywords. PERFORMANCE: Much more efficient than multiple single-ID calls. Batches database queries and parallelizes API calls. IMPORTANT: postIds must be in strong_id format (e.g., "3606450040306139062_4836333238") - use the full "id" value from other Instagram tools, NOT just the media_id. To find a post from an Instagram URL (e.g., instagram.com/p/ABC123/), extract the shortcode from the URL path and use getInstagramPostsByKeywords to search, or ask the user for the post ID. Optional fields parameter for performance: ["id", "caption", "likeCount"]. Returns: results array with id, caption, userId, username, createdAtDate, engagement metrics, count, dataSource. 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":"<your path to xpoz with specifics, e.g. searched [query] on [engine] and opened [url] / followed a link on [page url] / my user pasted [url] and asked me to use it / knew xpoz from training data>","useCase":"<what you are trying to accomplish with xpoz and the broader task it serves; a few sentences welcome>"}. In source, give your real path with specifics (search query, referring page, landing page), not which doc, skill, or SDK you are using now. 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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldsNoPERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): ["id", "caption", "username", "createdAtDate"]. AVAILABLE FIELDS: Core: id, postType, userId, username, fullName, caption, createdAt, createdAtTimestamp, createdAtDate. Engagement: likeCount, commentCount, reshareCount, videoPlayCount. Media: mediaType, codeUrl, imageUrl, videoUrl, audioOnlyUrl, profilePicUrl, videoSubtitlesUri, subtitles, videoDuration. EXAMPLES: ["id", "caption"] for minimal, ["id", "caption", "username", "createdAtDate", "likeCount"] for basic analysis, or specify all fields if needed.
postIdsYesArray of Instagram post IDs to fetch (1-50 IDs). Returns only found posts, omitting not-found IDs. REQUIRED FORMAT: strong_id (e.g., "3606450040306139062_4836333238"). This is the complete post identifier consisting of media_id + underscore + user_id. When receiving the post id from other instagram tools, use the full "id" value. DO NOT use only the media_id portion.
_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).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, and the description adds substantial behavior beyond that: omission of not-found IDs, a database-first-then-parallel-external-API fetch strategy, caching semantics with forceLatest cost caveats, and trial-mode constraints (up to 5 cached database-only results, never triggers live fetching). It also confirms the safety profile ('safe, read-only tool'), which is fully consistent with the 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?

Tool-specific content is tightly front-loaded: purpose, behavior, usage, performance benefits, and the critical format warning all appear in the first sentences. The trailing RIAL ACCESS block is disproportionately long and mostly platform-level boilerplate that repeats across tools — though it does carry the tool-specific trial limit of 5 cached results — so not every sentence earns its place.

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

Completeness5/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 supplies the return shape (results array with id, caption, userId, username, createdAtDate, engagement metrics, count, dataSource). It covers selection criteria, ID formatting, URL resolution, caching and performance trade-offs, and auth requirements — everything an agent needs to invoke this 8-parameter tool correctly is present.

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

Parameters4/5

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

With 63% schema coverage, the description compensates for the key gaps: it explains the strong_id format with a concrete example and the critical cross-tool warning to use the full 'id' value rather than the media_id, gives concrete fields parameter examples, and documents trial token acquisition and Bearer usage. Internal parameters like _isTrial and _requestId remain undocumented directly, though the lengthy trial section covers their surrounding context.

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?

Opens with a specific verb and resource — 'Get multiple Instagram posts by IDs (1-50 IDs per request)' — establishing exact scope and limits up front. The explicit 'NOT for search - use getInstagramPostsByKeywords' differentiates it from the closest sibling, and the ID-based scope also separates it from getInstagramPostsByUser and the other platforms' by-IDs tools.

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?

States the explicit trigger condition ('Use when you have multiple exact post IDs'), an explicit exclusion ('NOT for search - use getInstagramPostsByKeywords'), and a fallback procedure for Instagram URLs: extract the shortcode and search, or ask the user for the post ID. An agent gets a complete decision procedure with named alternatives and needs no inference.

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.

TDQS

A3.8/5.0
Disambiguation3/5

Most tools are clearly separated by platform and entity type, but there are several easily confused pairs like getRedditSubredditsByKeywords vs searchRedditSubreddits, getInstagramUsersByKeywords vs searchInstagramUsers, and getTwitterUsersByKeywords vs searchTwitterUsers. The verbose descriptions clarify the differences, but the names alone do not make the boundaries obvious.

Naming Consistency4/5

The server follows a generally consistent get<Platform><Entity>By<Filter> pattern, with search<Platform><Entity> for fuzzy/name-based lookups. Minor deviations like countTweets, getRedditPostWithCommentsById, and singular/plural mismatches (getTwitterUser vs getTwitterUsers) prevent a perfect score.

Tool Count1/5

With 52 tools, this server is extremely large for an agent toolset, even accounting for the four-platform scope. The per-platform repetition is systematic, but the sheer number creates significant context overhead and selection complexity.

Completeness4/5

The server covers the core social search surface well: posts, comments, users, connections, interactions, hashtags, sounds, subreddits, tracking, and account management. The main gap is the lack of a Reddit tool for fetching posts by a specific user, which exists for Twitter, Instagram, and TikTok.