search_ssrn
Search SSRN academic paper metadata using keywords to find research records. This tool retrieves paper information without downloading PDFs.
Instructions
Search metadata records from SSRN.
Note: SSRN connector is metadata-only and does not support direct PDF download.
Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Implementation Reference
- paper_search_mcp/server.py:1017-1029 (handler)The 'search_ssrn' handler which delegates the search query to the SSRNSearcher instance.
async def search_ssrn(query: str, max_results: int = 10) -> List[Dict]: """Search metadata records from SSRN. Note: SSRN connector is metadata-only and does not support direct PDF download. Args: query: Search query string (e.g., 'machine learning'). max_results: Maximum number of papers to return (default: 10). Returns: List of paper metadata in dictionary format. """ papers = await async_search(ssrn_searcher, query, max_results) return papers if papers else [] - The implementation of the search method within the SSRNSearcher class that performs the actual web request and parsing.
def search(self, query: str, max_results: int = 10, **kwargs) -> List[Paper]: """Search SSRN and return metadata records. Args: query: Search terms. max_results: Maximum results to return (practical limit ~30 without pagination; SSRN returns ~15 results per page). **kwargs: Unused; reserved for future filter support. Returns: List of :class:`~paper_search_mcp.paper.Paper` objects. """ papers: List[Paper] = [] page = 1 per_page = 15 # SSRN default while len(papers) < max_results: self._throttle() html, err = self._fetch_page(query, page) if err or not html: logger.warning("SSRN search page %d fetch failed: %s", page, err) break page_papers = self._parse_results(html) if not page_papers: break papers.extend(page_papers) if len(page_papers) < per_page: break # last page page += 1 return papers[:max_results] - paper_search_mcp/server.py:313-313 (registration)The registration of the search_ssrn tool in the main server task map.
task_map[source] = search_ssrn(query, max_results_per_source)