Skip to main content
Glama

Search Papers

search_papers
Read-onlyIdempotent

Search machine-learning / AI research papers (via Hugging Face Papers, the successor to Papers with Code). Returns arXiv id, title, authors, community upvotes, and a linked GitHub repo when available. Use for "papers on ", "recent ML research about X".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax papers to return (1-50, default 10).
queryYesSearch terms (e.g. "mamba", "diffusion transformer", "RLHF").

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query used
totalYesTotal number of papers matching the query
papersYesArray of formatted paper objects
returnedYesNumber of papers returned in this response

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Number of results to return (default: 10, max: 50)"New value: +"Max papers to return (1-50, default 10)."
    • changedInput schema / properties / query / description
      Previous value: -"Search query (e.g., \"attention transformer\")"New value: +"Search terms (e.g. \"mamba\", \"diffusion transformer\", \"RLHF\")."
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "attention transformer"
      +  },
      +  {
      +    "limit": 20,
      +    "query": "vision language model"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "papers": {
      +      "description": "Array of formatted paper objects",
      +      "items": {
      +        "properties": {
      +          "abstract": {
      +            "description": "Paper abstract",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "arxiv_id": {
      +            "description": "ArXiv ID of the paper",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "authors": {
      +            "description": "List of paper authors",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "conference": {
      +            "description": "Conference name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "Papers With Code paper ID",
      +            "type": "string"
      +          },
      +          "proceeding": {
      +            "description": "Proceeding identifier",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "published": {
      +            "description": "Publication date",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "description": "Paper title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url_abs": {
      +            "description": "URL to paper abstract",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url_pdf": {
      +            "description": "URL to paper PDF",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "arxiv_id",
      +          "title",
      +          "abstract",
      +          "authors",
      +          "published",
      +          "conference",
      +          "proceeding",
      +          "url_abs",
      +          "url_pdf"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "description": "The search query used",
      +      "type": "string"
      +    },
      +    "returned": {
      +      "description": "Number of papers returned in this response",
      +      "type": "number"
      +    },
      +    "total": {
      +      "description": "Total number of papers matching the query",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "total",
      +    "returned",
      +    "papers"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "_apiKey": "your-core-research-api-key",
      -    "query": "machine learning healthcare"
      -  },
      -  {
      -    "_apiKey": "your-core-research-api-key",
      -    "limit": 25,
      -    "query": "CRISPR gene editing"
      -  }
      -]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "results": {
      -      "description": "Array of matching papers",
      -      "items": {
      -        "properties": {
      -          "abstract": {
      -            "description": "Paper abstract (truncated to 500 chars)",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "authors": {
      -            "description": "List of author names",
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "doi": {
      -            "description": "Digital Object Identifier",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "download_url": {
      -            "description": "URL to download full paper",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "id": {
      -            "description": "CORE paper ID",
      -            "type": "string"
      -          },
      -          "publisher": {
      -            "description": "Publisher name",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "title": {
      -            "description": "Paper title",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "year": {
      -            "description": "Year of publication",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "authors"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "total_hits": {
      -      "description": "Total number of matching papers in CORE",
      -      "type": "number"
      -    }
      -  },
      -  "required": [
      -    "total_hits",
      -    "results"
      -  ],
      -  "type": "object"
      -}New value: +null
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "results": {
      +      "description": "Array of matching papers",
      +      "items": {
      +        "properties": {
      +          "abstract": {
      +            "description": "Paper abstract (truncated to 500 chars)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "authors": {
      +            "description": "List of author names",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "doi": {
      +            "description": "Digital Object Identifier",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "download_url": {
      +            "description": "URL to download full paper",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "CORE paper ID",
      +            "type": "string"
      +          },
      +          "publisher": {
      +            "description": "Publisher name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "description": "Paper title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "year": {
      +            "description": "Year of publication",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "authors"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_hits": {
      +      "description": "Total number of matching papers in CORE",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total_hits",
      +    "results"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "_apiKey": "your-core-research-api-key",
      +    "query": "machine learning healthcare"
      +  },
      +  {
      +    "_apiKey": "your-core-research-api-key",
      +    "limit": 25,
      +    "query": "CRISPR gene editing"
      +  }
      +]
  6. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context by specifying the source (Hugging Face Papers) and the exact fields returned. No contradictions with annotations.

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 two sentences, front-loaded with the main purpose and return value, with no redundant information.

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 moderate complexity (2 parameters) and the presence of an output schema, the description sufficiently explains what the tool does, what it returns, and appropriate use cases. No missing critical context.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add parameter details beyond the schema, which already describes query and limit. The description provides usage examples but not parameter semantics.

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

Purpose5/5

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

The description clearly specifies the tool searches ML/AI research papers via Hugging Face Papers, lists the returned fields (arXiv id, title, authors, upvotes, GitHub repo), and explicitly states use cases like 'papers on <topic>', differentiating it from sibling tools such as get_paper or trending_papers.

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

Usage Guidelines4/5

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

The description provides clear use cases ('Use for papers on <topic>, recent ML research about X'), offering good context for when to apply the tool. However, it does not explicitly state when not to use it or mention alternative sibling tools like deep_research or get_paper.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation2/5

Several tools form overlapping families: ask_pipeworx and ask_pipeworx_beta are currently identical, ask_pipeworx_grounded and deep_research cover much of the same router territory, and five Polymarket tools overlap heavily on edge/arbitrage analysis. The descriptions are detailed, but an agent would regularly need to compare multiple near-equivalent candidates before choosing one.

Naming Consistency3/5

Names are consistently snake_case and readable, but the conventions vary widely: verb_noun (search_papers, resolve_entity), noun phrases (entity_profile, polymarket_arbitrage, recent_changes), bare verbs (remember, subscribe, forget), and suffixed variants (ask_pipeworx_beta, ask_pipeworx_grounded). It is not chaotic, but there is no single predictable pattern.

Tool Count2/5

Thirty-five tools is far too many for a server named Paperswithcode, especially since only four tools actually relate to papers while the rest cover data routing, prediction markets, memory, subscriptions, npm auditing, llms.txt generation, and AI visibility. The count feels bloated and the scope unfocused relative to the server's apparent identity.

Completeness3/5

The paper-discovery subdomain is reasonably covered with search, trending, detail, and implementation lookup, and the broader set includes discovery, memory, subscription lifecycle, and feedback tools. However, the overall surface is a patchwork of unrelated domains with no well-defined boundary, and paper datasets/models can only be counted rather than directly listed. Agents can work around most gaps, but the coverage is uneven.