Courtlistener Mcp Server

io.github.cyanheads由 GitHub 帳號 cyanheads 發布v0.9.0更新於 Nov 1, 2026

Search US court opinions, federal dockets, judges, citations, and oral arguments via CourtListener.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取知識與記憶

概覽

AI 產生的概覽

透過 CourtListener 檢索並取得美國法院判決書、聯邦案卷、法官、引證關係、口頭辯論與司法財產申報。

可以做什麼
  • 檢索與閱讀判決書:全文檢索 900 萬份以上判決,取得案件叢集文本與多數意見、協同意見、不同意見等版本,追蹤被引與引用網絡,解析引證
  • 檢索與閱讀聯邦案卷:RECAP 案卷檢索、分頁條目、選定文書的擷取文字、當事人與訴訟代理人
  • 查詢法官與法院:法官檢索與完整生平資料,依管轄類型與狀態查找法院 ID
  • 檢索口頭辯論:錄音中繼資料、合議庭法官、MP3 連結與逐字稿
  • 檢索司法財產申報:依法官與年度查詢申報,項目金額解碼為區間
  • 附帶法院參考資源與法律研究規劃提示詞
適用情境
適合法律研究、判例與先例脈絡梳理、查閱聯邦法院文書,或了解法官背景及其財產申報。當助理需要結構化的美國法院資料而非一般網頁搜尋時值得加入。
執行需求
需要 CourtListener API 權杖,透過 COURTLISTENER_API_TOKEN 提供,可於帳號設定中產生。可連線託管 HTTP 端點,或以 npx(Node.js)、Docker 在本機執行。公開免費額度為每分鐘 5 次、每小時 50 次、每天 125 次請求,伺服器會排隊以維持在此範圍內。
安裝前請注意
API 權杖屬於憑證,必須提供給此伺服器;託管端點為第三方服務,查詢內容與取回的案件資料會經過它。免費額度偏低,用盡時呼叫可能失敗或等待。RECAP 案卷涵蓋不完整且來自群眾外包,引證與申報結果也可能不全,依賴前應自行核實。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Courtlistener Mcp Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.cyanheads%2Fcourtlistener-mcp-server/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "courtlistener": {
      "type": "http",
      "url": "https://courtlistener.caseyjhand.com/mcp"
    }
  }
}

README

@cyanheads/courtlistener-mcp-server

Search and retrieve US court opinions, federal dockets, judge records, citation networks, and oral arguments from CourtListener's 9M+ opinion corpus via MCP. STDIO or Streamable HTTP.

14 Tools • 2 Resources • 1 Prompt


Overview

US case law and federal court records from CourtListener's 9M+ opinion corpus and its RECAP mirror of PACER. Search opinions and dockets, trace citation networks, resolve citations, look up judges and courts, and read oral argument transcripts and judicial financial disclosures.

Tools

ToolDescription
courtlistener_search_opinionsFull-text search across 9M+ court opinions with field syntax, court, date, and status filters
courtlistener_get_opinionFetch an opinion cluster's metadata and variant text (majority, concurrence, dissent), with source-completion status
courtlistener_get_citationsTrace a cluster's citation network: opinions it cites (citing) or that cite it (cited_by)
courtlistener_lookup_citationResolve every citation in a text (e.g. "410 U.S. 113") to cluster IDs and case metadata
courtlistener_search_docketsSearch RECAP federal dockets by case name, party, attorney, court, and filing date
courtlistener_get_docketFetch a federal docket's paged entries or selected filings' extracted text
courtlistener_get_partiesFetch the parties and attorneys of record on a RECAP docket
courtlistener_search_judgesSearch judges by name, appointing president, court, and political affiliation
courtlistener_get_judgeFetch a judge's positions, education, political affiliations, and ABA ratings
courtlistener_lookup_courtsList courts by jurisdiction type, active/inactive status, and scraper coverage
courtlistener_search_oral_argumentsSearch appellate oral argument recordings by case name, transcript text, court, and argument date
courtlistener_get_oral_argumentFetch one oral argument's panel, duration, MP3 link, and speech-to-text transcript
courtlistener_search_financial_disclosuresSearch judicial financial disclosure filings by judge and year
courtlistener_get_financial_disclosureFetch one disclosure's line items with coded values decoded to dollar ranges

Resources

