Skip to main content
Glama
smaniches

Semantic Scholar MCP Server

Semantic Scholar MCP Server

CI codecov PyPI version GitHub Release License: MIT MCP Python 3.10+

A comprehensive 14-tool MCP server for Semantic Scholar academic research workflows. Direct access to 200M+ papers from Semantic Scholar within Claude Desktop.


Installation

# No cloning needed — runs directly from PyPI
uvx s2-mcp-server

Option 2: Claude Code

claude mcp add semantic-scholar -- uvx s2-mcp-server

Option 3: Claude Desktop (Windows)

Add to %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "semantic-scholar": {
      "command": "uvx",
      "args": ["s2-mcp-server"],
      "env": {
        "SEMANTIC_SCHOLAR_API_KEY": "your-key-here"
      }
    }
  }
}

Option 4: Claude Desktop (macOS)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "semantic-scholar": {
      "command": "uvx",
      "args": ["s2-mcp-server"],
      "env": {
        "SEMANTIC_SCHOLAR_API_KEY": "your-key-here"
      }
    }
  }
}

Option 5: pip / From Source

pip install s2-mcp-server
# or
git clone https://github.com/smaniches/semantic-scholar-mcp.git
cd semantic-scholar-mcp && pip install -e .

Note: Get a free API key at semanticscholar.org/product/api. Without a key, you get rate-limited public access (1 req/sec).


Related MCP server: Semantic Scholar MCP Server

Configuration

API Key Options

You can provide your API key in two ways:

  1. Environment Variable (recommended for persistent use):

    export SEMANTIC_SCHOLAR_API_KEY="your-api-key-here"
  2. Per-Request Parameter (overrides env var):

    {
      "api_key": "your-api-key-here"
    }

    Caution: per-request api_key values are part of the tool-call arguments and may be visible in MCP transcripts, client logs, and the LLM's tool-call history depending on the client. For production use, prefer the SEMANTIC_SCHOLAR_API_KEY environment variable. Removal of the per-request parameter is tracked for v1.3.0.

Get a free API key at: https://www.semanticscholar.org/product/api

Claude Desktop Setup

Add to your Claude Desktop config file:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "semantic-scholar": {
      "command": "python",
      "args": ["-m", "semantic_scholar_mcp"],
      "env": {
        "SEMANTIC_SCHOLAR_API_KEY": "your-api-key-here"
      }
    }
  }
}

Then restart Claude Desktop.


Supported ID Formats

The server accepts the following paper identifier formats:

Format

Pattern

Example

Semantic Scholar ID

40-character hex

649def34f8be52c8b66281af98ae884c09aef38b

DOI

DOI:xxx

DOI:10.1038/s41586-021-03819-2

ArXiv

ARXIV:xxx

ARXIV:2106.15928 or ARXIV:2106.15928v2

PubMed

PMID:xxx

PMID:32908142

Corpus ID

CorpusId:xxx

CorpusId:215416146

ACL

ACL:xxx

ACL:P19-1285

URL

URL:xxx

URL:https://arxiv.org/abs/2106.15928


Tools Reference

1. semantic_scholar_search_papers

Search for academic papers with advanced filters.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Search query (supports AND, OR, NOT operators and "phrase search")

year

string

No

Year filter: "2024", "2020-2024", or "2020-"

fields_of_study

string[]

No

Filter by fields: ["Computer Science", "Biology"]

publication_types

string[]

No

Filter by type: ["Review", "JournalArticle"]

open_access_only

boolean

No

Only return open access papers (default: false)

min_citation_count

integer

No

Minimum citation count

limit

integer

No

Max results 1-100 (default: 10)

offset

integer

No

Pagination offset (default: 0)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

Example:

Search for "transformer attention mechanism" papers from 2023 with at least 100 citations

JSON Example:

{
  "query": "transformer attention mechanism",
  "year": "2023",
  "min_citation_count": 100,
  "fields_of_study": ["Computer Science"],
  "limit": 20
}

2. semantic_scholar_get_paper

Get detailed information about a specific paper.

Parameters:

Parameter

Type

Required

Description

paper_id

string

Yes

Paper ID in any supported format

include_citations

boolean

No

Include citing papers (default: false)

include_references

boolean

No

Include referenced papers (default: false)

citations_limit

integer

No

Max citations to return 1-100 (default: 10)

references_limit

integer

No

Max references to return 1-100 (default: 10)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

Example:

Get details for DOI:10.1038/s41586-021-03819-2 including its top 20 citations

JSON Example:

{
  "paper_id": "DOI:10.1038/s41586-021-03819-2",
  "include_citations": true,
  "citations_limit": 20
}

3. semantic_scholar_search_authors

Search for academic authors by name.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Author name to search

limit

integer

No

Max results 1-100 (default: 10)

offset

integer

No

Pagination offset (default: 0)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

Example:

Find author "Yoshua Bengio"

JSON Example:

{
  "query": "Yoshua Bengio",
  "limit": 5
}

4. semantic_scholar_get_author

Get author profile with publications.

Parameters:

Parameter

Type

Required

Description

author_id

string

Yes

Semantic Scholar author ID

include_papers

boolean

No

Include publications (default: true)

papers_limit

integer

No

Max papers to return 1-100 (default: 20)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

Example:

Get author profile for author ID 1741101 with their top 50 publications

JSON Example:

{
  "author_id": "1741101",
  "include_papers": true,
  "papers_limit": 50
}

5. semantic_scholar_recommendations

Get AI-powered paper recommendations based on a seed paper.

Parameters:

Parameter

Type

Required

Description

paper_id

string

Yes

Seed paper ID in any supported format

limit

integer

No

Max recommendations 1-100 (default: 10)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

Example:

