openalex_analyze_trends
ActiveTool of @cyanheads/openalex-mcp-server
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."
}
}
}Parent server
@cyanheads/openalex-mcp-server
https://github.com/cyanheads/openalex-mcp-server
2/7 registries