def get_paper_by_id(self, paper_id: str) -> Dict[str, Any]:
        """
        Get a specific paper by its arXiv ID.
        
        Args:
            paper_id: The arXiv ID of the paper (e.g., '2106.09685')
            
        Returns:
            Dictionary containing paper information
        """
        import arxiv
        
        # Create client
        client = arxiv.Client()
        
        # Search for the specific paper
        search = arxiv.Search(id_list=[paper_id])
        
        # Get the paper
        results = list(client.results(search))
        
        if not results:
            return {"error": f"Paper with ID {paper_id} not found"}
        
        paper = results[0]
        
        # Convert to dictionary
        paper_dict = {
            "title": paper.title,
            "authors": [author.name for author in paper.authors],
            "summary": paper.summary,
            "published": paper.published.strftime("%Y-%m-%d") if paper.published else None,
            "updated": paper.updated.strftime("%Y-%m-%d") if paper.updated else None,
            "doi": paper.doi,
            "primary_category": paper.primary_category,
            "categories": paper.categories,
            "links": [link.href for link in paper.links],
            "pdf_url": paper.pdf_url,
            "entry_id": paper.entry_id
        }
        
        return paper_dict

        Get a specific paper by its arXiv ID.
        
        Args:
            paper_id: The arXiv ID of the paper (e.g., '2106.09685')
            
        Returns:
            Dictionary containing paper information
        
src/upsonic/tools.py