Get recommendations based on paper 649def34f8be52c8b66281af98ae884c09aef38b

JSON Example:

{
  "paper_id": "ARXIV:1706.03762",
  "limit": 15
}

6. semantic_scholar_bulk_papers

Retrieve multiple papers in a single request (max 500).

Parameters:

Parameter

Type

Required

Description

paper_ids

string[]

Yes

List of paper IDs (max 500)

response_format

string

No

"markdown" or "json" (default: json)

api_key

string

No

Override environment API key

Example:

Retrieve these papers: DOI:10.1038/nature12373, ARXIV:2106.15928, PMID:32908142

JSON Example:

{
  "paper_ids": [
    "DOI:10.1038/nature12373",
    "ARXIV:2106.15928",
    "PMID:32908142"
  ]
}

7. semantic_scholar_bulk_search

Search papers with sorting and cursor-based pagination for large result sets. Unlike search_papers, supports a sort order and returns a token for paging through all results.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Search query

sort

string

No

Sort order, e.g. "citationCount:desc", "publicationDate:asc"

token

string

No

Continuation token from a previous bulk_search response

year

string

No

Year filter: "2024", "2020-2024", "2020-"

fields_of_study

string[]

No

Filter by fields: ["Computer Science"]

publication_types

string[]

No

Filter by type: ["Review", "JournalArticle"]

min_citation_count

integer

No

Minimum citation count

limit

integer

No

Max results per page 1-1000 (default: 100)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

JSON Example:

{
  "query": "graph neural networks",
  "sort": "citationCount:desc",
  "year": "2020-2024",
  "limit": 100
}

Returns: total result count, the page of papers, and a token for the next page (when more results exist).


8. semantic_scholar_export_citation

Export a citation for a paper in BibTeX format.

Parameters:

Parameter

Type

Required

Description

paper_id

string

Yes

Paper ID in any supported format

format

string

No

Citation format (currently only "bibtex")

api_key

string

No

Override environment API key

JSON Example:

{
  "paper_id": "DOI:10.1038/s41586-021-03819-2",
  "format": "bibtex"
}

Returns: the BibTeX string for the requested paper.


9. semantic_scholar_match_paper

Find the single best paper matching a title string. Returns a numeric matchScore alongside the matched paper.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Paper title to match (1-500 chars)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

JSON Example:

{
  "query": "Attention Is All You Need"
}

Returns: the best-matching paper plus its matchScore, or "No matching paper found." if no match.


10. semantic_scholar_paper_authors

Get full author profiles for a paper's authors (richer than the abbreviated author list returned by get_paper).

Parameters:

Parameter

Type

Required

Description

paper_id

string

Yes

Paper ID in any supported format

limit

integer

No

Max authors to return 1-1000 (default: 100)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

JSON Example:

{
  "paper_id": "ARXIV:1706.03762",
  "limit": 25
}

Returns: the list of full author records for the paper.


11. semantic_scholar_author_batch

Retrieve multiple authors in a single request (max 1000).

Parameters:

Parameter

Type

Required

Description

author_ids

string[]

Yes

List of author IDs (1-1000)

response_format

string

No

"markdown" or "json" (default: json)

api_key

string

No

Override environment API key

JSON Example:

{
  "author_ids": ["1741101", "40348417", "144749327"]
}

Returns: counts of requested / retrieved, the retrieved author records, and a not_found list of IDs the API did not return.


12. semantic_scholar_multi_recommend

Get recommendations using multiple positive (and optional negative) example papers.

Parameters:

Parameter

Type

Required

Description

positive_paper_ids

string[]

Yes

Papers to find similar results for (1-100)

negative_paper_ids

string[]

No

Papers to dissimilate from (0-100)

limit

integer

No

Max recommendations 1-500 (default: 10)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

JSON Example:

{
  "positive_paper_ids": ["ARXIV:1706.03762", "ARXIV:1810.04805"],
  "negative_paper_ids": ["DOI:10.1038/nature14539"],
  "limit": 20
}

Returns: the recommended papers plus an echo of the positive/negative seeds used.


13. semantic_scholar_snippet_search

Search within paper full text and return text snippets with surrounding context. Heavily rate-limited without an API key.

Parameters:

Parameter

Type

Required

Description

query

string

Yes

Search query for paper text (1-500 chars)

paper_ids

string[]

No

Limit search to specific papers (max 100)

year

string

No

Year filter: "2024", "2020-2024", "2020-"

fields_of_study

string[]

No

Filter by fields: ["Computer Science"]

min_citation_count

integer

No

Minimum citation count

limit

integer

No

Max results 1-100 (default: 10)

response_format

string

No

"markdown" or "json" (default: markdown)

api_key

string

No

Override environment API key

JSON Example:

{
  "query": "scaling laws for language models",
  "year": "2022-2024",
  "limit": 20
}

Returns: matching snippets, each with the source paper title, section, and a short text excerpt.


14. semantic_scholar_status

Check server health and API connectivity status.

Parameters: None

Example:

Check Semantic Scholar API status

Response:

{
  "server": "semantic-scholar-mcp",
  "version": "1.2.2",
  "api_key_configured": true,
  "timestamp": "2026-04-06T12:00:00.000000+00:00",
  "api_reachable": true
}

Rate Limits

Tier

Requests/Second

How to Get

No API Key

1 req/sec

Default

Free API Key

1 req/sec

Sign up

Academic Partner

10-100 req/sec

Apply via S2

The server automatically handles rate limiting with:

  • Request serialization to enforce minimum intervals

  • Exponential backoff retry for 429 (rate limit) and 503 (service unavailable) errors

  • Maximum 3 retries with jitter


Architecture

