{
  "ok": true,
  "resource": {
    "id": "RES_038C95A5DD61",
    "resource_type": "mcp_server",
    "canonical_url": "https://registry.modelcontextprotocol.io/v0.1/servers/npm%20Trends%20API/versions/1.0.1",
    "name": "npm Trends API",
    "summary_en": "npm package download trends and adoption growth over time. Free key at trendsapi.ai",
    "summary_zh": "查询 npm 包下载趋势与增长数据，支持多源对比与实时榜单，适用于数据分析与营销调研。",
    "description_en": "This MCP server provides access to npm package download trends and growth metrics over time, as well as live top-trending boards for various sources. It is suitable for data analysis and marketing workflows. A free API key from trendsapi.ai is required, and rate limits or monthly quotas may apply.",
    "description_zh": "该 MCP 服务器提供 npm 包下载趋势和增长指标的历史数据，以及多个来源的实时热门榜单。适用于数据分析和营销工作流。需要从 trendsapi.ai 获取免费 API 密钥，并可能受到速率限制或月度配额的限制。",
    "provider_name": "ai.trendsapi",
    "homepage_url": "https://trendsapi.ai/trends/npm-trends",
    "endpoint_url": "https://npm.api.trendsapi.ai/mcp",
    "source_url": "https://github.com/trendsapi-ai/npm-trends-api",
    "icon_url": null,
    "cover_image_url": null,
    "capabilities": [
      "data.retrieve",
      "data.analyze"
    ],
    "categories": [
      "data-analytics"
    ],
    "industries": [],
    "protocols": [
      "mcp"
    ],
    "auth": {
      "type": "unknown"
    },
    "pricing": {
      "model": "unknown"
    },
    "input_schema": {},
    "output_schema": {},
    "metadata": {
      "content_language": "en",
      "translation_status": "luna-reviewed",
      "official_registry": {
        "version": "1.0.1",
        "packages": [],
        "remotes": []
      },
      "review_gate": {
        "passed": true,
        "reasons": [],
        "policy_version": "review-gate-v1",
        "evaluated_at": "2026-09-04T04:31:18.890Z"
      },
      "catalog_profile": {
        "version": "catalog-profile-v1",
        "primary_category": "data-analytics",
        "integrations": [
          "GitHub"
        ],
        "use_cases": {
          "en": [
            "Track npm package download growth over time",
            "Compare trends across multiple sources",
            "Monitor live top-trending boards"
          ],
          "zh": [
            "追踪 npm 包下载量随时间的变化趋势",
            "跨多个来源比较趋势",
            "监控实时热门榜单"
          ]
        },
        "categories": [
          "data-analytics"
        ],
        "industries": [],
        "copy": {
          "source_language": "en",
          "summary_zh_state": "present",
          "description_zh_state": "present",
          "description_en_state": "present"
        }
      }
    },
    "latest_version": "1.0.1",
    "status": "listed",
    "health_status": "healthy",
    "source_kind": "imported",
    "source_agent": "registry.modelcontextprotocol.io",
    "trust": {
      "signal": "none",
      "reason": null,
      "signals": {
        "yellow": 0,
        "red": 0
      }
    },
    "review_summary": {
      "method_version": "capability-evidence-v3",
      "capability_definition": "strong",
      "contract_completeness": "strong",
      "access_friction": "medium",
      "operational_transparency": "partial",
      "evidence_strength": "protocol_inspected",
      "use_readiness": "guided_use",
      "reviewed_at": "2026-09-04T04:31:19.875Z"
    },
    "experience_count": 0,
    "verified_experience_count": 0,
    "usage_count": 0,
    "success_rate": null,
    "first_seen_at": "2026-09-03T13:55:27.907Z",
    "last_seen_at": "2026-09-04T04:31:19.144Z",
    "published_at": "2026-09-03T13:55:27.907Z",
    "created_at": "2026-09-03T13:55:27.907Z",
    "updated_at": "2026-09-04T04:31:19.875Z",
    "api_url": "https://aiworkshub.io/api/v1/resources/RES_038C95A5DD61",
    "reviews_url": "https://aiworkshub.io/api/v1/resources/RES_038C95A5DD61/reviews",
    "public_url": "https://aiworkshub.io/resources/RES_038C95A5DD61",
    "distribution": {
      "canonical_identity": "https://registry.modelcontextprotocol.io/v0.1/servers/npm%20Trends%20API/versions/1.0.1",
      "syndicatable": true,
      "origins": [
        {
          "registry_url": "https://registry.modelcontextprotocol.io/",
          "upstream_resource_id": "npm Trends API@1.0.1",
          "upstream_record_url": "https://registry.modelcontextprotocol.io/v0.1/servers/npm%20Trends%20API/versions/1.0.1",
          "relation": "syndicated",
          "metadata": {
            "source": "official-mcp-registry"
          },
          "first_seen_at": "2026-09-03T13:55:27.907Z",
          "last_seen_at": "2026-09-04T04:31:19.144Z"
        }
      ]
    },
    "tools": [
      {
        "name": "trends___get_growth",
        "title_en": "Get Growth",
        "title_zh": "获取增长数据",
        "description_en": "Point-to-point growth for a keyword on one or more sources. Each window is a preset string (12M, 3M, YTD, and the other listed periods). Values are on a 0-100 scale, plus absolute volume when available. Prefer this over get_time_series for growth questions. app downloads and app rankings are keyword sources (Android bundle ID). They are not the App Store / Google Play live boards on get_top_trends. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.",
        "description_zh": "获取一个或多个来源上关键词的点对点增长数据。每个窗口是预设字符串（如12M、3M、YTD等）。数值范围为0-100，可用时还包括绝对数量。对于增长问题，优先使用此工具而非get_time_series。应用下载和应用排名是关键词来源（Android包名），并非get_top_trends中的App Store/Google Play实时榜单。如果请求被限流或月度配额用尽，请告知用户其套餐限制。",
        "input_schema": {
          "type": "object",
          "properties": {
            "source": {
              "description": "One source, or comma-separated sources (e.g. 'amazon, tiktok, youtube'). Valid: 'google search', 'google images', 'google news', 'google shopping', 'youtube', 'wikipedia', 'tiktok', 'reddit', 'amazon', 'news sentiment', 'news volume', 'npm', 'python', 'steam', 'app downloads', 'app rankings'.",
              "type": "string"
            },
            "keyword": {
              "description": "What to look up. The string format is required by source. Standard sources (google search, google images, google news, google shopping, youtube, wikipedia, tiktok, reddit, amazon, news sentiment, news volume): any name or phrase, e.g. 'nike'. npm: exact npmjs.com package name, case-sensitive. Right: 'react', '@babel/core'. Wrong: 'React', 'React.js'. python: exact PyPI project name. Right: 'pandas', 'requests'. Wrong: 'Pandas'. steam: game display name in plain English, not a Steam App ID. Right: 'Elden Ring', 'CS2'. First Steam store search result wins, so use an unambiguous name. app downloads and app rankings: Android bundle ID only (the id= value on Google Play). Right: 'com.openai.chatgpt', 'com.whatsapp'. Wrong: 'ChatGPT', 'WhatsApp', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART. If the request includes app downloads or app rankings with other sources, keyword must still be the Android bundle ID.",
              "type": "string"
            },
            "percent_growth": {
              "description": "Growth windows. Default if omitted: ['12M']. Each item must be a preset string: '7D', '1W', '14D', '2W', '30D', '1M', '2M', '3M', '6M', '9M', '12M', '1Y', '18M', '24M', '2Y', '36M', '3Y', '48M', '4Y', '60M', '5Y', 'MTD', 'QTD', 'YTD'. Every preset is a two-date comparison.",
              "type": "array",
              "items": {
                "description": "A preset period such as '12M', '3M', or 'YTD'.",
                "type": "string"
              }
            }
          },
          "required": [
            "keyword",
            "source"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "trends___get_time_series",
        "title_en": "Get Time Series",
        "title_zh": "获取时间序列",
        "description_en": "Full historical series for one keyword and one source (0-100 values, plus volume when available). Use for charting or custom math. Not for live 'what's trending now' boards (use get_top_trends). For most growth questions, use get_growth. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.",
        "description_zh": "获取一个关键词和一个来源的完整历史序列（0-100数值，可用时还包括数量）。用于绘图或自定义计算。不适用于实时“热门”榜单（请使用get_top_trends）。对于大多数增长问题，请使用get_growth。如果请求被限流或月度配额用尽，请告知用户其套餐限制。",
        "input_schema": {
          "type": "object",
          "properties": {
            "source": {
              "description": "Exactly one source per request. Valid: 'google search', 'google images', 'google news', 'google shopping', 'youtube', 'wikipedia', 'tiktok', 'reddit', 'amazon', 'news sentiment', 'news volume', 'npm', 'python', 'steam', 'app downloads', 'app rankings'.",
              "type": "string"
            },
            "keyword": {
              "description": "What to look up. The string format is required by source. Standard sources (google search, google images, google news, google shopping, youtube, wikipedia, tiktok, reddit, amazon, news sentiment, news volume): any name or phrase, e.g. 'tesla'. npm: exact npmjs.com package name, case-sensitive. Right: 'react', '@babel/core'. Wrong: 'React', 'React.js'. python: exact PyPI project name. Right: 'pandas', 'requests'. Wrong: 'Pandas'. steam: game display name in plain English, not a Steam App ID. Right: 'Elden Ring', 'CS2'. First Steam store search result wins, so use an unambiguous name. app downloads and app rankings: Android bundle ID only (the id= value on Google Play). Right: 'com.openai.chatgpt', 'com.whatsapp'. Wrong: 'ChatGPT', 'WhatsApp', an iOS App Store ID, or a bundle ID that is not Android. Find it at play.google.com/store/apps/details?id=THIS_PART.",
              "type": "string"
            }
          },
          "required": [
            "keyword",
            "source"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      },
      {
        "name": "trends___get_top_trends",
        "title_en": "Get Top Trends",
        "title_zh": "获取热门趋势",
        "description_en": "Live top-trending board for exactly one feed type. No keyword. For 'Amazon Best Sellers by Category', 'Google Trends by Category', 'Top Websites', 'Substack by Category', and 'TikTok Trending Hashtags by Category', always pass category. Default sort is current rank. Use sort='rank_change' for climbers vs a prior snapshot (window 1d, 3d, 7d, 14d, or 30d). App Store Top Free, App Store Top Paid, and Google Play are live store boards, not keyword lookups. For an app's history use get_growth or get_time_series with source app downloads or app rankings and an Android bundle ID. Do not use get_time_series for live boards. If the request is rate limited or the monthly quota is used up, tell the user their plan limit is reached.",
        "description_zh": "获取单一feed类型的实时热门榜单。无需关键词。对于“Amazon Best Sellers by Category”、“Google Trends by Category”、“Top Websites”、“Substack by Category”和“TikTok Trending Hashtags by Category”，必须传递category参数。默认排序为当前排名。使用sort='rank_change'可查看与先前快照相比的上升者（窗口为1d、3d、7d、14d或30d）。App Store Top Free、App Store Top Paid和Google Play是实时商店榜单，不是关键词查询。如需应用历史数据，请使用get_growth或get_time_series，并指定来源为app downloads或app rankings以及Android包名。不要对实时榜单使用get_time_series。如果请求被限流或月度配额用尽，请告知用户其套餐限制。",
        "input_schema": {
          "type": "object",
          "properties": {
            "offset": {
              "description": "Rows to skip for pagination. Default 0.",
              "type": "integer"
            },
            "limit": {
              "description": "Max rows to return. Default 25, min 1, max 200.",
              "type": "integer"
            },
            "sort": {
              "description": "How to rank the board. 'rank' (default): current leaders. 'rank_change': biggest climbers vs a prior snapshot. Mover rows include rank, keyword, prev_rank, and rank_change.",
              "type": "string"
            },
            "window": {
              "description": "Lookback used only when sort is 'rank_change'. One of '1d', '3d', '7d', '14d', '30d'. Default '30d'. Short windows only work on daily feeds; weekly and monthly feeds return a note pointing to a longer window.",
              "type": "string"
            },
            "type": {
              "description": "Exactly one live feed. Valid: 'Amazon Best Sellers Top Rated', 'Amazon Best Sellers by Category', 'App Store Top Free', 'App Store Top Paid', 'GitHub', 'Google News Top News', 'Google Play', 'Google Trends', 'Google Trends by Category', 'IMDb MOVIEmeter', 'Open Library Trending Books', 'Reddit Hot Posts', 'Reddit World News', 'Top Websites', 'Spotify Top Podcasts', 'Steam Most Played', 'Substack', 'Substack by Category', 'TikTok Trending Hashtags', 'TikTok Trending Hashtags by Category', 'TikTok Trending Searches', 'Wikipedia Trending', 'X (Twitter) Trending', 'YouTube Trending'.",
              "type": "string"
            },
            "category": {
              "description": "Pass this whenever type is 'Amazon Best Sellers by Category', 'Google Trends by Category', 'Top Websites', 'Substack by Category', or 'TikTok Trending Hashtags by Category'. Use the official name. Without it those feeds mix every board. Only omit on a first pull to learn the official names.",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        },
        "output_schema": {},
        "unit_kind": "mcp_tool",
        "effect": "read",
        "open_world": false,
        "idempotency": "idempotent",
        "confirmation": "explicit policy",
        "evidence_ids": [
          "protocol-tools"
        ],
        "runtime_auth": {},
        "pricing": {},
        "metadata": {}
      }
    ],
    "review_profile": {
      "schema_version": "aiworkshub.resource-review/0.2",
      "method_version": "capability-evidence-v3",
      "review_state": {
        "identity": "verified",
        "source": "verified",
        "connectivity": "verified",
        "contract": "strong",
        "safe_use": "untested",
        "real_use": "unobserved"
      },
      "assessment": {
        "capability_definition": "strong",
        "contract_completeness": "strong",
        "access_friction": "medium",
        "operational_transparency": "partial",
        "evidence_strength": "protocol_inspected",
        "use_readiness": "guided_use"
      },
      "profile": {
        "capabilities": [
          {
            "id": "data.retrieve",
            "weight": 90,
            "confidence": 90,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          },
          {
            "id": "data.analyze",
            "weight": 80,
            "confidence": 80,
            "evidence_ids": [
              "source-record",
              "protocol-tools"
            ]
          }
        ],
        "domains": [
          {
            "id": "data-analytics",
            "weight": 100,
            "confidence": 90,
            "evidence_ids": [
              "source-record"
            ]
          }
        ],
        "workflow_roles": [
          "retrieve",
          "analyze"
        ]
      },
      "catalog_profile": {
        "version": "catalog-profile-v1",
        "primary_category": "data-analytics",
        "integrations": [
          "GitHub"
        ],
        "use_cases": {
          "en": [
            "Track npm package download growth over time",
            "Compare trends across multiple sources",
            "Monitor live top-trending boards"
          ],
          "zh": [
            "追踪 npm 包下载量随时间的变化趋势",
            "跨多个来源比较趋势",
            "监控实时热门榜单"
          ]
        }
      },
      "capability_units": [
        {
          "id": "tool:trends___get_growth",
          "kind": "mcp_tool",
          "capability_id": "data.retrieve",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "keyword",
            "source",
            "percent_growth"
          ],
          "produces": [
            "growth metrics"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:trends___get_time_series",
          "kind": "mcp_tool",
          "capability_id": "data.retrieve",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "keyword",
            "source"
          ],
          "produces": [
            "time series data"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        },
        {
          "id": "tool:trends___get_top_trends",
          "kind": "mcp_tool",
          "capability_id": "data.retrieve",
          "effect": "read",
          "open_world": false,
          "idempotency": "idempotent",
          "confirmation": "explicit policy",
          "input_contract": "typed",
          "output_contract": "untyped",
          "accepts": [
            "type",
            "category",
            "sort",
            "window",
            "limit",
            "offset"
          ],
          "produces": [
            "trending lists"
          ],
          "runtime_auth": {},
          "pricing": {},
          "evidence_ids": [
            "protocol-tools"
          ],
          "metadata": {}
        }
      ],
      "access": {},
      "operational_flags": [],
      "trust": {
        "signal": "none",
        "evidence_ids": [],
        "reason": null
      },
      "fit": {
        "good_for": [
          "Data analysis workflows",
          "Marketing research"
        ],
        "not_for": [
          "Real-time store board queries via get_time_series"
        ]
      },
      "evidence": [
        {
          "id": "source-record",
          "type": "registry_record",
          "source": "https://github.com/trendsapi-ai/npm-trends-api",
          "observation": "MCP source record for npm Trends API; version 1.0.1.",
          "observed_at": null,
          "payload": {}
        },
        {
          "id": "protocol-tools",
          "type": "protocol_observation",
          "source": "https://npm.api.trendsapi.ai/mcp#tools/list",
          "observation": "3 tools were returned by MCP discovery; 3 were retained for review.",
          "observed_at": "2026-09-04T04:31:09.003Z",
          "payload": {}
        }
      ],
      "unknowns": [
        "Authentication type",
        "Pricing model",
        "Rate limits and monthly quotas"
      ],
      "id": "REV_1F94CB489AA0",
      "resource_id": "RES_038C95A5DD61",
      "evaluator_type": "platform_ai",
      "provider": "deepseek",
      "model": "deepseek-v4-flash",
      "review_scope": "protocol-inspected-mcp",
      "created_at": "2026-09-04T04:31:19.875Z"
    }
  }
}