Pass source python for a weekly PyPI series, or type GitHub for the live repo list. The two strings are not interchangeable.
Live data as of 2026-09-19
A python vs GitHub comparison on Trends MCP is two different tools. Source python on get_growth or get_time_series returns a weekly 0-100 series for one PyPI project name, with a download-count volume field when the pipeline has it. Type GitHub on get_top_trends returns ranked owner/name strings and takes no keyword. From the September 19, 2026 board (as_of 2026-09-19T06:01:41 UTC), rank 1 was cloudflare/security-audit-skill. The python token security-audit-skill returned HTTP 200 with envelope statusCode 502 source_unavailable. Rank 2 anthropics/claude-code needed a rewrite: claude-code closed at index 0.0 and volume 301 on 2026-09-07, while anthropic closed at index 61.2 and volume 31,903,621. Mixing GitHub into get_growth is a 400.
The September 19, 2026 board is the split that still matters next month: live rank is an owner/name list stamped that morning, while source python is a weekly download series that only resolves when the keyword matches a PyPI project. Omitting limit returned limit 25, count 17, offset 0, as_of_ts 2026-09-19T06:01:41.288913+00:00. Rank 1 was cloudflare/security-audit-skill. Rank 2 was anthropics/claude-code. Rank 8 was Fission-AI/OpenSpec. Rank 9 was ankitects/anki. Rank 14 was supabase/supabase. Rank 15 was coder/coder. offset 17 with limit 5 returned count 0. The board ended at row 17.
| Token | GitHub rank | python keyword | Close on 2026-09-07 |
|---|---|---|---|
| security-audit-skill | 1 | security-audit-skill | envelope 502 source_unavailable |
| claude-code | 2 | claude-code | 0.0 / 301, 7D -100% |
| anthropic | 2 (rewrite) | anthropic | 61.2 / 31,903,621, 7D +2.17% |
| open-code-review | 3 | open-code-review | envelope 502 source_unavailable |
| ecc | 4 | ecc | 18.7 / 91, 7D -25.5% |
| openspec | 8 | openspec | HTTP 404 no_data |
| anki | 9 | anki | 2.1 / 16,003, 7D +23.53% |
| supermemory | 11 | supermemory | 8.7 / 17,962, 7D -8.42% |
| rustfs | 13 | rustfs | 5.7 / 500, 7D +23.91% |
| supabase | 14 | supabase | 52.9 / 5,090,408, 7D -1.31% |
| coder | 15 | coder | 36.2 / 42, 7D +65.3% |
| pandas | not on board | pandas | 56.7 / 119,699,070, 7D -2.07% |
| numpy | not on board | numpy | 57.4 / 179,418,169, 7D +1.23% |
| pydantic | not on board | pydantic | 64.3 / 186,528,280, 7D -0.62% |
| requests | not on board | requests | 58.9 / 271,150,079, 7D 0.0% |
Live rank is not a sort of weekly installs. coder sat at rank 15 with 42.0 downloads. requests sat off the board with 271,150,079. ecc sat at rank 4 with 91.0 downloads; that token is a name collision, not proof affaan-m/ECC ships on PyPI. Quote the board stamp and the weekly volume. Do not treat rank 1 as the largest audience.
The claude-code join is the durable rewrite. anthropics/claude-code is a repo path. claude-code on python is a tiny project: 66 weekly points from 2025-06-09 (index 2.4, volume 634) to 2026-09-07 (index 0.0, volume 301), with a one-week peak of 100.0 / 14,221 on 2025-09-22. anthropic is the SDK people actually install. It closed at 31,903,621 on the same week, 188 points from 2023-02-06 (index 0.0, volume 344), peak 100.0 / 52,154,650 on 2026-08-10. Rank 2 on GitHub does not pick the 31.9 million-download name.
sort=rank_change with window=7d and limit 10 used the same as_of_ts, plus baseline_ts 2026-09-12T02:01:33.908651+00:00, then returned count 0 and empty data. The note said the GitHub board turned over completely versus the 7d baseline: no item appears in both snapshots. window=1d against baseline_ts 2026-09-18T02:01:34.163551+00:00 returned count 5. affaan-m/ECC climbed 9 places (4 from 13). TencentCloud/Octop climbed 9 (7 from 16). anthropics/claude-code climbed 4 (2 from 6). A 7-day empty climber set can sit next to a 1-day mover list on the same stamp.
Two strings, two tools. REST uses mode get_growth or get_top_trends. MCP uses the matching tool names. Weekly PyPI windows live on the PyPI package downloads API. The live board page is the GitHub Trending Repos API. Pagination and limit are documented with get-top-trends.
{"mode": "get_top_trends", "type": "GitHub"}
{"mode": "get_growth", "source": "python", "keyword": "anthropic", "percent_growth": ["7D", "30D", "12M"]}
{"mode": "get_time_series", "source": "python", "keyword": "pandas"}
{"mode": "get_growth", "source": "python, npm", "keyword": "supabase", "percent_growth": ["7D"]}
The MCP equivalents are get_top_trends(type="GitHub"), get_growth(keyword="anthropic", source="python", percent_growth=["7D", "30D", "12M"]), and get_time_series(keyword="pandas", source="python"). REST top_trends with type GitHub and limit 3 on September 19, 2026 returned the same snapshot timestamp as the omitted-limit MCP pull, with count 3: cloudflare/security-audit-skill, anthropics/claude-code, alibaba/open-code-review.
get_time_series for pandas returned 261 weekly rows from 2021-09-13 (index 3.1, volume 19,574,141) to 2026-09-07 (index 56.7, volume 119,699,070). Peak index 100.0 landed on 2026-08-03 with volume 200,739,859. Grain is weekly over about five years. The python close date on this pull is 2026-09-07, twelve days behind the GitHub stamp. That lag is the series, not a stale board.
7D matched 1W exactly on supabase: 52.9 versus 53.6, growth -1.31%, volume 5,090,408 from 5,165,980. 30D matched 1M exactly: 52.9 versus 85.6, growth -38.2%. Extra windows still sit on one source-plus-keyword request. Omit percent_growth on pandas and the handler returned HTTP 200 with a single 12M row: index 56.7 versus 47.7 on 2025-09-08, growth +18.87%, volume 119,699,070 from 102,933,234. The default window is 12M.
The comma-separated supabase call is the join that npm-only pages miss. source python, npm returned sources_requested ["python", "npm"], sources_successful 2, and sources_failed 0. python 7D was -1.31% index and -1.46% volume on 261 points, recent_date 2026-09-07, volume 5,090,408. npm 7D was -14.51% index and -14.54% volume on 259 points, recent_date 2026-09-12, volume 3,168,548. volume_weighted_growth printed -6.48 with weight_coverage 2/2 sources and total volume 8,258,956, python 61.64% of that mix. Read source_results before joining those percentages. The two registries do not share a week-ending date.
get_time_series on python, npm returned invalid_source with 16 names and no all. Multi-source strings belong on get_growth only.
Missing names do not all fail the same way. openspec returned HTTP 404 no_data. open-code-review, security-audit-skill, hister, and a nonsense token thispackagedoesnotexistxyz123 returned envelope statusCode 502 source_unavailable. Treat 502 on python as "no series," not as a retryable outage, until a later pull returns a row. Pandas and REQUESTS both resolved, same closes as the lowercase names. python keywords case-fold. npm keywords on the sibling npm vs GitHub page did not.
get_growth with source GitHub and keyword react returned HTTP 400, error invalid_source, message 'github' is not a valid source., plus 16 valid sources: google search, google images, google news, google shopping, youtube, wikipedia, tiktok, reddit, amazon, news sentiment, news volume, app downloads, app rankings, steam, npm, python, all. The handler lowercased the rejected source. It did not map it to python. REST repeated that 400 with the same 17-name list.
type python on get_top_trends returned HTTP 400, error invalid_request, message Unknown type 'python', plus 24 valid feed labels that include GitHub. There is no PyPI top-packages board.
The inverse fold exists on the feed name, and it is wider than case. type github on get_top_trends returned HTTP 200 and echoed type GitHub, with the same top five repos as the canonical label and as_of_ts 2026-09-19T06:01:41.288913+00:00. type GitHub Trending Repos also returned HTTP 200, echoed type GitHub, and printed the same ranked rows at limit 5. REST mode top_trends with type GitHub and limit 3 repeated that snapshot. llms.txt still describes feed labels as case-sensitive and matching exactly, and it lists the canonical name as GitHub. The live handler accepted these GitHub-adjacent strings on September 19, 2026 and served the repo board. Prefer the canonical GitHub spelling in stored configs. Do not treat the alias as a second feed.
REST omitting type is a different 400. POST https://api.trendsmcp.ai/api with mode get_top_trends and limit 5, no type, returned HTTP 200 with envelope statusCode 400, error invalid_request, message The 'type' parameter is required, then the same 24-name list. llms.txt still names that miss missing_parameter. Read statusCode inside the JSON, not only the HTTP line.
country GB with limit 5 on GitHub returned envelope statusCode 400, error invalid_request, message that country is only supported for Google Trends, Google Trends by Category, TikTok Trending Hashtags, TikTok Trending Hashtags by Category, X (Twitter) Trending, and YouTube Trending. GitHub is not on that list. Omit country on this feed.
get_top_trends MCP pricing is 1 credit per 10 requested rows, max 10 credits per call. REST counts 1 request per call. Free boards still cap at the top 10. The 17-row pull on this page is what the handler returned when limit was omitted on a paid key, below the echoed limit 25. The keyword-window follow-up is the PyPI downloads page. This split stays inside one developer stack: weekly package installs versus live repo rank.
FAQ