Midpage Legal Research
Connect ChatGPT to a database of case law. With the Midpage App, ChatGPT can conduct complex legal research, review opinions, and craft high quality work product. Everything is hyperlinked to real sources for easy verification.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Legal Research Engines
- Secondary Subcategories
- None listed
- Brand
- Midpage
- Access
- Account required
- First tracked
- 2026-07-07
- Tool count
- 7
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is visible.
ChatGPT Plugin Discoverability Score
ChatGPT organic discovery is not live yet
Midpage Legal Research is tracked in the ChatGPT Plugin registry. Public organic-discovery measurement is not live for ChatGPT yet, so there is no score to publish today.
Get notified when your score goes live
Enter your work email and we’ll notify you when ChatGPT Plugin organic discovery scoring launches.
No spam. Unsubscribe any time.
Competing in ChatGPT Legal Research Engines
View CategoryHow the Discoverability Score works
Organic discovery scoring for Midpage Legal Research on ChatGPT is not live yet. The score will use measured agent conversations when it launches.
Organic discovery scoring is pending. Your Plugin score will appear on this scale when measurement goes live.
FoundDiagnostic
Whether Claude found your Plugin in connector search. It must be Found before it can reach the picker, but the score counts picker appearances—not search results.
PickedMain score
How often your Plugin appeared in the picker, or Claude invoked it directly, across contested conversations. This percentage is the Discoverability Score; the headline number is rounded.
PositionedDiagnostic
What position your Plugin appeared in when it was shown in the picker. This shows prominence, but it does not affect the score.
7 tools agents can invoke
Analyze one docket filing selected from analyzeDocketReport and answer a focused question using passages from that filing. Use this when the user needs to understand what a specific filing says. This tool answers from the filing text, not from the docket entry description. INPUT: - caseId: The caseId returned by analyzeDocketReport case.caseId. - entryNumber: The docket entry number returned by analyzeDocketReport relevantEntries[].entryNumber. - attachmentNumber: Optional attachment number returned by analyzeDocketReport relevantEntries[].attachmentNumber. Omit for the main filing on the docket entry. - question: The question to answer about this specific filing. RETURNS: - status: "ok" or a specific resolution/analysis error. - filing: Resolved filing metadata, including entryNumber, optional attachmentNumber, dateFiled, suggestedFileName, and a downloadable Midpage file URL for the filing. - answer: Direct answer based only on the filing text. - supportingPassages: Passages from the filing that support the answer, with passage and relevance. - doesNotAddress: Specific parts of the question that the filing text does not answer. Check this before relying on the answer. CITATION RULES: - When using filing content in an answer, cite the filing with the format below. - Every citation must be a markdown hyperlink to filing.url. - The ECF No. suffix is important and should be included in filing citations. - Use a descriptive filing name, then any real page/pin/paragraph if available, followed by this suffix: ECF No. {filing.entryNumber} ({filing.dateFiled formatted as "Mar. 3, 2020"}). - Example: [Pl.'s Mot. for Summ. J. 5, ECF No. 30 (Mar. 3, 2020)]({filing.url}) - If filing.dateFiled is unavailable, omit the parenthetical date rather than inventing one. - Never use short cites such as "id." or "supra"; repeat the full linked filing citation. DOWNLOAD GUIDELINES: - If the user asks to download or save the filing, use filing.suggestedFileName as the filename.
Analyze a federal docket report and answer a docket-level question. Use this for case snapshots, recent activity, procedural posture, service, complaint history, motion history, deadlines, and identifying relevant filings. This tool answers from the docket sheet only; use analyzeDocketFiling when the text of a specific filing is needed. INPUT: - court: Federal court. Prefer Bluebook-style abbreviations such as "N.D. Cal.", "S.D.N.Y.", "D. Del.", "Bankr. D. Del.", "9th Cir.", or "Fed. Cir."; full federal court names are also accepted. - docketNumber: Federal case docket number. Prefer full district/bankruptcy numbers with office or division prefix when known, such as "4:24-cv-04722"; appellate numbers look like "24-1234". - caseName: Optional case caption/name, such as "Musk v. Altman". Include it when available, especially if the docket number is incomplete. - forceFetch: Optional. Set true only when the user explicitly needs the latest official PACER docket instead of available cached or RECAP data. - question: The docket-level question to answer. RETURNS: - status: "ok" or a specific resolution/analysis error. - case: Resolved case metadata, including caseId for analyzeDocketFiling. - docketReport: Docket report metadata, including suggested filename and a downloadable Midpage file URL when one is available. - answer: Direct answer based only on the docket sheet. - relevantEntries: Docket entries or attachments supporting or relevant to the answer. Use case.caseId plus relevantEntries[].entryNumber and optional relevantEntries[].attachmentNumber with analyzeDocketFiling when the filing text is needed. - doesNotAddress: Specific parts of the question that the docket entries do not answer. Check this before relying on the answer. - warnings: Important source or parsing limitations, when present. DOWNLOAD GUIDELINES: - If the user asks to download or save the docket report, use docketReport.suggestedFileName as the filename.
Analyzes a statute, regulation, constitutional provision, or agency guidance document against a specific legal question and returns verified passages. REQUIRED before citing or quoting any statute or regulation. AUTO-USE: Call this whenever an answer depends on the wording, requirements, exceptions, scope, procedures, or current status of a primary-law provision. Do not wait for the user to say "research", "case", or "Midpage", and do not answer from memory or web snippets when this tool can retrieve the provision. FINAL-ANSWER LINK RULE: Every statute/regulation citation or specific subsection relied on must be a Markdown link. Link a passage-specific proposition or quote to its deeplinkUrl; use url only for a general reference. If the answer discusses several subsections, link each cited subsection. Never invent subsection path segments. LOOKUP (provide exactly ONE of these): - citation: canonical citation, e.g. "42 U.S.C. § 1983", "Cal. Code Regs. tit. 22, § 51451" - path: full ltree path from a previous result, e.g. "cfr.t21.cI.scH.p820" - registerCitation: Federal Register or state register citation, e.g. "89 FR 12345" - id: document UUID from a previous search/lookup LOOKUP ROUTING: - citation identifies a corpus document, not an arbitrary pinpoint within it. If the user's reference appends a subsection to a section-level citation (for example, "18 U.S.C. § 924(c)(1)(C)"), call searchLaws with the user's full reference, select the containing provision, then call analyzeLaw with its id. Keep the pinpoint in question so the analysis focuses on it. Do not silently truncate the citation. - Popular names and source-law aliases (for example, "First Step Act of 2018" or "ERISA § 514") are search terms, not citation lookup keys. Call searchLaws with the user's wording, select the intended provision, then call analyzeLaw with its id. Never guess the codified citation from memory. Required: - question: the legal question to answer. The document text (up to 400k characters) is analyzed internally; raw text is never returned to the calling model Optional: - collection: disambiguates path/citation/registerCitation lookups — a collection id (e.g. "cfr", "uscode") or human-readable name (e.g. "Code of Federal Regulations"); unresolvable values error with did-you-mean suggestions - includeHistorical: true to allow superseded or not-yet-effective versions in citation/path/registerCitation lookups (default: current law only); id always returns that exact version RETURNS: - citation, title, number: identification of the provision - analysis: summary, passages [{point, quote, deeplinkUrl}] with verified verbatim quotes, and doesNotAddress — aspects of the question the document does not cover. CHECK doesNotAddress BEFORE CITING. deeplinkUrl opens the provision at the quoted passage (and falls back to the bare page URL only when no highlightable span matched) - children: for container nodes (title/chapter/part), up to 250 child provisions with id, number, citation, title, sortOrder; childrenTotal is the true count. Children carry no text — fetch a child by its id. For containers with many children, prefer searching directly for the target section - parentId: id of the parent node — look it up to zoom out to surrounding context - versions: when the provision has version history, every version with effectiveDate, publicationDate, sourceAsOf, isHistorical/isCurrent flags, and isRequested marking the returned one — look up another version by its id (with includeHistorical: true) to compare text over time - isCurrent: whether this text is the law in force today; isHistorical: true = superseded (isCurrent false with isHistorical false = not yet effective); effectiveDate/publicationDate when stated by the source; sourceAsOf is the date of the source edition or snapshot and is not necessarily the provision's effective date - state ("Federal" or a state name), collectionType (statute/regulation/constitution/guidance/executive_order/notice) - url: Midpage link for this exact version; sourceUrl: the official source - ambiguousMatches: when the reference matched multiple documents, the candidates with id, title, citation, path, collection and state — pick one and retry by id - error: the provision could not be safely analyzed (including source-file-only text) or the reference could not be resolved. A source-file-only leaf returns metadata, url, and an explicit error; open the page to review it, but do not quote or characterize it from this tool result HOW TO USE: 1. Analyze the provision before citing it; quote only from returned analysis passages. 2. If you get a container (nodeType PARENT), navigate: children lists the subdivisions; drill into the relevant child by id. 3. Check isCurrent before asserting something is the law today. Historical text has isCurrent: false. 4. Cite with the exact citation string returned. Use a passage's deeplinkUrl for every passage-specific proposition or quote; use the bare url only for a general reference. 5. For side-by-side state comparisons ("50-state survey" questions), analyze each jurisdiction's governing provision with the same comparison question, then compare the verified propositions, qualifiers, and doesNotAddress fields.
Reviews and annotates a legal opinion, returns key takeaways, holdings, details, excerpts, and tells you how you can use this case in your response. REQUIRED before citing a case. This tool returns what the case ACTUALLY supports (not necessarily what you asked about). Use this to: 1. Find out what propositions this case actually supports 2. Extract verified quotes 3. Understand the scope/limitations of each proposition 4. Know what the case does NOT address (to avoid misattribution) DOCUMENT IDENTIFICATION (provide exactly ONE — omit the others): - opinionId: Midpage document ID from search results (e.g., "7228818", "c4efd75e-22e7-471f-8bda-95e10a13e588"). OMIT this field if you don't have a Midpage ID. - reporterCitation: Bluebook citation (e.g., "556 U.S. 662", "123 F.3d 456") — NOT WL/LEXIS - docket: For cases without reporter citations: - courtAbbreviation: e.g., "S.D.N.Y.", "9th Cir." - docketNumber: e.g., "12-cv-20100" (omit "No." prefix) HOW TO CHOOSE: 1. If you have an opinionId from search results, use ONLY opinionId (fastest) 2. If you have a reporter citation like "556 U.S. 662", use ONLY reporterCitation (omit opinionId) 3. If you only have a docket number (e.g., "No. 20-16900 (9th Cir.)"), use ONLY docket tuple 4. NEVER use WL or LEXIS citations — use docket tuple instead 5. NEVER pass "0" or placeholder values — omit fields you don't have INPUT: - question: The legal question you want answered. Be specific about the legal element. RETURNS: - citation: Exact bluebook citation string for the case - url: General Midpage link for the case as a whole - supportedPropositions: Array of propositions this case supports, each with: - proposition: Cite-ready statement of what the case holds (USE THIS TEXT when citing) - quote: Verbatim quote supporting the proposition - scope: Limitations, conditions, what it does NOT apply to - centrality: "core_holding" (strongest), "supporting_analysis" (strong), "secondary_matter" (medium), or "background" (weakest) - opinionSection (optional): the non-majority opinion that this proposition comes from (e.g., "Jackson, Concurring", "Smith, Dissenting"). - deeplinkURL: Shareable Midpage deep link that auto-scrolls to that sentence range - doesNotAddress: Topics from your question the case does NOT address. CHECK THIS BEFORE CITING. - summary: Brief summary of what the case is actually about - disposition: Short procedural outcome phrase describing what this court did in this opinion, when available - jurisdiction: Court and jurisdiction - treatment: Citator status and citation count HOW TO USE THE OUTPUT: 1. Check doesNotAddress first - if your intended use is listed, DO NOT cite this case for that purpose 2. Find a supported proposition that matches your intended use 3. Use the proposition text (or close paraphrase) when citing - it's verified to match the quote 4. Include scope limitations when relevant (especially qualifiers) 5. Prefer "core_holding" and "supporting_analysis" over "secondary_matter" or "background" for stronger authority 6. Never characterize non-majority propositions as the court's controlling holding; clearly signal when they come from concurrence/dissent text 7. If a proposition is from any non-majority opinion, it must include opinionSection (e.g., "Jackson, Concurring") 8. When citing a specific supported proposition or quote, prefer that proposition's deeplinkURL over the top-level url 9. Use the top-level url only when referring to the case generally rather than a specific proposition or quote EXAMPLE: If you ask "Is expert testimony required to prove truth as a defense to a defamation claim?" and the case mentions that an expert testified in such a case in passing: - supportedPropositions will contain "An expert testified in order to prove truth of the matter asserted" as background - doesNotAddress will contain "Whether expert testimony is REQUIRED" (what you asked about) - You should NOT cite this case to say that such testimony is REQUIRED just because the testimony was provided in this one case. WRITING RULES: 1. FAVOR paragraph-driven writing: Write like an attorney with clear topic sentences, crisp rule statements with hyperlinked citations, and thoughtful analysis. 2. FAVOR direct, concise answers: Keep answers short. Answer the question asked, not an expanded version. 3. FAVOR embedded-quotes in prose: Weave quotes into paragraphs (modify with brackets [] or ellipsis ... while keeping verbatim). 4. LIMIT lists and bullet points: Use sparingly or unless asked. 5. AVOID block quotes: Don't dump quotes in block format. 6. AVOID repetition/summaries. 7. AVOID emojis. CITATION RULES: - ALWAYS include a citation after each quoted passage - ALWAYS mention relevant scope limitations when citing if relevant - OFTEN add parentheticals after citations beginning with "ing" words or quotes. CITATION FORMAT: Every citation must be a markdown hyperlink using the returned fields. When citing a specific supported proposition or quote, use: [{citation}]({deeplinkURL}) When referring to the case generally, use: [{citation}]({url}) Example proposition citation: [International Shoe Co. v. Washington, 326 U.S. 310 (1945)](https://app.midpage.ai/document/1234567?lines=10-12) Example general case citation: [International Shoe Co. v. Washington, 326 U.S. 310 (1945)](https://app.midpage.ai/document/1234567) - Use the exact citation string returned by the tool—never abbreviate or modify - NEVER use short cites (id., supra)—always full citation with link - Prefer deeplinkURL whenever the citation is tied to a specific supported proposition or quote - NEVER invent reporter pin cites. If you want a Midpage line-specific link, use the returned deeplinkURL - NEVER cite to LEXIS or WL citations; always cite to the exact bluebook citation provided (which may be a docket-number citation in lieu of a reporter for unpublished cases) - Include a citation after every legal proposition or quote
Find quotable passages within a single opinion using keyword search. Fast, free, no AI. WHEN AND HOW TO USE THIS TOOL: - This tool is optional but recommended. - Use this tool after a search, or directly if the user gives you a citation. - Check if a search result is actually relevant (sort of like double clicking into a result) - To decide which cases are worth the AI cost of analyzeOpinion (only the most relevant!) HOW NOT TO USE THIS TOOL: - Do not use this tool alone. If you intend to cite a case, you must use analyzeOpinion. - Do not use this tool unless the user has specifically provided a citation to a case. Default to the search tool. DOCUMENT IDENTIFICATION (provide exactly ONE — omit the others): - opinionId: Midpage document ID from search results (e.g., "7228818", "c4efd75e-22e7-471f-8bda-95e10a13e588"). OMIT this field if you don't have a Midpage ID. - reporterCitation: Bluebook citation (e.g., "556 U.S. 662", "123 F.3d 456") — NOT WL/LEXIS - docket: For cases without reporter citations: - courtAbbreviation: e.g., "S.D.N.Y.", "9th Cir." - docketNumber: e.g., "12-cv-20100" (omit "No." prefix) HOW TO CHOOSE: 1. If you have an opinionId from search results, use ONLY opinionId (fastest) 2. If you have a reporter citation like "556 U.S. 662", use ONLY reporterCitation (omit opinionId) 3. If you only have a docket number (e.g., "No. 20-16900 (9th Cir.)"), use ONLY docket tuple 4. NEVER use WL or LEXIS citations — use docket tuple instead 5. NEVER pass "0" or placeholder values — omit fields you don't have QUERY INPUT: - query: Key terms to match, NOT a full question - GOOD: "personal jurisdiction minimum contacts purposeful availment" - BAD: "Does this case establish personal jurisdiction?" (questions don't work well) RETURNS: - snippets: Verbatim passages from the opinion (can be quoted directly) LIMITATIONS: - Keyword-based only—may miss relevant passages with different wording - Easy to take things out of context because you only see a snippet - Does NOT tell you if the case supports or contradicts your proposition - Does NOT identify qualifiers/exceptions NEXT STEP: Use analyzeOpinion() on promising cases to get analysis, qualifiers, and verified quotes before citing.
Search US case law across federal and state courts. Returns metadata, highlights, and citator treatment data. WHEN AND HOW TO USE THIS TOOL: - Use this tool to identify US legal opinions that are potentially relevant to the user's question. This is your default legal research tool. - Use this tool if your response requires or is likely to require any legal analysis. Alternatively, if the user references a specific citation, you can analyze it directly using analyzeOpinion. - Do not presume to know the answer to any legal question - do your research using the tools provided to you. - Always use this tool in conjunction with the findInOpinion and/or analyzeOpinion tools. HOW NOT TO USE THIS TOOL: - Do not use this tool alone. This tool is a first step. Follow up with findInOpinion and analyzeOpinion tools to review cases more granularly. - You can NEVER cite a case in your response until you have used the analyzeOpinion tool, at minimum, on that case. WHAT YOU GET: - documentId: Use this ID with findInOpinion() and analyzeOpinion() - metadata: Bluebook citation (which contains party names, court, date, docket and/or reporter citation) - highlights: Brief snippets showing why this case matched (NOT for quoting—use findInOpinion for quotes) - treatment: Citator status (positive/negative/caution/neutral), citation counts QUERY TIPS: - This tool combines meaning-based and keyword matching. It works for legal concepts, natural-language issues, exact terms, citations, docket numbers, patent numbers, and other identifiers. - Use key terms and concepts, e.g.: - personal jurisdiction minimum contacts purposeful availment - noncompete duration length duration unconscionable - Questions and statements also work well, e.g.: - Irreparable harm is the most important factor when analyzing a request for a preliminary injunction. - Do Nevada courts consider Delaware law to be persuasive authority on issues of corporate governance? - For a known identifier, include it exactly as written, e.g.: - patent no 7,479,949 - 556 U.S. 662 - If you need exact wording or quotable passages, use findInOpinion on promising results. - Run multiple queries in parallel for different legal issues - Use filters to narrow by jurisdiction and date - Do NOT use the publishStatus filter unless the user explicitly asks to restrict results by publication status, and never when searching for a specific case. Every value excludes all cases that don't match it exactly — "unknown" is not a safe default for cases whose status you haven't verified. - Each query may return up to 10 results - You can run up to 4 queries per call FILTERS (all optional): - jurisdictionType: "federal" | "state" | "state_and_federal" - circuits: ["9", "2", "supreme_court", "dc"] for federal courts - courts: ["S.D.N.Y.", "9th Cir."] using Bluebook-style court abbreviations - states: ["California", "New York"] for state courts - publishStatus: "published" | "unpublished" | "unknown" | "in_chambers" | "separate" | "errata" | "relating_to". Omit unless the user explicitly asks to restrict by publication status. "unknown" matches only opinions whose recorded status is missing or uncertain — it does not mean "status not verified by you". When filtering (e.g., published-only California research), run a parallel query with "unknown", since some jurisdictions leave this field missing. - startDate/endDate: "YYYY-MM-DD" format POSSIBLE NEXT STEPS: 1. Review highlights and treatment to identify promising cases 2. Use findInOpinion() on 3-5 candidates to extract quotable passages (optional) 3. Use analyzeOpinion() on cases you intend to rely on in your final response (REQUIRED before citing)
Searches Midpage's US primary-law corpus: statutes, regulations, constitutions, and agency guidance — federal plus all 50 states and DC. AUTO-USE: Call this whenever a user asks what a statute, code section, regulation, administrative rule, or constitutional provision says, requires, permits, prohibits, or whether it applies. Do not wait for the user to say "research", "case", or "Midpage", and do not default to web search for primary-law text available here. Use this to FIND the governing provision; then call analyzeLaw with the result's id to get its verbatim text before citing. RESOLUTION: Use searchLaws before analyzeLaw when the user gives (a) a subsection pinpoint that may not be a standalone corpus document, such as "18 U.S.C. § 924(c)(1)(C)", or (b) a popular name/source-law alias, such as "First Step Act of 2018" or "ERISA § 514". Search the user's full wording, choose the intended provision, and pass its id to analyzeLaw. Do not guess a codified citation from memory or silently truncate a pinpoint. Results are the law in force TODAY by default (currentOnly). Currency is derived: not superseded, not future-effective, no in-force successor. INPUT: - query: legal concepts / key terms (BM25 keyword search — not semantic) - states: state names or USPS abbreviations ("California", "TX"); "Federal" for federal law. Validated server-side — unrecognized values error with did-you-mean suggestions instead of silently matching nothing - collectionTypes: statute | regulation | constitution | guidance | executive_order | notice - collections: specific codes, by id (e.g. "cfr", "wa-rcw") or human-readable name (e.g. "Code of Federal Regulations", "Texas Administrative Code") — resolved server-side; unresolvable values error with did-you-mean suggestions - pathPrefix: subtree filter within one code — a dot-separated ltree path from a previous result (e.g. "cfr.t21" for all of 21 CFR, including descendants), pair with collections. Malformed prefixes error rather than matching nothing. - currentOnly: false to include historical versions - page / pageSize: pagination over stable search-rank windows (max 50 per page). A page can contain fewer than pageSize results when PostgreSQL rejects index-stale rows; continue to the next page normally. RETURNS: - results: matching provisions with id, citation, title, number, state, collectionId/collectionType, path, nodeType, effectiveDate, snippets (matched fragments; <em> marks the matched terms), isCurrent + isHistorical (isCurrent false with isHistorical false = not yet effective), and url (the Midpage page for that exact version) — pass a result's id to analyzeLaw before citing - total: Elasticsearch estimate for the whole query; it can include index-stale rows removed from results by the authoritative PostgreSQL currency check - stateCounts: estimated per-state hit counts for the WHOLE query, not just this page. Use them to scope state-survey work, then verify each relevant state with a filtered search; do not treat a zero/nonzero estimate as proof of exhaustive legal coverage. - error: set instead of results when a filter could not be resolved or the window was exceeded — the message says how to fix the call HOW TO USE: 1. Search broad, then narrow with states/collectionTypes/collections filters. 2. NEVER cite from snippets — they are relevance context. Call analyzeLaw with the result id and quote from its verbatim text. 3. For 50-state or N-state surveys: one query without states filter → stateCounts estimates likely coverage → per-state filtered queries → analyzeLaw the top provisions.
How do I improve a ChatGPT Plugin's discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Midpage Legal Research alternatives on ChatGPT?
As of 2026-08-14, Midpage Legal Research competes with AI Attorney, AL WAKEELO, Alizé, AppealBase™, Açık Silivri Havadis, BIA Edge, CourtListener, Courtroom5, Craime, Descrybe Legal Engine, ElevenFlo, GovQuery, IFG, Juridata, Lawstronaut, Legal Data Hunter, LegisRatio, Letra da Lei, Nylon, realLaw AI, Red Judicial, Remedy Legal, Simpliciter AI, Trellis Law in ChatGPT Legal Research Engines, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.