"""Metadata search MCP tool implementations.""" from __future__ import annotations import json from metadata_search.search_service import document_ids_from_ranks, search_metadata, search_score_mode def search_metadata_tool( query: str, top_k: int = 10, year_from: int | None = None, year_to: int | None = None, ) -> str: results = search_metadata( query, top_k=top_k, year_from=year_from, year_to=year_to, ) return json.dumps( {"query": query, "results": results, "score_mode": search_score_mode()}, indent=2, ) def select_papers_from_search_tool( query: str, ranks: list[int], top_k: int = 10, year_from: int | None = None, year_to: int | None = None, ) -> str: results = search_metadata( query, top_k=top_k, year_from=year_from, year_to=year_to, ) document_ids = document_ids_from_ranks(results, ranks) selected = [item for item in results if int(item["rank"]) in ranks] return json.dumps( {"query": query, "document_ids": document_ids, "papers": selected}, indent=2, )