Glasser
← OpenAlex

Provided by OpenAlex

Filter and Count Scholarly Papers by Year, Author, Institution or Topic

$0.0005 per callanswers within 25s

List OpenAlex scholarly works that match named fields — publication year or date range, open-access flag, retracted flag, work type, language, DOI, OpenAlex author id, institution ROR, topic id, and a minimum or maximum citation count — and get back the matching papers with their authors, host journal, citation count and DOI. Set group_by instead to get counts per year, type, language, topic, institution or country rather than the papers themselves. Takes no free-text query: use the text search endpoint for that.

Contract snapshot: 2026-09-29. Inspect in Glasser for current terms.

json
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "doi": {
      "type": "string",
      "pattern": "^(https:\\/\\/doi\\.org\\/)?10\\.\\d{4,9}\\/\\S+$"
    },
    "page": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    },
    "sort": {
      "enum": [
        "cited_by_count:desc",
        "cited_by_count:asc",
        "publication_date:desc",
        "publication_date:asc"
      ],
      "type": "string"
    },
    "is_oa": {
      "type": "boolean"
    },
    "cursor": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1
    },
    "group_by": {
      "enum": [
        "publication_year",
        "type",
        "open_access.is_oa",
        "language",
        "primary_topic.id",
        "authorships.institutions.ror",
        "authorships.institutions.country_code"
      ],
      "type": "string"
    },
    "language": {
      "type": "string",
      "pattern": "^[a-z]{2}$"
    },
    "per_page": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1
    },
    "topic_id": {
      "type": "string",
      "pattern": "^T\\d{4,8}$"
    },
    "author_id": {
      "type": "string",
      "pattern": "^A\\d{4,12}$"
    },
    "work_type": {
      "enum": [
        "article",
        "preprint",
        "review",
        "book",
        "book-chapter",
        "dataset",
        "dissertation",
        "letter",
        "editorial",
        "erratum",
        "report",
        "standard",
        "other"
      ],
      "type": "string"
    },
    "is_retracted": {
      "type": "boolean"
    },
    "institution_ror": {
      "type": "string",
      "pattern": "^(https:\\/\\/ror\\.org\\/)?0[a-hj-km-np-tv-z0-9]{6}[0-9]{2}$"
    },
    "publication_year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 1000
    },
    "cited_by_count_max": {
      "type": "integer",
      "maximum": 100000000,
      "minimum": 0
    },
    "cited_by_count_min": {
      "type": "integer",
      "maximum": 100000000,
      "minimum": 0
    },
    "to_publication_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "from_publication_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "additionalProperties": false
}

How to run it

Two fields identify it: the Provider and the endpoint key. The key looks like a path because it usually mirrors the Provider's own, but it is an opaque identifier — not a URL you can open. The same provider:endpoint pair is what your Policy lists.

Once: paste this into your agent's chat. The Skill installs the CLI and logs in by itself. For an agent that cannot use a shell, connect it over MCP instead.

Setup prompt
set up https://glasser.ai/SKILL.md

Then ask for this Endpoint:

Agent prompt
Run the OpenAlex Endpoint /works on Glasser with input {"per_page":10,"institution_ror":"00f54p054","publication_year":2024}

What each outcome charges

No resultThe Provider answered: nothing matched.$0.0002
Provider errorThe Provider failed to answer.$0.00
Timed outThe deadline won.$0.00
Internal failureOur defect.$0.00
Method GETVersion 1Provider documentation ↗