You're viewing a demo portfolio

Join the waitlist
PRSM

openalex_analyze_trends

Active

Tool of @cyanheads/openalex-mcp-server

declared in 0.7.2

Aggregate OpenAlex entities into groups and count them. Use for trend analysis (group works by publication_year), distribution analysis (group by oa_status, type, country), and comparative analysis (group by institution or topic). Combine with filters to scope the analysis. Returns up to 200 groups per page — use cursor pagination for fields with many distinct values.

Parameters schema

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "entity_type",
    "group_by"
  ],
  "properties": {
    "order": {
      "enum": [
        "count",
        "key"
      ],
      "type": "string",
      "description": "Sort order for groups. Omit or pass \"count\" (default) to return the top-N groups by count descending — no further pages. Pass \"key\" to enumerate all distinct values in key-ascending order with cursor pagination. Use \"key\" only when you need a full traversal; most analysis calls want \"count\"."
    },
    "cursor": {
      "type": "string",
      "description": "Pagination cursor from a previous response. Only relevant when order is \"key\" — count-descending results have no next page. Pass the next_cursor from the previous response to advance."
    },
    "filters": {
      "type": "object",
      "description": "Filter criteria (same syntax as openalex_search_entities filters). Narrows the population before aggregation. For full-text within filters, use abstract.search, title.search, or default.search — there is no bare 'search' filter key. Example: group works by year filtered to a specific topic.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "group_by": {
      "type": "string",
      "description": "Field to group by. Works examples: \"publication_year\", \"type\", \"oa_status\", \"primary_topic.field.id\", \"authorships.institutions.country_code\", \"is_retracted\". Authors: \"last_known_institutions.country_code\", \"has_orcid\". Sources: \"type\", \"is_oa\", \"country_code\". Not all fields support group_by — check entity docs if unsure."
    },
    "per_page": {
      "type": "integer",
      "default": 200,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum groups per page (1-200). Default 200 (the upstream cap). A real top-N knob when order is count (the default) — reduce to return only the highest-count groups."
    },
    "entity_type": {
      "enum": [
        "works",
        "authors",
        "sources",
        "institutions",
        "topics",
        "keywords",
        "publishers",
        "funders"
      ],
      "type": "string",
      "description": "Entity type to aggregate."
    },
    "include_unknown": {
      "type": "boolean",
      "default": false,
      "description": "Include a group for entities with no value for the grouped field. Hidden by default."
    }
  }
}

What this tool wraps· 1 endpoint

min confidence0.700.50

Parent server

@cyanheads/openalex-mcp-server

https://github.com/cyanheads/openalex-mcp-server

2/7 registries
View full server →