ResourceDescription
courtlistener://reference/courtsJurisdiction codes, common court IDs, search type codes, rate limits, and the maintenance window
skill://courtlistener-guide/SKILL.mdResearch guide for identifier chains, text completion, citation treatment, and coverage limits

The jurisdiction codes are also listed on the jurisdiction parameter of courtlistener_lookup_courts, for clients that don't surface resources.

Prompts

PromptDescription
courtlistener_research_topicGenerate a structured legal research plan for a topic or question

Capability reference

Result-page sizes accept positive integers and bound outgoing requests: 20 for searches/citations, 10 for parties, and 50 for docket entries. Both response surfaces carry page_sizing (requested, bounded, actual, upstream). Upstream search/disclosure pages have a 20-row minimum, parties/entries use fixed 20-row pages, and citing slices cited IDs before searching. Returned pages are preserved; empty/final pages and page-local filters can produce fewer rows. Continue with the native cursor rather than increasing the requested size.

courtlistener_search_opinions tool

  • q is required and takes CourtListener field syntax (caseName:"roe v wade", court_id:scotus, judge:"Alito") and AND / OR / NOT; filter by court, filed_after / filed_before, and status, and sort with order_by (score desc default, dateFiled desc, dateFiled asc, citeCount desc); 20 results per page, continued with next_cursor
  • Each result carries cluster_id (for courtlistener_get_opinion and courtlistener_get_citations), docket_id, cite_count, a snippet, and opinions[] variants with opinion ID, type, author_id, and local_path; totalCount and effectiveQuery report the match
  • Omit status for CourtListener's Published default, or select one publication status, including In-chambers and Relating-to.

courtlistener_get_opinion tool

  • cluster_id is required; after an outline response, sections: ["opinion_<id>", ...] pulls specific variants, and a name the cluster doesn't have fails as unknown_section
  • Cluster metadata (case name, court_id, citations, cite_count, precedential_status, syllabus, posture, docket_id) plus each variant's html_text, plain_text, cites[], download_url, and type_label, the same label courtlistener_search_opinions reports
  • Small responses use kind: "full". Oversized variants or metadata return a bounded outline, then typed page responses through retrieval.next_cursor; repeat the original ID and selection with cursor until null.
  • Supplied plain_text is preserved; markup-only variants gain readable text with paragraphs, tables, lists, footnotes, and decoded entities. html_text retains raw source and renders as fenced text. Search/citation snippets use the same readable normalization.
  • variants_completion reports whether the bounded source walk finished and its remaining upstream variant cursor. docket_enrichment distinguishes not_linked, resolved, source_fields_absent, and lookup_failed with a sanitized failure category; cancellation propagates.
  • Primary continuation remains stable when optional docket enrichment changes. Oversized enrichment has its own enrichment_retrieval.next_cursor, passed as enrichment_cursor with the same cluster and selection. Keep enrichment chunks only while source_id is unchanged; a changed source restarts that stream. A metadata-only partial response can have a null primary cursor while enrichment continues. Legacy v1 cursors retain their original enrichment-sensitive behavior.

courtlistener_get_citations tool

  • cluster_id is required; direction is cited_by (default, opinions that cite this one) or citing (opinions it cites); optional court and filed_after filters; up to 20 results per page, continued with cursor
  • Rows carry cluster_id, court_id, date_filed, cite_count, and snippet; for citing, totals count the unfiltered cited-opinion list, and a filtered page can come back empty while next_cursor is still set. source_variants_completion and total_is_partial qualify observed_total; incomplete variants make this a lower bound and omit the exact totalCount trailer.
  • For citing, cursor is a nonnegative safe decimal integer offset (01, +1, 1.0, and 1. all mean 1); malformed offsets fail as invalid_cursor before any request. An offset at or past the end returns an empty page with the source name and unfiltered distinct-opinion total, without searching. cited_by cursors stay opaque.

courtlistener_lookup_citation tool

  • citation takes one citation or a passage of up to 64,000 characters, and every citation in it resolves; max_court_lookups (default 4, max 20, 0 to skip) caps the docket requests spent on court names
  • One matches[] entry per citation, with status (200 one case, 300 several candidates, 400 unrecognized reporter, 404 no match, 429 past the per-request citation cap) and status_label; each of its clusters[] carries cluster_id, docket_id, court_id, and court_resolution (resolved, no_docket, lookup_failed, over_budget, only the last worth retrying with a larger budget)
  • Unresolved citations come back as entries, not errors; only text with no parseable citation fails, as not_found. CourtListener meters this endpoint per citation submitted, separately from the per-request limits

