# Pith (remote · pith.science)

Reviews of arXiv papers for AI agents: verdicts, claims, flaws, compiled records, citation graphs.

- Trust score: 72/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-27

## Components

- remote · `pith.science`: 72/100 (this document), [markdown](https://verifymcp.io/servers/science-pith-pith/pith.md), [page](https://verifymcp.io/servers/science-pith-pith/pith)

## Channel facts

- Endpoint: `https://pith.science/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.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-09-27.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - 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**: 72/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3092 tokens (~154/item across 20 items; 20 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 86% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 20 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Pith MCP server?

Pith is a hosted endpoint at https://pith.science/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http science-pith-pith 'https://pith.science/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "science-pith-pith": {
      "url": "https://pith.science/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "science-pith-pith": {
      "type": "http",
      "url": "https://pith.science/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.science-pith-pith]
url = "https://pith.science/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "science-pith-pith": {
      "type": "remote",
      "url": "https://pith.science/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add science-pith-pith --url 'https://pith.science/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  science-pith-pith:
    url: "https://pith.science/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "science-pith-pith": {
      "Transport": "http",
      "Url": "https://pith.science/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add science-pith-pith -t streamable-http -u 'https://pith.science/mcp'
```

### Other

```json
{
  "mcpServers": {
    "science-pith-pith": {
      "type": "http",
      "url": "https://pith.science/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-09-26 (score 72, +1)

- [security] Tool “find_passages” rewrote its description, which is the text the model reads
- [security] Tool “paper_connections” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 2635 → 3092
- [functional] Server version: 1.1.0 → 1.2.0
- [functional] New tool “check_claim”
- [functional] New tool “verify_citation”

### 2026-09-25 (score 71, 0)

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

### 2026-09-24 (score 71, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-09-23 (score 70)

First indexed and scored.

## MCP tools (20)

### `get_review` (~186 tokens)

Get a paper's Pith review

Pith's review of one specific paper, in one call: the verdict,
    confidence, novelty and correctness scores, one-line summary, weakest
    assumption, and the paper's argument as short labeled statements
    (premise, machinery, core claim, falsifier) already extracted, so the
    paper's premises and logical structure can be stated without reading
    the PDF. Use this for any question about a specific paper: what it
    asserts, what it assumes, how the argument runs, how sound it is, or
    what Pith concluded. Accepts an arXiv id or URL, DOI, or Pith Number.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `argument` (array)
- `arxiv_id`
- `citation_url` (string)
- `confidence`
- `core_claim`
- `correctness_risk`
- `discovery_kind`
- `falsifier`
- `found` (boolean)
- `lead`
- `note` (string)
- `novelty_score`
- `one_line_summary`
- `primary_cat`
- `reviewed_at`
- `source_name` (string)
- `submitted_at`
- `title`
- `url` (string)
- `verdict`
- `weakest_assumption`

### `search_papers` (~97 tokens)

Search reviewed papers

Search Pith-reviewed papers by title and abstract. Call this when the
    user names a research topic, phenomenon, method, or paper title without
    an identifier, or asks whether Pith has reviewed anything on a subject.
    Each result carries the paper's verdict, summary, and review link.

Input parameters:

- `limit` (integer)
- `query` (string, required): Topic, phenomenon, method, or paper title in plain words.

Output parameters:

- `count` (integer)
- `note` (string)
- `query` (string)
- `results` (array)

### `latest_reviews` (~120 tokens)

List recently reviewed papers

The papers Pith reviewed most recently, newest first. Call this when
    the user asks what is new, notable, or recently reviewed in a field or
    overall. days caps how far back to look (max 90).

Input parameters:

- `category`: Field to filter by: an arXiv archive ('cond-mat'), a full category ('cond-mat.str-el'), or a plain field name like 'condensed matter' or 'machine learning'; omit for all fields.
- `days` (integer)
- `limit` (integer)

Output parameters:

- `category`
- `count` (integer)
- `days` (integer)
- `note` (string)
- `results` (array)

### `analyze_paper_claims` (~157 tokens)

Analyze a paper's claims, premises, and logical structure

The structured argument of one specific paper: what it actually
    asserts, the premises it assumes, the machinery connecting those
    premises to the claim, and the falsifier, as short labeled statements
    in argument order (premise, machinery, claim, falsifier). Use this for
    requests about a paper's claims, premises, assumptions, reasoning,
    logical dependencies, logical structure, argument structure, or
    conclusion. Each entry includes its text, role, type, and status.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id` (string)
- `citation_url` (string)
- `claims` (array)
- `count` (integer)
- `note` (string)
- `source_name` (string)
- `title`
- `url` (string)

### `get_claims` (~85 tokens)

Get a paper's claim ledger

Alias of analyze_paper_claims: the same ledger of what the paper
    asserts, its premises, machinery, and falsifier, in argument order.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id` (string)
- `citation_url` (string)
- `claims` (array)
- `count` (integer)
- `note` (string)
- `source_name` (string)
- `title`
- `url` (string)

### `search_claims` (~99 tokens)

Search extracted claims

Full-text search over every scientific claim Pith has extracted,
    across all reviewed papers. Call this when the user asks who claims
    something, whether a claim appears in the recent literature, or what
    evidence bears on a statement. Returns each matching claim with its
    paper, verdict, and review link.

Input parameters:

- `limit` (integer)
- `query` (string, required): The claim or statement to look for, in plain words.

Output parameters:

- `count` (integer)
- `note` (string)
- `query` (string)
- `results` (array)

### `get_paper_falsifier` (~134 tokens)

Get the test or result that could disprove a paper

The falsifier for one specific paper's core claim: the concrete
    observation, experiment, or computation that would settle or disprove
    it, plus how many people are watching for that result. Use this when the
    user asks what would falsify the paper, prove it wrong, test its central
    claim, settle the claim, or show that the conclusion fails.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id` (string)
- `citation_url` (string)
- `falsifier`
- `found` (boolean)
- `source_name` (string)
- `title`
- `url` (string)
- `watch_url` (string)
- `watchers` (integer)

### `get_falsifier` (~71 tokens)

Get a paper's falsifier

Alias of get_paper_falsifier: the same falsifier and watcher count.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id` (string)
- `citation_url` (string)
- `falsifier`
- `found` (boolean)
- `source_name` (string)
- `title`
- `url` (string)
- `watch_url` (string)
- `watchers` (integer)

### `get_signed_reviews` (~110 tokens)

Get a paper's signed human reviews

Published human signed reviews of one paper: reviewer identity, axis
    deltas against the machine review, claim verdicts, defects, predictions,
    and who paid. Call this when the user asks what human experts said about
    a paper, on top of the machine review.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id` (string)
- `count` (integer)
- `error` (string)
- `reviews` (array)
- `url` (string)

### `get_reviewer_record` (~69 tokens)

Get a reviewer's record

A reviewer's published signed reviews and, when present, their
    calibration record (Brier score, open predictions, positivity skew).
    Call this when the user asks about a named Pith reviewer or how
    trustworthy a reviewer's track record is.

Input parameters:

- `handle` (string, required)

Output parameters:

- `error` (string)
- `found` (boolean)
- `handle` (string)
- `record`
- `reviews` (array)
- `url` (string)

### `get_record` (~230 tokens)

Get a paper's compiled record

The compiled record of one paper: the authors' own sentences, arranged
    with typed labels. It carries the main claim in the authors' words, each
    abstract sentence's role, results with the qualifications the authors
    state beside them, the conditions of the study, measurements with where
    they appear, the arXiv listing abstract compared with the manuscript's
    abstract, resources including what is not stated, the authors' own
    limitations, how the paper uses its references, and what was and was not
    examined. No sentence in it was written by a model; every label carries
    its probability. Use this for what a paper states and under what
    conditions, including papers Pith has not reviewed, where get_review
    reports no review. Accepts an arXiv id or URL, DOI, or Pith Number.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id`
- `citation_url` (string)
- `coverage` (string)
- `found` (boolean)
- `labels_illustrative` (boolean)
- `note` (string)
- `record` (object)
- `record_url` (string)
- `source_name` (string)
- `url` (string)

### `resolve_paper` (~103 tokens)

Resolve a paper reference

Turn a pasted arXiv id, arXiv URL, DOI, or Pith Number into the
    arXiv id the other tools key on. ``resolved`` is false when the input
    did not become an arXiv id.

Input parameters:

- `reference` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.

Output parameters:

- `arxiv_id`
- `empty_means` (string)
- `error` (string)
- `input` (string)
- `ok` (boolean)
- `resolved` (boolean)

### `paper_packet` (~141 tokens)

Read one paper's record packet

One paper's compiled record, small enough to hold beside others: the
    main claim and contribution in the authors' words, each abstract
    sentence with its role and probability, paper-level labels, and, for
    full-text records, conditions, measurements, results and limitations,
    with totals so a capped list is not mistaken for the whole paper.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.
- `limit` (integer): Items per list. 1 to 20.

Output parameters:

- `abstract` (array)
- `arxiv_id`
- `conditions` (array)
- `contribution`
- `counts` (object)
- `coverage` (object)
- `doi`
- `empty_means` (string)
- `error` (string)
- `found` (boolean)
- `input` (string)
- `limitations` (array)
- `main_claim`
- `measurements` (array)
- `ok` (boolean)
- `packet`
- `paper_labels` (object)
- `record_url` (string)
- `resolved` (boolean)
- `resources` (object)
- `results` (array)
- `title`

### `citation_neighbors` (~152 tokens)

One hop of the citation graph

One hop from a paper: every reference entry with its resolved work
    identity, the papers that cite it, and, where a record exists, the
    citing sentences with their labeled intent. An edge means the paper
    names the other work, not that the work supports the citing claim.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.
- `direction` (string): out: works this paper cites. in: papers that cite it. both.
- `limit` (integer): Graph rows per side. 1 to 40.

Output parameters:

- `arxiv_id`
- `coverage` (object)
- `direction` (string)
- `empty_means` (string)
- `error` (string)
- `from_graph` (object)
- `from_record` (array)
- `input` (string)
- `ok` (boolean)
- `resolved` (boolean)

### `paper_bridge` (~139 tokens)

What two papers share

Whether either paper cites the other, the resolved works both cite
    (on or off arXiv), and the papers that cite both.

Input parameters:

- `a` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.
- `b` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.
- `limit` (integer): Shared graph neighbors per side. 1 to 40.

Output parameters:

- `a` (string)
- `arxiv_id`
- `b` (string)
- `coverage` (object)
- `direct` (object)
- `empty_means` (string)
- `error` (string)
- `from_graph` (object)
- `input` (string)
- `ok` (boolean)
- `resolved` (boolean)
- `shared_citation_labels` (array)
- `shared_relation_candidates` (array)

### `paper_connections` (~237 tokens)

How papers use this one

What other arXiv papers do with this paper, and what it does with the
    arXiv papers it cites: builds on, uses the method or tool, uses the data,
    compares with, cites as support or background, or contests. Each group
    counts distinct papers and quotes the citing authors' own sentences.
    Labels come from each citing paper's LaTeX source typed by Pith's classifier and are
    shown only at intent probability 0.8 or more (contests at 0.7 or more);
    the rest are counted as unlabelled. Measured agreement of every label with
    independent model families: https://pith.science/connected-record. Use this
    for how a result has been taken up, challenged or built on across arXiv.

Input parameters:

- `arxiv_id` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.
- `quotes` (integer): Quoted sentences per group. 1 to 20.

Output parameters:

- `arxiv_id` (string)
- `found` (boolean)
- `incoming` (object)
- `method` (string)
- `note` (string)
- `outgoing` (object)
- `thresholds` (object)
- `url` (string)

### `check_claim` (~217 tokens)

Check a claim against the literature

Which arXiv papers support a scientific statement, which contradict
    it, and which study it without deciding, each with the paper's own main
    claim quoted and the classifier's probability. Call this before asserting a
    scientific result, when a user asks whether something is established or
    disputed, or when two sources disagree. Candidates are papers whose title
    and abstract match the statement's words, plus papers Pith's connected
    record links to them as stating the same or a conflicting result; a paper
    that states the result in other words can be missed, so an empty answer
    is not evidence of absence. Reported supporters and contradictions agreed
    with two blind model families 110 times in 112
    (https://pith.science/connected-record).

Input parameters:

- `limit` (integer): Candidate papers to judge. 4 to 24.
- `statement` (string, required): One scientific statement in plain words, for example a result a user asserts or that you are about to assert.

Output parameters:

- `addresses` (array)
- `bank` (string)
- `candidates` (integer)
- `contradicts` (array)
- `found` (boolean)
- `method` (string)
- `model` (string)
- `note` (string)
- `statement` (string)
- `supports` (array)
- `unrelated_count` (integer)
- `via_connected_record` (integer)

### `verify_citation` (~215 tokens)

Verify that a paper supports a sentence

Whether the cited paper's own sentences support what a sentence
    attributes to it: supports, partly supports (a condition is missing),
    contradicts, or not addressed, with the single best sentence from the
    paper quoted. Call this before citing a paper for a specific claim, or to
    check a citation in a draft or an answer. It reads the paper's abstract,
    and its full text where Pith holds it; the examined field says which. On
    real citations its verdict agreed with two blind model families 139 times
    in 160, most differences being partly supported versus not addressed
    (https://pith.science/connected-record).

Input parameters:

- `cited` (string, required): Any form the user gave: bare arXiv id (2401.00001), arXiv abs/pdf URL, DOI or doi.org URL, or Pith Number.
- `sentence` (string, required): The sentence that cites the paper, as written in a draft, an answer or a paper.

Output parameters:

- `arxiv_id` (string)
- `bank` (string)
- `best_evidence`
- `best_evidence_p`
- `cited` (string)
- `evidence_sentences` (integer)
- `examined` (string)
- `found` (boolean)
- `method` (string)
- `model` (string)
- `note` (string)
- `probabilities` (object)
- `sentence` (string)
- `url` (string)
- `verdict` (string)

### `find_passages` (~126 tokens)

Find sentences by role across records

Author sentences the classifier labeled with one role, across every stored
    record, each with its probability and paper. Abstract-tier records
    cover limitation, result and main_claim; full-text records add
    condition, citation and measurement.

Input parameters:

- `arxiv_id` (string): One paper, or empty for every stored record.
- `limit` (integer): 1 to 50.
- `query` (string): Words to match in the author's sentence. Empty returns the role.
- `role` (string, required): limitation, condition, result, main_claim, citation, or measurement.

Output parameters:

- `arxiv_id`
- `count` (integer)
- `coverage` (object)
- `empty_means` (string)
- `error` (string)
- `input` (string)
- `matched` (integer)
- `ok` (boolean)
- `passages` (array)
- `query` (string)
- `resolved` (boolean)
- `role` (string)

### `record_coverage` (~73 tokens)

What was examined

Sources read and levels run for one paper's record, or the number of
    stored records by tier. Call before treating an empty result as a
    finding: an empty list means nothing in the examined scope matched.

Input parameters:

- `arxiv_id` (string): One paper, or empty for the whole record store.

Output parameters:

- `arxiv_id`
- `citations_total`
- `citations_with_intent`
- `compiled_records` (integer)
- `coverage` (object)
- `empty_means` (string)
- `error` (string)
- `found` (boolean)
- `input` (string)
- `levels_not_run` (array)
- `levels_run` (array)
- `not_examined` (array)
- `ok` (boolean)
- `papers` (array)
- `relation_candidates`
- `relation_candidates_judged`
- `resolved` (boolean)
- `sources_read` (array)
- `stored_records_by_tier`
- `stored_records_total`
- `tier`

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/science-pith-pith/pith#diagnostics

## Score history

- 2026-09-27: 72
- 2026-09-26: 72
- 2026-09-25: 71
- 2026-09-24: 71
- 2026-09-23: 70

## Common questions

### What is the Pith MCP server?

Pith is an MCP server listed in the public MCP registry as science.pith/pith. Reviews of arXiv papers for AI agents: verdicts, claims, flaws, compiled records, citation graphs. This page covers its hosted endpoint (https://pith.science/mcp).

### Is the Pith MCP server safe to use?

Pith scores 72 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Pith MCP server expose?

Pith exposes 20 tools: get_review, search_papers, latest_reviews, analyze_paper_claims, get_claims, and 15 more. Their descriptions and schemas cost roughly 2,761 tokens of context every time the server is loaded.

### Does the Pith MCP server require authentication?

No. We connected to Pith without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Pith MCP server still maintained?

Pith is still listed as active in the MCP registry. We last reached this channel on 27 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://pith.science/mcp
- Website: https://pith.science/api#mcp
- Changelog RSS feed: https://verifymcp.io/servers/science-pith-pith/pith.xml
- Changelog JSON feed: https://verifymcp.io/servers/science-pith-pith/pith.json
- HTML version of this page: https://verifymcp.io/servers/science-pith-pith/pith
