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

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

File: klea_utils/mcp/tool_impls/papers/crossref.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_crossref
from klea_utils.mcp.tool_impls.session import SessionLike

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

logger = logging.getLogger(__name__)

CROSSREF_WORKS_URL = "https://api.crossref.org/works"
#: Crossref search also returns preprints ("posted-content"), datasets etc.;
#: this keeps journal articles.
PEER_REVIEWED_FILTER = "type:journal-article"