courtlistener_search_dockets tool

  • q is required and matches case name, docket number, party, and attorney names; party_name (ANDed with q), court, and filed_after / filed_before narrow it; 20 results per page, continued with next_cursor
  • Each docket carries docket_id, parties, attorneys, firms, suit_nature, assigned_to / referred_to, and up to 3 sample_documents with is_available and a RECAP filepath_local URL; every response adds a coverage_note on RECAP's partial PACER coverage

courtlistener_get_docket tool

  • docket_id is required; entries come 20 per page (CourtListener ignores entries_page_size), walked with entries_page and top-level next_cursor. Without a document selection, returns docket metadata and entries[]; total_entries is null when upstream supplies no numeric total.
  • document_ids selects documents from the requested entries page. Selected responses carry kind, selected_documents, source/storage links, and raw plain_text; large records use retrieval.next_cursor, passed as cursor with the same docket ID, entries page, and selection. Listing-only fields are optional in selected responses.
  • text_status is available, unavailable, not_extracted, or unknown; extracted text can exist independently of is_available. IDs absent from the page fail as document_not_on_page; an entry without a matching docket relation fails as document_ownership_unverified. Selection adds no document-detail requests or page walks.

courtlistener_get_parties tool

  • docket_id is required; cursor takes the opaque next_cursor token, not a page number; outgoing page_size is bounded to 10 and CourtListener may not honor it
  • Each party carries name, its docket-scoped role, and attorneys[] with name, contact_raw, role_code / role (codes 5–9 mean no longer of record), and date_action; total_parties uses the upstream total when supplied, otherwise counts a single-page result or stays null
  • attorney_resolution reports resolved, exhausted, or capped lookups, unresolved IDs, and the remaining upstream roster cursor. Resolution stops after five roster pages or when the local request budget blocks a later page; already fetched records are retained. Per-attorney resolution distinguishes a resolved record with empty source fields from not_found after exhaustion and not_fetched after the cap. Upstream roster/variant cursors describe completeness; these tools do not accept them as new retrieval inputs.

