Pith's data, for programs
Everything Pith publishes about a paper can be read by a program: as JSON over plain GET requests with no key, as one file a month, or through a server that AI assistants connect to.
This page is the review API and the assistant server. The signed records, the monthly files and the citation dataset each have a page of their own, listed first.
All of Pith's data
- This page
the review API and the server for AI assistants.
- Record JSON
every Pith record as signed, versioned JSON, with the schemas and the signing key.
- Data dumps
a file each month of every current review. The list of files is public; a file is sent on request.
- The connected record
what each arXiv paper does with the works it cites, sentence by sentence.
Every review, machine-readable
The examples below use one real record · arXiv:1706.03762
pith:2017:CXPXXMQRMHRHYZ2C7KEJ4A4ORY
-
GET /api/v1/papers/{arxiv_id}
One paper, with the short form of Pith's current review of it.
curl -s 'https://pith.science/api/v1/papers/1706.03762'
Answers 200, JSON with these fields: arxiv_id, title, abstract, primary_cat, cross_cats, submitted_at, latest_version, source, source_label, source_url, has_pdf, has_source, verdict, confidence, one_line_summary, novelty_score, correctness_risk, formal_verification, upvotes, downvotes, pith_score, inbound_count, _links.
A paper Pith does not hold answers 404 with {"detail": "paper not found"}.
-
GET /api/v1/verdicts/{arxiv_id}
The whole current review of one paper.
curl -s 'https://pith.science/api/v1/verdicts/1706.03762'
Answers 200, JSON with these fields, among others: id, arxiv_id, paper_version, verdict, confidence, one_line_summary, lead, skeptic_critique, referee_report, author_rebuttal, pith_extraction, basis, receipt, falsifier, supporting_citations, review_version, created_at, model_set.
A paper Pith has not reviewed answers 404 with {"detail": "verdict not found"}.
basis says what the review was written from: the whole paper, part of it, the abstract alone, or that this was not recorded. A review written from the abstract alone is a first read, not a full review.
author_rebuttal is the strongest defence a model could write for the authors. The authors did not write it.
A review that has been challenged also carries challenges, with each decision.
Add ?form=canonical for the exact bytes the review's fingerprint (receipt.review_sha256) is taken over.
-
GET /api/v1/papers/{arxiv_id}/connections
What other arXiv papers do with this one, and what it does with the papers it cites.
curl -s 'https://pith.science/api/v1/papers/1706.03762/connections'
Answers 200, JSON with these fields: arxiv_id, incoming, outgoing, claims, thresholds, method, held_up, _links.
-
GET /api/v1/bundles/{id}
The paper's signed bundle: its record and everything added to it since.
curl -s 'https://pith.science/api/v1/bundles/CXPXXMQRMHRHYZ2C7KEJ4A4ORY'
Answers 200, JSON with these fields: bundle_type, bundle_version, pith_number, short_pith_number, canonical_record, canonical_sha256, source, source_aliases, events, timestamp_proofs, mirror_hints, public_keys, merge_version, built_at, links, state, bundle_signature.
Built at most once every five minutes for each record.
-
GET /api/feed.json
The newest reviews, as the home page lists them. ?sort= and ?category= choose as the home page's controls do.
curl -s 'https://pith.science/api/feed.json'
Answers 200, a list; each item has these fields: arxiv_id, title, verdict, confidence, summary, comment_count, submitted_at, primary_cat, your_vote, first_read, basis, summary_passed_over.
first_read is true for a review written from the abstract alone.
-
GET /openapi.json
This API as an OpenAPI document, for tools that read one.
curl -s 'https://pith.science/openapi.json'
Answers 200, JSON with these fields: openapi, info, servers, paths, components.
- No key and no account are needed for any address on this page: each is a plain GET.
- Every address under /api/v1 sends Access-Control-Allow-Origin: * and Cache-Control: public, max-age=300, so a page on another site can read it, and asking again within five minutes gets the same answer.
- /api/feed.json sends neither header: fetch it from a server, not from a page on another site.
- For every review at once, ask for a monthly file; do not walk the papers one by one.
- When a review informs what you publish, cite pith.science/paper/{arxiv_id}.
A server for AI assistants
A Model Context Protocol server answers at https://pith.science/mcp (streamable HTTP, JSON answers, no session). Every tool on it is a read: nothing is written and asking twice is safe.
In an assistant that takes a remote MCP server (a custom connector), give it the address https://pith.science/mcp and no sign-in. In a client set up by a JSON file:
{
"mcpServers": {
"pith": { "url": "https://pith.science/mcp" }
}
}
One call, from a command line
curl -s https://pith.science/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_review","arguments":{"arxiv_id":"1706.03762"}}}'
Answers with the review's fields: found, arxiv_id, title, primary_cat, submitted_at, verdict, confidence, novelty_score, correctness_risk, one_line_summary, lead, discovery_kind, reviewed_at, core_claim, weakest_assumption, falsifier, argument, url, source_name, citation_url, lean. A paper Pith has not reviewed answers found: false with a note, not an error.
The tools
24 tools. 4 of them answer about the account behind a key and need one.
-
get_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.
-
search_papers
Search Pith-reviewed papers by title and abstract.
-
latest_reviews
The papers Pith reviewed most recently, newest first.
-
analyze_paper_claims
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).
-
get_claims
Alias of analyze_paper_claims: the same ledger of what the paper asserts, its premises, machinery, and falsifier, in argument order.
-
search_claims
Full-text search over every scientific claim Pith has extracted, across all reviewed papers.
-
get_paper_falsifier
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.
-
get_falsifier
Alias of get_paper_falsifier: the same falsifier and watcher count.
-
get_signed_reviews
Published human signed reviews of one paper: reviewer identity, axis deltas against the machine review, claim verdicts, defects, predictions, and who paid.
-
get_reviewer_record
A reviewer's published signed reviews and, when present, their calibration record (Brier score, open predictions, positivity skew).
-
get_record
The compiled record of one paper: the authors' own sentences, arranged with typed labels.
-
resolve_paper
Turn a pasted arXiv id, arXiv URL, DOI, or Pith Number into the arXiv id the other tools key on.
-
paper_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.
-
citation_neighbors
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.
-
paper_bridge
Whether either paper cites the other, the resolved works both cite (on or off arXiv), and the papers that cite both.
-
paper_connections
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.
-
check_claim
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.
-
verify_citation
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.
-
find_passages
Author sentences the classifier labeled with one role, across every stored record, each with its probability and paper.
-
record_coverage
Sources read and levels run for one paper's record, or the number of stored records by tier.
-
my_citations
needs a key
For the papers claimed on the account behind your key: how many papers cite each, whether they cite it as support, extension or disagreement, and the citing sentence quoted.
-
my_reviews
needs a key
Pith's machine review verdict and the count of published signed human reviews for each paper claimed on the account behind your key.
-
check_my_draft
needs a key
Resolve each reference in a draft, flag retracted works, and for arXiv papers show how later papers cite them: as support, and whether any contest them, with the contesting sentence quoted.
-
ask_field
needs a key
Read the papers closest to a question and return, for each, whether its own abstract sentences answer yes, no or not addressed, with the deciding sentence quoted.
Wherever a tool takes a paper, it takes an arXiv identifier or address, a DOI, or a Pith number.
How often you may call
- Without a key: 60 calls a minute from one address.
- With a key: 600 calls a minute for the account.
- A key is free and is made on your account's page. Send it in the x-pith-key header.