Skip to main content
Glama
andri-setiawan

MCP-scopus

MCP-Scopus

An MCP (Model Context Protocol) server for searching academic papers on Scopus - helping AI assistants write papers without hallucinating citations.

MIT License Node.js Docker

Why This Matters

When AI assistants write academic papers or research content, they often hallucinate citations - inventing papers that don't exist, misattributing authors, or fabricating DOIs. This MCP server solves that problem by giving AI direct access to real academic data from Scopus, the world's largest abstract and citation database.

The Problem

  • AI hallucinates non-existent papers

  • Fabricated author names and affiliations

  • Invented DOIs and citation counts

  • Outdated or incorrect publication data

The Solution

  • Real papers from Scopus database

  • Accurate author information

  • Verified DOIs and citation metrics

  • Up-to-date publication details

Related MCP server: Strato Scopus MCP

Features

Paper Search & Retrieval

  • search_papers - Search by keywords, title, author, abstract, year range

  • search_papers_advanced - Structured search combining author, journal, affiliation, keywords, year range, and document type without needing Scopus query syntax

  • get_paper_by_id - Get full details by Scopus ID

  • get_paper_by_doi - Retrieve paper by DOI (full metadata including authors, affiliations, keywords)

  • get_abstract - Fetch paper abstracts

Author Information

  • search_authors - Find authors by name

  • get_author_by_id - Get author profile with h-index, citations, subject areas, and top co-authors

  • get_author_publications - List all publications by an author

Citation Analysis

  • get_citations - Papers citing a specific work

  • get_references - Bibliography of a paper (with pagination warnings for large reference lists)

  • get_citation_overview - Year-by-year citation breakdown for a paper

Journal & Venue Intelligence

  • get_journal_info - Get journal metrics: CiteScore, SJR, SNIP, subject areas

  • search_journals - Search for journals by name, get ISSN and metadata

  • search_by_affiliation - Find papers by university/organization (with year filtering)

  • search_by_subject_area - Search within ASJC subject area codes for domain-specific literature reviews


Installation

Prerequisites

Step 1: Clone & Build

# Clone the repository
git clone https://github.com/andri-setiawan/MCP-scopus.git
cd MCP-scopus

# Install dependencies
npm install

# Build the project
npm run build

# Run tests
npm test

Step 2: Get Scopus API Key

  1. Visit Elsevier Developer Portal

  2. Create a free account

  3. Apply for API access

  4. Select "Scopus Search API"

  5. You'll receive an API key via email

Note: Free API keys have rate limits. For production use, consider a paid subscription.


Configuration (Choose One)

