Skip to main content
Glama
h-lu
by h-lu

search_iacr

Search for cryptography research papers on the IACR ePrint Archive to find open-access publications on encryption, blockchain, zero-knowledge proofs, and security protocols.

Instructions

Search cryptography papers on IACR ePrint Archive.

USE THIS TOOL WHEN: - Searching for cryptography or security research - You need papers on encryption, blockchain, zero-knowledge proofs - Looking for security protocols, hash functions, signatures DOMAIN: Cryptography ONLY - encryption, signatures, protocols, blockchain, secure computation, zero-knowledge, hash functions. All papers are FREE and open access with PDF download. WORKFLOW: 1. search_iacr(query) -> get paper_id (e.g., '2024/123') 2. download_iacr(paper_id) or read_iacr_paper(paper_id) Args: query: Crypto terms (e.g., 'zero knowledge', 'homomorphic encryption'). max_results: Number of results (default: 10). fetch_details: Get full metadata per paper (default: True). Returns: List of paper dicts with: paper_id, title, authors, abstract, published_date, pdf_url. Example: search_iacr("post-quantum cryptography", max_results=5)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo
fetch_detailsNo

Implementation Reference

  • Primary MCP tool handler for 'search_iacr'. Delegates to IACRSearcher instance via SEARCHERS['iacr'].search() method.
    @mcp.tool() async def search_iacr( query: str, max_results: int = 10, fetch_details: bool = True ) -> List[Dict]: """Search cryptography papers on IACR ePrint Archive. USE THIS TOOL WHEN: - Searching for cryptography or security research - You need papers on encryption, blockchain, zero-knowledge proofs - Looking for security protocols, hash functions, signatures DOMAIN: Cryptography ONLY - encryption, signatures, protocols, blockchain, secure computation, zero-knowledge, hash functions. All papers are FREE and open access with PDF download. WORKFLOW: 1. search_iacr(query) -> get paper_id (e.g., '2024/123') 2. download_iacr(paper_id) or read_iacr_paper(paper_id) Args: query: Crypto terms (e.g., 'zero knowledge', 'homomorphic encryption'). max_results: Number of results (default: 10). fetch_details: Get full metadata per paper (default: True). Returns: List of paper dicts with: paper_id, title, authors, abstract, published_date, pdf_url. Example: search_iacr("post-quantum cryptography", max_results=5) """ searcher = SEARCHERS['iacr'] try: papers = searcher.search(query, max_results, fetch_details) return [paper.to_dict() for paper in papers] if papers else [] except Exception as e: logger.error(f"IACR search failed: {e}") return []
  • Global SEARCHERS dictionary instantiation including 'iacr': IACRSearcher() used by the handler.
    SEARCHERS = { 'arxiv': ArxivSearcher(), 'pubmed': PubMedSearcher(), 'biorxiv': BioRxivSearcher(), 'medrxiv': MedRxivSearcher(), 'google_scholar': GoogleScholarSearcher(), 'iacr': IACRSearcher(), 'semantic': SemanticSearcher(), 'crossref': CrossRefSearcher(), 'repec': RePECSearcher(), }
  • Import of IACRSearcher class.
    from .academic_platforms.iacr import IACRSearcher
  • Core search logic in IACRSearcher.search(): performs HTTP search on eprint.iacr.org, parses HTML results with BeautifulSoup, optionally fetches details per paper.
    def search( self, query: str, max_results: int = 10, fetch_details: bool = True ) -> List[Paper]: """ Search IACR ePrint Archive Args: query: Search query string max_results: Maximum number of results to return fetch_details: Whether to fetch detailed information for each paper (slower but more complete) Returns: List[Paper]: List of paper objects """ papers = [] try: # Construct search parameters params = {"q": query} # Make request response = self.session.get(self.IACR_SEARCH_URL, params=params) if response.status_code != 200: logger.error(f"IACR search failed with status {response.status_code}") return papers # Parse results soup = BeautifulSoup(response.text, "html.parser") # Find all paper entries - they are divs with class "mb-4" results = soup.find_all("div", class_="mb-4") if not results: logger.info("No results found for the query") return papers # Process each result for i, item in enumerate(results): if len(papers) >= max_results: break logger.info(f"Processing paper {i+1}/{min(len(results), max_results)}") paper = self._parse_paper(item, fetch_details=fetch_details) if paper: papers.append(paper) except Exception as e: logger.error(f"IACR search error: {e}") return papers[:max_results]
  • Function signature defines input schema (query:str, max_results:int=10, fetch_details:bool=True) and output List[Dict] for MCP tool schema inference.
    async def search_iacr( query: str, max_results: int = 10, fetch_details: bool = True ) -> List[Dict]:

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/h-lu/paper-search-mcp'

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