"""Summary MCP tools for paper-grounded chat.""" from __future__ import annotations import json from backend.chat_settings import truncate_summary from local_rag.summaries import summaries_for_documents def get_paper_summaries_tool(document_ids: list[str]) -> str: return json.dumps({"sources": summaries_for_documents(document_ids)}, indent=2) def build_paper_context_tool(document_ids: list[str], question: str = "") -> str: sources = summaries_for_documents(document_ids) if not sources: return json.dumps({"error": "No summaries found for the selected papers."}, indent=2) n_papers = len(sources) parts: list[str] = [] for index, source in enumerate(sources, start=1): parts.append( f"Paper {index}: {source['title']}\n" f"File: {source['file_name']}\n\n" f"{truncate_summary(source['text'], n_papers=n_papers, question=question)}" ) context = "\n\n---\n\n".join(parts) return json.dumps( { "context": context, "sources": [{"document_id": s["document_id"], "title": s["title"]} for s in sources], "n_papers": n_papers, "question": question, }, indent=2, )