Skip to main content
Glama

OpenAlex MCP Server & CLI

Connects any MCP-compatible AI agent — or your terminal — to OpenAlex: the world's largest free and open scholarly database with 250+ million works, 300+ million authors, 100,000+ institutions, and billions of citation links.

Works with: Claude Desktop · Claude Code · Cursor · VS Code Copilot · Windsurf · Zed · any MCP client — or standalone via the openalex CLI

No paywall. No institutional access required. CC0 licensed data.


Quickstart (2 minutes)

1. Get your free API key at openalex.org/settings/api — takes 30 seconds

2. Install the server

pip install openalex-mcp

3. Add to your AI agent — copy your client's config from Configuration below.


Related MCP server: OpenAlex Author Disambiguation MCP Server

Prerequisites

Python 3.11+

python --version   # needs 3.11 or higher
# Install if missing: https://python.org/downloads
# Windows
winget install astral-sh.uv

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

No uv? Use pip install openalex-mcp instead, then replace uvx openalex-mcp in configs with the path from where openalex-mcp (Windows) or which openalex-mcp (macOS/Linux).


Installation Options

uvx openalex-mcp          # install and run — uv handles everything
uv tool upgrade openalex-mcp  # upgrade later

Option B — pip

pip install openalex-mcp
which openalex-mcp    # macOS/Linux → /usr/local/bin/openalex-mcp
where openalex-mcp    # Windows    → C:\Users\YOU\AppData\...

Option C — From source

git clone https://github.com/JOSETRA44/openalex-mcp.git
cd openalex-mcp
uv sync
cp .env.example .env   # edit .env with your key
uv run openalex-mcp    # run directly

Environment Variables

Variable

Required

Default

Description

OPENALEX_API_KEY

Recommended

Free API key from openalex.org/settings/api

OPENALEX_EMAIL

Alt to key

Your email — uses the "polite pool" (slower but free, no key)

OPENALEX_CACHE_TTL

No

300

Response cache duration in seconds (0 = disabled)

OPENALEX_MAX_RETRIES

No

3

Retries on rate-limit errors

LOG_LEVEL

No

INFO

DEBUG · INFO · WARNING · ERROR

Either OPENALEX_API_KEY or OPENALEX_EMAIL is required. The API key gives 10× more daily quota ($1/day free).


Configuration by Client

Replace YOUR_API_KEY_HERE with your actual key in all configs below.


Claude Desktop