+-----------------+     +----------------------+     +-----------------+
|  Claude Desktop |---->|  semantic-scholar-mcp |---->| Semantic Scholar|
|   (MCP Client)  |<----|     (This Server)     |<----+      API        |
+-----------------+     +----------------------+     +-----------------+
        |                         |                          |
        | stdio (JSON-RPC)        | Your API Key             | HTTPS
        | Local process           | Local machine            | 200M+ papers

Where your API key goes. The MCP server runs locally on your machine and does not store your API key on disk. When the server makes authenticated requests, the key is sent only to api.semanticscholar.org over HTTPS as the x-api-key header that the Semantic Scholar API requires. No telemetry is sent to any third party. See the per-request api_key caution above for how transcript exposure can occur when the parameter is used per-request instead of via the environment variable.


Development

# Clone
git clone https://github.com/smaniches/semantic-scholar-mcp.git
cd semantic-scholar-mcp

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run tests with coverage
pytest --cov=src/semantic_scholar_mcp --cov-report=term-missing

# Type checking
mypy src/

Security

API keys are never persisted to disk by the server. Prefer the SEMANTIC_SCHOLAR_API_KEY environment variable over the per-request api_key tool parameter (see SECURITY.md for details on the transcript-exposure risk). All API communication uses HTTPS to api.semanticscholar.org. See SECURITY.md for vulnerability reporting and the v1.2.x known-limitations list.


License

MIT License - see LICENSE file.


Author

Santiago Maniches


Contributing

Contributions welcome! Please read our Contributing Guidelines.


Support


Available Tools

14 tools
semantic_scholar_author_batchA
Read-onlyIdempotent

Retrieve multiple authors in a single request (max 1000).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the 1000-item limit, which is useful, but it does not disclose response format, error behavior, or partial-failure semantics. It provides modest value beyond annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the verb and includes the key constraint. No wasted words or redundant information.

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 batch retrieval tool with no output schema, the description is minimal but adequate for basic understanding. It does not explain return value structure or error handling, but the max-1000 limit and read-only nature are clear. Given the simplicity of the operation, this is acceptable but not rich enough for a higher score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description does not explicitly document the parameters. The schema itself contains detailed descriptions for author_ids and response_format, but the description merely implies the list of IDs with 'multiple authors' and 'max 1000'. It does not compensate for the low coverage and adds no real semantic value beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve multiple authors') and adds the key constraint 'single request (max 1000)', which distinguishes it from the sibling tool semantic_scholar_get_author. The verb and resource are specific and unambiguous.

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 usage context is only implied by the name and description—it is a batch variant of get_author, but no explicit guidance is given about when to prefer it over repeated single calls or when not to use it. No alternatives are mentioned.

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

semantic_scholar_bulk_papersA
Read-onlyIdempotent

Retrieve multiple papers in a single request (max 500).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds the max 500 limitation but does not disclose potential partial failures, missing IDs, rate limits, or response format. This is acceptable but not rich.

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 sentence that immediately communicates the core purpose and constraint. There is no wasted wording, and it is 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?

The tool is relatively simple, and annotations cover safety, but the description is sparse. With no output schema, the agent lacks information about return values, error behavior, or what happens if any paper ID is invalid. The max 500 is helpful, but more context could be provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not describe any parameter semantics; it only mentions 'multiple papers' which vaguely relates to the paper_ids list. The context signal indicates schema description coverage of 0%, so the description must compensate, but it does not. The schema's internal definitions are not enough per the provided context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Retrieve multiple papers in a single request (max 500).' The verb 'Retrieve' with resource 'multiple papers' is specific, and the max limit distinguishes it from singular fetch (semantic_scholar_get_paper) and search (semantic_scholar_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 Guidelines3/5

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

The description implies usage for fetching multiple papers at once, especially with the 'single request' phrase, but it does not explicitly name alternatives or state when not to use it. It offers only implicit guidance regarding batch retrieval, not clear exclusions.

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

semantic_scholar_export_citationA
Read-onlyIdempotent

Export a citation for a paper in BibTeX format.

Use once you have a paper ID (from semantic_scholar_search_papers or
semantic_scholar_match_paper), e.g. paper_id='DOI:10.18653/v1/N18-3011'.
Returns the BibTeX entry as plain text - there is no response_format
option. Raises an error for an unknown ID, a paper without citation data,
or any format other than 'bibtex'.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, openWorldHint), the description discloses that the output is plain text with no response_format option, and lists specific error triggers: unknown ID, paper without citation data, or non-bibtex format. This is valuable behavioral context not covered by annotations.

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

Conciseness5/5

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

The description is three concise, front-loaded sentences: purpose, usage, behavior. Each sentence earns its place with no redundant wording.

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

Completeness5/5

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

For a simple citation-export tool with one required parameter, the description covers workflow (use after search/match), input requirements, output format, and error scenarios. With annotations covering safety and idempotency, no further context is needed.

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?

The schema already provides detailed descriptions for all parameters, including accepted paper_id formats and the format restriction. The description adds a concrete example ID and reinforces the error on non-bibtex, but doesn't substantially expand parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Export a citation for a paper in BibTeX format.' This clearly distinguishes it from sibling tools like search/get paper. It also states the output format and prerequisite.

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

Usage Guidelines4/5

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

The description explicitly instructs to use it after obtaining a paper ID from semantic_scholar_search_papers or semantic_scholar_match_paper, giving clear upstream context. However, it does not mention exclusions or alternative downstream tools.

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

semantic_scholar_get_authorB
Read-onlyIdempotent

Get author profile with optional publications list.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint. The description adds that publications are optional, which is useful, but it doesn't detail related behaviors such as default limits or response structure. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It states the core action and a key option efficiently, earning its place without unnecessary detail.

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?