Most stable and reliable method. Uses stdio transport directly without network overhead.

Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "scopus": {
      "command": "node",
      "args": [
        "/path/to/MCP-scopus/dist/index.js"
      ],
      "env": {
        "SCOPUS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Config file locations:

OS

Path

Windows

%APPDATA%\Claude\claude_desktop_config.json

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Linux

~/.config/Claude/claude_desktop_config.json

Example: Windows Configuration

{
  "mcpServers": {
    "scopus": {
      "command": "node",
      "args": [
        "D:\\Documents\\MCP-scopus\\dist\\index.js"
      ],
      "env": {
        "SCOPUS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Example: macOS/Linux Configuration

{
  "mcpServers": {
    "scopus": {
      "command": "node",
      "args": [
        "/home/username/MCP-scopus/dist/index.js"
      ],
      "env": {
        "SCOPUS_API_KEY": "your_api_key_here"
      }
    }
  }
}

Aspect

Direct Node.js

HTTP/SSE (Docker)

Stability

Best

Good

Latency

Lower

Higher

Connection

Direct stdio

Network-based

Timeouts

No issues

Possible

Docker Required

No

Yes

Setup Complexity

Simple

More complex


Option B: Docker + HTTP/SSE (Alternative)

If you prefer containerization or need remote access:

# Build the image
docker build -t mcp-scopus .

# Run the container
docker run -d \
  --name mcp-scopus \
  --restart unless-stopped \
  -p 5566:5566 \
  -e SCOPUS_API_KEY=your_api_key_here \
  mcp-scopus

Claude Desktop Configuration (HTTP)

{
  "mcpServers": {
    "scopus": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:5566/sse"],
      "env": {}
    }
  }
}

Docker Management

docker logs mcp-scopus      # View logs
docker restart mcp-scopus   # Restart container
docker stop mcp-scopus      # Stop container
docker start mcp-scopus     # Start container

Usage Examples

Once configured, restart Claude Desktop and try:

"Search for recent papers about transformer architectures in NLP"
"Find papers by Geoffrey Hinton from the last 5 years"
"What papers cite the attention is all you need paper?"
"Get details about paper with DOI 10.1016/j.example.2023.01.001"
"Find publications from Stanford University about machine learning"
"What are the metrics for the journal Nature (ISSN 0028-0836)?"
"Search for conference papers about LLMs published between 2023 and 2024"
"Show me the citation trajectory of paper 2-s2.0-85012345678"
"Find papers in Computer Science (ASJC 1700) about reinforcement learning"

Search Syntax

The server supports Scopus advanced query syntax:

machine learning AND PUBYEAR > 2023
TITLE(deep learning) AND AUTHOR(lecun)
ABS(neural networks) AND KEY(transformer)
SRCTITLE(Nature) AND PUBYEAR = 2024

Or use search_papers_advanced for structured queries without learning Scopus syntax:

keywords: "transformer", author: "vaswani", journal: "NeurIPS", yearFrom: 2017, documentType: "conference-paper"

Available Tools

Tool

Description

search_papers

Search papers by query with filters and year range

search_papers_advanced

Structured multi-field search (author, journal, affiliation, keywords, year, doc type)

get_paper_by_id

Get paper details by Scopus ID

get_paper_by_doi

Get paper details by DOI (full metadata)

get_abstract

Get paper abstract

search_authors

Search for authors

get_author_by_id

Get author profile with co-authors

get_author_publications

List author's papers

get_citations

Get citing papers

get_references

Get paper's references

get_citation_overview

Year-by-year citation breakdown

get_journal_info

Journal metrics: CiteScore, SJR, SNIP

search_journals

Search journals by name

search_by_affiliation

Search by institution (with year filter)

search_by_subject_area

Search by ASJC subject code


API Reference

search_papers

{
  query: string,           // Required: Search query
  count?: number,          // Default: 10, Max: 200
  start?: number,          // For pagination
  sortBy?: string,         // 'relevance' | 'date' | 'citedby-count' | 'pub-name'
  sortOrder?: string,      // 'asc' | 'desc'
  yearFrom?: number,       // Filter from year (e.g., 2020)
  yearTo?: number          // Filter to year (e.g., 2024)
}

search_papers_advanced

{
  keywords?: string,       // Keywords for title/abstract/keywords search
  author?: string,         // Author name
  affiliation?: string,    // Institution name
  journal?: string,        // Source/journal title
  yearFrom?: number,       // Start year
  yearTo?: number,         // End year
  documentType?: string,   // 'article' | 'review' | 'conference-paper' | etc.
  count?: number,          // Default: 10
  sortBy?: string,         // Sort field
  sortOrder?: string       // Sort order
}

get_journal_info

{
  issn: string             // Required: ISSN of the journal
}

get_citation_overview

{
  scopusId: string         // Required: Scopus ID of the paper
}

search_by_subject_area

{
  subjectCode: string,     // Required: ASJC code (e.g., '1700' for Computer Science)
  keywords?: string,       // Additional keywords
  yearFrom?: number,       // Start year
  yearTo?: number,         // End year
  count?: number,          // Default: 10
  sortBy?: string,         // Sort field
  sortOrder?: string       // Sort order
}

Architecture

src/
  index.ts          # Stdio MCP server (recommended)
  http-server.ts    # HTTP/SSE MCP server (alternative)
  handlers.ts       # All tool execution logic (shared)
  tools.ts          # Tool definitions and schemas (shared)
  formatters.ts     # Response formatting helpers (shared)
  client.ts         # Scopus API client with rate limiting (shared)
  schemas.ts        # Zod input validation schemas (shared)
  types.ts          # TypeScript interfaces for Scopus API responses
  __tests__/        # Test suite

Both transport modes share identical logic via the registerHandlers() function, so any bug fix or feature applies to both.


Development

# Install dependencies
npm install

# Build TypeScript
npm run build

# Run tests
npm test

# Watch tests
npm run test:watch

# Run in development mode (stdio)
npm run dev

# Run HTTP server
npm run start:http

Project Structure

MCP-scopus/
  src/
    index.ts          # Stdio MCP server (recommended)
    http-server.ts    # HTTP/SSE MCP server (alternative)
    handlers.ts       # Shared tool execution logic
    tools.ts          # Shared tool definitions
    formatters.ts     # Response formatters
    client.ts         # API client with rate limiting
    schemas.ts        # Zod validation schemas
    types.ts          # TypeScript interfaces
    __tests__/        # Test files
  dist/               # Compiled JavaScript
  Dockerfile
  docker-compose.yml
  package.json
  tsconfig.json
  vitest.config.ts
  README.md

Troubleshooting

Connection Timeout Errors

If you see timeout errors with HTTP/SSE, switch to Option A (Direct Node.js) - it's more stable.

API Key Issues

# Test your API key
curl -H "X-ELS-APIKey: your_key" "https://api.elsevier.com/content/search/scopus?query=test"

Rate Limiting (429 Errors)

The server automatically retries on 429 responses with exponential backoff. If you still see issues, reduce your count parameter or space out requests.

Container Won't Start

# Check logs
docker logs mcp-scopus

# Rebuild
docker stop mcp-scopus && docker rm mcp-scopus
docker build -t mcp-scopus . --no-cache
docker run -d --name mcp-scopus -p 5566:5566 -e SCOPUS_API_KEY=your_key mcp-scopus

License

This project is licensed under the MIT License - see the LICENSE file for details.


Acknowledgments


Disclaimer

This project is not affiliated with, endorsed by, or sponsored by Elsevier or Scopus. Scopus is a registered trademark of Elsevier B.V. Use of the Scopus API is subject to Elsevier's terms of service.

Available Tools

15 tools
get_abstractB

Retrieve the abstract of a specific paper using its Scopus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopusIdYesThe Scopus ID of the paper

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It doesn't disclose whether the tool fails on invalid IDs, handles open-access vs paywalled abstracts, returns raw text or structured metadata, or whether it requires authentication. For a read tool with no annotation coverage, this is a meaningful gap.

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?

A single sentence front-loaded with the verb and resource, with zero redundant or filler content. It earns its place by stating purpose and the required input in one clause.

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

Completeness3/5

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

With one fully documented param, no annotations, and no output schema, the definition is minimal but adequate for a simple lookup. However, the absence of any return-shape or failure-mode context leaves gaps an agent calling this tool blind would benefit from filling.

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 description coverage is 100%, so the schema already fully documents scopusId. The description only restates the identifier requirement without adding format examples (e.g., '2-s2.0-...') or validation behavior, so baseline 3 applies.

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?

States a specific verb and resource ('Retrieve the abstract of a specific paper') and names the identifier type (Scopus ID). It is distinguishable from siblings like get_paper_by_id or get_paper_by_doi by the abstract-extraction focus, though it doesn't explicitly contrast with them.

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

Usage Guidelines3/5

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

Implies usage via 'using its Scopus ID', giving a clear input prerequisite, but offers no when-to-use guidance or alternatives against siblings like get_paper_by_id or get_paper_by_doi that may also return abstracts or full metadata.

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

get_author_by_idA

Retrieve detailed information about a specific author using their Scopus Author ID, including h-index, citation count, subject areas, and top co-authors.

ParametersJSON Schema
NameRequiredDescriptionDefault
authorIdYesThe Scopus Author ID. Examples: '57217123456'

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. It usefully enumerates the returned content (h-index, citation count, subject areas, top co-authors), which compensates for the absent output schema. However, it says nothing about error behavior for invalid IDs, rate limits, or authentication requirements.

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?

One sentence, front-loaded with the verb and resource, with the returned-field list appended rather than padding. Nothing is wasted and the key constraints lead.

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

Completeness4/5

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

For a one-parameter read lookup with no output schema, the description is nearly sufficient: it names the fields returned, which is the information the schema cannot convey. Only the absence of error/edge-case guidance keeps it from being fully complete.

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% and the single parameter already documents the Scopus Author ID with an example, so the description adds no format or syntax detail beyond the schema. Baseline 3 applies when the schema does the explanatory work.

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 states a specific verb (Retrieve) and resource (author) keyed by Scopus Author ID, and enumerates the returned fields, so the operation is unambiguous. It does not explicitly distinguish itself from the sibling search_authors, though the ID-based lookup framing implies the difference.

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

Usage Guidelines3/5

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

Usage is only implied: the requirement of a Scopus Author ID signals a single-entity lookup rather than a search. There is no explicit statement of when to use this instead of search_authors or get_author_publications, and no prerequisites mentioned.

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

get_author_publicationsC

Retrieve a list of publications by a specific author using their Scopus Author ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return (default: 25, max: 200)
startNoStarting index for pagination (default: 0)
sortByNoSort by: 'date', 'citedby-count'date
authorIdYesThe Scopus Author ID
sortOrderNoSort order: 'asc' or 'desc'desc

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no pagination behavior, no result-shape hints, no rate-limit or auth notes, no statement of what happens at max 200 results. For a list-retrieval tool with zero annotation coverage this is a substantial gap.

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

Conciseness4/5

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

A single efficient sentence with the resource and the required identifier front-loaded; nothing is wasted. It stops just short of 5 because there is no structural elaboration (e.g., pagination or sorting guidance) to pair with the brevity.

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

Completeness2/5

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

With no annotations, no output schema, and 5 parameters, the description should explain pagination, sorting defaults, and the general result shape, but it does none of that. An agent knows what the tool returns only at the vaguest level.

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 description coverage is 100% and every parameter (count, start, sortBy, sortOrder, authorId) is documented with defaults and ranges in the schema. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

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?

States a specific verb (Retrieve) and resource (publications by author) plus the identifier required (Scopus Author ID). It is clearly distinct from siblings like get_paper_by_id or get_citations, though it never names an alternative to sharpen the boundary.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites (e.g., that an Author ID must be obtained via search_authors or get_author_by_id first), and no alternatives such as search_papers for broader queries. Usage must be inferred entirely from the name.

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

get_citation_overviewA

Get a citation overview for a specific paper including total citations and yearly citation breakdown. Useful for understanding the impact trajectory of a paper.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopusIdYesThe Scopus ID of the paper

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the shape of the result (aggregate count plus per-year figures), which is real behavioral context, but it says nothing about authentication needs, whether uncited papers return an empty breakdown, or how far back the yearly series extends.

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?

Two short sentences, front-loaded with what is returned and followed by a single sentence of usage context. No filler, no redundancy with the schema, and the return payload is stated before the rationale.

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

Completeness4/5

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

There is no output schema, so the description is responsible for describing returns, and it does name the two key components (total citations, yearly breakdown). For a one-parameter read tool this is nearly sufficient; only the time span of the yearly data and the empty-result case are left open.

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 description coverage is 100%, so the single scopusId parameter is already documented as 'The Scopus ID of the paper'. The description adds only the generic phrase 'for a specific paper' and does not clarify the identifier format or contrast it with DOI-based lookup tools, so baseline 3 applies.

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?

States a specific verb (get) and resource (citation overview) and specifies the payload: total citations plus a yearly citation breakdown. It is clear what the tool returns, though it never distinguishes itself from the sibling get_citations, which an agent could easily confuse it with.

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

Usage Guidelines3/5

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

"Useful for understanding the impact trajectory of a paper" implies the usage context (trend/impact analysis), so the when-to-use is implied rather than explicit. There is no statement of when NOT to use it and no mention of the obvious alternative get_citations for retrieving individual citing documents.

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

get_citationsB

Retrieve the list of papers that cite a specific paper using its Scopus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return (default: 20, max: 200)
startNoStarting index for pagination (default: 0)
scopusIdYesThe Scopus ID of the paper to get citations for

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation but does not mention pagination behavior, rate limits, authentication requirements, or the format/ordering of the returned list, leaving significant gaps.

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 a single, front-loaded sentence that efficiently states the tool's purpose without any wasted words. It is appropriately sized for a simple retrieval tool.

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

Completeness3/5

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

Given the low complexity (3 parameters, no nested objects) and full schema description coverage, the description adequately states the return type. However, with no annotations and no output schema, it lacks details on pagination behavior and usage context, leaving some gaps for correct invocation.

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 description coverage is 100%, so the parameters (scopusId, count, start) are fully documented in the schema. The description adds no additional meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

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 states a specific verb 'Retrieve' and resource 'list of papers that cite a specific paper', clearly distinguishing it from tools like get_references (which retrieves papers a paper references) and get_citation_overview. However, it does not explicitly name the alternative or clarify how it differs from siblings.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as get_references or get_citation_overview. It only states what the tool does, leaving the agent to infer appropriate usage conditions.

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

get_journal_infoB

Get journal metrics including CiteScore, SJR, SNIP, and subject area classifications. Essential for evaluating publication venues.

ParametersJSON Schema
NameRequiredDescriptionDefault
issnYesThe ISSN of the journal (e.g., '0013063X')

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. Enumerating the returned metric fields adds some transparency, but there is no mention of what happens with an invalid or unknown ISSN, whether missing metrics yield nulls, or any rate/permission constraints. For a zero-annotation tool this is a substantial gap.

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

Conciseness4/5

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

Two compact sentences with the retrieval scope front-loaded and the value proposition second. No filler, though the second sentence is mildly promotional ('Essential for...') rather than operational, so it is efficient but not flawless.

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

Completeness4/5

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

For a single-parameter read lookup with no output schema, listing the returned metrics (CiteScore, SJR, SNIP, subject areas) usefully compensates for the absent output schema. The remaining gap is error/empty-result behavior, which matters less for a straightforward identifier lookup.

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 description coverage is 100% and the single 'issn' parameter is documented with an example format ('0013063X'), so the schema does the heavy lifting. The description adds no ISSN-specific semantics (e.g., print vs. electronic ISSN, hyphenation tolerance) beyond what the schema already provides, making the baseline 3 appropriate.

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?

States a specific verb ('Get') and resource ('journal metrics') and enumerates the returned metrics (CiteScore, SJR, SNIP, subject areas). An agent can tell it retrieves journal-level metrics. However, it does not differentiate itself from the sibling 'search_journals', leaving the lookup-by-ISSN vs. discovery distinction implicit.

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

Usage Guidelines3/5

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

'Essential for evaluating publication venues' implies a context of use (venue assessment) but gives no explicit when/when-not and never names the alternative 'search_journals'. The required ISSN input hints at lookup semantics, but the description does not state that this tool requires an already-known journal identifier.

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

get_paper_by_doiA

Retrieve detailed information about a specific paper using its DOI (Digital Object Identifier). Returns full metadata including authors, affiliations, keywords, and subject areas.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiYesThe DOI of the paper. Examples: '10.1016/j.example.2023.01.001'

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure. 'Retrieve' clearly signals a read-only lookup, and it helpfully lists the return fields (authors, affiliations, keywords, subject areas), but it says nothing about authentication needs, rate limits, or behavior on a missing/invalid DOI.

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

Conciseness4/5

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

Two tight sentences with no filler, and the core action is front-loaded. The second sentence, while effectively enumerating return fields, is useful given the absence of an output schema.

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

Completeness4/5

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

For a one-parameter, high-coverage-schema lookup tool, the description covers what the tool does and what it returns, which compensates for the missing output schema. The only real gap is disambiguation from the sibling get_paper_by_id.

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 description coverage is 100% and the schema already documents the doi parameter with an example, so the description adds no syntax or format detail beyond it. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

States a specific verb (Retrieve) and resource (paper) with the exact lookup key (DOI), so the purpose is unambiguous. However, it never differentiates itself from the sibling get_paper_by_id, leaving the agent to infer which identifier to use when.

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

Usage Guidelines3/5

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

Usage is only implied by 'using its DOI' - the agent can infer it applies when a DOI is available, but there is no explicit guidance on when to prefer this over get_paper_by_id, search_papers, or get_abstract, and no exclusions or prerequisites are stated.

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

get_paper_by_idC

Retrieve detailed information about a specific paper using its Scopus EID or Scopus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNoComma-separated list of fields to return (optional)
scopusIdYesThe Scopus ID or EID of the paper. Examples: '2-s2.0-85123456789', '85123456789'

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It doesn't disclose whether the operation is read-only (implied but not stated), error behavior for invalid IDs, what fields are returned by default, or any rate-limit / permission context. It only restates the lookup mechanism.

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

Conciseness4/5

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

One sentence, front-loaded verb, no wasted words. It could be slightly more useful by mentioning the alternative tool or the optional field parameter, but it is appropriate in length.

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

Completeness3/5

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

For a simple read tool with a fully documented schema, the description is adequate but misses useful context: it doesn't specify the return format, whether 'field' can narrow output, or how it differs from get_paper_by_doi. With no annotations and no output schema, more behavioral detail would be expected.

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% and the schema already documents both parameters with examples and the optional 'field' filter. The description adds the fact that valid identifiers are EID or Scopus ID, which marginally supplements the schema but doesn't add new semantic detail beyond what the schema provides.

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?

States a specific verb (Retrieve) and resource (paper details) plus the identifier mechanism (EID or Scopus ID). It distinguishes itself from search_papers by implying direct lookup, but doesn't explicitly name siblings like get_paper_by_doi to clarify the identifier alternative.

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

Usage Guidelines2/5

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

No when-to-use guidance beyond the identifier itself. The presence of get_paper_by_doi as a sibling means an agent must infer that this tool is only for EID/Scopus IDs, but the description doesn't state that or mention alternatives.

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

get_referencesB

Retrieve the list of references (bibliography) of a specific paper using its Scopus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return (default: 20, max: 200)
startNoStarting index for pagination (default: 0)
scopusIdYesThe Scopus ID of the paper to get references for

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only retrieval but says nothing about pagination behavior, result limits (the schema's count/start), return format, rate limits, or auth requirements for a tool that hits the Scopus API.

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?

A single, front-loaded sentence that identifies the action, the resource, and the required identifier with zero filler.

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

Completeness3/5

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

For a simple read tool with no output schema and full schema coverage, this is minimally adequate. It omits any note on pagination semantics or output shape, which an agent needs to page correctly, but nothing critical for a basic call is missing.

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 description coverage is 100%, so count, start, and scopusId are all documented in the schema itself, establishing a baseline of 3. The description only restates that scopusId identifies the paper and adds no format or constraint detail beyond the schema.

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?

States a specific verb (Retrieve) and resource (list of references/bibliography) scoped to a specific paper via its Scopus ID. The parenthetical 'bibliography' clarifies the concept, though it does not explicitly distinguish itself from the sibling get_citations, which is a related but distinct relationship.

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

Usage Guidelines2/5

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

No when-to-use guidance or prerequisites are given. With a sibling get_citations available, an agent could plausibly confuse references (works this paper cites) with citations (works citing this paper); the description does nothing to route between them or state when this tool is appropriate.

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

search_authorsA

Search for authors on Scopus by name. Returns author profiles with affiliations, publication counts, citation counts, and h-index.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return (default: 10, max: 200)
queryYesAuthor name to search for. Examples: 'Smith J', 'John Smith'
startNoStarting index for pagination (default: 0)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden, and it does disclose the return shape (affiliations, publication counts, citation counts, h-index), which partly compensates for the missing output schema. However, it says nothing about rate limits, authentication requirements, or the pagination behavior implied by start/count.

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?

Two tight sentences: the action and scope come first, the return payload second. No filler and nothing that repeats the tool name.

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

Completeness4/5

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

For a 3-parameter search tool with no output schema, the description usefully covers the returned profile fields and the schema covers all three inputs. It stops short of the usage/navigation context an agent would want when several author-related siblings exist.

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 description coverage is 100%, so the schema already documents query, count (with max 200), and start. The description adds no syntax or format guidance beyond the schema's own examples, so the baseline 3 applies.

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?

States a specific verb (Search) and resource (authors on Scopus) and enumerates what the results contain. It is distinguishable from get_author_by_id (lookup by identifier) by the word 'search' plus the name-based query, but it doesn't explicitly contrast itself with the sibling it most overlaps.

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

Usage Guidelines3/5

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

The description implies usage ('by name') but never says when to choose this over get_author_by_id or search_by_affiliation. No prerequisites, no exclusions, no guidance for follow-up tools such as get_author_publications.

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

search_by_affiliationC

Search for papers from a specific institution/affiliation.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return (default: 10)
startNoStarting index for pagination (default: 0)
yearToNoFilter papers up to this year
yearFromNoFilter papers from this year onwards
affiliationNameYesName of the institution to search for

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only search but says nothing about pagination behavior, result limits, or the shape of the response, which matters for a tool with five parameters and no output schema.

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

Conciseness4/5

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

A single sentence with no filler, front-loaded with the verb and resource. It is efficient, though arguably under-specified rather than genuinely concise.

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

Completeness2/5

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

With no annotations and no output schema, the description should explain pagination (count/start), year-range filtering, and basic return behavior. None of that is covered, leaving the agent dependent entirely on the schema for a fairly parameterized search tool.

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 description coverage is 100%, so all five parameters (count, start, yearTo, yearFrom, affiliationName) are already documented in the schema. The description only restates the affiliation concept and adds no syntax or usage detail beyond the schema, making the baseline of 3 appropriate.

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 states a specific verb (search) and resource (papers from a specific institution/affiliation), so the core purpose is clear. However, it does not differentiate from siblings like search_papers, search_papers_advanced, or search_by_subject_area, which also search papers.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus search_papers or search_papers_advanced, nor any stated prerequisites or exclusions. An agent must infer that affiliation is the discriminating criterion.

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

search_by_subject_areaA

Search for papers within a specific ASJC (All Science Journal Classification) subject area code. Useful for domain-specific literature reviews.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results (default: 10, max: 200)
startNoStarting index for pagination (default: 0)
sortByNoSort fieldrelevance
yearToNoFilter papers up to this year
keywordsNoAdditional keywords to narrow the search within the subject area
yearFromNoFilter papers from this year onwards
sortOrderNoSort orderdesc
subjectCodeYesASJC subject area code (e.g., '1700' for Computer Science, '2200' for Engineering, '2700' for Medicine). See https://service.elsevier.com/app/answers/detail/a_id/15181/supporthub/scopus/ for full list.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It frames the tool as a read/search operation, which is implicit and correct, but adds nothing about result volume, pagination behavior, sort defaults, or what a result contains. It does not contradict anything, but beyond 'search' it discloses little behavioral context.

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?

Two tight sentences with the core action and identifier front-loaded, no filler, and no repetition of schema detail. Efficient and well-structured.

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

Completeness3/5

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

For an eight-parameter, no-output-schema search tool with no annotations, the description is minimal: it explains the primary filter and a use case but does not cover pagination, sorting, or result set behavior. It is adequate as a minimum viable definition but not complete for a tool with this many filter options.

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 description coverage is 100%, so all eight parameters are already documented in the schema, including the subjectCode enumeration examples (1700, 2200, 2700) and the external list link. The description adds no parameter meaning beyond what the schema provides, so the baseline of 3 applies.

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?

States a specific verb (Search) and resource (papers) scoped to a concrete domain concept (ASJC subject area code), and the parenthetical expands the acronym. It is clear and specific, but it does not distinguish this tool from sibling search tools like search_papers or search_papers_advanced, leaving the agent to infer the boundary.

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

Usage Guidelines3/5

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

The phrase 'Useful for domain-specific literature reviews' implies a usage context (discipline-level browsing) but gives no explicit when-to-use/when-not guidance and never names the alternative sibling tools to route between. Usage is implied rather than specified.

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

search_journalsA

Search for journals/serial titles by name. Returns ISSN, publisher info, and links to full metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results (default: 10, max: 200)
queryYesJournal name to search for (e.g., 'Nature', 'IEEE Transactions')
startNoStarting index for pagination (default: 0)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does add useful return context (ISSN, publisher info, metric links), which partially compensates for the lack of an output schema. It says nothing about result ordering, pagination semantics, or auth/rate-limit behavior, which are gaps for a search endpoint.

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?

Two tight sentences: the search action and its scoping come first, the return payload second. There is no redundant restatement of the name or title and nothing that fails to earn its place.

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

Completeness4/5

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

For a 3-parameter search tool with fully documented schema and moderately described return fields, the definition is nearly sufficient to call correctly. It stops short of explaining how results are ordered or how count/start interact, which would matter for iterative paging.

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 description coverage is 100%, with query, count (default/max) and start (pagination) all documented in the schema itself. The description adds only the 'by name' scoping hint, so the baseline 3 for schema-driven parameter meaning is appropriate.

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?

States a specific verb (search) and resource (journals/serial titles) with the matching key (by name), so an agent can immediately tell what it does. It does not, however, differentiate itself from the closely related sibling get_journal_info, leaving the search-vs-lookup boundary implicit.

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

Usage Guidelines3/5

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

Usage is only implied by the word 'search' and the 'by name' constraint; there is no explicit statement of when to reach for this tool rather than get_journal_info or search_papers. No prerequisites, exclusions, or alternative routing are given.

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

search_papersA

Search for academic papers on Scopus by keywords, title, author, or other criteria. Returns a list of matching papers with metadata including title, authors, abstract, citations, DOI, and more. Supports Scopus advanced query syntax like TITLE(), ABS(), AUTHOR(), KEY(), SRCTITLE(), PUBYEAR.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results to return (default: 10, max: 200)
fieldNoComma-separated list of fields to return (optional). If not specified, returns all available fields.
queryYesThe search query. Examples: 'machine learning', 'TITLE(machine learning)', 'AUTHOR(smith)', 'ABS(neural networks) AND PUBYEAR > 2020'
startNoStarting index for pagination (default: 0)
sortByNoSort field: 'relevance', 'date', 'citedby-count', 'pub-name'relevance
yearToNoFilter papers up to this year (e.g., 2024)
yearFromNoFilter papers from this year onwards (e.g., 2020)
sortOrderNoSort order: 'asc' or 'desc'desc

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full burden. It does disclose the return shape (title, authors, abstract, citations, DOI) and that advanced Scopus syntax is accepted, but it is silent on authentication, rate limits, result caps, and pagination behavior for an API-backed search.

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

Conciseness4/5

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

Three sentences, front-loaded with purpose then return value then syntax support. No filler, though the final sentence partially duplicates the query examples already present in the schema.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned metadata fields, which is the key gap it needs to cover. It falls short only on sibling differentiation and operational behavior, which matter for an 8-parameter search tool with a near-duplicate sibling.

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 description coverage is 100%, so the baseline is 3. The description's restatement of query syntax (TITLE(), ABS(), AUTHOR(), KEY(), SRCTITLE(), PUBYEAR) adds a little beyond the schema's own examples, but it says nothing about the pagination, sorting, or field-selection parameters.

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?

States a specific verb and resource ('Search for academic papers on Scopus') plus the searchable dimensions (keywords, title, author, criteria). It is clear on what the tool does, but it never differentiates itself from the sibling 'search_papers_advanced', leaving the agent to guess which of the two search tools to pick.

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

Usage Guidelines3/5

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

Usage is implied by the mention of 'keywords, title, author, or other criteria', which suggests the general-purpose search entry point. However, no when-to-use or when-not-to-use guidance is given, and the closely related 'search_papers_advanced' sibling is not addressed at all.

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

search_papers_advancedB

Structured advanced search combining multiple criteria without needing Scopus query syntax. Build complex searches by specifying author, keywords, journal, affiliation, year range, and document type separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of results (default: 10, max: 200)
startNoStarting index for pagination (default: 0)
authorNoAuthor name (e.g., 'Smith J' or 'lecun')
sortByNoSort fieldrelevance
yearToNoEnd year for date range filter
journalNoJournal or source title (e.g., 'Nature', 'IEEE')
keywordsNoKeywords to search in title, abstract, and keywords
yearFromNoStart year for date range filter
sortOrderNoSort orderdesc
affiliationNoInstitution/affiliation name (e.g., 'Stanford University')
documentTypeNoType of document

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says nothing beyond the fact that it searches -- it omits whether results are paginated, whether it is a read-only operation, what limits apply, or how criteria combine (AND/OR). For an 11-parameter search this leaves meaningful gaps.

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

Conciseness4/5

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

Two tightly written sentences with the value proposition front-loaded and no filler. It is efficient, though the second sentence largely repeats the parameter list already visible in the schema.

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

Completeness3/5

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

Given 11 parameters, no annotations, and no output schema, an agent would benefit from knowing return shape, pagination interplay with start/count, and how multiple criteria are combined. The schema is thorough on inputs, but the description leaves the result-handling and combination behavior to inference.

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 description coverage is 100%, so every parameter already carries its own description and the baseline is 3. The description restates the criteria names already documented in the schema and adds no syntax, format, or combination semantics beyond what the schema provides.

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?

States a specific verb+resource ('structured advanced search') and enumerates the combinable criteria (author, keywords, journal, affiliation, year range, document type), so the agent knows exactly what the tool does. The 'advanced' qualifier implies a distinction from the sibling search_papers, but that sibling is never named, so differentiation remains inferential.

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

Usage Guidelines3/5

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

The phrase 'without needing Scopus query syntax' implies when this is preferable to a raw-syntax search, which is useful context. However, it never names search_papers (or any sibling) as the alternative, nor does it state conditions where a simpler or single-criterion search would be the better choice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv2.0.0
    • First observedget_abstract
    • First observedget_author_by_id
    • First observedget_author_publications
    • First observedget_citation_overview
    • First observedget_citations
    • First observedget_journal_info
    • First observedget_paper_by_doi
    • First observedget_paper_by_id
    • First observedget_references
    • First observedsearch_authors
    • First observedsearch_by_affiliation
    • First observedsearch_by_subject_area
    • First observedsearch_journals
    • First observedsearch_papers
    • First observedsearch_papers_advanced

TDQS

A3.5/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but search_papers and search_papers_advanced overlap in searching papers with different interfaces, and get_paper_by_id may overlap with get_abstract if the former returns abstracts. Descriptions help clarify boundaries, but minor confusion is possible.

Naming Consistency4/5

All tool names use snake_case with consistent get_ and search_ prefixes, following a predictable verb_noun pattern. Minor inconsistency exists between search_by_affiliation/search_by_subject_area and search_papers/search_authors, but this is a small deviation.

Tool Count5/5

15 tools is well-scoped for a Scopus API wrapper, covering search, retrieval, citations, and journals without excessive redundancy. Each tool provides a distinct service, and the count fits the domain's needs.

Completeness4/5

The surface covers paper, author, and journal search and retrieval, plus citations, references, and citation overview. Minor gaps include direct retrieval of author citation lists or journal details by ISSN, but these can be worked around via existing search tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides access to the Elsevier Scopus API, enabling AI assistants to search for academic papers, retrieve detailed abstracts, and look up author profiles. It facilitates bibliometric research and scholarly data analysis through natural language commands.
    5
    77 PyPI
    41
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Scopus to AI assistants for literature discovery. Provides tools for finding papers, experts, citation networks, and analyzing research trends.
    2
    GPL 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to search and retrieve academic papers, author profiles, and citation data from the Scopus database via MCP tools.
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching Elsevier's Scopus database for scientific literature, retrieving abstracts and metadata, and exporting results in RIS or BibTeX format.
    1
    MIT