# io.github.MCPServings/paper-mcp (remote · latex-tools.online)

Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.

- Trust score: 64/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `latex-tools.online`: 64/100 (this document), [markdown](https://verifymcp.io/servers/mcpservings-paper-mcp/latex-tools.md), [page](https://verifymcp.io/servers/mcpservings-paper-mcp/latex-tools)

## Channel facts

- Endpoint: `https://latex-tools.online/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.5.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 41 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 3588 tokens (~87/item across 41 items; 41 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http mcpservings-paper-mcp https://latex-tools.online/mcp
```

### Codex

```toml
[mcp_servers.mcpservings-paper-mcp]
url = "https://latex-tools.online/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcpservings-paper-mcp": {
      "type": "remote",
      "url": "https://latex-tools.online/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mcpservings-paper-mcp --url https://latex-tools.online/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  mcpservings-paper-mcp:
    url: "https://latex-tools.online/mcp"
```

### Other

```json
{
  "mcpServers": {
    "mcpservings-paper-mcp": {
      "type": "http",
      "url": "https://latex-tools.online/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 62, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 61, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 59, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 58)

First indexed and scored.

## MCP tools (41)

### `search_papers` (~68 tokens)

Search academic papers. Returns normalized hits with a short abstract preview; call get_paper for the full record.

Input parameters:

- `max_results` (integer)
- `query` (string, required)
- `sort_by` (string)
- `source` (string)
- `start` (integer)

### `search_all` (~139 tokens)

Aggregated search across arXiv, Semantic Scholar and OpenAlex at once. Fans out concurrently, de-duplicates the same work across corpora (by DOI or title) and re-ranks with Reciprocal Rank Fusion, so papers found by several sources rank highest. Each hit lists which `sources` found it and an `ids` map ({source: id}) you can pass to get_paper / read_paper / the citation tools. Prefer this over search_papers for a broad lookup.

Input parameters:

- `max_results` (integer)
- `per_source` (integer)
- `query` (string, required)
- `sources` (string)

### `search_medical` (~184 tokens)

Evidence-graded MEDICAL literature search (PubMed + Europe PMC). Unlike search_all (generic, ranks high-cited reviews/guidelines above trials), this filters by research type via PubMed Publication-Type tags and re-ranks by the evidence pyramid (meta-analysis / systematic review > RCT > cohort > ...), so the actual clinical trials surface first. Open-access full text is pulled from Europe PMC by PMID. `query` should be English keyword/boolean text (PubMed maps it); do natural-language/multilingual understanding upstream. Returns hits with pmid/doi/study_type/evidence_level/citations/abstract and, when open-access, fulltext.

Input parameters:

- `fetch_fulltext` (boolean)
- `max_results` (integer)
- `query` (string, required)
- `study_types` (string)
- `year_from` (integer)

### `get_paper` (~37 tokens)

Fetch one paper by id, with full abstract and PDF link.

Input parameters:

- `paper_id` (string, required)
- `source` (string)

### `search_by_author` (~48 tokens)

Find papers by a specific author, newest first.

Input parameters:

- `author` (string, required)
- `max_results` (integer)
- `source` (string)
- `start` (integer)

### `list_recent` (~49 tokens)

List the latest papers in a subject category, newest first.

Input parameters:

- `category` (string, required)
- `max_results` (integer)
- `source` (string)
- `start` (integer)

### `list_categories` (~25 tokens)

List common subject category codes for filtering/recent.

Input parameters:

- `source` (string)

### `read_paper` (~96 tokens)

Read a paper's full text. format='markdown' (default, body with formulas as $LaTeX$), 'html' (raw LaTeXML HTML), or 'latex' (the original LaTeX manuscript from the e-print source). arXiv only; id like 2401.01234.

Input parameters:

- `format` (string)
- `paper_id` (string, required)
- `source` (string)

### `list_paper_sources` (~16 tokens)

List available paper corpora.

### `recognize_formula` (~87 tokens)

Recognize a math formula from an image and return LaTeX. Provide image_url (downloaded server-side) OR image_base64. model: deepseek-ocr (default), paddleocr-vl, or texify. Returns {latex, model, elapsed_ms}.

Input parameters:

- `image_base64` (string)
- `image_url` (string)
- `model` (string)

### `recognize_table` (~83 tokens)

Recognize a table from an image and return LaTeX tabular code. Provide image_url OR image_base64. model: deepseek-ocr (default), paddleocr-vl, or texify. Returns {latex, model, elapsed_ms}.

Input parameters:

- `image_base64` (string)
- `image_url` (string)
- `model` (string)

### `list_ocr_models` (~22 tokens)

List the OCR models available for recognize_formula / recognize_table.

### `lint_latex` (~61 tokens)

Lint a LaTeX snippet: report errors and return an auto-fixed version. Input `code` (the LaTeX source). Returns {errors, fixed_code, summary_en, summary_zh, elapsed_ms}.

Input parameters:

- `code` (string, required)

### `extract_pdf` (~169 tokens)

Extract a PDF to clean Markdown/LaTeX text via MinerU (great for papers behind no open-access full text — give the user's PDF and get readable text back). Provide pdf_url (downloaded server-side, SSRF-guarded) OR pdf_base64. formula/table toggle math/table reconstruction. Returns {task_id, status, cached, content, chars}: a recently-seen (cached) or small PDF comes back with `content` in one call; a fresh PDF (MinerU is GPU-heavy, minutes) returns status='running' + a task_id — then call extract_pdf_result(task_id) to fetch the text.

Input parameters:

- `formula` (boolean)
- `pdf_base64` (string)
- `pdf_url` (string)
- `table` (boolean)

### `extract_pdf_result` (~75 tokens)

Fetch the result of an extract_pdf job by task_id. Returns {task_id, status, content, chars}: `content` is the extracted text once status='done'; while still 'running' content is null — call again shortly. Results expire server-side, so fetch reasonably soon.

Input parameters:

- `task_id` (string, required)

### `get_paper_citations` (~66 tokens)

Semantic Scholar: papers that CITE this one (forward citation graph). id accepts S2 id / DOI: / ARXIV: / CorpusId:.

Input parameters:

- `max_results` (integer)
- `paper_id` (string, required)
- `start` (integer)

### `get_paper_references` (~63 tokens)

Semantic Scholar: papers this one REFERENCES (its bibliography). id accepts S2 id / DOI: / ARXIV: / CorpusId:.

Input parameters:

- `max_results` (integer)
- `paper_id` (string, required)
- `start` (integer)

### `get_paper_authors` (~52 tokens)

Semantic Scholar: the authors of a paper (with h-index, paper/citation counts).

Input parameters:

- `max_results` (integer)
- `paper_id` (string, required)
- `start` (integer)

### `match_paper_title` (~36 tokens)

Semantic Scholar: find the single paper whose title best matches the given text (exact-match lookup).

Input parameters:

- `title` (string, required)

### `autocomplete_papers` (~32 tokens)

Semantic Scholar: autocomplete paper titles for a partial query (fast type-ahead).

Input parameters:

- `query` (string, required)

### `search_papers_bulk` (~144 tokens)

Semantic Scholar: bulk paper search (up to 1000 hits, sortable e.g. 'citationCount:desc' or 'publicationDate:desc', with a continuation token). Filters: fields_of_study, year (e.g. '2020-2024'), venue, publication_types, open_access_pdf.

Input parameters:

- `fields_of_study` (string)
- `max_results` (integer)
- `open_access_pdf` (boolean)
- `publication_types` (string)
- `query` (string, required)
- `sort` (string)
- `token` (string)
- `venue` (string)
- `year` (string)

### `get_papers_batch` (~49 tokens)

Semantic Scholar: fetch many papers at once by id (S2/DOI:/ARXIV:/CorpusId:), up to ~500 per call.

Input parameters:

- `ids` (array, required)

### `search_authors` (~51 tokens)

Semantic Scholar: search for authors by name; returns profiles with h-index and paper/citation counts.

Input parameters:

- `max_results` (integer)
- `query` (string, required)
- `start` (integer)

### `get_author` (~26 tokens)

Semantic Scholar: a single author's profile by id.

Input parameters:

- `author_id` (string, required)

### `get_author_papers` (~47 tokens)

Semantic Scholar: all papers by a given author id, newest first.

Input parameters:

- `author_id` (string, required)
- `max_results` (integer)
- `start` (integer)

### `get_authors_batch` (~28 tokens)

Semantic Scholar: fetch many authors at once by id.

Input parameters:

- `ids` (array, required)

### `search_snippets` (~46 tokens)

Semantic Scholar: search INSIDE paper full text and return matching text snippets (not just titles/abstracts).

Input parameters:

- `max_results` (integer)
- `query` (string, required)

### `recommend_papers_for_paper` (~90 tokens)

Semantic Scholar: recommend papers similar to one paper. pool='recent' (last open corpus) or 'all-cs' (all of CS). If the 'recent' pool yields nothing (common for older papers), it automatically retries the 'all-cs' pool.

Input parameters:

- `max_results` (integer)
- `paper_id` (string, required)
- `pool` (string)

### `recommend_papers_from_examples` (~49 tokens)

Semantic Scholar: recommend papers from positive (and optional negative) example paper ids.

Input parameters:

- `max_results` (integer)
- `negative_ids`
- `positive_ids` (array, required)

### `list_dataset_releases` (~28 tokens)

Semantic Scholar Datasets: list all available release ids (dated snapshots of the full corpus).

### `get_dataset_release` (~51 tokens)

Semantic Scholar Datasets: which datasets a release contains (papers, abstracts, citations, embeddings, s2orc, tldrs…). release_id defaults to 'latest'.

Input parameters:

- `release_id` (string)

### `get_dataset_download_links` (~51 tokens)

Semantic Scholar Datasets: get download links (presigned URLs) for one dataset in a release. Needs the API key.

Input parameters:

- `dataset_name` (string, required)
- `release_id` (string)

### `get_dataset_diffs` (~59 tokens)

Semantic Scholar Datasets: incremental diff (added/updated/deleted) for a dataset between two releases. Needs the key.

Input parameters:

- `dataset_name` (string, required)
- `end_release` (string)
- `start_release` (string, required)

### `get_openalex_work` (~53 tokens)

OpenAlex: fetch one work's full record (316M-work, all-field corpus). id accepts OpenAlex Wxxxx, a DOI, or an arXiv id.

Input parameters:

- `work_id` (string, required)

### `get_openalex_citations` (~53 tokens)

OpenAlex: papers that CITE this work (forward citation graph), most-cited first.

Input parameters:

- `max_results` (integer)
- `start` (integer)
- `work_id` (string, required)

### `get_openalex_references` (~39 tokens)

OpenAlex: the works this one REFERENCES (its bibliography).

Input parameters:

- `max_results` (integer)
- `work_id` (string, required)

### `search_openalex_authors` (~56 tokens)

OpenAlex: search authors; returns profiles with h-index, i10-index, works/citation counts and institutions.

Input parameters:

- `max_results` (integer)
- `query` (string, required)
- `start` (integer)

### `search_openalex_institutions` (~50 tokens)

OpenAlex: search institutions (universities, labs) with ROR id, country, works/citation counts.

Input parameters:

- `max_results` (integer)
- `query` (string, required)

### `search_openalex_works` (~118 tokens)

OpenAlex: advanced filtered work search. Filters: from_year, to_year, is_oa (open access only), min_citations, institution_id. sort_by: relevance|newest|cited.

Input parameters:

- `from_year` (integer)
- `institution_id` (string)
- `is_oa` (boolean)
- `max_results` (integer)
- `min_citations` (integer)
- `query` (string)
- `sort_by` (string)
- `to_year` (integer)

### `get_openalex_trends` (~81 tokens)

OpenAlex: publication-trend analytics for a query — counts grouped by year (default), or by 'institutions.id', 'authorships.author.id', 'open_access.is_oa', 'type', 'language'. Returns aggregate counts only (cheap, no rows).

Input parameters:

- `group_by` (string)
- `query` (string, required)

### `list_openalex_topics` (~50 tokens)

OpenAlex: search the topic taxonomy (~4500 topics) to find the right subject term for filtering or recent-work queries.

Input parameters:

- `max_results` (integer)
- `query` (string, required)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/mcpservings-paper-mcp/latex-tools#diagnostics

## Score history

- 2026-08-03: 64
- 2026-08-02: 63
- 2026-08-01: 63
- 2026-07-31: 62
- 2026-07-30: 61
- 2026-07-29: 60
- 2026-07-28: 59
- 2026-07-27: 59
- 2026-07-26: 58

## Links

- Remote endpoint: https://latex-tools.online/mcp
- Repository: https://github.com/MCPServings/paper-mcp
- Website: https://latex-tools.online/mcp
- Changelog RSS feed: https://verifymcp.io/servers/mcpservings-paper-mcp/latex-tools/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/mcpservings-paper-mcp/latex-tools/changelog.json
- HTML version of this page: https://verifymcp.io/servers/mcpservings-paper-mcp/latex-tools