There is no output schema, and the description omits important context such as the required author_id, how to control the optional publications (include_papers, papers_limit), and the default response format. For a tool with multiple parameters and no output schema, this is insufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% at the top level, and the description never mentions any parameters. While the nested schema has some parameter descriptions, the tool description itself does not compensate for the low coverage, leaving the agent to infer parameter meaning solely from 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?

The description uses a specific verb 'Get' with a clear resource 'author profile' and notes an optional publications list. This distinguishes it from sibling search tools, though it doesn't explicitly name alternatives. The purpose is clear and unambiguous.

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 like semantic_scholar_search_authors or semantic_scholar_get_paper. It doesn't mention that an author_id is required or that this is for retrieving a specific existing author rather than searching.

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

semantic_scholar_get_paperA
Read-onlyIdempotent

Get paper details. Accepts: S2 ID, DOI:xxx, ARXIV:xxx, PMID:xxx, CorpusId:xxx

Returns title, abstract, authors, venue, year, citation counts, TLDR,
and open-access PDF link for one paper, e.g. paper_id='ARXIV:1706.03762'.
Set include_citations / include_references to also list citing and
referenced papers (fetched in parallel, 1-100 per page each). Paginate
the two directions independently with citations_offset/references_offset;
JSON output exposes citations_page.next and references_page.next.
Results are cached
in memory for 5 minutes; an unknown ID raises a not-found error. Client-side
requests use a 1.0-second unkeyed interval and a conservative 1.1-second
authenticated default; explicitly higher S2-assigned quotas can be configured.
429/502/503 responses retry automatically with backoff. Returns
Markdown by default, response_format='json' for raw JSON. To fetch many
papers at once use semantic_scholar_bulk_papers.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover safety (readOnly/idempotent/openWorld), but the description adds substantial operational context the annotations cannot: a 5-minute in-memory cache, a not-found error on unknown IDs, client-side request intervals (1.0s unkeyed / 1.1s authenticated), automatic retry with backoff on 429/502/503, and Markdown-by-default output. This is exactly the kind of behavior an agent needs to set retry expectations and pacing.

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?

Front-loaded with purpose and accepted IDs, then returns, then flags/pagination, then cache/rate-limit behavior. Dense but well ordered; the rate-limit and backoff detail is somewhat peripheral to selecting or calling the tool but does earn its place for an agent that must pace requests.

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

Completeness5/5

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

No output schema exists, so the description carries the return-value burden and does so: it lists title, abstract, authors, venue, year, citation counts, TLDR, and OA PDF link, plus the shape of paginated citation/reference output (citations_page.next). Error, caching, and format behavior are all covered, leaving nothing an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage reported at 0%, the description compensates well by naming the accepted ID prefixes (DOI/ARXIV/PMID/CorpusId), the 1-100 per-page bounds on citation/reference listings, the independent offsets for each direction, and response_format='json'. It omits only the deprecated api_key parameter and its env-var override behavior, which the schema itself documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get paper details') and immediately enumerates the accepted identifier forms, so the agent knows exactly what this fetches. It also explicitly routes multi-paper retrieval to semantic_scholar_bulk_papers, distinguishing it from the sibling it most closely overlaps with.

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

Usage Guidelines4/5

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

Gives a clear condition for choosing the sibling: 'To fetch many papers at once use semantic_scholar_bulk_papers,' and explains the optional include_citations/include_references toggles. It stops short of stating when to prefer this over search_papers or match_paper, so it's strong but not fully exclusionary.

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

semantic_scholar_match_paperA
Read-onlyIdempotent

Find the single best paper matching a title string. Returns match score.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, openWorldHint, and idempotentHint, covering safety and side-effect expectations. The description adds behavioral context by stating it returns a match score, which is not in the annotations. This is helpful for the agent to know what output to expect. It does not discuss edge cases like no match or ambiguous matches, but the strong annotation coverage reduces the need for further disclosure.

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 two short sentences, front-loaded with the primary intent and return value. Every word is purposeful, with no redundancy or filler. It is an excellent example of concise, structured description.

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?

Given the simplicity of the tool (one required parameter, no output schema, strong annotations), the description covers the essential purpose and return type. It does not explicitly state how to handle edge cases like no match or ambiguous titles, but these are likely predictable for a title-matching tool. The presence of response_format and api_key parameters is handled by the schema, so the description need not repeat them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description provides no parameter information, and schema_description_coverage is 0%. Although the input schema includes rich descriptions (e.g., query is 'Paper title to match'), the rubric requires the description to compensate for low coverage. Since it does not mention any parameters or how to fill them, the description adds no value beyond what the schema already offers. This is a clear gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Find the single best paper matching a title string') and clearly distinguishes itself from sibling tools: it returns a single best match rather than a list (unlike search_papers) and operates on a title string rather than an ID (unlike get_paper). This is concise and unambiguous.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when you have a title string and want the single best matching paper. It does not explicitly name alternatives, but the phrase 'single best paper' contrasts with search tools that return lists, providing clear context. No exclusions are mentioned, but given the straightforward use case, this is sufficient.

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

semantic_scholar_multi_recommendA
Read-onlyIdempotent

Get recommendations using multiple positive and negative example papers.

Use instead of semantic_scholar_recommendations when steering with more
than one example: results resemble positive_paper_ids and are pushed away
from negative_paper_ids. Example:
positive_paper_ids=['ARXIV:1706.03762', 'DOI:10.18653/v1/N19-1423'],
negative_paper_ids=['ARXIV:1409.0473']. Accepts 1-100 positive and up to
100 negative IDs in any supported paper-ID format; malformed IDs raise an
error before any request is made. Returns up to `limit` (1-500, default
10) papers, Markdown by default or response_format='json' for raw JSON.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark the tool as readOnly, openWorld, and idempotent. The description adds valuable behavioral context: results are steered toward positives and away from negatives, malformed IDs raise an error before making requests, and the response format can be markdown or JSON. It stops short of discussing auth or rate limits, but the additional context is substantive.

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 tightly written in four sentences, immediately stating the purpose, followed by usage guidance, an example, parameter ranges, and output format. There is no fluff—every sentence contributes essential information.

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?

