Traverse the scite citation graph from seed DOIs to discover connected papers by citation topology rather than keyword. Each edge is a citation: s (citing paper) -> t (cited paper).
Use it to find prior art / foundations (direction="out"), impact and follow-on work (direction="in"), or both. Get seed DOIs from search_literature first, then traverse; feed interesting nodes back into search_literature or read_fulltext for content. This tool returns structure (edges + titles), not abstracts or full text.
Seeds are automatically expanded to their linked preprint/published versions (e.g. an arXiv DOI and its journal DOI), so a paper split across two DOIs is traversed as one work with a merged citation pool; the extra DOIs appear in seeds and seed_coverage.
Response: edges is a deduped list of {"s","t","d"} (d = hop distance from a seed); papers maps every DOI in the graph to its {title, year}. truncated is true when the max_edges cap was hit.
Coverage — check before trusting the topology. seed_coverage maps each seed to how many of its edges resolved directly (hop 1); low_coverage_seeds lists seeds with too few to be reliable. Coverage is per-paper: it only follows references/citers scite resolved to DOIs, and arXiv-heavy (e.g. ML) papers often under-resolve, so a thin graph means missing edges, not a poorly-connected paper. For any seed in low_coverage_seeds, treat its topology as incomplete and fall back to search_literature for that paper.
Citation intent (scite's differentiator). Set include_intent=true to annotate each edge with the smart-citation type (supporting / contrasting / mentioning) and the section it appears in — this turns the structure into an *intent graph*: you can see agreement vs. dissent, and method vs. background citations. Set include_snippets=true to additionally attach up to 3 snippets of the actual citing text (implies intent). Snippet text is returned only for open-access / unrestricted sources; closed-publisher citations still carry type and section.
Custom "why was it cited?" classifications from snippets. scite's type is a fixed 3-way label (supporting / contrasting / mentioning). When you need a finer or domain-specific taxonomy — e.g. *uses as baseline*, *extends the method*, *reuses the dataset*, *critiques an assumption*, *motivates the problem* — read the snippets (the verbatim sentence the citing paper used) and classify each edge yourself into whatever scheme the task calls for. The snippet is the ground truth; treat scite's type/section as a prior, not the final answer. Group edges by your derived label to answer "why does this literature cite X?".
When a snippet is too short to judge the intent, chain read_fulltext on the citing paper (edge s) to read the surrounding paragraph / section and recover the full rationale — snippets are ~1 sentence each, read_fulltext gives you the argument around them. Typical flow: citation_graph (structure + snippets) -> pick the edges that matter -> read_fulltext(dois=[citing paper]) with a targeted term to confirm *why* it was cited before you label it.
Recording a screen. When you use this tool to screen literature — keeping some papers and dropping others with a reason — record those keep/drop decisions with report_citations (cited / excluded + reason_code), and citation_report will summarize the include/exclude funnel as a PRISMA-style audit.
Deriving analyses from edges (no extra calls). The edge list is all you need for the classic citation-analysis questions — compute them directly:
- *Common references* (shared foundations): traverse
direction="out" from multiple seeds; take the DOIs
that appear as t for every seed.
- *Common citers* (who cites all of them, e.g. surveys/syntheses):
direction="in"; DOIs appearing as s
for every seed.
- *Bibliographic coupling* (papers similar to a seed):
direction="out" at depth 2; rank other papers by
how many t references they share with the seed.
- *Co-citation* (papers cited alongside a seed):
direction="in" then out; rank papers frequently cited
by the same citers.
- *Citation classics* (most influential in the network): rank DOIs by in-degree (how often they appear as
t). Filter any of these to supporting/contrasting edges by adding include_intent=true first.