Casepoint
eDiscovery, Legal Hold & FOIA
- Category
- Operations
- Primary Subcategory
- Legal Practice & Matter Platforms
Integration details
Description
Casepoint connects your legal and investigative data to ChatGPT. Ask questions about active matters across eDiscovery, Legal Hold, and FOIA, and get clear answers drawn directly from your Casepoint workspace or organization. Check review status, hold status and rosters, and FOIA deadlines without opening the platform. Access is read-only and scoped to what you select when you connect.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Legal Practice & Matter Platforms
- Secondary Subcategories
- None listed
- Brand
- Casepoint
- Access
- Account required
- First tracked
- 2026-08-01
- Tool count
- 15
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Get alerts for Casepoint
Get updates when Casepoint’s Discoverability Score or category rank changes.
ChatGPT Plugin Discovery Score
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Competing in ChatGPT Legal Practice & Matter Platforms
View Category15 tools agents can invoke
Returns FOIA Annual Report aggregate metrics for a fiscal year, broken out by Agency/Component. All three families (FOIA, Appeal, Consultation) are returned in one call - call once; no routing or multi-call logic is needed. Use for aggregate fiscal-year metrics: total requests received/closed, fee waivers granted/denied (FOIA only), average processing time in working days (overall, and per track - Simple/Complex/Expedited - for FOIA), and current & previous fiscal-year backlog counts (FOIA and Appeal), grouped by Agency/Component. The per-track figures are average days, not request counts. Do NOT use for list queries (use search_requests) or single-request detail (use get_request_detail). The full result-rendering contract (exact column headers, the three per-family tables with their fixed column sets, hard constraints, value rendering, and notes) is documented on the `component` parameter. Read it before rendering.
get_annual_report
Custodian collection report for the connected eDiscovery workspace, grouped by custodian. Returns one entry per custodian (titled by custodian email) with the custodian-level roll-up — total documents collected, the data sources covered (email, OneDrive, Teams, Slack, mobile, archived mailboxes, shared drives, …), the collected data volume (GB/TB), and the file types collected — PLUS a per-datastore breakdown under "Data Stores": one entry per datastore the custodian has documents in, each carrying that datastore's own document count, date range, data sources, collected volume, and file types. Every custodian is returned even with no collected documents (empty breakdown). Use this when the user asks things like: "custodian collection report", "what did we collect per custodian", "collection volume by custodian", "data sources per custodian", "how much did each custodian contribute per datastore", "per-datastore breakdown by custodian". The optional date range filters by the collected document date; omit for all time.
get_custodian_collection_summary
Returns the metadata for a document in the connected workspace, looked up by its exact control number / display ID (case-insensitive). The result contains a fixed field set: Doc ID, File Type, File Size, Created Date, Received Date (emails only), Custodian, Source Data Type, and MD5 Hash. Dynamic/coded fields and processing flags are not included. No internal IDs are returned. Provide the document's exact control number in 'documentNumber' (case does not matter). Use when the user asks: "show metadata for document ABC00005217", "what are the fields for control number X", "document properties for <control number>". When the user asks about multiple documents, call this tool once per control number and aggregate the results. Presentation — keep the field order: Doc ID, File Type, File Size, Created Date, Received Date, Custodian, Source Data Type, MD5 Hash. Missing values (e.g. Received Date for non-email documents) are already returned as '—' — print every value exactly as returned; never write 'null' or append anything to the '—'. - SINGLE document: print the document's ready-made 'fieldValueTable' verbatim — a two-column 'Field | Value' markdown table, one field per row, with the full (untruncated) MD5 hash. Fields with no value are already omitted from it — do not re-add them. - MULTIPLE documents: the response contains ready-made markdown — print 'tableHeader' (from any one response) exactly once, then print each document's 'tableRow' verbatim on its own line, in the order the user asked. That yields ONE combined table with one row per document. Never transpose it — do NOT make one column per document and do NOT put field names in the first column.
get_document_metadata
The people (custodians) placed on ONE named legal hold — the hold's roster — including each person's directory information and hold-notification status, plus any custom fields configured for custodians (under customFields). Pass the exact hold name from get_legalhold_list. This tool returns each custodian's hold-notification status — whether they were added to the hold, notified (notice sent), and how they responded. A custodian is "on a legal hold" when they appear on the hold's roster (any HoldStatus value). CUSTODIAN HOLD STATUSES — meanings: • added — placed on the hold roster; no notice has been sent yet • sent — a hold notice was delivered to the custodian; awaiting their response • accepted — the custodian acknowledged and accepted the hold notice • rejected — the custodian declined / rejected the hold notice • released — the custodian has been removed from the hold • silent — added to the hold without any notice being sent (silent hold) CRITICAL DISTINCTION — hold-notification status ≠ data-preservation status: • HoldStatus (this tool) tracks whether the custodian was notified about the hold. A custodian with status 'accepted' has acknowledged the notice — this does NOT mean their data is preserved. • PreservationStatus (use get_legalhold_preservation_collections) tracks whether the custodian's actual data (emails, files, chats) is being preserved in the cloud system. Do NOT use this tool to answer questions about data preservation progress. PAGINATION RULES — follow strictly: • Sequential only. Start with navigate='first'. To move forward, call again with navigate='next' and current_page set to the 'page' value from the previous response; navigate='previous' goes back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page. • If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT attempt it. Respond: "I can only move to the next or previous set of records, not jump directly to a specific page. Would you like me to continue with the next set?" • NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages", no total page/record counts. The 'page' value is for your internal use as current_page only. • If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a next set. • Never pass a raw user-supplied page number into this tool. Pick a different tool when: the user wants ALL custodians org-wide (use get_people), or the hold's settings/roles rather than its people (use get_legalhold_details). RESPONSE PRESENTATION — how to show this result to the user: • The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user. • Present results as a concise Markdown table/summary. • Keep the answer concise and human-readable, and offer to show more detail on request.
get_legalhold_custodians
Full briefing for ONE named legal hold: status, start/end/reminder/issued dates, matter and workspace, admin, issuer, total custodian count, every role assigned to the hold with its View or Edit permission, and any custom fields configured for the hold (under customFields). Use this when the user asks things like: "tell me about the Smith hold", "details of hold X", "what's the status/dates of hold X", "who has access to this hold and what can they do", "what roles/permissions are on hold X", "verify the settings of hold X". Pass the exact hold name from get_legalhold_list. Pick a different tool when: the user wants the LIST of holds (use get_legalhold_list), the custodians/people on the hold (use get_legalhold_custodians), or preservation progress (use get_legalhold_preservation_collections). RESPONSE PRESENTATION — how to show this result to the user: • The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user. • Present results as a concise Markdown table/summary. • Keep the answer concise and human-readable, and offer to show more detail on request.
get_legalhold_details
Lists all legal holds in the connected Casepoint organization. A legal hold (a.k.a. hold, litigation hold, preservation notice, retention notice, "hold notice") is an instruction to preserve data for a matter. Returns each hold's name, matter name/number, description, status, custodian counts by notification state, start/end/issued dates, admin, issuer, and workspace. HOLD STATUS: Valid values are 'Active' ,'Inactive' and 'Draft'. The custodian count fields (AddedCustodians, SentCustodians, AcceptedCustodians, RejectedCustodians, ReleasedCustodians, SilentCustodians) reflect hold-notification state only — they say nothing about whether data is being preserved. Use this when the user asks things like: "what holds do we have", "show me our legal holds", "list litigation holds", "any active holds", "do we have a hold on matter X". This is usually the STARTING POINT — it returns hold names you then pass to the detail, roster, or preservation tools. PAGINATION RULES — follow strictly: • Sequential only. Start with navigate='first'. To move forward, call again with navigate='next' and current_page set to the 'page' value from the previous response; navigate='previous' goes back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page. • If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT attempt it. Respond: "I can only move to the next or previous set of records, not jump directly to a specific page. Would you like me to continue with the next set?" • NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages", no total page/record counts. The 'page' value is for your internal use as current_page only. • If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a next set. • Never pass a raw user-supplied page number into this tool. Note: takes no hold id (none are exposed); other tools are driven by the hold NAME returned here. For one hold's full settings use get_legalhold_details; for its people use get_legalhold_custodians. RESPONSE PRESENTATION — how to show this result to the user: • The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user. • Present results as a concise Markdown table/summary. • Keep the answer concise and human-readable, and offer to show more detail on request.
get_legalhold_list
Preservation & collection activity under ONE named legal hold — one row per custodian per data source. Shows custodian name/email, cloud type, media type/label, overall and per-source preservation status (mail / drive or sites / chat / SharePoint), collection status, authorization status, preservation & collection dates and locations, collection size, workspace, descriptions, employment status, and any custom fields configured for the data source (under customFields). This is "what data is actually being held / collected" for the hold. KEY DISTINCTION — two separate status fields in each row: • PreservationStatus — whether the custodian's DATA is being preserved (NotStarted / InProgress / Preserved / Failed / Released / Ignored). This answers "is their data actually on hold in the cloud system?" • HoldStatus — the custodian's hold-NOTIFICATION status (added / sent / accepted / rejected / released / silent). This answers "were they notified about the hold?" A custodian can have HoldStatus='accepted' (acknowledged the notice) but PreservationStatus='NotStarted' (data not yet preserved) — these are independent. Use PreservationStatus to answer questions about data preservation progress. Use this when the user asks things like: "what's being preserved for hold X", "preservation status for X", "collection progress / status", "has custodian Y's data been collected", "what sources are on hold for X", "how much has been collected". Pass the exact hold name from get_legalhold_list. PAGINATION RULES — follow strictly: • Sequential only. Start with navigate='first'. To move forward, call again with navigate='next' and current_page set to the 'page' value from the previous response; navigate='previous' goes back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page. • If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT attempt it. Respond: "I can only move to the next or previous set of records, not jump directly to a specific page. Would you like me to continue with the next set?" • NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages", no total page/record counts. The 'page' value is for your internal use as current_page only. • If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a next set. • Never pass a raw user-supplied page number into this tool. Pick a different tool when the user wants the people and their notification status rather than data sources (use get_legalhold_custodians). RESPONSE PRESENTATION — how to show this result to the user: • The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user. • Present results as a concise Markdown table/summary. • Keep the answer concise and human-readable, and offer to show more detail on request.
get_legalhold_preservation_collections
The organization-wide custodian directory — every person/contact tracked in the connected Casepoint org, NOT tied to any legal hold. Each record has name, email, job title, address, country/state/city/zip, group, department, manager email, and employment status. Custodian = a person whose data may be preserved (employee, witness, contact). Use this when the user asks things like: "who are our custodians", "list all custodians", "find the custodian with email X", "give me a contact list", "who do we track / who's an employee here", "look up person Y". All filter parameters are optional partial-match (contains) filters and combine with AND; omit them to list everyone. PAGINATION RULES — follow strictly: • Sequential only. Start with navigate='first'. To move forward, call again with navigate='next' and current_page set to the 'page' value from the previous response; navigate='previous' goes back one step. You can move only ONE step at a time and CANNOT jump to an arbitrary page. • If the user asks for a specific page ("give me page 3", "go to page 5", "show page -1"), do NOT attempt it. Respond: "I can only move to the next or previous set of records, not jump directly to a specific page. Would you like me to continue with the next set?" • NEVER expose page structure to the user — no page numbers, no "page 1 of 3", no "more pages", no total page/record counts. The 'page' value is for your internal use as current_page only. • If hasMore=true, end with a simple offer and nothing more: "Would you like me to show the next set of records?" If hasMore=false, tell the user this is the end of the list and do NOT offer a next set. • Never pass a raw user-supplied page number into this tool. Pick a different tool when the question is about a SPECIFIC hold: for the people on one hold and their notification status use get_legalhold_custodians; this tool is the whole org directory. RESPONSE PRESENTATION — how to show this result to the user: • The result is JSON for YOU to read; do NOT paste or display the raw JSON to the user. • Present results as a concise Markdown table/summary. • Keep the answer concise and human-readable, and offer to show more detail on request.
get_people
Processing exceptions report for the connected eDiscovery workspace, aggregated to the data-store level. Returns the total number of data stores, the grand total exception count across the workspace, and — per data store — the individual exception category counts (password-protected files, system files, virus-infected files, unsupported attachments, unsupported loose documents, corrupted files, exceptions files, unstable mailbox) plus the data-store total. Where a data store spans multiple datasets, all per-dataset counts are summed into a single row for that data store. Use this when the user asks things like: "how many exceptions are there", "processing exceptions report", "how many password-protected or corrupted files were found", "exception breakdown by data store", "what files failed processing", "unsupported or virus-infected document counts", "unstable mailbox count". Takes no parameters — it reports on the connected workspace.
get_processing_and_exceptions_report
Production QC and exports for the connected eDiscovery workspace — the completed productions / export sets. Returns totals (number of production sets, documents produced, total volume in GB) and, per set, the data store, dataset, production set name, format, produced date, document count, volume, and Bates range (first…last Bates). Reports across ALL data stores the caller can access, and can optionally filter production sets by created date range. Use this when the user asks things like: "what have we produced", "production QC", "production volumes", "how many documents were produced", "Bates ranges", "list our productions / export sets". All parameters are optional — defaults give the full, unfiltered report across every data store. IMPORTANT: if the user specifies a date range (e.g. "between 2026-01-01 and 2026-07-28", "produced this year", "since last month"), you MUST convert it to ISO 8601 and pass it via dateRangeStart/dateRangeEnd — do not omit them just because they are optional parameters. Only omit them when the user has not given any date bound at all.
get_production_qc_and_exports
Fetch the full record for a single FOIA, Appeal, Consultation, or Litigation request by tracking number, including its correspondence log and associated documents. Use when the prompt names a specific tracking number (e.g. "tell me about FOIA-2026-00123", "status of <tracking-number>"). Do NOT use for list queries across many requests (use search_requests) or aggregate fiscal-year metrics (use get_annual_report). The full output-rendering contract (exact field labels, the correspondence-log and documents sub-tables, field notes, and error handling) is documented on the `tracking_number` parameter.
get_request_detail
Review batch and QC status snapshot for the connected eDiscovery workspace. Returns the number of review phases, the total and reviewed document counts, the total review batches, and the batch pipeline by state — pending (not started), active (in progress / accepted), and completed. Use this when the user asks about review/QC progress, batch or QC status, how many phases or batches exist, or how far along review is. Takes no parameters — it reports on the connected workspace.
get_review_batch_qc_status
Review team productivity report for the connected eDiscovery workspace, grouped by reviewer. Returns one row per reviewer with documents reviewed, image counts and edits summed across the date range, total review time (HH:MM:SS), and the hourly review rate (total documents reviewed per review-hour). Use this when the user asks things like: "how productive is the review team", "reviewer productivity", "review rate / docs per hour", "who reviewed the most documents", "how much time did reviewers spend". All parameters are optional — defaults give the full, unfiltered report for every reviewer.
get_review_team_productivity
Orientation snapshot of the connected eDiscovery workspace (matter). Returns these workspace-level fields: workspaceName, workspaceStatus (Active / Closed / Archived), matterType, openDate, and totalCustodians. Document counts cover EVERY datastore the caller can access (not just the default one) and are returned in two parts: - 'aggregate' — the default overview: accessibleDataStores (how many datastores the caller can access) plus totalDocuments and producedDocuments summed across all of them. - 'dataStores' — an array with one entry per datastore, each carrying dataStoreId, dataStoreName, totalDocuments and producedDocuments. Workspace name/status/matter type and custodian count are workspace-level (not per datastore). By DEFAULT present the 'aggregate' overview. Only break the numbers down per datastore (from 'dataStores') when the user explicitly asks for individual / per-datastore data — e.g. "documents per datastore", "breakdown by datastore", "counts for each datastore". Use this when the user asks things like: "what is this matter / workspace", "give me an overview", "matter type / status / open date", "how many documents are in here", "how many custodians", "documents per datastore". Takes no parameters — it reports on the connected workspace.
get_workspace_summary
Search FOIA Requests with natural-language-derived filter clauses. Read-only; scoped to the caller's connected organization and role visibility. Returns a paginated list of request rows (16 fixed fields each) plus optional warnings. Use when the prompt asks for a LIST of requests to filter, sort, or count. Do NOT use for: single-request detail (use get_request_detail), aggregate fiscal-year metrics (use get_annual_report), mutations (this tool is read-only), or cross-organization queries (scoped to the caller's organization only). The full contract - how to build the payload (field-label trigger table, operators, State-vs-Status routing, input schema, pagination) and how to render the result (exact column headers, one column per field, warnings and errors) - is documented on the `payload` parameter. Read it before composing a call.
search_requests
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 Casepoint alternatives on ChatGPT?
As of 2026-09-17, Casepoint competes with Aurora, Casepoint Gov, Chat Jurídico, Courtroom5, DocketDrafter, GC AI, JUNE, LawVu, Mary, May or Shall, Quilia in ChatGPT Legal Practice & Matter Platforms, 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.