Given the complexity of a multi-seed recommendation tool, the description covers the central behavior, parameter constraints, error handling, and return format. It omits the deprecated api_key parameter, but the schema explains it. The tool has no output schema, so the description effectively fills the gap by stating what is returned (papers, markdown or JSON).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all fields, so the baseline is 3. The description enhances parameter understanding by showing an example with specific ID formats, reaffirming the 1-100 positive and 1-100 negative limits, and noting the limit/default/response_format options. This adds practical value beyond the schema's static descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get recommendations using multiple positive and negative example papers.' It immediately distinguishes itself from sibling tool semantic_scholar_recommendations by stating it is for 'more than one example,' making the purpose unmistakable.

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

Usage Guidelines5/5

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

Explicitly directs when to use this tool: 'Use instead of semantic_scholar_recommendations when steering with more than one example.' It also provides a concrete example and clarifies input limits, giving clear guidance on when and how to invoke it.

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

semantic_scholar_paper_authorsA
Read-onlyIdempotent

Get full author profiles for a paper's authors.

Unlike the abbreviated author list embedded in semantic_scholar_get_paper
results, this returns each author's complete profile - affiliations,
h-index, paper and citation counts - plus author IDs usable with
semantic_scholar_get_author. Example: paper_id='DOI:10.18653/v1/N18-3011'.
Authors are returned in listed order (limit 1-1000, default 100). Returns
Markdown by default, response_format='json' for raw JSON.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds valuable behavioral context beyond those annotations: author ordering, limit bounds, default values, and Markdown-vs-JSON output options. No contradiction with annotations.

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

Conciseness5/5

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

The description is compact—three sentences—and front-loaded with the core purpose. Every sentence earns its place by adding either differentiation, parameter detail, or output behavior, with no filler.

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 read-only tool with one required parameter and no output schema, the description adequately covers return contents, output format, author ordering, limit behavior, and ID formats. Minor omissions like error handling or rate limits are acceptable given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although context reports low schema description coverage, the description adds meaningful parameter context: a concrete paper_id format example, the 1-1000 limit with default 100, and response_format options. The schema also provides detailed per-parameter descriptions, so the two complement each other well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb and resource: 'Get full author profiles for a paper's authors.' It also explicitly distinguishes itself from the abbreviated author list in semantic_scholar_get_paper and connects to semantic_scholar_get_author via returned author IDs.

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

Usage Guidelines4/5

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

It provides a clear contrast with semantic_scholar_get_paper, implying when to use this tool over that one, and includes a concrete example paper_id. However, it does not explicitly enumerate exclusion cases or alternative tools for related scenarios, so it stops short of full when/when-not guidance.

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

semantic_scholar_recommendationsA
Read-onlyIdempotent

Get paper recommendations based on a seed paper.

Provide one paper you already know (e.g. paper_id='ARXIV:1706.03762') and
receive up to `limit` similar papers. from_pool picks the candidate pool:
'recent' (default, recently published papers from all fields) or 'all-cs'
(computer-science papers of any age). When steering with several positive
or negative examples, use semantic_scholar_multi_recommend instead. An
unknown seed ID raises a not-found error. Client-side requests use a
1.0-second unkeyed interval and a conservative 1.1-second authenticated
default; explicitly higher S2-assigned quotas can be configured. 429/502/503
responses retry automatically with backoff. Returns Markdown by default,
response_format='json' for raw JSON.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.9/5.0
Behavior5/5

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

Given the readOnlyHint and idempotentHint annotations, the description still adds significant new context: error handling (unknown seed raises not-found), rate limiting details (1.0-second unkeyed interval, 1.1-second authenticated default, configurable quotas), automatic retries on 429/502/503 with backoff, and return format defaults. This is exactly the kind of operational context annotations cannot convey.

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 front-loaded with the core purpose, then branches into options, alternatives, error behavior, and operational details. Every sentence adds concrete value; no fluff.

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

Completeness5/5

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

For a tool with no output schema, the description covers all critical aspects: what it returns (up to limit similar papers in Markdown or JSON), how to control scope (from_pool), when to use an alternative, error conditions, and rate-limit/retry behavior. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (0% per context signals, though the schema itself does include some descriptions), so the description must carry the burden. It explains the purpose of paper_id, from_pool, response_format, and mentions limit. It doesn't fully describe the api_key parameter or the exact format for paper_id, but provides enough functional meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get paper recommendations based on a seed paper') and clarifies scope immediately. It also distinguishes itself from the sibling semantic_scholar_multi_recommend by explaining that multi_recommend should be used for steering with several examples.

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

Usage Guidelines5/5

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

Explicitly tells the agent when to use this tool (one seed paper) vs the alternative (semantic_scholar_multi_recommend for multiple positive/negative examples). It also explains the effect of from_pool options, leaving little to inference.

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

semantic_scholar_search_authorsA
Read-onlyIdempotent

Search for academic authors by name.

Example: query='Yoshua Bengio'. Several distinct researchers can share a
name, so confirm identity with semantic_scholar_get_author (affiliations,
h-index, publications) before attributing work; to list the authors of a
specific paper use semantic_scholar_paper_authors instead. Page with
offset/limit (max 100 per call, default 10). Returns Markdown by default,
response_format='json' for raw JSON.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent behavior, so the description adds value by disclosing Markdown default output, response_format='json' option, and pagination limits (max 100, default 10). It also warns about name ambiguity, offering extra operational context beyond the annotations.

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

