Source instagram belongs on get_top_posts only. Growth, time series, and type Instagram all 400. Omit limit and the payload still prints count 20.
Live data as of 2026-10-19
Instagram on Trends MCP is a get_top_posts source, not a keyword series and not a live board. Pass source instagram and a hashtag. REST mode is get_top_posts. The alias is top_posts. An October 19, 2026 MCP call that sent bookstagram with no limit printed count 20 and 10 unique Instagram URLs. Rank 1 was https://www.instagram.com/p/Den_XYylwnh/, posted 2026-10-18, 1032 likes, 754 comments, media_type CAROUSEL_ALBUM. get_growth and get_time_series both returned 400 invalid_source for instagram, with 17 valid sources including all. get_top_trends type Instagram returned 400 invalid_request and 24 feed labels. Product llms.txt, docs.md, and OpenAPI fetched the same day still say three tools. The live MCP list and the REST endpoint accept a fourth.
get_growth for keyword fitness and source instagram returned HTTP 200, envelope statusCode 400, error invalid_source, message 'instagram' is not a valid source. The valid_sources array named google search, google images, google news, google shopping, youtube, wikipedia, tiktok, reddit, amazon, news sentiment, news volume, app downloads, app rankings, steam, npm, python, and all. REST printed the same envelope. get_time_series used the same error and the same 17 strings.
That list is the keyword-history contract. Instagram is not on it. TikTok is. The same morning, get_growth for source tiktok and keyword fitness with windows 7D, 30D, and 12M printed 28 daily points from 2026-09-06 through 2026-10-05. 7D closed 37.5 from 68.7, minus 45.41 percent, volume 47599318 from 50969437. 30D closed 37.5 from 32.0, plus 17.19 percent. 12M returned date_out_of_range. Instagram has no equivalent series to miss a 12M window on. The call never starts.
get_top_trends type Instagram is the other trap. The error was invalid_request, not invalid_source, message Unknown type 'Instagram'. plus 24 feed labels. There is no Instagram board next to type TikTok Trending Hashtags. Hashtag discovery still starts on that TikTok board, then a second tool reads posts. The October 19, 2026 TikTok Trending Hashtags pull stamped as_of_ts 2026-10-19T06:01:39.811167+00:00 and ranked halloween, usa, nfl, meme, football. get_top_posts on tiktok halloween returned count 1, author kinzievanhoutan, 9900000 plays. tiktok usa returned 404 no_data with similar-hashtag hints. Board rank is not a hashtag id. Instagram halloween on the posts tool did resolve: rank 1 https://www.instagram.com/p/DepFNpzGZ2c/, 578 likes, 0 comments, posted 2026-10-18.
The get_top_posts feature page holds the shared limit contract. This page is the Instagram source. get_growth remains the history tool for sources that actually exist.
A Trends MCP get_top_posts call on 2026-10-19 that sent source instagram and keyword bookstagram with no limit field printed count 20. Unique url values were 10. Unique id values were 10. Five shortcodes occupied three ranks each. Five shortcodes appeared once. count is len(posts). It is not a unique-post guarantee.
Rank 1 stayed https://www.instagram.com/p/Den_XYylwnh/ (id 17975556417134707) across the omit-limit pull, a later limit 5 pull, a spaced keyword pull, and REST. Likes moved from 1032 on the first MCP omit-limit payload to 1033 on the spaced-keyword and REST reprints. Comments stayed 754. Posted stayed 2026-10-18. media_type stayed CAROUSEL_ALBUM. The tool description says posts are fetched live and nothing is stored. A like increment on the same shortcode matches that. Rank 2 can still move on a later call even when rank 1 holds.
limit 5 printed those first five URLs once. REST limit 50 returned HTTP 200, statusCode 400, invalid_request, limit must be between 1 and 20. The ceiling is 20. It is not the get_top_trends default of 25 or max of 200.
REST offset 20 on the same bookstagram body still printed rank 1 as Den_XYylwnh. There was no second page in the payload. That REST list happened to print 20 unique URLs. The MCP omit-limit list printed 10. Deduplicate on url or id before treating row 20 as a twentieth post. Lower limit if a shorter list is needed.
keyword #fitness with source Instagram (capital I) echoed fitness and instagram. Rank 1 was https://www.instagram.com/p/DeqK3kXjefS/, posted 2026-10-19, 481 likes, 12 comments. keyword book stagram with a space echoed bookstagram and the same Osiander rank-1 URL. Spaces are stripped. The hash mark is stripped. The source string is folded.
No Instagram payload in this pull carried as_of_ts. Top-level keys were keyword, source, count, and posts. Board tools stamp time. This tool does not.
Instagram posts rows on this pull carried rank, title, caption, author, plays, likes, comments, posted, url, hashtags, media_type, and id. title, author, and plays were null on all 20 omit-limit rows. likes was populated on all 20. comments was present on all 20. media_type split 14 CAROUSEL_ALBUM and 6 IMAGE. Posted dates clustered on 2026-10-18 (15 rows), then 2026-10-16 (4) and 2026-10-17 (1).
TikTok rows on the same morning dropped comments, media_type, and id, and filled author plus plays. tiktok fitness limit 1 printed author mannyy1k, 4600000 plays, 489400 likes, posted 2026-10-02, URL https://www.tiktok.com/@mannyy1k/video/7692203317799292173. Rank is not a sort by plays. Count the plays field when volume of a TikTok post is the question. Instagram has no plays to count.
Six of the 20 Instagram bookstagram rows printed an empty hashtags array even when the caption had text. Nine rows included the single letter b in hashtags. Rank 1's caption contained a German books hashtag with an umlaut; the array stored b in that slot. Do not treat hashtags as a lossless parse of the caption. Rank 2 printed hashtags [].
REST missing keyword printed The 'keyword' parameter is required (the hashtag, with or without #). Missing source printed The 'source' parameter is required. Valid sources: tiktok, instagram. source youtube printed Unknown source 'youtube'. Valid sources: tiktok, instagram. source tiktok, instagram used the same invalid_request code. Comma-separated sources belong on get_growth, and Instagram is not a growth source anyway.
POST https://api.trendsmcp.ai/api with {"mode": "get_top_posts", "source": "instagram", "keyword": "bookstagram", "limit": 3} returned HTTP 200, statusCode 200, count 3, and the same Den_XYylwnh rank-1 URL as MCP. mode top_posts with fitness limit 1 returned https://www.instagram.com/p/DeqK3kXjefS/, matching the MCP hash-stripped fitness row.
The OpenAPI 3.1 document at https://www.trendsmcp.ai/openapi.json, fetched 2026-10-19, still describes "one of three operations." Its mode discriminator maps only get_time_series, get_growth, and get_top_trends. docs.md and llms.txt from the same day open the tool table with "Three tools." Pricing markdown lists request costs for those three names and does not name get_top_posts. Check current pricing for how this fourth mode is billed. Failed requests are free. The Free plan is 100 successful requests per month. Starter is $19 for 1,000.
A generated client that only emits the OpenAPI oneOf will never send this call. MCP clients that read the live tool list will. Wire get_top_posts or top_posts on REST if the job is Instagram posts on a hashtag. Leave TikTok Trending Hashtags for ranking tags, and leave source tiktok on get_growth for the short daily volume series behind a tag that actually resolves.
{"mode": "get_top_posts", "source": "instagram", "keyword": "bookstagram", "limit": 5}
Meta's Instagram Graph API GET /<IG_HASHTAG_ID>/top_media docs, fetched 2026-10-19, still limit that edge to public photos and videos, skip promoted media, page at a maximum of 50 results, and cap callers at 30 unique hashtags in a 7 day period. Requesting the edge counts against that 30 even when the hashtag id is already known. The docs say the username field cannot be requested on returned media objects. The query requires an Instagram Business or Creator Account user_id. App review sits in front of Public Content Access.
Trends MCP max limit is 20. There is no Meta app, no Business account user_id, and no 30-hashtag window in this payload. Instagram author is still null on every row, including rank 1 Den_XYylwnh. That null is the Trends MCP field. It is not a copy of Meta's 30-hashtag rule, and it is not a username that Graph API would have returned on hashtag media either.
Graph API hashtag media can page with an after cursor. get_top_posts does not. offset 20 reprinted rank 1. Third-party hashtag APIs that advertise cursor pagination and author.username are a different product. Check current pricing on those vendors. This page is the Trends MCP Instagram call: one source, one hashtag, at most 20 live rows, dedupe before counting.
FAQ