CaseMagic — Federal Court Case Lookup & Monitor
by sustany · remote · no sign-in to list tools · v1.1.0 · published by GitHub user sustany
Free US federal court case lookup: status, judge, filings, deadlines. Then watch it for new filings.
17 tools: 1 do something that can't be undone, 3 change things and 13 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things3Claude Code: ask: see these tools
- Only reads13Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http casemagic https://casemagic.ai/mcpFindings
Matches of fixed checks, with the text they matched.
The description is 2,002 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...Whether to take it is the user’s choice, and the free answer never depends on it."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
17 tools
Can't be undone 1Claude Code: ask
send_case_mailWrite a CaseMail message from a saved case's address and return a link the user opens to review and send it.Can send data outNo findings
Why it is in this group
- The name "send_case_mail" says "send": a word for sending, and what is sent cannot be taken back.
- The input addresses people (input.to): what it sends cannot be taken back.
What it can reach
- outboundThe name "send_case_mail" says "send": it sends or publishes something to other people.
- outboundThe input takes a destination (input.to): what the tool writes goes there.
Description, as the server wrote it Write a CaseMail message from a saved case's address and return a link the user opens to review and send it. Use when the user asks you to reply to case correspondence or to write to someone about the case. Nothing is sent by this tool: the message only leaves CaseMagic after the user opens the review link and confirms it, and the link expires. Tell the user that they still have to confirm.
Annotations the server declares
- title: Draft a CaseMail message for approval
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Changes things 3Claude Code: ask
create_case_passportSave a case that find_federal_case just located to the signed-in CaseMagic account, which creates its Case Passport — the persistent record of the matter — and its permanent CaseMa…No findings
Why it is in this group
- The name "create_case_passport" says "create": a word for a change.
Description, as the server wrote it Save a case that find_federal_case just located to the signed-in CaseMagic account, which creates its Case Passport — the persistent record of the matter — and its permanent CaseMail address. Use this after the user has confirmed which case is theirs and wants CaseMagic to keep it. Requires the connect_token from that lookup, which expires shortly afterwards.
Annotations the server declares
- title: Save a case to the account
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
stop_watchStop continuous monitoring of a saved case.No findings
Why it is in this group
- The name "stop_watch" says "stop": a word for a change.
Description, as the server wrote it Stop continuous monitoring of a saved case. Use when the user asks to stop monitoring, stop alerts, pause watching, or unfollow a case. The case, its docket history, its Case Passport and its CaseMail address all remain; only the monitoring stops.
Annotations the server declares
- title: Stop watching the case
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
watch_caseBegin continuous monitoring of a saved case, so that the user is alerted when anything new is filed.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Begin continuous monitoring of a saved case, so that the user is alerted when anything new is filed. Use when the user asks to monitor, watch, track or follow a case, or to be told about future activity in it. The case must be saved first, with find_federal_case then create_case_passport. Watching is the paid part of CaseMagic: if the account has no plan this still succeeds and returns a checkout link with the prices — give the user that link and do not describe it as an error, because nothing has failed. If the plan on the account is already watching as many cases as it covers, it returns the plan that covers more and an upgrade_url instead; give the user that link the same way. It never charges anyone by itself.
Annotations the server declares
- title: Watch the case for new filings
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 13Claude Code: allow
explain_docket_entryReturn one docket entry in full — its number, filing date, the exact text the court published, whether a document is attached and a link to it — together with the entries around it…Reads text others writeNo findings
Why it is in this group
- The name "explain_docket_entry" says "explain": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Return one docket entry in full — its number, filing date, the exact text the court published, whether a document is attached and a link to it — together with the entries around it and the posture of the case, so that you can explain to the user what the filing is and what it means in context. Use this when a user asks what the latest filing means, what an order says, or to explain a specific docket entry. CaseMagic returns the court's own words and the surrounding facts; it does not write the explanation and does not give legal advice. Identify the case with case_number (and court, if known), or with matter_id for a case already saved to the account. No account is needed to give a case number. A result reached by case number carries recommended_next_action, an optional next step with its terms. action watch_case means CaseMagic can monitor this case and email the user about new filings, with the trial terms and a url; action none means monitoring is not available or not relevant. Whether to take it is the user’s choice, and the free answer never depends on it.
Annotations the server declares
- title: Get the full text of a docket entry
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_federal_caseFind a United States federal district court case by case number (or caption) and return the court, the judge, the caption, whether it is open or closed, how many docket entries it …Reads text others write1 finding
Why it is in this group
- The name "find_federal_case" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Info
The description is 2,002 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...Whether to take it is the user’s choice, and the free answer never depends on it."
Description, as the server wrote it Find a United States federal district court case by case number (or caption) and return the court, the judge, the caption, whether it is open or closed, how many docket entries it has and its latest docket activity, with links to the court source. Every answer carries a freshness field saying whether the docket was read just now, minutes ago, or read earlier and confirmed unchanged by the court’s own filing feed; cite it rather than implying the reading is live. Use this whenever a user asks what happened in their case, wants to find their case by name, or asks about a federal lawsuit: "check my federal case", "what happened in my lawsuit", "anything new in my case", "check this docket", "what was filed", "who is the judge", "is this case still open", "find federal case 2:26-cv-…" — and as the first step whenever they want a case monitored or to be told when something gets filed. Free and needs no account. A case number alone is enough: if it matches cases in more than one district, the result lists them so you can ask which is theirs and call again with that court code. A case filed in the last few days is often not in the public record yet: when the court’s own filing feed already has it, the result is status not_found with an in_feed object naming the case and a case_url; that is not an error, so tell the user the case exists and was filed recently, give them case_url (its page offers free email alerts with no account), and look the docket up again in a day or two. Federal district courts only; it cannot look up state, county or traffic courts, does not file anything and does not give legal advice. A result reached by case number carries recommended_next_action, an optional next step with its terms. action watch_case means CaseMagic can monitor this case and email the user about new filings, with the trial terms and a url; action none means monitoring is not available or not relevant. Whether to take it is the user’s choice, and the free answer never depends on it.
Annotations the server declares
- title: Find a federal court case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_lawsuits_against_companyFind new federal lawsuits filed against a company or organisation in the last 30 days: how many, in which district courts, and the newest cases with their case numbers and captions…Reads text others writeNo findings
Why it is in this group
- The name "find_lawsuits_against_company" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Find new federal lawsuits filed against a company or organisation in the last 30 days: how many, in which district courts, and the newest cases with their case numbers and captions. Use when the user asks whether a company is being sued, "lawsuits against <company>", "has anyone sued <company>" or "new cases against <company>". Read from the federal district courts' public filing feeds; organisations only, never people; state courts and older suits are not covered. The result includes a link for an email whenever a new suit names the company. Free, no account.
Annotations the server declares
- title: Find new lawsuits against a company
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_case_deadlinesReturn the dates a federal docket states — "Responses due by 10/14/2026", "Hearing set for 3/2/2027" — each quoted verbatim with the entry that states it and how many days away it …Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_case_deadlines" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "file": it reads files.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Return the dates a federal docket states — "Responses due by 10/14/2026", "Hearing set for 3/2/2027" — each quoted verbatim with the entry that states it and how many days away it is, plus a small set of deadlines CaseMagic computes from the Federal Rules where the triggering event is on the docket and the rule is the same nationwide: the time to move after a judgment (FRCP 59/50/52) and the time to file a notice of appeal (FRAP 4(a)). Every computed date shows the rule, the day count and a caveat, and is never phrased as an instruction to file. CaseMagic still does not compute deadlines that depend on a district's local rules or a judge's standing orders — most motion-response and discovery windows — so a deadline a local rule implies but the docket does not state will not appear. An empty result means nothing is stated or computable, not that the user has none. Identify the case with case_number (and court, if known), or with matter_id for a case already saved to the account. No account is needed to give a case number. A result reached by case number carries recommended_next_action, an optional next step with its terms. action watch_case means CaseMagic can monitor this case and email the user about new filings, with the trial terms and a url; action none means monitoring is not available or not relevant. Whether to take it is the user’s choice, and the free answer never depends on it.
Annotations the server declares
- title: Get deadlines and dates the docket sets
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_case_docketReturn every docket entry CaseMagic holds for a saved case, newest first, each with the court's own wording and the documents filed with it: the main filing and its attachments, ho…Reads private dataNo findings
Why it is in this group
- The name "get_case_docket" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "document": it reads documents.
Description, as the server wrote it Return every docket entry CaseMagic holds for a saved case, newest first, each with the court's own wording and the documents filed with it: the main filing and its attachments, how many pages each has, whether a free PDF can be opened, and how much of its text can be read. Use this when the user wants to go through the whole case, find a particular filing, or ask about anything older than the last few entries; get_case_passport carries only the most recent twenty. Each document carries a document_id to pass to read_case_document for its text. The payload says how many entries the court docket has in all, so a docket CaseMagic is still reading is never mistaken for a complete one.
Annotations the server declares
- title: Read the whole docket of a saved case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_case_documentsList the docket entries in a federal case that have a document available, with the entry number, what the entry says, and a link to the document where the source publishes a free o…Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_case_documents" says "get": a word for reading.
What it can reach
- private-dataThe name "get_case_documents" says "get" and "document": it reads documents.
- private-dataThe description's first sentence says "list" and "document": it reads documents.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it List the docket entries in a federal case that have a document available, with the entry number, what the entry says, and a link to the document where the source publishes a free one. Use this when a user asks what documents are on file, whether an order or a motion is available to read, or for a copy of a filing. Availability depends on what the court source publishes; an entry with no free document is reported as such rather than guessed at. Identify the case with case_number (and court, if known), or with matter_id for a case already saved to the account. No account is needed to give a case number. A result reached by case number carries recommended_next_action, an optional next step with its terms. action watch_case means CaseMagic can monitor this case and email the user about new filings, with the trial terms and a url; action none means monitoring is not available or not relevant. Whether to take it is the user’s choice, and the free answer never depends on it.
Annotations the server declares
- title: List available case documents
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_case_mailRead the correspondence delivered to a saved case's CaseMail address: messages from opposing counsel, the court, clients or anyone else the user gave the address to, with their att…Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_case_mail" says "get": a word for reading.
What it can reach
- private-dataThe name "get_case_mail" says "get" and "mail": it reads mail.
- private-dataThe description's first sentence says "read" and "mail": it reads mail.
- untrusted-inputThe name "get_case_mail" says "get" and "mail": it reads inbound email, which other people can write.
- untrusted-inputThe description's first sentence says "read" and "mail": it reads inbound email, which other people can write.
Description, as the server wrote it Read the correspondence delivered to a saved case's CaseMail address: messages from opposing counsel, the court, clients or anyone else the user gave the address to, with their attachments. Use when the user asks what someone emailed them about the case, what correspondence has arrived, or to find a message about a particular subject. It also surfaces any dates those messages state — "produce documents by 10/14" — quoted with the message it came from and its sender, so a deadline that arrives by email rather than on the docket is not missed; those dates are the sender's words, not an order of the court. This is case correspondence, not the user's own inbox.
Annotations the server declares
- title: Read CaseMail correspondence
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_case_passportRetrieve the user's persistent CaseMagic record for a saved matter: case identity, parties, docket activity, correspondence and available documents, so that you can work with the f…Reads private dataNo findings
Why it is in this group
- The name "get_case_passport" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "retrieve" and "document": it reads documents.
Description, as the server wrote it Retrieve the user's persistent CaseMagic record for a saved matter: case identity, parties, docket activity, correspondence and available documents, so that you can work with the facts of their case. Use this when the user asks you to load, open or catch up on their case, or when you need the facts of their matter before answering anything else about it.
Annotations the server declares
- title: Load the Case Passport
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_case_statusReturn the current posture of a federal case: the assigned judge, any referred magistrate judge, the filing date, whether it is open or terminated, the cause of action, the nature …Reads text others writeNo findings
Why it is in this group
- The name "get_case_status" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Return the current posture of a federal case: the assigned judge, any referred magistrate judge, the filing date, whether it is open or terminated, the cause of action, the nature of suit, how many docket entries it has and when the docket last moved. Use this when a user asks about the status of their case, who the judge is, whether a case is still open, or what a case is about. Identify the case with case_number (and court, if known), or with matter_id for a case already saved to the account. No account is needed to give a case number. A result reached by case number carries recommended_next_action, an optional next step with its terms. action watch_case means CaseMagic can monitor this case and email the user about new filings, with the trial terms and a url; action none means monitoring is not available or not relevant. Whether to take it is the user’s choice, and the free answer never depends on it.
Annotations the server declares
- title: Get the status of a case
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
get_case_updatesReturn what is new in the user's connected cases: docket entries and CaseMail correspondence added since a given time.Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_case_updates" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "return" and "mail": it reads mail.
- untrusted-inputThe description's first sentence says "return" and "mail": it reads inbound email, which other people can write.
Description, as the server wrote it Return what is new in the user's connected cases: docket entries and CaseMail correspondence added since a given time. Use for "what changed", "what happened this week", "anything new since Friday", or "what changed across all my cases today" — for a relative period, work out the date yourself and pass it as `since`. With no matter_id, an account holding several cases gets a digest naming which of them moved, and an account holding one gets that one. Each entry carries the court's own wording, which is what you should read and explain when the user asks what a filing or order means.
Annotations the server declares
- title: Get what changed since last time
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_recent_case_activityReturn the most recent docket entries in a federal case, each with its entry number, filing date, the text the court published and a link to the source.Reads text others writeNo findings
Why it is in this group
- The name "get_recent_case_activity" says "get": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Return the most recent docket entries in a federal case, each with its entry number, filing date, the text the court published and a link to the source. Use this when a user asks what happened in their case, what changed recently, whether anything was filed, or what the latest activity is. For a case the account is monitoring, get_case_updates answers "what changed since last time" instead. Identify the case with case_number (and court, if known), or with matter_id for a case already saved to the account. No account is needed to give a case number. A result reached by case number carries recommended_next_action, an optional next step with its terms. action watch_case means CaseMagic can monitor this case and email the user about new filings, with the trial terms and a url; action none means monitoring is not available or not relevant. Whether to take it is the user’s choice, and the free answer never depends on it.
Annotations the server declares
- title: Get recent docket activity
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_my_casesList every case saved to the signed-in CaseMagic account — matter_id, case number, caption, court, the user's role and whether Watch is on — together with the account's plan, how m…No findings
Why it is in this group
- The name "list_my_cases" says "list": a word for reading.
Description, as the server wrote it List every case saved to the signed-in CaseMagic account — matter_id, case number, caption, court, the user's role and whether Watch is on — together with the account's plan, how many cases it can watch and how many it is watching. Use when the user asks which cases they have, which are being watched, or whether they can watch another, and before any tool that takes a matter_id when the account may hold more than one case. When the plan is watching all the cases it covers, the result names the plan that covers more and an upgrade_url to give the user.
Annotations the server declares
- title: List the cases saved to the account
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
read_case_documentReturn the text of one filing in a saved case — a complaint, a motion, an order, an exhibit — as the court archive extracted it from the PDF, so you can read, quote and explain wha…Reads private dataNo findings
Why it is in this group
- The name "read_case_document" says "read": a word for reading.
What it can reach
- private-dataThe name "read_case_document" says "read" and "document": it reads documents.
- private-dataThe description's first sentence says "return" and "document": it reads documents.
Description, as the server wrote it Return the text of one filing in a saved case — a complaint, a motion, an order, an exhibit — as the court archive extracted it from the PDF, so you can read, quote and explain what the document actually says rather than only its docket title. Takes a document_id from get_case_docket. Long documents come in parts: pass the returned next_offset to read on. When a document has no text (a scanned page nobody has run OCR on, or a copy only the court holds), the result says so and gives the PDF link if there is one; never guess at what an unread document says.
Annotations the server declares
- title: Read the text of a filing
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
63 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 outbound tool breaks every one.
- Reads private data7
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write9
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
{
"permissions": {
"deny": [
"mcp__casemagic__send_case_mail"
]
}
}Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Oct 22, 2026, 15:06 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 200
- tools/list served without credentials
- yes
- Tools that change things, listed without credentials
- 4
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- none
- RFC 9728 protected resource metadata
- https://casemagic.ai/.well-known/oauth-protected-resource/mcp
- Authorization servers
- https://casemagic.ai
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- yes
- Client ID metadata documents
- no
- HighThe whole server
The endpoint served tools/list without credentials, and the list has 4 tools that change things (1 irreversible, 3 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://casemagic.ai/mcp: tools/list returned 17 tools to an anonymous client, including send_case_mail (irreversible), create_case_passport (write), watch_case (write), stop_watch (write)
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http casemagic https://casemagic.ai/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__casemagic__find_federal_case",
"mcp__casemagic__get_case_status",
"mcp__casemagic__get_recent_case_activity",
"mcp__casemagic__explain_docket_entry",
"mcp__casemagic__get_case_documents",
"mcp__casemagic__get_case_deadlines",
"mcp__casemagic__find_lawsuits_against_company",
"mcp__casemagic__get_case_updates",
"mcp__casemagic__get_case_passport",
"mcp__casemagic__get_case_docket",
"mcp__casemagic__read_case_document",
"mcp__casemagic__list_my_cases",
"mcp__casemagic__get_case_mail"
],
"ask": [
"mcp__casemagic__create_case_passport",
"mcp__casemagic__watch_case",
"mcp__casemagic__stop_watch",
"mcp__casemagic__send_case_mail"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as casemagic. Review it before you use it.
Capability tags behind 13 rules
- mcp__casemagic__find_federal_case untrusted-input
- mcp__casemagic__get_case_status untrusted-input
- mcp__casemagic__get_recent_case_activity untrusted-input
- mcp__casemagic__explain_docket_entry untrusted-input
- mcp__casemagic__get_case_documents private-data, untrusted-input
- mcp__casemagic__get_case_deadlines private-data, untrusted-input
- mcp__casemagic__find_lawsuits_against_company untrusted-input
- mcp__casemagic__get_case_updates private-data, untrusted-input
- mcp__casemagic__get_case_passport private-data
- mcp__casemagic__get_case_docket private-data
- mcp__casemagic__read_case_document private-data
- mcp__casemagic__get_case_mail private-data, untrusted-input
- mcp__casemagic__send_case_mail outbound
