get_top_posts in Claude

Claude can call live TikTok and Instagram hashtag posts through Trends MCP get_top_posts. claude.ai, Desktop, and Claude Code are three different hosts.

Live data as of 2026-10-27

Claude pulls live hashtag posts through Trends MCP get_top_posts, not through get_top_trends. claude.ai uses OAuth at https://www.trendsmcp.ai/mcp with no API key in the connector. Desktop uses npx mcp-remote against https://api.trendsmcp.ai/mcp with a Bearer key. The homepage fetched 2026-10-27 tells Claude Code to add the www host and sign in with /mcp. The dedicated Claude Code page and llms.txt from the same morning still add the api host with a Bearer header. After connect, ask, using TrendsMCP, for source tiktok or instagram plus a hashtag. Omit limit and the payload prints count 20. Max is 20. offset does not page. A TikTok Trending Hashtags row is not proof that the posts tool can resolve that string.

Three Claude hosts, then name the posts tool

Host setup for the browser and Desktop lives on Trends MCP for Claude. The terminal add lives on Trends MCP for Claude Code. Those pages prove the connect with get_top_trends. This page is the post-shaped call those guides never name.

claude.ai: Settings, Customize, Connectors, Add custom connector.

  • Name: Trends MCP
  • Server URL: https://www.trendsmcp.ai/mcp

That www URL is intentional. Claude handles OAuth. No API key belongs in the connector. Deep link: https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Trends%20MCP&connectorUrl=https%3A%2F%2Fwww.trendsmcp.ai%2Fmcp. Start a new chat after consent. An old thread will not see a connector added mid-conversation.

Desktop talks to the api host. User, Settings, Developer, Edit Config, inside mcpServers:

"trends-mcp": {
  "command": "npx",
  "args": ["-y", "mcp-remote", "https://api.trendsmcp.ai/mcp", "--header", "Authorization:${AUTH_HEADER}"],
  "env": { "AUTH_HEADER": "Bearer YOUR_API_KEY" }
}

Mac path: ~/Library/Application Support/Claude/claude_desktop_config.json. Windows path: %APPDATA%\Claude\claude_desktop_config.json. Key from the account page, format tmcp_live_. Fully quit Desktop after saving. A window reload is not enough.

Ask with "using TrendsMCP" so Claude routes to the server instead of a web search. The proving prompt is a posts call, not a board call.

get_top_posts(source="tiktok", keyword="fitness", limit=5)
get_top_posts(source="instagram", keyword="bookstagram", limit=5)

get_top_trends with type TikTok Trending Hashtags still ranks tags. TikTok trends in Claude is that board job. Do not send a board type string into get_top_posts. Do not send source instagram into get_growth. Cursor Agent uses a different JSON object, with url plus transport http, on get_top_posts in Cursor. Pasting that object into Desktop is the wrong shape.

Homepage puts Claude Code on www

The homepage fetched 2026-10-27 tells Claude Code operators to run this add, then type /mcp to sign in:

claude mcp add --transport http --scope user trends-mcp https://www.trendsmcp.ai/mcp

The same homepage groups Claude Code with Claude and ChatGPT as sign-in clients on https://www.trendsmcp.ai/mcp. Cursor and VS Code stay on the api host with a Bearer key.

llms.txt last updated 2026-10-27 still publishes the other recipe:

claude mcp add --transport http trends-mcp https://api.trendsmcp.ai/mcp --header "Authorization: Bearer YOUR_API_KEY"

The dedicated Claude Code page repeats that api-host line and says not to paste https://www.trendsmcp.ai/mcp into the CLI, because www is OAuth for claude.ai and a www add 401s. This run did not execute claude mcp add. It recorded both published commands. Match the recipe to the binary that is actually open. A Desktop npx block does not install the CLI. A claude.ai connector does not install the CLI.

CLAUDE.md can name get_top_posts, sources tiktok and instagram, and a cap of one hashtag then stop. It should not name this morning's board ranks. Boards turn over. A frozen tag in CLAUDE.md becomes a stale architecture note.

Nightly hashtag tracking belongs on REST, not a CLI loop that only runs when someone is in the terminal. POST https://api.trendsmcp.ai/api with the same Bearer key and mode get_top_posts. Wrapping claude in GitHub Actions just to pull posts is a roundabout way to hit that URL.

Omit limit and Claude still gets 20 rows

A 2026-10-27 MCP get_top_posts call that sent source tiktok and keyword fitness with no limit field printed count 20 and 20 distinct TikTok URLs. Rank 1 was https://www.tiktok.com/@mannyy1k/video/7692203317799292173, posted 2026-10-02, 4,700,000 plays, 499,200 likes. A follow-up with limit 1 returned that same URL. Keyword #fitness echoed fitness and the same rank-1 row.

MCP limit 21 returned 400 invalid_request, message limit must be between 1 and 20. REST limit 50 on the same body returned HTTP 200 with envelope statusCode 400 and the same message. The ceiling is 20. It is not the get_top_trends default of 25 or max of 200.

REST offset 20 on tiktok fitness still printed count 20 and the same @mannyy1k rank-1 URL. There is no second page. Lower limit if Claude only needs a handful of rows. Comma-separated sources failed: tiktok, instagram returned 400 Unknown source 'tiktok, instagram'. Valid sources: tiktok, instagram. One source per call.

The shared limit contract is on get_top_posts. Rank is not a sort by plays. TikTok fitness rank 6 on this pull was @sjo.herben at 26,100,000 plays. Rank 1 sat at 4,700,000. Count the plays field when volume of a post is the question.