courtlistener_search_judges tool

  • q is required; filter by appointer (the president's last name), court, and political_affiliation (d, r, i, l, g, u); 20 results per page, continued with next_cursor
  • Results carry person_id (for courtlistener_get_judge), political_affiliation and aba_rating as labels rather than codes, and a current_position: the one with no termination date, or the latest-starting when several or none qualify

courtlistener_get_judge tool

  • person_id is required; positions are fetched up to a page bound, and truncated with positionsShown reports when a long record ran past it
  • Positions (judicial, plus non-judicial roles described by job_title and organization_name), education, political affiliations, ABA ratings, and fjc_id; coded fields keep the raw code beside a label (position_type_label, termination_reason_label, degree_label)
  • Dates carry the precision CourtListener recorded in dob_granularity, dod_granularity, date_start_granularity, and date_termination_granularity (year, month, or day)

courtlistener_lookup_courts tool

  • Filter by jurisdiction (one of 22 CourtListener codes such as F, FD, FB, S, SA; the full table is in courtlistener://reference/courts), status (active default, inactive, or any), and has_opinion_scraper; live records come 20 per page, walked with page
  • courts[] carry id (the court ID every other tool filters on), citation_string, jurisdiction, and scraper flags; all_matching_court_ids lists every match from a bundled snapshot at no request cost, and is empty when more than 1,000 match, so check all_matching_court_ids_complete

courtlistener_search_oral_arguments tool

  • q is required and matches case name and transcript text; filter by court and argued_after / argued_before; 20 results per page, continued with next_cursor
  • Results carry audio_id (for courtlistener_get_oral_argument), panel_ids (for courtlistener_get_judge), duration_seconds, snippet, and two MP3 links: download_url at the originating court and local_path, CourtListener's durable copy

courtlistener_get_oral_argument tool

  • id (an audio_id from a search) is required; sections: ["transcript"] selects the transcript. Selected responses obey the same byte limits.
  • Returns panel_ids, duration_seconds, download_url, docket_id, has_transcript, and transcript; oversized text or metadata uses outline and cursor-driven page responses. The argument date is not on this record; take it from the search result or the docket.

courtlistener_search_financial_disclosures tool

  • Filter by judge_id (a person_id) and year; 20 filings per page, continued with cursor. year filters only the fetched page, because CourtListener has no server-side year filter, so keep paging when a page comes back empty with next_cursor set
  • Each filing carries disclosure_id, report_type, has_been_extracted, is_amended, pdf_url, per-category counts (investments, gifts, debts, positions, reimbursements, agreements, non-investment and spouse income), and itemized gifts

courtlistener_get_financial_disclosure tool

  • disclosure_id is required; categories selects from investments, debts, positions, reimbursements, non_investment_incomes, spouse_incomes, agreements, and gifts (omit for all)
  • Returns filing metadata, counts, and the requested line-item rows, with coded value and income columns decoded to dollar ranges (N → $250,001 - $500,000); oversized selections use outline and cursor-driven page responses, including when a single row exceeds the budget.

Opinion, audio, disclosure, and selected docket-document retrieval bound each serialized response surface (structuredContent and complete content[]) to 24,000 UTF-8 bytes. Repeat the original identity and selection with cursor: retrieval.next_cursor; docket selections also repeat entries_page. Catalog pages lead automatically to data pages. retrieval.ranges uses JSON Pointer paths and absolute exclusive ranges (rows, code_points, or sections); merge typed rows by absolute index, and concatenate text_chunks by their code-point ranges. Partial rows retain their source identity; omitted text is recoverable through its original field path. Metadata can also be paged. Structured strings remain unescaped; presentation escaping happens after slicing. A changed normalized source returns stale_cursor; restart without cursor. Source-completion cursors remain distinct from these retrieval cursors.


courtlistener://reference/courts resource

  • Markdown reference: the 22 jurisdiction codes (rendered from the set courtlistener_lookup_courts validates against), common court IDs, search type codes, the published free-tier rate limits, and the weekly maintenance window (Thursdays 21:00–23:59 PT)
  • Static content, cacheable publicly for 24 hours

skill://courtlistener-guide/SKILL.md resource

  • Identifier chains and research gates for case law, RECAP filings, judges, disclosures, and oral arguments
  • Also included in plugin installs, npm, Docker, and the desktop bundle as courtlistener-guide

courtlistener_research_topic prompt

  • Arguments: topic required; jurisdiction optional (a court ID such as scotus or ca9); depth optional, overview (default, 3–5 key cases) or deep (adds citation-network traversal and judge lookup)
  • Returns one user message laying out the research workflow and a findings template: key cases, precedent trajectory, research gaps

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

CourtListener-specific:

  • CourtListener REST API v4: search, opinions and clusters, dockets and entries, parties and attorneys, people and positions, courts, audio, financial disclosures, and citation lookup
  • One request queue for the whole process, paced to COURTLISTENER_RATE_LIMIT_PER_MINUTE and COURTLISTENER_RATE_LIMIT_PER_HOUR, so a burst waits instead of failing; a 429 pauses the queue for every waiting call, and a Retry-After is honored within a 45-second wait budget
  • Request cost per call: one for most tools; two for courtlistener_get_docket; two or more for courtlistener_get_parties and courtlistener_get_judge (one per extra page of a long roster or career); three for courtlistener_get_opinion and courtlistener_get_citations (plus one per extra page of opinion variants); and for courtlistener_lookup_citation, the lookup plus up to max_court_lookups docket requests
  • Input that can't succeed (an empty q, a malformed date, a citation over 64,000 characters, an unknown oral argument section) is rejected before a request is spent

Agent-friendly output:

  • Chaining IDs: cluster_id, docket_id, person_id, audio_id, and disclosure_id appear wherever they feed a follow-up call, with field descriptions naming the tool that takes each
  • Typed rate-limit errors: reason: "rate_limited" with retryAfter in seconds, whether CourtListener returned the 429 or the queue gave up before sending, in which case the message says no request was spent
  • Bounded retrieval: opinion, audio, disclosure, and selected docket-document responses preserve small full records and stream oversized selections through an outline and resumable typed pages without truncating source text
  • Coverage caveats inline: RECAP coverage_note, court_resolution on citation lookups, truncated on position history, and notices when a page-local filter empties a page that has more pages behind it

Getting started

Connect to the hosted instance, no install:

sh
claude mcp add --transport http courtlistener-mcp-server https://courtlistener.caseyjhand.com/mcp

Or run it locally:

sh
claude mcp add courtlistener-mcp-server -e COURTLISTENER_API_TOKEN=your-api-token -- npx -y @cyanheads/courtlistener-mcp-server

For other clients, add this to the MCP config file:

json
{  "mcpServers": {    "courtlistener-mcp-server": {      "command": "npx",      "args": ["-y", "@cyanheads/courtlistener-mcp-server"],      "env": {        "COURTLISTENER_API_TOKEN": "your-api-token"      }    }  }}

Generate a token in your CourtListener account settings. Published free-tier limits are 5 requests per minute, 50 per hour, and 125 per day; limits vary by token tier, and Free Law Project membership raises them. For Docker or a source build, see Running the server.

Configuration

VariableDescriptionDefault
COURTLISTENER_API_TOKENRequired. API token from your CourtListener account settings.—
COURTLISTENER_BASE_URLAPI base URL override.https://www.courtlistener.com/api/rest/v4
COURTLISTENER_RATE_LIMIT_PER_MINUTERequests the server starts per rolling minute. Past it, requests queue; one that can't start within about 45 s fails with the reset time. Raise it to match a higher token tier.5
COURTLISTENER_RATE_LIMIT_PER_HOURRequests the server starts per rolling hour.50
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTHTTP server port.3010
MCP_SESSION_MODEHTTP session mode: stateless, stateful, or auto. The server declares stateless; setting this overrides it.stateless
MCP_AUTH_MODEAuthentication: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (debug, info, warning, error, etc.).info
LOGS_DIRDirectory for log files (Node.js only).<project-root>/logs
STORAGE_PROVIDER_TYPEStorage backend: in-memory, filesystem, supabase, cloudflare-kv/r2/d1.in-memory
OTEL_ENABLEDEnable OpenTelemetry.false
OTEL_EXPORTER_OTLP_ENDPOINTBase endpoint for traces and metrics; appends /v1/traces and /v1/metrics. Without an endpoint, neither exports.—
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTExplicit endpoint for redacted OTLP logs; the base endpoint does not enable log export.—
LOG_TOOL_FAILURE_PAYLOADSLog failed-call inputs and results with key-based redaction.false
LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTESSize cap for each logged failed-call payload.16384

See .env.example for the full list of optional overrides.

Running the server

Local development

Requires Bun v1.4.0 or higher (or Node.js v24+).

  • Clone and install:

    sh
    git clone https://github.com/cyanheads/courtlistener-mcp-server.gitcd courtlistener-mcp-server && bun installcp .env.example .env   # set COURTLISTENER_API_TOKEN
  • Build and run:

    sh
    # One-time buildbun run rebuild
    # Run the built serverbun run start:stdio# orbun run start:http
  • Run checks and tests:

    sh
    bun run devcheck   # Lint, format, typecheck, securitybun run test       # Vitest test suitebun run lint:mcp   # Validate MCP definitions against spec

Docker

sh
docker run --rm -e COURTLISTENER_API_TOKEN=your-token -p 3010:3010 ghcr.io/cyanheads/courtlistener-mcp-server:latest

The image defaults to HTTP transport, stateless session mode, and logs to /var/log/courtlistener-mcp-server. For stdio, use docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio -e COURTLISTENER_API_TOKEN=your-token ghcr.io/cyanheads/courtlistener-mcp-server:latest. To build locally, run docker build -t courtlistener-mcp-server .; OpenTelemetry peer dependencies are installed by default — build with --build-arg OTEL_ENABLED=false to omit them.

Project structure

DirectoryPurpose
src/index.tscreateApp() entry point: registers tools, resources, and prompts, and inits the service.
src/configServer-specific environment variable parsing and validation with Zod.
src/mcp-server/toolsTool definitions (*.tool.ts). 14 tools across opinions, citations, dockets, parties, judges, courts, oral arguments, and financial disclosures.
src/mcp-server/resourcesResource definitions (*.resource.ts). Court reference resource.
src/mcp-server/promptsPrompt definitions (*.prompt.ts). Legal research prompt.
src/services/courtlistenerCourtListener API client (request pacing, retry, error classification), code tables, and the bundled court snapshot (bun run courts:snapshot regenerates it).
tests/Unit and integration tests mirroring src/.
skills/Published research guidance for agents calling the server.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for request-scoped logging, ctx.state for tenant-scoped storage
  • Register new tools, resources, and prompts by importing them in src/index.ts and adding them to the createApp({ tools, resources, prompts }) arrays
  • Wrap CourtListener API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields

Contributing

Issues are welcome. Run checks and tests before submitting:

sh
bun run devcheckbun run test

License

Apache-2.0 — see LICENSE for details.

來源:README.md,提交 6901b73

工具

14

courtlistener_search_opinions

Search Court Opinions

Full-text search across 9M+ written US court opinions with field-level filtering. Returns opinion cluster summaries with case metadata, citations, matched text snippets, and the individual opinion variants filed in each case. Supports CourtListener field syntax (caseName:"roe v wade", court_id:scotus, judge:"Alito") and boolean operators (AND, OR, NOT). Use courtlistener_lookup_courts to find court IDs. CourtListener publishes free-tier limits of 5 req/min, 50/hr, 125/day; actual limits vary by token tier.

輸入參數q必填courtcursorstatusorder_bypage_sizefiled_afterfiled_before

courtlistener_get_opinion

Get Court Opinion

Fetch text and metadata for an opinion cluster by cluster ID. Returns majority, concurrence and dissent variants with raw HTML and readable plain text, variants_completion for source coverage, and docket_enrichment. Oversized selections return outline then page responses; continue retrieval.next_cursor as cursor with the unchanged ID/sections selection until null. Oversized docket backfill has independent enrichment_retrieval coordinates; continue its next_cursor as enrichment_cursor and discard prior enrichment slices when source_id changes. Obtain cluster IDs from courtlistener_search_opinions, courtlistener_lookup_citation, or docket results.

輸入參數cursorsectionscluster_id必填enrichment_cursor

courtlistener_get_citations

Get Citation Network

Retrieve the citation network for an opinion cluster. Supports two directions: "cited_by" (opinions that cite this one — measures precedential influence) and "citing" (opinions this one cites — reveals the authority chain relied on). This is the primary tool for tracing legal precedent chains. Note: the free tier supports shallow traversal — following 1–2 hops of a single case is practical; deep multi-hop analysis burns through the daily budget quickly.

輸入參數courtcursordirectionpage_sizecluster_id必填filed_after

courtlistener_lookup_citation

Lookup Legal Citation

Resolve legal citations (e.g., "410 U.S. 113", "93 S. Ct. 705") to opinion cluster IDs and case metadata. Enables workflows that start from a known citation rather than a search query. CourtListener extracts every citation it finds in the submitted text, so passing a passage returns one entry per citation, each with its own resolution status — an unresolved or ambiguous citation is reported in the results, not raised as an error. Supports standard US reporter formats. Costs one request against CourtListener's per-citation quota, plus one ordinary request per distinct docket whose court is resolved — max_court_lookups bounds that second half (default 4, set 0 to skip court resolution entirely). CourtListener meters this endpoint by citations submitted rather than by call, so a long passage spends proportionally more of that quota. Requires authentication — uses the CourtListener /citation-lookup/ endpoint.

輸入參數citation必填max_court_lookups

courtlistener_search_dockets

Search Federal Court Dockets

Search RECAP federal court dockets. Query terms match case name, docket number, party, and attorney names; filters narrow by party name, court, and filing date. RECAP is a crowd-sourced mirror of PACER (the federal court filing system) — coverage varies by court and date. Returns docket metadata with the parties, attorneys, and firms of record, plus up to 3 sample document entries per docket. Use courtlistener_lookup_courts to find court IDs.

輸入參數q必填courtcursorpage_sizeparty_namefiled_afterfiled_before

courtlistener_get_docket

Get Docket

Fetch docket metadata and one entries page by docket ID. Omit document_ids for the docket listing, or select RECAP document IDs embedded on entries_page to retrieve their extracted text without further upstream requests. Selected text uses bounded full/outline/page responses; continue retrieval.next_cursor as cursor with the same docket_id, entries_page and document_ids. Top-level next_cursor remains entries pagination. File availability and extracted-text status are independent. Obtain docket IDs from courtlistener_search_dockets or opinion results.

輸入參數cursordocket_id必填document_idsentries_pageentries_page_size

courtlistener_get_parties

Get Parties

Fetch a page of parties and their attorneys of record for a RECAP federal docket by docket ID. Returns each party's name, role (Plaintiff, Defendant, Petitioner, Respondent, etc.), and their attorneys with contact information, scoped to this docket. Costs one party request plus up to five attorney roster requests. A later roster page blocked by the local request budget returns fetched detail with capped resolution, unresolved IDs, and the remaining roster cursor. Obtain docket IDs from courtlistener_search_dockets or courtlistener_get_docket.

輸入參數cursordocket_id必填page_size

courtlistener_search_judges

Search Judges

Search judge/person records by name, appointing president, court, political affiliation, or demographic. Returns biographical data, current position, and appointment summary. Use courtlistener_get_judge for full appointment history and education records.

輸入參數q必填courtcursorappointerpage_sizepolitical_affiliation

courtlistener_get_judge

Get Judge Profile

Fetch full biographical profile for a single judge: positions on record — judicial appointments across all courts plus non-judicial roles — education, political affiliations, and ABA ratings. The position list is paginated upstream and walked under a page bound; the response reports whether it was truncated. Obtain person IDs from courtlistener_search_judges results.

輸入參數person_id必填

courtlistener_lookup_courts

Lookup Courts

List courts with optional filtering by jurisdiction type, active/inactive status, and scraper coverage. Primarily used to discover court IDs for use in search and filter parameters across all other courtlistener tools. Defaults to the active bench — the courts CourtListener still scrapes; pass status:'inactive' for historical courts or status:'any' for every court. A bundled snapshot returns the complete list of matching court IDs without paging whenever the filtered set fits the response budget, which covers the default bench and every jurisdiction filter. Full court records — names, citation strings, scraper status — come live from CourtListener at a fixed 20 rows per page, so pull those only when a court ID alone is not enough.

輸入參數pagestatusjurisdictionhas_opinion_scraper

courtlistener_search_oral_arguments

Search Oral Arguments

Search appellate oral argument audio recordings — the largest public collection of oral argument audio. Returns recording metadata with two direct MP3 links per result (download_url at the originating court, local_path for CourtListener's durable copy), panel judge IDs, and transcript snippets where available. Panel judge IDs can be passed to courtlistener_get_judge for biographical context.

輸入參數q必填courtcursorpage_sizeargued_afterargued_before

courtlistener_get_oral_argument

Get Oral Argument

Fetch an oral argument recording by audio_id from courtlistener_search_oral_arguments. Returns case metadata, panel IDs, duration, MP3 URL, docket and available transcript. Oversized text or metadata returns outline then page responses; continue retrieval.next_cursor as cursor with the unchanged ID/sections selection until null. The argument date comes from search or the linked docket.

輸入參數id必填cursorsections

courtlistener_search_financial_disclosures

Search Financial Disclosures

Search federal judicial financial disclosure filings — the annual reports judges file on investments, gifts, debts, outside positions, and income. Filter by judge (person ID from courtlistener_search_judges) and/or filing year; the year filter is applied to the fetched page only (CourtListener has no server-side year filter), so page through with cursor to reach a judge's filings for a year that fall on later pages. Returns per-filing metadata, category counts, itemized gifts, and a link to the source PDF. Line-item investments (often hundreds per filing, with coded values) are summarized as counts; the linked PDF carries the full itemization. Use this for judicial-ethics and recusal research after identifying a judge's person ID.

輸入參數yearcursorjudge_idpage_size

courtlistener_get_financial_disclosure

Get Financial Disclosure

Fetch a judicial financial disclosure by disclosure_id from courtlistener_search_financial_disclosures. Returns metadata, counts and typed line items with coded values decoded to dollar ranges. Select categories or omit for all. Oversized selections return outline then page responses; continue retrieval.next_cursor as cursor with the unchanged ID/categories selection until null. Large individual row fields remain recoverable through text_chunks.

輸入參數cursorcategoriesdisclosure_id必填

版本歷史

5
  1. v0.9.0最新Nov 1, 2026
  2. v0.8.0Oct 18, 2026
  3. v0.7.3Sep 30, 2026
  4. v0.7.2Sep 30, 2026
  5. v0.7.1Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分