Source code for klea_utils.mcp.tool_impls.papers.openalex

#!/usr/bin/env python3
"""
OpenAlex paper search source.

File: klea_utils/mcp/tool_impls/papers/openalex.py

Copyright 2026 Ankur Sinha
Author: Ankur Sinha <sanjay DOT ankur AT gmail DOT com>
"""

import logging
import os

from klea_utils.biblio.normalize import normalize_openalex
from klea_utils.mcp.tool_impls.session import SessionLike

from .errors import PaperSourceError
from .http import get_json
from .record import PaperRecord, clean_doi, from_biblio

logger = logging.getLogger(__name__)

OPENALEX_WORKS_URL = "https://api.openalex.org/works"
#: OpenAlex search also returns preprints, datasets etc.; this keeps only
#: journal articles.
PEER_REVIEWED_FILTER = "type:article,primary_location.source.type:journal"