Skip to main content
Glama

Search Works

search_works
Read-onlyIdempotent

Search academic papers, books, and datasets via Crossref. For "search works titled X" / finding a SPECIFIC paper by its title, pass title (title-scoped — ranks the exact paper first). Beyond keyword search you can SORT by citation count or publication date and FILTER by date range, work type, author, and JOURNAL (journal = a journal name like "Progress in Materials Science" or an ISSN; results are restricted to that journal only) — e.g. "most-cited papers on transformers" (sort=citations), "papers on LLMs since 2024" (from_date=2024-01-01), "recent journal articles by an author". Returns titles, authors, journal, DOIs, citation counts, and dates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sortNoResult ordering: "relevance" (default), "citations" (most-cited first), or "published" (newest first; note Crossref has some records with erroneous future dates).
typeNoRestrict to a Crossref work type, e.g. "journal-article", "book", "proceedings-article", "dataset", "posted-content" (preprints).
limitNoNumber of results to return (1-100, default 10)
queryNoKeyword query over all fields (e.g. "climate change machine learning"). Optional if "title", "author" or "journal" is given.
titleNoTitle-scoped search — use when looking for a specific paper by its (partial or full) title, e.g. "Remus High Availability Asynchronous Virtual Machine Replication".
authorNoSearch/restrict by author name (e.g. "Hinton", "Yann LeCun").
journalNoRestrict results to ONE journal: its name (e.g. "Progress in Materials Science", resolved to its ISSNs) or an ISSN (e.g. "0079-6425"). Returns only that journal's works, never other journals' papers.
from_dateNoOnly works published on/after this date (YYYY-MM-DD or YYYY).
until_dateNoOnly works published on/before this date (YYYY-MM-DD or YYYY).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsYesArray of search results
total_resultsYesTotal number of results matching the search query

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "query": "climate change machine learning"
      -  },
      -  {
      -    "limit": 20,
      -    "query": "CRISPR gene editing"
      -  }
      -]New value: +[
      +  {
      +    "query": "climate change machine learning"
      +  },
      +  {
      +    "limit": 20,
      +    "query": "CRISPR gene editing"
      +  },
      +  {
      +    "journal": "Progress in Materials Science",
      +    "limit": 10,
      +    "query": "hydrogen storage review"
      +  }
      +]
    • addedInput schema / properties / journal
      Added value: +{
      +  "description": "Restrict results to ONE journal: its name (e.g. \"Progress in Materials Science\", resolved to its ISSNs) or an ISSN (e.g. \"0079-6425\"). Returns only that journal's works, never other journals' papers.",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Keyword query over all fields (e.g. \"climate change machine learning\"). Optional if \"title\" or \"author\" is given."New value: +"Keyword query over all fields (e.g. \"climate change machine learning\"). Optional if \"title\", \"author\" or \"journal\" is given."
  2. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Keyword query (e.g. \"climate change machine learning\"). Optional if \"author\" is given."New value: +"Keyword query over all fields (e.g. \"climate change machine learning\"). Optional if \"title\" or \"author\" is given."
    • addedInput schema / properties / title
      Added value: +{
      +  "description": "Title-scoped search — use when looking for a specific paper by its (partial or full) title, e.g. \"Remus High Availability Asynchronous Virtual Machine Replication\".",
      +  "type": "string"
      +}
  3. Changed7 schema fields changed
    • addedInput schema / properties / author
      Added value: +{
      +  "description": "Search/restrict by author name (e.g. \"Hinton\", \"Yann LeCun\").",
      +  "type": "string"
      +}
    • addedInput schema / properties / from_date
      Added value: +{
      +  "description": "Only works published on/after this date (YYYY-MM-DD or YYYY).",
      +  "type": "string"
      +}
    • changedInput schema / properties / query / description
      Previous value: -"Search query (e.g., \"climate change machine learning\")"New value: +"Keyword query (e.g. \"climate change machine learning\"). Optional if \"author\" is given."
    • addedInput schema / properties / sort
      Added value: +{
      +  "description": "Result ordering: \"relevance\" (default), \"citations\" (most-cited first), or \"published\" (newest first; note Crossref has some records with erroneous future dates).",
      +  "enum": [
      +    "relevance",
      +    "citations",
      +    "published"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Restrict to a Crossref work type, e.g. \"journal-article\", \"book\", \"proceedings-article\", \"dataset\", \"posted-content\" (preprints).",
      +  "type": "string"
      +}
    • addedInput schema / properties / until_date
      Added value: +{
      +  "description": "Only works published on/before this date (YYYY-MM-DD or YYYY).",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "query"
      -]New value: +[]
  4. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "climate change machine learning"
      +  },
      +  {
      +    "limit": 20,
      +    "query": "CRISPR gene editing"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "results": {
      +      "description": "Array of search results",
      +      "items": {
      +        "properties": {
      +          "abstract": {
      +            "description": "Work abstract or summary",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "authors": {
      +            "description": "List of author names",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "citations": {
      +            "description": "Number of citations referencing this work",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "doi": {
      +            "description": "Digital Object Identifier",
      +            "type": "string"
      +          },
      +          "journal": {
      +            "description": "Journal or container title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "published": {
      +            "description": "Publication date in YYYY-MM-DD format",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "publisher": {
      +            "description": "Publisher name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "subjects": {
      +            "description": "Subject categories or keywords",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "title": {
      +            "description": "Work title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "description": "Work type (e.g., journal-article, book)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "description": "URL to access the work",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "doi",
      +          "title",
      +          "journal",
      +          "authors",
      +          "published",
      +          "type",
      +          "publisher",
      +          "abstract",
      +          "citations",
      +          "subjects",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total_results": {
      +      "description": "Total number of results matching the search query",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total_results",
      +    "results"
      +  ],
      +  "type": "object"
      +}
  5. Changed2 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "query": "transformer neural networks"
      -  },
      -  {
      -    "limit": 20,
      -    "query": "CRISPR gene editing"
      -  }
      -]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "results": {
      -      "items": {
      -        "properties": {
      -          "abstract": {
      -            "description": "Work abstract text",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "authors": {
      -            "description": "List of author names",
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "cited_by_count": {
      -            "description": "Number of citations",
      -            "type": "number"
      -          },
      -          "concepts": {
      -            "description": "Top research concepts/fields (up to 5)",
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "doi": {
      -            "description": "Digital Object Identifier",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "id": {
      -            "description": "OpenAlex work ID",
      -            "type": "string"
      -          },
      -          "journal": {
      -            "description": "Journal or publication venue name",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "oa_url": {
      -            "description": "Open access URL if available",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "open_access": {
      -            "description": "Whether work is open access",
      -            "type": "boolean"
      -          },
      -          "publication_year": {
      -            "description": "Year of publication",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "title": {
      -            "description": "Work title",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "type": {
      -            "description": "Work type (e.g., journal-article)",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "doi",
      -          "title",
      -          "publication_year",
      -          "type",
      -          "open_access",
      -          "oa_url",
      -          "cited_by_count",
      -          "journal",
      -          "authors",
      -          "concepts",
      -          "abstract"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "total": {
      -      "description": "Total number of works matching the query",
      -      "type": "number"
      -    }
      -  },
      -  "required": [
      -    "total",
      -    "results"
      -  ],
      -  "type": "object"
      -}New value: +null
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "results": {
      +      "items": {
      +        "properties": {
      +          "abstract": {
      +            "description": "Work abstract text",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "authors": {
      +            "description": "List of author names",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "cited_by_count": {
      +            "description": "Number of citations",
      +            "type": "number"
      +          },
      +          "concepts": {
      +            "description": "Top research concepts/fields (up to 5)",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "doi": {
      +            "description": "Digital Object Identifier",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "OpenAlex work ID",
      +            "type": "string"
      +          },
      +          "journal": {
      +            "description": "Journal or publication venue name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "oa_url": {
      +            "description": "Open access URL if available",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "open_access": {
      +            "description": "Whether work is open access",
      +            "type": "boolean"
      +          },
      +          "publication_year": {
      +            "description": "Year of publication",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "title": {
      +            "description": "Work title",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "type": {
      +            "description": "Work type (e.g., journal-article)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "doi",
      +          "title",
      +          "publication_year",
      +          "type",
      +          "open_access",
      +          "oa_url",
      +          "cited_by_count",
      +          "journal",
      +          "authors",
      +          "concepts",
      +          "abstract"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "total": {
      +      "description": "Total number of works matching the query",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "total",
      +    "results"
      +  ],
      +  "type": "object"
      +}
  7. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "query": "transformer neural networks"
      +  },
      +  {
      +    "limit": 20,
      +    "query": "CRISPR gene editing"
      +  }
      +]
  8. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety behavior is covered. The description adds meaningful behavioral context beyond that: the Crossref source, title-scoped ranking that 'ranks the exact paper first,' and the strict journal-only restriction. These details help the agent anticipate tool behavior without contradicting the 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 dense but well-organized: it opens with the core action, then gives targeted parameter guidance, then filter/sort examples, then return contents. Every sentence earns its place, and the inline examples are compact rather than redundant.

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?

For a tool with 9 parameters, 0 required, 100% schema coverage, and an output schema, the description provides enough decision guidance to invoke it correctly across common use cases. It covers return values (titles, authors, journal, DOIs, citation counts, dates), so nothing critical is missing.

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?

Schema coverage is 100%, so the schema already documents every parameter. The description still adds practical value by giving natural-language trigger examples ('most-cited papers on transformers' → sort=citations) and clarifying `title` for exact-paper lookups and `journal` as a strict single-journal restriction. This goes beyond merely restating the schema.

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 states a specific verb and resource: 'Search academic papers, books, and datasets via Crossref.' It also distinguishes its scope by emphasizing keyword/title search with filtering and sorting, which separates it from singular lookup tools like get_work. The examples reinforce the tool's purpose without ambiguity.

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 gives explicit user-intent mappings: use `title` when finding a specific paper by title, and use sort/filter combinations for tasks like 'most-cited papers' or 'papers since 2024'. It does not explicitly name alternative sibling tools or state when not to use it, but the context is clear enough for an agent to select this tool.

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.