Conciseness5/5

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

The description is compact and well-structured: it opens with the core purpose, then supplies an example, caveats, alternatives, and paging/output details. Every sentence carries load, with no fluff.

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?

The description covers primary usage, pagination, output formats, and points to relevant sibling tools. It does not detail the response structure, but given the schema and annotations, it is sufficient for selecting and invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already contains descriptive text for each parameter, so the description's example and mention of offset/limit and response_format add only modest value. The concrete query example and clarification of default response format help, but the schema does most of the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Search for academic authors by name' with a concrete example ('Yoshua Bengio'). It distinguishes from sibling tools by explicitly naming semantic_scholar_paper_authors for a different use case (listing authors of a specific paper).

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

Usage Guidelines5/5

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

The description clearly says when to use this tool (search by name) and when to use alternatives: semantic_scholar_get_author for confirming identity and semantic_scholar_paper_authors for listing paper authors. It also provides pagination guidance and response format selection, fully covering usage context.

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

semantic_scholar_search_papersA
Read-onlyIdempotent

Search for academic papers.

Relevance-ranked plain-text search over 200M+ papers, with year,
field-of-study, publication-type, open-access, and citation-count filters.
The query is sent unchanged; boolean and quoted-phrase syntax is
documented only for semantic_scholar_bulk_search. Page with
offset/limit (max 100 per call). For sorted or very large result sets
use semantic_scholar_bulk_search; to search inside paper full text use
semantic_scholar_snippet_search; to resolve one known title use
semantic_scholar_match_paper. Returns Markdown by default,
response_format='json' for raw JSON.
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: relevance ranking, the 200M+ corpus, per-call page cap of 100, unchanged query forwarding, and default Markdown vs output. Minor gaps remain (no rate-limit or auth notes), so a 4 rather than a 5.

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?

Front-loaded with the core action, then filters, then query-syntax caveat, then routing to siblings, then output format. Dense but every sentence carries decision-relevant information; no filler.

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

Completeness5/5

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

No output schema exists, and the description covers the return contract ('Returns Markdown by default, response_format=json for raw JSON'). Combined with annotations carrying the safety profile and the description covering pagination and routing, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Reported schema description coverage is 0% at the top level, yet the description enumerates the filter surface (year, field-of-study, publication-type, open-access, citation-count) and explains offset/limit paging and response_format. It does not mention the deprecated api_key parameter, but it compensates well for the coverage gap on the parameters that matter for search behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Search for academic papers') and immediately qualifies the mechanism ('relevance-ranked plain-text search over 200M+ papers'). It also names the sibling it is not (bulk_search, snippet_search, match_paper), so an agent can distinguish it from alternatives without opening a schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: bulk_search for sorted or very large result sets, snippet_search for full text, match_paper for a known title. It also states the query is forwarded unchanged and that boolean/phrase syntax belongs to bulk_search, which is a precise when-to-use-not constraint.

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

semantic_scholar_statusA
Read-onlyIdempotent

Check server health, API connectivity, and key status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile with readOnlyHint, openWorldHint, and idempotentHint, which lower the burden. The description adds value by specifying the exact components checked (server health, API connectivity, key status), providing more detail than a generic 'check status.' It does not disclose return format or potential error conditions, but the annotations handle the critical safety aspects.

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, direct sentence that immediately conveys the tool's purpose without any unnecessary words or repetition. It is front-loaded and every word contributes meaning.

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?

