# OpenCase

> Verify legal citations, check case validity and quotes, and research US law with cited answers.

- name: com.opencase/opencase
- version: 1.0.1
- connection class: R2 (oauth_consent_once)
- trust: 83/100 flags: no-repository
- quality: 94/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.opencase%2Fopencase
- tools: https://api.protogrid.dev/v1/servers/com.opencase%2Fopencase/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "opencase": {
      "type": "http",
      "url": "https://www.opencase.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-2d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (new)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 83 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- warn `auth.cimd`: only Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,526 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,526 tokens to load them all
- tool set hash: fccd46f6a3296f552787425193129241
- badge: [![protogrid quality](https://protogrid.dev/badge/com.opencase/opencase.svg)](https://protogrid.dev/servers/com.opencase/opencase)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://www.opencase.com/mcp (streamable-http, auth oauth2, reachable true, uptime30d 1)

## Packages

_none_

## Tools (11)

- `check_case_validity`: Is this case still good law? Takes one case, such as "550 U.S. 544". A pending, provisional, preliminary, or stale result is not a clearance. To see which decisions cited it and how, use get_case_treatments.
- `check_quote`: Check whether a quotation appears word for word in the full text of one authority, identified by citation or OpenCase legalContentId. Ellipses and bracketed alterations are honored. This is a plain text comparison, not an AI judgment.
- `detect_legal_citations`: Find the citations in a text and their positions, without looking any of them up. Use it to list what a document cites. To check whether they are real, use verify_citations_in_text.
- `get_case_treatments`: Which later decisions cited one case, such as "550 U.S. 544", and how each treated it. For negative treatment, pass treatmentClasses ["negative", "cautionary"]: negative is overruled, reversed, vacated, or abrogated; cautionary is questioned, superseded, or declined to follow. Null treatment fields mean the citing reference has not been analyzed. For the case-level good-law status, use check_case_validity.
- `get_docket_filing`: Retrieve one numbered CourtListener RECAP docket entry and any contributed document text. RECAP may contain filing metadata without document text.
- `get_legal_authority`: Read the text of one authority, by citation (such as "Fed. R. Evid. 702") or by legalContentId. To check whether citations exist without reading them, use resolve_legal_citations.
- `research_legal_question`: Research a legal question and return a cited answer using public legal sources.
- `resolve_legal_citations`: Check a list of separate citation strings, such as ["410 U.S. 113", "42 U.S.C. § 1983"]. For citations inside prose, use verify_citations_in_text. A bare case name with no reporter cite comes back as not checked.
- `review_document_against_law`: Research law relevant to a supplied legal document and return grounded findings, authorities, and proposed edits. Proposed edits are not applied.
- `search_dockets`: Search CourtListener RECAP for federal PACER dockets by party name or docket number. Ambiguous same-number matches are returned for court disambiguation.
- `verify_citations_in_text`: Check every citation in a draft, brief, memo, or passage. One call checks the whole text, so send the full document rather than one citation at a time. This is the cite-check tool. Returns each citation's position, status, type, and source.
