Pass source npm for a weekly package series, or type GitHub for the live repo list. The two strings are not interchangeable.
Live data as of 2026-09-17
An npm vs GitHub comparison on Trends MCP is two different tools. Source npm on get_growth or get_time_series returns a weekly 0-100 series for one exact package 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 17, 2026 board (as_of 2026-09-17T06:01:34 UTC), rank 1 was alibaba/open-code-review and the npm token open-code-review returned HTTP 404 no_data. Rank 14 supabase/supabase needed a rewrite: the owner/name string 404'd, while @supabase/supabase-js closed at index 79.5 and volume 19,969,366 on 2026-09-12. Mixing GitHub into get_growth is a 400.
The September 17, 2026 board is the split that still matters next month: live rank is an owner/name list stamped that morning, while source npm is a weekly download series that only resolves when the keyword matches the registry. Omitting limit returned limit 25, count 21, offset 0, as_of_ts 2026-09-17T06:01:34.476370+00:00. Rank 1 was alibaba/open-code-review. Rank 3 was JustVugg/colibri. Rank 11 was anthropics/claude-code. Rank 14 was supabase/supabase. Rank 20 was cline/cline. offset 21 with limit 5 returned count 0. The board ended at row 21.
| Token | GitHub rank | npm keyword | Close on 2026-09-12 |
|---|---|---|---|
| open-code-review | 1 | open-code-review | HTTP 404 no_data |
| colibri | 3 | colibri | 11.8 / 6.0, 7D -32.95% |
| tinycast | 4 | tinycast | HTTP 404 no_data |
| voicebox | 5 | voicebox | 8.0 / 2.0, 7D -81.82% |
| ever-gauzy | 8 | ever-gauzy | HTTP 404 no_data |
| anki | 9 | anki | 1.1 / 1.0, 7D -80.36% |
| ghidra | 10 | ghidra | HTTP 404 no_data |
| claude-code | 11 | @anthropic-ai/claude-code | 50.8 / 11,276,395, 7D -20.63% |
| supervision | 12 | supervision | 72.1 / 12,653, data_quality low |
| supabase | 14 | supabase | 80.1 / 3,168,548, 7D -14.51% |
| supabase-js | 14 (scoped) | @supabase/supabase-js | 79.5 / 19,969,366, 7D +6.14% |
| cline | 20 | cline | 16.4 / 66,850, 7D +16.31% |
| react | not on board | react | 74.0 / 127,666,991, 7D -15.43% |
Live rank is not a sort of weekly installs. colibri sat at rank 3 with 6.0 downloads. react sat off the board with 127,666,991. anki sat at rank 9 with 1.0 download; that token is a name collision, not proof the desktop study app ships on npm. Quote the board stamp and the weekly volume. Do not treat rank 1 as the largest audience.
The supabase join is the durable rewrite. supabase/supabase returned 404. Bare supabase closed at 3,168,548. @supabase/supabase-js closed at 19,969,366, more than six times the unscoped name, with 7D +6.14% from 18,803,202 against a 30D decline of 5.47% from 21,127,352. Rank 11 needed the same move: anthropics/claude-code is not an npm name, @anthropic-ai/claude-code is. @anthropic-ai/sdk is a third string, 29,568,075 on the same week, and it was not on the board at all.
sort=rank_change with window=7d and limit 10 used the same as_of_ts, plus baseline_ts 2026-09-10T02:01:40.196111+00:00, then returned count 0 and empty data. The note said no items climbed versus the 7d baseline; everything held or fell. window=1d against baseline_ts 2026-09-16T02:01:36.141355+00:00 returned the same empty set. A 21-row GitHub board can turn over without a climber row.
Two strings, two tools. REST uses mode get_growth or get_top_trends. MCP uses the matching tool names. The live board page is the GitHub Trending Repos API. Weekly package windows live on npm trends. Window defaults live on get-growth. Pagination and limit are documented with get-top-trends.
{"mode": "get_top_trends", "type": "GitHub"}
{"mode": "get_growth", "source": "npm", "keyword": "@supabase/supabase-js", "percent_growth": ["7D", "30D", "12M"]}
{"mode": "get_time_series", "source": "npm", "keyword": "react"}
{"mode": "get_growth", "source": "npm, google search", "keyword": "cline", "percent_growth": ["7D"]}
The MCP equivalents are get_top_trends(type="GitHub"), get_growth(keyword="@supabase/supabase-js", source="npm", percent_growth=["7D", "30D", "12M"]), and get_time_series(keyword="react", source="npm"). REST top_trends with type GitHub and limit 3 on September 17, 2026 returned the same snapshot timestamp as the omitted-limit MCP pull, with count 3: alibaba/open-code-review, cloudflare/security-audit-skill, JustVugg/colibri.
get_time_series for react returned 260 weekly rows from 2021-09-25 (index 0.0, volume 2,333,393) to 2026-09-12 (index 74.0, volume 127,666,991). Peak index 100.0 landed on 2026-08-29 with volume 171,637,376. The week of 2026-08-22 printed 99.2 / 170,203,436. Grain is weekly over about five years. get_time_series for @supabase/supabase-js used the same 260-week span, first point 0.0 / 3,619 on 2021-09-25, peak 100.0 / 25,113,267 on 2026-08-08, close 79.5 / 19,969,366 on 2026-09-12.
7D matched 1W exactly on @supabase/supabase-js: 79.5 versus 74.9, growth +6.14%, volume 19,969,366 from 18,803,202. 30D matched 1M exactly: 79.5 versus 84.1, growth -5.47%. Extra windows still sit on one source-plus-keyword request. Omit percent_growth on react and the handler returned HTTP 200 with a single 12M row: index 74.0 versus 25.1 on 2025-09-13, growth +194.82%, volume 127,666,991 from 44,821,325. The default window is 12M.
The comma-separated cline call returned sources_requested ["npm", "google search"], sources_successful 1, and sources_failed 1. npm 7D was +16.31% index and +15.53% volume on 260 points, recent_date 2026-09-12. google search came back status unavailable, message Data not available for this source. volume_weighted_growth printed 15.53 with weight_coverage 1/1 sources because the failed source contributed no volume. Read source_results before joining those percentages.
get_time_series on npm, google search returned invalid_source with 16 names and no all. Multi-source strings belong on get_growth only.
supervision is the registry fork. npm closed at 12,653 on 2026-09-12 with data_quality low because more than 90 percent of the series is zero, and 12M printed 999999.0 from a 0.0 baseline. python supervision closed at 171,086 on 2026-09-07, 191 points, 7D -20.54% from 215,677. Rank 12 roboflow/supervision is a Python repo. The npm token is a different, tiny package. Quote both registries or pick one.
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 npm. REST repeated that 400 with the same 17-name list.
type npm on get_top_trends returned HTTP 200, envelope statusCode 400, error invalid_request, message Unknown type 'npm', plus 24 valid feed labels that include GitHub. There is no npm 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 three repos as the canonical label and as_of_ts 2026-09-17T06:01:34.476370+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 Trending Repos and limit 3 repeated that alias on the same stamp. 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 17, 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.
React as an npm keyword returned HTTP 404 no_data. react returned the 127,666,991-download close. Package names are case-sensitive. Scoped names need the @scope/name form; dropping the scope can resolve a different, smaller package, the way supabase did next to @supabase/supabase-js.
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 21-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 npm trends page. This split stays inside one developer stack: weekly package installs versus live repo rank.
FAQ