Config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "openalex": {
      "command": "uvx",
      "args": ["openalex-mcp"],
      "env": {
        "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Restart Claude Desktop after saving. You'll see a hammer icon (🔨) confirming tools are loaded.


Claude Code (CLI)

Add to your project's .mcp.json in the repo root:

{
  "mcpServers": {
    "openalex": {
      "command": "uvx",
      "args": ["openalex-mcp"],
      "env": {
        "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Or from source (local development):

{
  "mcpServers": {
    "openalex": {
      "command": "uv",
      "args": [
        "--directory", "/absolute/path/to/openalex-mcp",
        "run", "openalex-mcp"
      ],
      "env": {
        "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Verify with /mcp in the Claude Code prompt — you should see openalex with 9 tools.


Cursor

Config file: .cursor/mcp.json in project root, or globally:

  • Windows: %APPDATA%\Cursor\User\globalStorage\cursor.mcp\mcp.json

  • macOS: ~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/mcp.json

{
  "mcpServers": {
    "openalex": {
      "command": "uvx",
      "args": ["openalex-mcp"],
      "env": {
        "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Settings → Features → MCP → toggle on → reload window.


VS Code + GitHub Copilot

Create .vscode/mcp.json in your workspace:

{
  "servers": {
    "openalex": {
      "type": "stdio",
      "command": "uvx",
      "args": ["openalex-mcp"],
      "env": {
        "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Ctrl+Shift+PGitHub Copilot: Configure MCP


Windsurf

Config file:

  • Windows: %APPDATA%\Codeium\windsurf\mcp_config.json

  • macOS: ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "openalex": {
      "command": "uvx",
      "args": ["openalex-mcp"],
      "env": {
        "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Zed

Edit ~/.config/zed/settings.json:

{
  "context_servers": {
    "openalex": {
      "command": {
        "path": "uvx",
        "args": ["openalex-mcp"],
        "env": {
          "OPENALEX_API_KEY": "YOUR_API_KEY_HERE"
        }
      }
    }
  }
}

Continue.dev

Edit .continue/config.yaml:

mcpServers:
  - name: openalex
    command: uvx
    args:
      - openalex-mcp
    env:
      OPENALEX_API_KEY: "YOUR_API_KEY_HERE"

Any other MCP client (generic stdio)

command: uvx
args:    ["openalex-mcp"]
env:     OPENALEX_API_KEY=YOUR_API_KEY_HERE

Automated Setup Script

Auto-detect your installed clients and configure them:

# Interactive
python setup_mcp.py

# Non-interactive — configure all detected clients
python setup_mcp.py --key YOUR_API_KEY_HERE --yes

# Preview without writing files
python setup_mcp.py --key YOUR_API_KEY_HERE --dry-run --yes

# Show detected clients only
python setup_mcp.py --list

The script backs up existing config files before modifying them.


Available Tools (9 total)

Tool

What it does

openalex_search_works

Keyword + filter search over 250M+ scholarly works

openalex_get_work

Full metadata for one work (by OpenAlex ID, DOI, or PubMed ID)

openalex_search_authors

Find researchers by name, institution, ORCID, or metrics

openalex_get_author

Author profile: h-index, i10-index, citations by year, topics

openalex_search_institutions

Search universities and research organizations by name/country

openalex_get_institution

Institution details: country, type, h-index, top topics

openalex_search_sources

Search journals, conferences, and repositories

openalex_get_source

Source details: ISSN, publisher, OA status, h-index

openalex_aggregate_works

Group/count works by year, type, country, topic, etc.

MCP Resource

Resource

Contents

openalex://filter-reference

Complete filter syntax: 100+ field codes, operators, and examples


CLI (Command Line)

This package also installs an openalex command — a standalone terminal client for OpenAlex, no MCP client required. Every subcommand calls the exact same tool functions the MCP server uses (src/openalex_mcp/tools/*.py), so results match 1:1.

Install

pip install openalex-mcp        # or: uv tool install openalex-mcp
openalex --help                 # confirm it's on your PATH

From source: uv sync installs the openalex script into .venv/Scripts (Windows) or .venv/bin (macOS/Linux).

Commands

Command

Mirrors

What it does

openalex search-works <query>

openalex_search_works

Search works

openalex get-work <id>

openalex_get_work

Full work metadata

openalex search-authors <query>

openalex_search_authors

Search researchers

openalex get-author <id>

openalex_get_author

Full author profile

openalex search-institutions <query>

openalex_search_institutions

Search institutions

openalex get-institution <id>

openalex_get_institution

Full institution details

openalex search-sources <query>

openalex_search_sources

Search journals/venues

openalex get-source <id>

openalex_get_source

Full source details

openalex aggregate-works <group_by>

openalex_aggregate_works

Group/count works

openalex filter-guide

openalex://filter-reference

Print the filter syntax reference

Run openalex <command> --help for that command's flags. Every command supports --json for raw machine-readable output (pipe into jq, save to a file, script it), and --api-key / --email to override .env for a single call.

openalex search-works "federated learning privacy" -f "publication_year:>2021,type:article" -s "cited_by_count:desc"
openalex get-work 10.1038/s41586-021-03819-2
openalex search-authors "Geoffrey Hinton"
openalex aggregate-works publication_year -f "institutions.id:I865918315" --json | jq '.groups[0]'

Auth and settings come from the same environment variables as the MCP server — see Environment Variables.


Example Queries

# Find recent papers on a topic
openalex_search_works(
    query="federated learning privacy",
    filters="publication_year:>2021,type:article",
    sort="cited_by_count:desc"
)

# Get full paper details by DOI
openalex_get_work("10.1038/s41586-021-03819-2")

# Find an author and get their profile
openalex_search_authors(query="Geoffrey Hinton")
openalex_get_author("A2208157607")

# Find an institution, then see its recent output
openalex_search_institutions(query="UNAM", country_code="MX")
openalex_search_works(
    filters="institutions.id:I865918315,publication_year:>2020",
    sort="cited_by_count:desc"
)

# Annual publication trend for a topic
openalex_aggregate_works(
    group_by="publication_year",
    filters="type:article",
    query="machine learning"
)

# Find open-access journals in a field
openalex_search_sources(
    query="bioinformatics",
    is_oa=True,
    source_type="journal"
)

Filter Quick Reference

Pattern

Example

Year range

publication_year:2020-2024

Newer than

publication_year:>2021

Work type

type:article · type:preprint · type:book

Open access only

open_access.is_oa:true

Highly cited

cited_by_count:>100

By institution

institutions.id:I97018004

By country

institutions.country_code:US

In a journal

primary_location.source.id:S137773608

By language

language:en · language:es · language:zh

Papers citing a work

cites:W2741809807

Has DOI

has_doi:true

Has abstract

has_abstract:true

For the full filter reference, read the openalex://filter-reference resource or see developers.openalex.org.


Rate Limits & Quotas

Auth method

Daily budget

Calls/second

API key (free)

$1.00/day

~10

Email (polite pool)

$0.10/day

~3

No auth

$0.10/day

~1

The server tracks rate-limit headers and automatically sleeps when the quota is low.

Action costs (free tier):

Action

Daily allowance

Get single entity (by ID/DOI)

Unlimited

List + filter

10,000 calls / 1M results

Full-text search

1,000 calls / 100K results

Tip: Use openalex_get_work (unlimited) for single-record lookups rather than search.


Verify It's Working

MCP Inspector (interactive UI)

npx @modelcontextprotocol/inspector uvx openalex-mcp

Open the URL, click Connect, List Tools — you should see all 9 tools.

Quick smoke test

echo "" | OPENALEX_API_KEY=your_key uvx openalex-mcp
# Should start without errors, then exit when stdin closes

Run unit tests (source install)

uv sync --group dev
uv run pytest tests/ -v
# Expected: 28 passed

Troubleshooting

"Configuration error: Set OPENALEX_API_KEY..."

Add OPENALEX_API_KEY to your MCP client's env block. Get a free key at openalex.org/settings/api.

"command not found: uvx"

Install uv: docs.astral.sh/uv

401 error

API key is invalid. Regenerate at openalex.org/settings/api.

404 error on a work/author/institution

The identifier may be wrong. Try looking up the entity with a search tool first, then use the returned openalex_id.

"uvx openalex-mcp" slow on first run

uv is downloading and caching the package — subsequent starts are instant (~0.2s).

Tools appear but return empty results

Broaden your query: remove publication_year filters, or try query= instead of filters=.


vs. Scopus / Web of Science

OpenAlex

Scopus

Web of Science

Cost

Free

Subscription

Subscription

Coverage

250M+ works

90M works

170M works

Open data

CC0

Proprietary

Proprietary

API quota

10K calls/day

20K/week

Limited

Non-English

Excellent

Good

Fair

Full-text links

Yes

Partial

Partial


Project Structure

openalex-mcp/
├── src/openalex_mcp/
│   ├── server.py           # FastMCP entry point (registers tools as MCP tools)
│   ├── cli.py              # `openalex` CLI entry point (calls the same tool functions)
│   ├── cli_output.py       # Human-readable table/detail rendering for the CLI
│   ├── config.py           # Env var configuration (pydantic-settings)
│   ├── client.py           # Async HTTP client + TTL cache + rate limiting
│   ├── exceptions.py       # Error hierarchy
│   ├── formatters.py       # Raw OpenAlex JSON → clean AI-friendly dicts
│   ├── tools/              # Core tool functions, shared by server.py and cli.py
│   └── resources/          # openalex://filter-reference static resource
├── openalex-researcher/    # Agent skill
│   ├── SKILL.md
│   └── references/         # Filter syntax, workflows, output reference
├── tests/                  # Unit tests (28 cases, no network required)
├── setup_mcp.py            # Automated config installer
├── .env.example            # Environment variable template
└── pyproject.toml          # Package definition

License

MIT — see LICENSE

Data from OpenAlex is CC0 (public domain).

Available Tools

9 tools
openalex_aggregate_worksA

Aggregate (count/group) works by a field to get distribution statistics. Useful for: annual publication trends, breakdown by type or language, top institutions by output, open-access percentage, topic distribution. Returns a list of {key, label, count} groups sorted by count descending. Combine with 'filters' to scope the analysis (same syntax as openalex_search_works).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
filtersNo
group_byYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the return format (list of {key, label, count} groups sorted descending) and mentions combining with filters. It lacks details on rate limits, authentication, or potential performance issues, but covers core behavior well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only 3 sentences, front-loaded with the core action, and each sentence adds value. No unnecessary information or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 3 parameters and no output schema. The description explains return format and usage, but lacks detailed parameter constraints, especially for group_by valid values. The cross-reference to another tool's syntax helps but is not fully self-contained, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema coverage, the description must compensate. It mentions group_by but does not explain valid values (e.g., field names). Query and filters are described only by cross-reference to another tool's syntax, which is helpful but not self-contained. The schema provides no further clues, so some ambiguity remains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool aggregates works by a field to get distribution statistics, with specific examples (annual trends, type breakdown, top institutions, open-access percentage, topic distribution). It effectively distinguishes from sibling tools like openalex_search_works, which is for searching individual works.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases and mentions combining with 'filters' referencing openalex_search_works syntax. It implies when to use aggregate vs search but does not explicitly state when not to use it or alternative tools for other tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_get_authorA

Retrieve the full profile for a researcher: name, ORCID, h-index, i10-index, works count, total citations, last known affiliation, top research topics, and year-by-year citation counts. Accepts an OpenAlex Author ID (A-number) or ORCID.

ParametersJSON Schema
NameRequiredDescriptionDefault
author_idYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It details the return fields but does not disclose any behavioral aspects such as rate limits, data freshness, or read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences with no extra words, effectively communicating purpose and acceptance criteria.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists key return fields, making the tool's output clear. However, it could mention response structure or pagination if applicable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists, and the description adds meaning by specifying the format (OpenAlex Author ID or ORCID), compensating for the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a full researcher profile with specific fields listed, and it specifies the accepted identifiers (OpenAlex Author ID or ORCID), distinguishing it from sibling tools like search_authors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when a full profile is needed) and contrasts with search tools by listing detailed fields, but does not explicitly state when not to use it or provide alternative tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_get_institutionA

Retrieve full details for a university or research institution: name, country, type, ROR ID, total works, total citations, h-index, homepage URL, and top research topics. Accepts an OpenAlex Institution ID (I-number) or ROR ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
institution_idYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It correctly implies a read-only operation with 'Retrieve' and lists output fields, but omits any operational traits such as rate limits, authentication needs, or potential error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The first sentence lists key fields, the second clarifies input format. Information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (single required parameter, no output schema), the description is complete. It covers the purpose, input format, and output content, making it sufficient for an AI agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the parameter, but the description explains that it accepts I-numbers or ROR IDs, adding crucial context that the schema alone does not provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Retrieve' and resource 'full details for a university or research institution' clearly specify the tool's function. Listing specific fields (name, country, type, etc.) differentiates it from sibling tools like openalex_search_institutions, which are for searching rather than fetching by ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states that it accepts an OpenAlex Institution ID or ROR ID, providing clear usage context. However, it does not explicitly mention when to avoid this tool or suggest alternatives (e.g., use openalex_search_institutions when you don't have an ID).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_get_sourceA

Get full details for a journal, conference, or repository: ISSN, publisher, open-access status, DOAJ listing, total works, citations, h-index, i10-index, and top research topics. Accepts OpenAlex Source ID (S-number) or ISSN.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It implies a read operation but does not explicitly state idempotency, rate limits, or error behavior. Adequate but could be more explicit about safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that front-loads the purpose and lists key fields. Could be slightly more structured but is efficient and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 0% schema coverage, the description provides a good overview of input format and returned data fields. Covers essential information for tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description adds significant meaning: specifies that source_id can be an S-number or ISSN, providing format guidance beyond the raw schema type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Get full details for a journal, conference, or repository' and lists specific fields like ISSN, publisher, open-access status. Distinguishes from sibling tools like search_sources by focusing on retrieving details by ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions acceptable input formats: 'Accepts OpenAlex Source ID (S-number) or ISSN.' Implies usage context but does not explicitly state when not to use or compare to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_get_workA

Retrieve full metadata for a single scholarly work. Accepts an OpenAlex ID (W-number), DOI (bare '10.x/y' or full URL), PubMed ID ('pmid:12345678'), or MAG ID. Returns title, abstract, all authors with affiliations, topics, citation count, open-access URL, referenced works count, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It lists return fields (title, abstract, authors, etc.) and accepted identifier formats, but does not mention error handling, rate limits, or authentication needs. For a simple read operation, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph of three sentences, front-loaded with the action and purpose. Every sentence adds value, and there is no redundant or extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one required parameter, no output schema), the description is complete. It explains what the tool does, what input is needed, and what the output contains, with no missing critical information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides no description for the 'identifier' parameter (0% coverage). The description compensates by explaining that the parameter accepts OpenAlex ID (W-number), DOI, PubMed ID, or MAG ID, and describes formats for DOIs and PubMed IDs. This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves full metadata for a single scholarly work, and specifies accepted identifier types (OpenAlex ID, DOI, PubMed ID, MAG ID). This distinguishes it from sibling tools like 'openalex_search_works' which are for searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly provides usage context by listing identifier formats and stating the tool is for a single work. It does not explicitly mention when not to use or alternative tools, but the list of sibling tools provides that context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_search_authorsA

Search researchers/authors in OpenAlex by name or filter by institution, ORCID, citation count, etc. Returns OpenAlex ID, name, ORCID, h-index, works count, cited-by count, and current affiliation. Use openalex_get_author for full profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNocited_by_count:desc
queryNo
filtersNo
per_pageNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries burden. It mentions returns fields but omits pagination, rate limits, or safety (though read-only is implied). Adequate but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with main action and purpose, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 params with no schema descriptions and no output schema, description covers core purpose but fails to detail filter syntax or pagination. Adequate for basic use but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must explain parameters. It names query and filters but lacks syntax/format details. Only high-level meaning added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it searches authors by name or filters, returns specific fields, and distinguishes from openalex_get_author for full profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use search vs get_author, and lists returned fields for informed selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_search_institutionsA

Search universities, research institutes, hospitals, and other organizations in OpenAlex. Returns the OpenAlex institution ID (needed for work filters), ROR ID, name, country, type, and publication/citation counts. Use the returned 'openalex_id' in openalex_search_works filter: 'institutions.id:{id}'

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
per_pageNo
country_codeNo
institution_typeNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes the tool as a search (read-only) returning specific fields and how to use the ID. It does not mention destructive behavior, rate limits, or authentication, but these are not critical for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool searches, what it returns, and how to use the result. Without an output schema, it explains return values well. It could mention that country_code and institution_type are filters, but overall it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the four parameters (query, per_page, country_code, institution_type). It only mentions returned fields, not how to use the inputs. The description adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and the resource 'universities, research institutes, hospitals, and other organizations in OpenAlex.' It lists returned fields and how to use the OpenAlex ID, distinguishing it from sibling tools that search works, authors, or sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: 'Use the returned openalex_id in openalex_search_works filter'. It implies this tool is for finding institution IDs before filtering works, but does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_search_sourcesA

Search journals, conference proceedings, repositories, and other publication venues in OpenAlex. Returns ISSN, publisher, open-access status, h-index, works count, and citation count. Use the returned 'openalex_id' in work filters: 'primary_location.source.id:{id}'

ParametersJSON Schema
NameRequiredDescriptionDefault
is_oaNo
queryNo
filtersNo
per_pageNo
source_typeNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It states it searches and returns data, implying a read-only operation, but does not disclose pagination behavior, rate limits, or sorting. The description adds moderate context beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundancy: first sentence defines purpose and output, second provides a practical usage hint. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists key return fields and provides a usage tip. However, it is incomplete regarding parameter details and does not describe the structure of results (e.g., pagination info). Still, for a search tool, it covers the most critical context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the five parameters (query, filters, is_oa, per_page, source_type). The agent must infer functionality from parameter names alone, which is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb (Search), resource (journals, conference proceedings, etc.), and lists specific return fields (ISSN, publisher, open-access status, etc.). This distinguishes it from sibling tools that search works, authors, or institutions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on using the returned 'openalex_id' in work filters, which is a direct usage hint. However, it does not contrast with alternatives like openalex_get_source for when to search versus retrieve a specific source.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

openalex_search_worksA

Search scholarly works (articles, books, datasets, preprints, theses) in OpenAlex. Use 'query' for full-text keyword search. Use 'filters' to narrow by year, type, institution, open access, citation count, etc. Filter syntax: 'publication_year:2020-2024,type:article,open_access.is_oa:true'. Sort options: 'cited_by_count:desc', 'publication_date:desc', 'relevance_score:desc'. Returns title, DOI, authors, year, citation count, open-access status.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
sortNorelevance_score:desc
queryNo
filtersNo
per_pageNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must bear the burden. It mentions read operations (search, filter, sort) and return fields, but lacks explicit disclosure of pagination behavior, rate limits, or non-destructive nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each adding unique value: purpose, usage hints, filter syntax, sort options, and return fields. No redundant or missing elements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and no annotations, the description adequately covers purpose, usage, and return fields. Lacks detail on pagination limits or error handling, but sufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates by explaining the purpose of 'query', 'filters', and 'sort' parameters, including example filter syntax. It implicitly explains 'page' and 'per_page' via context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches scholarly works, listing specific types (articles, books, datasets, preprints, theses). It distinguishes from sibling tools like openalex_get_work (single work retrieval) and openalex_aggregate_works (aggregation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use 'query' and 'filters' parameters, provides filter syntax and sort options. While it does not mention when not to use it or directly compare to alternatives, the context from sibling names implies differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a unique purpose: search vs get vs aggregate for each entity type (works, authors, institutions, sources). There is no overlap or ambiguity.

Naming Consistency5/5

All tools follow the exact pattern 'openalex_<verb>_<entity>' with verbs like get, search, aggregate. Consistent and predictable.

Tool Count5/5

9 tools is well-scoped for a scholarly database API, covering search and retrieval for the main entities plus aggregation.

Completeness4/5

Covers all core entities with search and get operations. Minor gaps like no dedicated topic/concept search, but the main workflows are well-supported.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables academic research through the OpenAlex API, allowing users to search for papers, authors, and institutions, retrieve citations, and fetch full-text content when available. Perfect for building intelligent research assistants that can explore academic literature and related works.
    8
    7
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables streamlined academic research and author disambiguation by providing AI agents with optimized access to the OpenAlex.org API. It supports searching for authors, resolving institutional affiliations, and retrieving scholarly works with detailed citation metrics.
    8
    54
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to search and analyze OpenAlex scholarly database for OSINT research, including works, authors, institutions, funding, citations, and collaboration networks.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JOSETRA44/openalex-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server