Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SCOPUS_API_KEYNoYour Elsevier API key for Scopus. Required for Scopus-related features, but other sources (ArXiv, PubMed, Google Scholar) work without it.
ARXIV_DOWNLOAD_DIRNoDirectory to save ArXiv PDF downloads. Defaults to ./arxiv_downloads if not set.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
scopus_document_search_by_queryA

Search for documents in Scopus using a query string.

query is passed to Scopus verbatim, so Scopus's own field syntax is available — use it when hunting one specific paper, e.g. TITLE("Attention Is All You Need"), DOI(10.1016/...) or AUTHKEY(Smith). A bare title string is instead treated as a loose keyword query, which surfaces related-but-different papers ahead of the target. sort defaults to relevancy; pass sort="coverDate" for newest-first ordering.

scopus_abstract_detail_by_eidA

Get detailed abstract information for a Scopus document (by EID). Returns a normalized record (title, authors, affiliations, journal, identifiers, etc.). Default view is META (unrestricted); the abstract body is only populated under richer views such as FULL/META_ABS if your subscription supports them.

scopus_serial_title_by_issnC

Get journal/serial metadata (title, publisher, Open Access status, coverage years, subject areas, homepage) by ISSN. Default view is STANDARD (verified working with a basic subscription tier).

scopus_api_usage_statusA

Check current Elsevier API usage/rate-limit status (via Scopus endpoint).

scopus_serial_title_search_by_criteriaA

Search journals/serials by multiple optional criteria (no ISSN required). Sibling of scopus_serial_title_by_issn, which looks up ONE journal by exact ISSN; this tool searches across journals and returns a list, including SNIP/SJR metrics. Optional filters: title (substring match), issn, pub (publisher), subj (subject ABBREVIATION such as COMP/CHEM, NOT the numeric code), content (journal/tradejournal/conferenceproceeding/bookseries), date (year), oa (all/full/partial/none), start (page offset), count (page size, max 200). view defaults to STANDARD (ENHANCED/CITESCORE may require a higher subscription). Passing no filter is allowed but browses ALL serials (large) — supply at least one.

scopus_subject_classification_lookup_by_sourceA

Look up Scopus/ScienceDirect subject classification codes (to help build more precise search queries). source is required and must be 'scopus' or 'scidir'. Optional filters: description, detail, code, abbrev, field (field restricts which fields are returned). scidir results additionally carry parent_code (hierarchy); scopus results have parent_code = null.

sciencedirect_article_retrieve_by_identifierA

Retrieve an article record by identifier type (pii, doi, pubmed_id, eid) and value. Returns a normalized record (title, authors, journal, identifiers, subjects, etc.). Default view is META (unrestricted); the full-text body is only populated under richer, entitlement-gated views.

sciencedirect_article_object_by_identifierA

Get metadata (filename, mimetype, type, download link) for figures/tables/ supplementary materials attached to an article. Does NOT download the binary content itself -- only returns the metadata list and download links. identifier_type: doi or pii (both verified working); scopus_id/pubmed_id may also work.

arxiv_paper_search_by_queryA

Search for papers in ArXiv using a query string.

query is passed to arXiv verbatim, so arXiv's field prefixes work — use them to pin down one known paper, e.g. ti:"Attention Is All You Need", au:Vaswani, abs:transformer, cat:cs.LG. A bare title string is a loose full-text query and will not reliably return the paper itself.

arxiv_latest_paper_list_by_categoryA

List the most recently submitted arXiv papers in a given category (e.g. 'cs.AI'). Multiple categories may be comma-separated (e.g. 'cs.AI,cs.LG'). Uses arXiv's official cat: query syntax.

arxiv_paper_detail_by_idC

Get detailed information (abstract/metadata) for a specific ArXiv paper.

pubmed_paper_search_by_queryA

Search PubMed by keyword via NCBI Entrez (ESearch to get PMIDs, then EFetch to retrieve and parse the article XML). Returns normalized records (title, abstract, authors, journal, doi, pmid, pmcid, keywords, date).

query is passed to NCBI verbatim, so PubMed field tags and MeSH terms work. To pin down one known paper, use the title tag WITHOUT quotes, e.g. Genome engineering using the CRISPR-Cas9 system[Title] — wrapping the title in quotes together with the tag ("..."[Title]) makes NCBI return 0 results.