MCP instagram bookstagram with limit omitted printed count 20 and 20 unique URLs. Rank 1 was https://www.instagram.com/p/De7eyT-D0TT/ (id 17952933666310550), posted 2026-10-25, 1,968 likes, 27 comments, media_type CAROUSEL_ALBUM. Every Instagram row left author and plays null. likes was null on three of the 20 ranks. A later REST limit 1 call on the same tag returned a different shortcode, https://www.instagram.com/p/De9WW-eGnwA/, 811 likes. Posts are fetched live. Rank can move between calls. Deduplicate on url or id before treating row 20 as a twentieth post.

No posts 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.

Board rank is not a hashtag id

get_top_trends with type TikTok Trending Hashtags and limit 5 on 2026-10-27 printed as_of_ts 2026-10-27T06:01:34.096112+00:00. Rank 1 was halloween. Rank 2 was usa. get_top_posts on tiktok halloween returned count 20. Rank 1 was @kinzievanhoutan at https://www.tiktok.com/@kinzievanhoutan/video/7691677960784432398, posted 2026-10-01, 10,000,000 plays. Rank 7 was @nataliireynoldss at 69,300,000 plays. Rank is still not a plays sort on a tag that actually resolves.

tiktok usa returned 404 no_data, message No exact hashtag match for #usa on tiktok, with similar-tag hints #usaupdate, #usaglassblower, #usacooking, #usacat, #usahadonat. Board rank is a discovery string. It is not a hashtag id Claude can paste into the next tool call. Instagram halloween on the posts tool did resolve the same morning: rank 1 https://www.instagram.com/p/De-v_B-n0uk/, 518 likes, 16 comments, posted 2026-10-27, media_type CAROUSEL_ALBUM.

Source reddit on get_top_posts is the other mixup. It returned 400 invalid_request, Unknown source 'reddit'. Valid sources: tiktok, instagram. get_growth for keyword fitness and source instagram returned 400 invalid_source, message 'instagram' is not a valid source., plus a 14-name valid_sources list that includes all. Instagram has no series and no live board on this product. Posts are this tool only.

Hashtag discovery still starts on the TikTok board, then a second call reads posts only for strings that actually resolve. Do not pin this morning's rank-1 tag in a Claude Project. The durable fact is the two-tool sequence plus the 404.

OpenAPI says three operations. REST still runs the posts mode.

POST https://api.trendsmcp.ai/api with {"mode": "get_top_posts", "source": "tiktok", "keyword": "fitness", "limit": 3} returned HTTP 200, statusCode 200, count 3, and the same @mannyy1k rank-1 URL as MCP. mode top_posts returned that row too. A generated client that only reads the OpenAPI prose will still miss it.

The OpenAPI 3.1 document at https://www.trendsmcp.ai/openapi.json, fetched 2026-10-27, now includes a GetTopPostsRequest schema and maps get_top_posts in the mode discriminator. The path description still says "Run one of three operations" and names only get_time_series, get_growth, and get_top_trends. The 200 response oneOf still omits a posts schema. llms.txt from the same morning lists get_top_posts in the MCP tool table, then drops it from the REST mode table. An invalid-mode REST probe listed valid_modes as get_context, get_growth, get_time_series, get_top_posts, get_top_trends. The aliases map included top_posts and omitted get_context, even though REST mode context returned 200 on this run.

Pricing markdown fetched 2026-10-27 now names get_top_posts: one hashtag plus source per call, Business plan. get_usage on this run printed get_top_trends uses 1 request per 10 rows; other tools use 1. Failed requests are free. The Free plan is 100 successful requests per month. Starter is $19 for 1,000. Connecting is free. Calling is not. One posts call plus one TikTok board page is two requests. Looping "until a tag looks interesting" finishes a small plan before the Project instruction is written.

{"mode": "get_top_posts", "source": "instagram", "keyword": "bookstagram", "limit": 5}

Common questions

On claude.ai, add a custom connector at https://www.trendsmcp.ai/mcp (OAuth, no API key in the connector). On Desktop, paste npx mcp-remote against https://api.trendsmcp.ai/mcp with a Bearer key. Ask, using TrendsMCP, for get_top_posts with source tiktok or instagram and a hashtag. Omit limit and the payload prints count 20. Max limit is 20. get_top_trends ranks hashtags. It does not return post rows.
The homepage fetched 2026-10-27 publishes claude mcp add --transport http --scope user trends-mcp https://www.trendsmcp.ai/mcp, then /mcp to sign in. The dedicated Claude Code page and llms.txt from the same morning still add https://api.trendsmcp.ai/mcp with a Bearer Authorization header, and the CLI page says www in that command 401s. This run did not execute the CLI. Match the recipe to the binary in front of the operator, then prove the connect with a posts call.
Board rank is a discovery string, not a hashtag id. On 2026-10-27 type TikTok Trending Hashtags ranked halloween at 1 and usa at 2. get_top_posts on tiktok halloween returned count 20. tiktok usa returned 404 no_data with similar-tag hints such as #usaupdate and #usaglassblower. Ask for posts only after the string resolves as a hashtag.
No. REST offset 20 on tiktok fitness still printed count 20 and the same rank-1 URL as the unpaged call. MCP limit 21 returned 400 invalid_request, message limit must be between 1 and 20. Lower limit for a shorter list. Do not add offset expecting rows 21 through 40.
No. The claude.ai connector authenticates with OAuth on the www host. A Bearer key belongs in Desktop JSON and in the api-host Claude Code add. pricing.md fetched 2026-10-27 lists get_top_posts as one request per hashtag plus source, on the Business plan. Connecting is free. Calling is not.