Given the tool's simplicity (no parameters, no output schema), the description covers the core functionality well by listing three specific status areas. However, it does not describe the response structure, which could be useful for an agent deciding how to interpret the result. Still, for a low-complexity tool with strong annotations, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is trivially complete. With no parameters to describe, the baseline for this dimension is 4, and the description does not need to add parameter-specific information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Check server health, API connectivity, and key status.' This clearly distinguishes it from the sibling tools, which are all focused on searching or retrieving papers/authors. There is no ambiguity about the tool's role as a status/health check.

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 does not explicitly state when to use this tool versus alternatives, but the sibling context makes it obvious that this is the only status-related tool. The usage is implied rather than directly stated, and there is no guidance on prerequisites or scenarios where this should be called (e.g., before other API calls).

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. 2 tool updatesv1.2.18
    • Changedsemantic_scholar_bulk_search2 fields changed
      • changedInput schema / $defs / BulkSearchInput / properties / limit / description
        Previous value: -"Max results per page (1-1000)"New value: +"Requested page size (1-1000), forwarded to the API. The observed bulk endpoint ignores it and returns up to 1000 papers per page; the whole page is returned (never truncated) so the continuation token skips nothing"
      • changedInput schema / $defs / BulkSearchInput / properties / query / description
        Previous value: -"Search query"New value: +"Search query. The bulk endpoint documents boolean syntax: + (AND), | (OR), - (NOT), \"quoted phrase\", * (prefix), ( ) grouping, ~N (edit distance / phrase slop), e.g. '\"graph neural network\" + drug'"
    • Changedsemantic_scholar_search_papers1 field changed
      • changedInput schema / $defs / PaperSearchInput / properties / query / description
        Previous value: -"Search query, e.g. 'protein language models'. Supports AND, OR, NOT operators and quoted phrases: '\"graph neural network\" AND drug'"New value: +"Plain-text search query, e.g. 'protein language models'. Semantic Scholar documents no special query syntax for this endpoint; the query is forwarded unchanged. For boolean/phrase syntax use semantic_scholar_bulk_search"
  2. 1 tool updatev1.2.17
    • Changedsemantic_scholar_get_paper2 fields changed
      • addedInput schema / $defs / PaperDetailsInput / properties / citations_offset
        Added value: +{
        +  "default": 0,
        +  "description": "Pagination offset for citing papers (default 0)",
        +  "minimum": 0,
        +  "title": "Citations Offset",
        +  "type": "integer"
        +}
      • addedInput schema / $defs / PaperDetailsInput / properties / references_offset
        Added value: +{
        +  "default": 0,
        +  "description": "Pagination offset for referenced papers (default 0)",
        +  "minimum": 0,
        +  "title": "References Offset",
        +  "type": "integer"
        +}
  3. 14 tool updatesv1.2.13
    • Changedsemantic_scholar_author_batch1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_author_batchOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_bulk_papers1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_bulk_papersOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_bulk_search1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "bulk_searchOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_export_citation1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "export_citationOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_get_author1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_author_detailsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_get_paper1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_paper_detailsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_match_paper1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "match_paperOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_multi_recommend1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "multi_recommendOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_paper_authors1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_paper_authorsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_recommendations1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "get_recommendationsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_search_authors1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_authorsOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_search_papers1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "search_papersOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_snippet_search1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "snippet_searchOutput",
        -  "type": "object"
        -}New value: +null
    • Changedsemantic_scholar_status1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "properties": {
        -    "result": {
        -      "title": "Result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "result"
        -  ],
        -  "title": "server_statusOutput",
        -  "type": "object"
        -}New value: +null
  4. 7 tool updatesv1.2.12
    • Changedsemantic_scholar_export_citation2 fields changed
      • changedInput schema / $defs / CitationExportInput / properties / format / description
        Previous value: -"Citation format (currently only 'bibtex' supported)"New value: +"Citation format (currently only 'bibtex' supported; anything else errors)"
      • changedInput schema / $defs / CitationExportInput / properties / paper_id / description
        Previous value: -"Paper ID: S2 ID, DOI:xxx, ARXIV:xxx, PMID:xxx, CorpusId:xxx"New value: +"Paper ID: a 40-character S2 hex ID ('649def34f8be52c8b66281af98ae884c09aef38b'), 'DOI:10.18653/v1/N18-3011', 'ARXIV:1706.03762', 'PMID:19872477', 'CorpusId:215416146', 'ACL:W12-3903', or 'URL:https://...'"
    • Changedsemantic_scholar_get_paper5 fields changed
      • changedInput schema / $defs / PaperDetailsInput / properties / citations_limit / description
        Previous value: -"Max citations to return"New value: +"Max citing papers returned when include_citations=true (1-100, default 10)"
      • changedInput schema / $defs / PaperDetailsInput / properties / include_citations / description
        Previous value: -"Include citing papers"New value: +"Also list papers that cite this one (default false)"
      • changedInput schema / $defs / PaperDetailsInput / properties / include_references / description
        Previous value: -"Include referenced papers"New value: +"Also list papers this one cites (default false)"
      • changedInput schema / $defs / PaperDetailsInput / properties / paper_id / description
        Previous value: -"Paper ID: S2 ID, DOI:xxx, ARXIV:xxx, PMID:xxx, CorpusId:xxx"New value: +"Paper ID: a 40-character S2 hex ID ('649def34f8be52c8b66281af98ae884c09aef38b'), 'DOI:10.18653/v1/N18-3011', 'ARXIV:1706.03762', 'PMID:19872477', 'CorpusId:215416146', 'ACL:W12-3903', or 'URL:https://...'"
      • changedInput schema / $defs / PaperDetailsInput / properties / references_limit / description
        Previous value: -"Max references to return"New value: +"Max referenced papers returned when include_references=true (1-100, default 10)"
    • Changedsemantic_scholar_multi_recommend3 fields changed
      • changedInput schema / $defs / MultiRecommendInput / properties / limit / description
        Previous value: -"Max recommendations"New value: +"Max recommendations (1-500, default 10)"
      • changedInput schema / $defs / MultiRecommendInput / properties / negative_paper_ids / description
        Previous value: -"Papers to steer recommendations away from"New value: +"Up to 100 papers to steer away from: results similar to these are down-ranked (same ID formats as positive_paper_ids; default none)"
      • changedInput schema / $defs / MultiRecommendInput / properties / positive_paper_ids / description
        Previous value: -"Papers to find similar results for"New value: +"1-100 example papers the recommendations should resemble; each ID may be a 40-character S2 hex ID ('649def34f8be52c8b66281af98ae884c09aef38b'), 'DOI:10.18653/v1/N18-3011', 'ARXIV:1706.03762', 'PMID:19872477', 'CorpusId:215416146', 'ACL:W12-3903', or 'URL:https://...'"
    • Changedsemantic_scholar_paper_authors2 fields changed
      • changedInput schema / $defs / PaperAuthorsInput / properties / limit / description
        Previous value: -"Max authors to return"New value: +"Max authors to return, in listed author order (1-1000, default 100)"
      • changedInput schema / $defs / PaperAuthorsInput / properties / paper_id / description
        Previous value: -"Paper ID: S2 ID, DOI:xxx, ARXIV:xxx, PMID:xxx, CorpusId:xxx"New value: +"Paper ID: a 40-character S2 hex ID ('649def34f8be52c8b66281af98ae884c09aef38b'), 'DOI:10.18653/v1/N18-3011', 'ARXIV:1706.03762', 'PMID:19872477', 'CorpusId:215416146', 'ACL:W12-3903', or 'URL:https://...'"
    • Changedsemantic_scholar_recommendations3 fields changed
      • changedInput schema / $defs / PaperRecommendationsInput / properties / from_pool / description
        Previous value: -"Paper pool: 'recent' (default) or 'all-cs'"New value: +"Candidate pool: 'recent' (default; recently published papers from all fields) or 'all-cs' (computer-science papers of any age)"
      • changedInput schema / $defs / PaperRecommendationsInput / properties / limit / description
        Previous value: -"Max recommendations"New value: +"Max recommendations (1-100, default 10)"
      • changedInput schema / $defs / PaperRecommendationsInput / properties / paper_id / description
        Previous value: -"Seed paper ID for recommendations"New value: +"Seed paper the recommendations should resemble: a 40-character S2 hex ID ('649def34f8be52c8b66281af98ae884c09aef38b'), 'DOI:10.18653/v1/N18-3011', 'ARXIV:1706.03762', 'PMID:19872477', 'CorpusId:215416146', 'ACL:W12-3903', or 'URL:https://...'"
    • Changedsemantic_scholar_search_authors3 fields changed
      • changedInput schema / $defs / AuthorSearchInput / properties / limit / description
        Previous value: -"Max results"New value: +"Max results per page (1-100, default 10)"
      • changedInput schema / $defs / AuthorSearchInput / properties / offset / description
        Previous value: -"Pagination offset"New value: +"Pagination offset: pass the previous offset + limit to fetch the next page (default 0)"
      • changedInput schema / $defs / AuthorSearchInput / properties / query / description
        Previous value: -"Author name to search"New value: +"Author name to search, e.g. 'Yoshua Bengio'; partial names also match"
    • Changedsemantic_scholar_search_papers3 fields changed
      • changedInput schema / $defs / PaperSearchInput / properties / limit / description
        Previous value: -"Max results (1-100)"New value: +"Max results per page (1-100, default 10); use semantic_scholar_bulk_search for result sets beyond 1000"
      • changedInput schema / $defs / PaperSearchInput / properties / offset / description
        Previous value: -"Pagination offset"New value: +"Pagination offset: pass the previous offset + limit to fetch the next page (default 0)"
      • changedInput schema / $defs / PaperSearchInput / properties / query / description
        Previous value: -"Search query"New value: +"Search query, e.g. 'protein language models'. Supports AND, OR, NOT operators and quoted phrases: '\"graph neural network\" AND drug'"
  5. 1 tool updatev1.2.11
    • Changedsemantic_scholar_multi_recommend1 field changed
      • changedInput schema / $defs / MultiRecommendInput / properties / negative_paper_ids / description
        Previous value: -"Papers to dissimilar from"New value: +"Papers to steer recommendations away from"
  6. 13 tool updatesv1.2.6
    • Changedsemantic_scholar_author_batch2 fields changed
      • addedInput schema / $defs / AuthorBatchInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / AuthorBatchInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_bulk_papers2 fields changed
      • addedInput schema / $defs / BulkPaperInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / BulkPaperInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_bulk_search2 fields changed
      • addedInput schema / $defs / BulkSearchInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / BulkSearchInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_export_citation2 fields changed
      • addedInput schema / $defs / CitationExportInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / CitationExportInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_get_author2 fields changed
      • addedInput schema / $defs / AuthorDetailsInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / AuthorDetailsInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_get_paper2 fields changed
      • addedInput schema / $defs / PaperDetailsInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / PaperDetailsInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_match_paper2 fields changed
      • addedInput schema / $defs / PaperMatchInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / PaperMatchInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_multi_recommend2 fields changed
      • addedInput schema / $defs / MultiRecommendInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / MultiRecommendInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_paper_authors2 fields changed
      • addedInput schema / $defs / PaperAuthorsInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / PaperAuthorsInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_recommendations2 fields changed
      • addedInput schema / $defs / PaperRecommendationsInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / PaperRecommendationsInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_search_authors2 fields changed
      • addedInput schema / $defs / AuthorSearchInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / AuthorSearchInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_search_papers2 fields changed
      • addedInput schema / $defs / PaperSearchInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / PaperSearchInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."
    • Changedsemantic_scholar_snippet_search2 fields changed
      • addedInput schema / $defs / SnippetSearchInput / properties / api_key / deprecated
        Added value: +true
      • changedInput schema / $defs / SnippetSearchInput / properties / api_key / description
        Previous value: -"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var)"New value: +"API key (overrides SEMANTIC_SCHOLAR_API_KEY env var). Deprecated: prefer the environment variable. Removal planned for v2.0.0."

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource and action, and the descriptions explicitly disambiguate the closest pairs: search_papers vs bulk_search (relevance vs sorted/large), recommendations vs multi_recommend (one vs many seeds), and search_authors vs get_author vs paper_authors. Cross-references like 'use X instead of Y' make misselection unlikely.

Naming Consistency4/5

All names use the semantic_scholar_ prefix and snake_case, which is highly predictable. There are minor deviations from a strict verb_noun pattern (status, recommendations, paper_authors, author_batch), but the naming remains readable and consistent overall.

Tool Count5/5

14 tools is well-scoped for a research API client, covering search, retrieval, authors, recommendations, and citation export without redundancy. Each tool earns its place with a clear, non-overlapping capability.

Completeness4/5

The surface covers core read-only workflows: search (regular, bulk, snippet, title match), paper retrieval (single and bulk), author lookup (search, get, paper authors, batch), recommendations (single and multi), and BibTeX export. Minor gaps exist, such as no dedicated venue/dataset tools or full-text retrieval beyond snippets, but agents can work around these.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and retrieving academic paper metadata from Semantic Scholar, including paper details, citations, and author information.
    20
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables access to academic paper data, author profiles, and citation networks through the Semantic Scholar API, supporting paper search, batch retrieval, citation/reference tracking, author lookup, and recommendations.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables searching for academic papers, authors, and citation networks through the Semantic Scholar API. Supports full-text and title search, batch lookups, citation and reference tracking, author profiles, and paper recommendations.
    -