pubmed_paper_summary_lookup_by_pmidsA

Look up lightweight PubMed metadata for a batch of PMIDs via ESummary. Faster than a full fetch and carries fields the search tool lacks (pmcid, pubstatus, pmcrefcount, elocationid). Invalid PMIDs are returned as items with a per-item error field rather than failing the whole call. Max 200 PMIDs per call (excess is truncated).

pubmed_related_article_search_by_pmidB

Find PubMed articles topically related to a given PMID (NCBI ELink 'Similar articles' / pubmed_pubmed neighbor set, ranked by relevance). Returns a list of related PMIDs (the source PMID itself is excluded). Call pubmed_paper_summary_lookup_by_pmids on the results for their metadata.

pubmed_pmc_linkage_lookup_by_pmidA

Look up a PMID's PubMed Central (PMC) linkages. Returns TWO distinct groups, kept separate on purpose: 'own_pmc_fulltext' (this article's own open-access PMC full-text record, if any — check 'has_pmc_fulltext') and 'cited_by_pmc_articles' (other PMC articles that cite it). Both empty is a normal result, not an error.

crossref_work_search_by_queryB

Search Crossref (DOI registration agency metadata) for works by keyword. No API key needed.

crossref_work_detail_by_doiA

Look up a single work on Crossref by DOI. No API key needed.

europepmc_paper_search_by_queryA

Search Europe PMC (EBI's life-sciences literature aggregator, distinct from NCBI PubMed) for papers by keyword. Returns the first page of results only (result ordering is Europe PMC's relevance ranking). No API key needed.

doaj_article_search_by_queryA

Search DOAJ (Directory of Open Access Journals) for open-access articles by keyword. No API key needed.

openaire_research_product_search_by_queryB

Search OpenAIRE (European open science aggregator) for research products by keyword. No API key needed. NOTE: reference projects reported occasional HTTP 403 from this service; it was not reproduced during this project's probing. A network error here may reflect that known intermittency, not a tool bug.

core_work_search_by_queryA

Search CORE (global open-access aggregator) by keyword, with paging.

query accepts CORE's own query syntax (field qualifiers such as title:"..." / doi:"...", boolean operators, phrase matching). max_results is capped at 100 (CORE's per-request ceiling) and offset pages through the result set; note that a large max_results returns a big payload (roughly 435 KB for 100 hits) and can take up to ~45 s on slow networks, so keep the default 10 unless you need more.

Returns metadata and download links only — the upstream fullText field is excluded at the request level and never surfaces. Works without an API key, but the anonymous tier is token-metered (100 tokens/day, 10 requests per minute, no fullText); configuring CORE_API_KEY raises it to 1,000 tokens/day at 25 requests per minute.

core_work_detail_by_identifierA

Fetch the full CORE record of one work by bare DOI or numeric CORE ID.

Use the bare DOI form (e.g. 10.1038/nature12373) — the doi: prefix is not a valid path segment upstream and returns 404. Both identifier forms were verified against the real API in buildlog step 69 (F7).

The detail record carries dataProviders / outputs / identifiers that keyword search results do not include. outputs here are URLs only; call core_work_outputs_by_id to expand them. Returns a single item.

core_work_outputs_by_idA

List the per-repository copies (outputs) CORE harvested for one work.

