MCP-scopus
Allows searching and retrieving academic papers from the Scopus database, providing tools for paper search, author information, citation analysis, and journal metrics.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-scopusFind recent papers on deep learning for natural language processing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-Scopus
An MCP (Model Context Protocol) server for searching academic papers on Scopus - helping AI assistants write papers without hallucinating citations.
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
Institution & Domain Search
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
Node.js 18+ (required)
A Scopus API Key (free for academic use)
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 testStep 2: Get Scopus API Key
Create a free account
Apply for API access
Select "Scopus Search API"
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)
Option A: Direct Node.js (Recommended)
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 |
|
macOS |
|
Linux |
|
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"
}
}
}
}Why This Method is Recommended
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-scopusClaude 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 containerUsage 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 = 2024Or 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 by query with filters and year range |
| Structured multi-field search (author, journal, affiliation, keywords, year, doc type) |
| Get paper details by Scopus ID |
| Get paper details by DOI (full metadata) |
| Get paper abstract |
| Search for authors |
| Get author profile with co-authors |
| List author's papers |
| Get citing papers |
| Get paper's references |
| Year-by-year citation breakdown |
| Journal metrics: CiteScore, SJR, SNIP |
| Search journals by name |
| Search by institution (with year filter) |
| 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 suiteBoth 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:httpProject 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.mdTroubleshooting
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-scopusLicense
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Model Context Protocol by Anthropic
Scopus API by Elsevier
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 toolsget_abstractB
Retrieve the abstract of a specific paper using its Scopus ID.
| Name | Required | Description | Default |
|---|---|---|---|
| scopusId | Yes | The Scopus ID of the paper |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| authorId | Yes | The Scopus Author ID. Examples: '57217123456' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 25, max: 200) | |
| start | No | Starting index for pagination (default: 0) | |
| sortBy | No | Sort by: 'date', 'citedby-count' | date |
| authorId | Yes | The Scopus Author ID | |
| sortOrder | No | Sort order: 'asc' or 'desc' | desc |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scopusId | Yes | The Scopus ID of the paper |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 20, max: 200) | |
| start | No | Starting index for pagination (default: 0) | |
| scopusId | Yes | The Scopus ID of the paper to get citations for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| issn | Yes | The ISSN of the journal (e.g., '0013063X') |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes | The DOI of the paper. Examples: '10.1016/j.example.2023.01.001' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| field | No | Comma-separated list of fields to return (optional) | |
| scopusId | Yes | The Scopus ID or EID of the paper. Examples: '2-s2.0-85123456789', '85123456789' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 20, max: 200) | |
| start | No | Starting index for pagination (default: 0) | |
| scopusId | Yes | The Scopus ID of the paper to get references for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 10, max: 200) | |
| query | Yes | Author name to search for. Examples: 'Smith J', 'John Smith' | |
| start | No | Starting index for pagination (default: 0) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 10) | |
| start | No | Starting index for pagination (default: 0) | |
| yearTo | No | Filter papers up to this year | |
| yearFrom | No | Filter papers from this year onwards | |
| affiliationName | Yes | Name of the institution to search for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results (default: 10, max: 200) | |
| start | No | Starting index for pagination (default: 0) | |
| sortBy | No | Sort field | relevance |
| yearTo | No | Filter papers up to this year | |
| keywords | No | Additional keywords to narrow the search within the subject area | |
| yearFrom | No | Filter papers from this year onwards | |
| sortOrder | No | Sort order | desc |
| subjectCode | Yes | ASJC 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results (default: 10, max: 200) | |
| query | Yes | Journal name to search for (e.g., 'Nature', 'IEEE Transactions') | |
| start | No | Starting index for pagination (default: 0) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (default: 10, max: 200) | |
| field | No | Comma-separated list of fields to return (optional). If not specified, returns all available fields. | |
| query | Yes | The search query. Examples: 'machine learning', 'TITLE(machine learning)', 'AUTHOR(smith)', 'ABS(neural networks) AND PUBYEAR > 2020' | |
| start | No | Starting index for pagination (default: 0) | |
| sortBy | No | Sort field: 'relevance', 'date', 'citedby-count', 'pub-name' | relevance |
| yearTo | No | Filter papers up to this year (e.g., 2024) | |
| yearFrom | No | Filter papers from this year onwards (e.g., 2020) | |
| sortOrder | No | Sort order: 'asc' or 'desc' | desc |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results (default: 10, max: 200) | |
| start | No | Starting index for pagination (default: 0) | |
| author | No | Author name (e.g., 'Smith J' or 'lecun') | |
| sortBy | No | Sort field | relevance |
| yearTo | No | End year for date range filter | |
| journal | No | Journal or source title (e.g., 'Nature', 'IEEE') | |
| keywords | No | Keywords to search in title, abstract, and keywords | |
| yearFrom | No | Start year for date range filter | |
| sortOrder | No | Sort order | desc |
| affiliation | No | Institution/affiliation name (e.g., 'Stanford University') | |
| documentType | No | Type of document |
TDQS
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.
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.
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.
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.
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.
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.
15 tool updates
v2.0.0- First observed
get_abstract - First observed
get_author_by_id - First observed
get_author_publications - First observed
get_citation_overview - First observed
get_citations - First observed
get_journal_info - First observed
get_paper_by_doi - First observed
get_paper_by_id - First observed
get_references - First observed
search_authors - First observed
search_by_affiliation - First observed
search_by_subject_area - First observed
search_journals - First observed
search_papers - First observed
search_papers_advanced
TDQS
Scored across 15 tools
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.
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.
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.
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
Related MCP Connectors
Search 340M+ academic papers — citation graphs, semantic similarity, and AI literature reviews.
AI research grounded in 300M scientific works — every citation a verifiable DOI.
Academic paper search, scientific literature, citation analysis, arXiv & semantic related-work.
Ground answers in scientific literature. Search full text, evaluate trust, access full-text articles
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides 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.577 PyPI41MIT
- AlicenseNot gradedqualityDmaintenanceConnects Scopus to AI assistants for literature discovery. Provides tools for finding papers, experts, citation networks, and analyzing research trends.2GPL 2.0
- AlicenseAqualityCmaintenanceEnables AI agents to search and retrieve academic papers, author profiles, and citation data from the Scopus database via MCP tools.7MIT
- AlicenseNot gradedqualityCmaintenanceEnables searching Elsevier's Scopus database for scientific literature, retrieving abstracts and metadata, and exporting results in RIS or BibTeX format.1MIT