Skip to main content
Glama
openags

Paper Search MCP

by openags

read_dblp_paper

Check if a dblp paper can be read directly by providing the paper identifier, receiving a message about content access availability.

Instructions

Attempt to read and extract text content from a dblp paper.

Note: dblp doesn't provide direct paper content access. This function returns an informative message.

Args: paper_id: dblp paper identifier. save_path: Directory where the PDF would be saved (unused). Returns: str: Message indicating that direct paper reading is not supported.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
paper_idYes
save_pathNo./downloads

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The tool `read_dblp_paper` is registered in `server.py`. It delegates the call to the `read_paper` method of the `dblp_searcher` instance.
    @mcp.tool()
    async def read_dblp_paper(paper_id: str, save_path: str = "./downloads") -> str:
        """Attempt to read and extract text content from a dblp paper.
    
        Note: dblp doesn't provide direct paper content access.
        This function returns an informative message.
    
        Args:
            paper_id: dblp paper identifier.
            save_path: Directory where the PDF would be saved (unused).
        Returns:
            str: Message indicating that direct paper reading is not supported.
        """
        return dblp_searcher.read_paper(paper_id, save_path)
  • The `DBLPSearcher.read_paper` method, which is called by the `read_dblp_paper` tool, raises a `NotImplementedError` as dblp does not provide direct paper access.
    def read_paper(self, paper_id: str, save_path: str = "./downloads") -> str:
        """
        Download and extract text from a dblp paper.
    
        Args:
            paper_id: dblp paper identifier
            save_path: Directory where PDF is/will be saved
    
        Returns:
            Extracted text content of the paper
    
        Raises:
            NotImplementedError: dblp doesn't support direct paper reading
        """
        raise NotImplementedError(
            "dblp doesn't provide direct paper content access. "
            "Use DOI to access content from other sources."
        )
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well at disclosing key behavioral traits. It explicitly states that dblp doesn't provide direct paper content access, that the function returns an informative message rather than actual content, and that the save_path parameter is 'unused.' This provides crucial context about the tool's limitations and expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with clear sections: purpose statement, important note, parameters explanation, and return value. Every sentence earns its place, with no wasted words. The note about dblp limitations is appropriately front-loaded after the purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple nature (2 parameters, no annotations, but has output schema), the description is complete. It explains what the tool does, its limitations, both parameters, and what it returns. The output schema existence means the description doesn't need to detail return values, and it adequately covers the tool's constrained functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining both parameters. It defines 'paper_id' as a 'dblp paper identifier' and clarifies that 'save_path' is a 'Directory where the PDF would be saved (unused).' This adds meaningful context beyond the bare schema, though it could provide more detail about the paper_id format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Attempt to read and extract text content from a dblp paper.' It specifies the verb ('read and extract'), resource ('dblp paper'), and scope ('text content'). However, it doesn't explicitly differentiate from sibling tools like 'read_arxiv_paper' or 'download_dblp' beyond the dblp focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Note: dblp doesn't provide direct paper content access. This function returns an informative message.' This clearly indicates when to use this tool (for dblp papers) and sets expectations about its limited functionality compared to other download/read tools that might actually retrieve content.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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