identifier MUST be a numeric CORE ID (e.g. 171513974); this sub-resource rejects DOIs with a 404 (verified in buildlog step 69's F8/F11). If you only have a DOI, call core_work_detail_by_identifier first and take the numeric id from its core_id / identifiers fields.

Each item is a de-duplication source record, not the paper text: it carries download_url / license / fulltext_status / data_provider, which is how you tell how many repository copies exist and under what licence.

core_work_stats_by_idA

Fetch the lifecycle timestamps of one CORE work (deposited / published / updated / accepted).

identifier accepts either a bare DOI or a numeric CORE ID — unlike core_work_outputs_by_id, this endpoint does not require a numeric id (both verified in buildlog step 69's F9/F9b). Returns a single item with only those timestamp fields, because that is all the upstream returns.

core_work_aggregate_by_queryA

Summarise the distribution of CORE works matching a keyword query.

This is a facet/distribution view, NOT a result list: each item is one dimension (field / total_buckets / top[{value, count}]), with top sorted by count descending and truncated to top_n (default 10, capped at 50). count in the response is therefore the number of dimensions returned, not the number of papers.

query uses the same syntax as core_work_search_by_query. fields is optional: leave it unset to let CORE pick its default dimensions, or pass explicit camelCase dimension names (e.g. ["yearPublished", "authors", "publisher"]). Dimension names are passed through verbatim — CORE's default set is snake_case (year_published, field_of_study) while an explicit request is camelCase, and both are returned as-is. Each dimension is capped by upstream at 100 buckets, so total_buckets is also capped at 100 and does not reveal the untruncated cardinality.

Aggregation queries cost more tokens than a plain search upstream; call it when you actually need a distribution, not after every search.

core_data_provider_search_by_queryA

Search CORE's data providers — institutional repositories and journal sources.

Each item is a repository/journal source (id / name / type / url / software / country_code …), not a paper. Take an id from here into core_data_provider_detail_by_id, or reach a provider id from a work by reading data_providers in core_work_detail_by_identifier / search results.

max_results is capped at 200 (verified against the real API in buildlog step 69's F12 plus this step's limit probe: 50/100/200 all accepted).

core_data_provider_detail_by_idA

Fetch one CORE data provider (repository / journal source) by numeric id.

include_stats and include_outputs each add one extra upstream request, so they are off by default; turn them on only when you need the figures. Get the numeric id from core_data_provider_search_by_query or from the data_providers field of a work record.

The two sub-resources are best-effort: if the main detail call succeeds but a sub-resource fails, the response stays ok=True and the failure is reported under that sub-key (stats / outputs holding an {ok, error} object) instead of discarding the detail you already have.

core_output_detail_by_idA

Fetch one raw CORE harvesting record (output) by numeric id.

An output is a de-duplicated source signal: the same paper shows up once per repository that harvested it, whereas a work is CORE's merged record for that paper. Call this when you need per-repository detail — license, repositories, sdg, fulltext_status, source_fulltext_urls — and use the works tools (core_work_detail_by_identifier) for the paper itself.

output_id must be numeric. Returns a single item.

core_output_search_by_queryA

Search CORE's raw harvesting records (outputs, not de-duplicated).

Difference from core_work_search_by_query: a work is CORE's merged record for a paper (one per paper), while an output is the per-repository signal CORE harvested (the same paper can appear several times, once per repository). Use this tool to find a specific repository's copy of a paper and inspect its license / fulltext_status / repositories; use the works tools for the paper itself.

query accepts CORE's own syntax. Field-qualified forms such as title:"..." and doi:"..." are recommended: this endpoint has historically returned HTTP 500 (an upstream Azure Search expression error) for some query expressions — an upstream behaviour, not something this server retries around, so a 500 surfaces as-is with a hint to try a field-qualified form.

max_results is capped at 100 and the upstream response inlines fullText for every hit; the returned items keep metadata and links only.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 29 tools

Disambiguation4/5

The tools are largely distinct by their target source (Scopus, PubMed, arXiv, etc.). However, there is some potential confusion between tools like 'core_work_search_by_query' and 'core_output_search_by_query' or 'pubmed_paper_search_by_query' vs 'europepmc_paper_search_by_query' if an agent doesn't read carefully, but descriptions clarify the differences.

Naming Consistency4/5

Most tool names follow a clear pattern of '<source>_<action>_<object>_by_<identifier>' (e.g., scopus_document_search_by_query, arxiv_paper_detail_by_id). Deviations exist like 'arxiv_latest_paper_list_by_category' and 'scopus_api_usage_status' which break the pattern slightly, but overall it is consistent and readable.

Tool Count3/5

With 29 tools, the count is on the high side but not extreme. The server aggregates multiple scholarly APIs (Scopus, arXiv, PubMed, Crossref, CORE, etc.), so many tools are needed. However, it feels slightly heavy and could be streamlined (e.g., combining some CORE output tools).

Completeness4/5

The domain is scholarly literature search and retrieval across multiple sources. Each source has at least a search and detail tool, covering core workflows. Minor gaps: no update or delete operations (not applicable for read-only APIs), but missing citation or full-text retrieval for some sources (e.g., no direct arXiv full-text download, no PubMed Central full-text retrieval beyond linkage).

Maintenance

ActivityMaintained
ResponsivenessNo issues