Skip to main content
Glama
openags

Paper Search MCP

by openags

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
NameRequiredDescriptionDefault
queryYes
max_resultsNo

Implementation Reference

  • 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]
  • The registration of the search_ssrn tool in the main server task map.
    task_map[source] = search_ssrn(query, max_results_per_source)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/openags/paper-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server