# KnowJudges MCP Source-linked U.S. judge, court, legal-AI case, and immigration-outcome research through a read-only remote MCP server. - Website: https://knowjudges.com - Public MCP documentation: https://knowjudges.com/mcp - Endpoint: `https://mcp.knowjudges.com/mcp` - Transport: **Streamable HTTP** - Authentication: no token required for bounded public access ## Current contract The deployed server advertises **10 tools**. This reference was checked against live `tools/list` on **October 12, 2026**. Discover the deployed `inputSchema` and `outputSchema` rather than assuming a client’s cached catalog is current. All tools return structured, source-linked public results and advertise `readOnlyHint: true`, `destructiveHint: false`, and `openWorldHint: false`. They cannot file documents, email judges, or change records. ## Connect Add the endpoint in your client's remote MCP settings. Configuration names vary; a URL-only setup is sufficient where supported. ```json { "mcpServers": { "know-your-judge": { "url": "https://mcp.knowjudges.com/mcp" } } } ``` ## Tools and inputs Optional inputs are omitted when not needed. Dates use `YYYY-MM-DD`. State/jurisdiction codes in schemas that require two letters are case-insensitive. | Tool | Purpose and selection guidance | Required inputs | Optional inputs and limits | | --- | --- | --- | --- | | `find_judges` | Resolve a named or otherwise identifiable judge. Results include `profile_url` and reported service status; named matches may be historical or uncertain. | `query` (at least 2 characters) | `state` (name or postal code), `court`, `county`, `limit` (default 5, 1–10). | | `get_judge_profile` | Retrieve identity, assignments, public profile information, sources, and scoped findings. Use the biography/practice tools for those focused questions. | `judge_url` | None. Missing fields mean information is unavailable. An assignment end date alone does not establish retirement or a senior-status transition. | | `get_judge_biography` | Retrieve sourced birth details, education, professional career, and judicial service. | `judge_url` | None. Preserve date precision. Age is null unless a valid full birth date is available; year-only dates must not become precise ages. | | `get_courtroom_presentation_rules` | Answer a named judge’s courtroom-practice question using relevant findings and underlying sources. Do not detour into court metadata or rosters unless asked. | `judge_url` | `topics` (up to 10 strings), such as exhibits, remote testimony, or a named part. Conditional program/division guidance remains conditional. | | `find_ai_abuse_cases` | Search reported legal-AI error cases by case name, error type, or recorded outcome. `response` distinguishes sanctions from no sanctions. | No single field is required by the schema; provide meaningful identifying search text or narrowing filters. Empty/bulk searches are unavailable. | `query` (at least 2 characters), `state`, `court`, `judge`, `response`, inclusive `from_date`/`to_date`, `limit` (default 5, 1–10). Returned `total_matches` is not the number of supplied records. | | `get_recent_rule_changes` | Retrieve recorded profile/rule updates since a date. Court filtering also includes associated indexed judge profiles; ambiguous court-only records are omitted. | `since` (inclusive date) | `judge_url`, `court_url`, `limit` (default 10, 1–25). Tracking starts at returned `change_tracking_started_at`; empty results do not prove no earlier real-world changes. | | `find_court` | Resolve court identity for court metadata or roster questions. | `query` (at least 2 characters) | `jurisdiction` (2-letter code, e.g. GA, DC, US), `state` (name or postal code), `limit` (default 5, 1–10). Returns canonical `court_url` values. | | `get_court` | Retrieve one court’s identity, available metadata, and bounded indexed current-status roster. | `court_url` | `limit` (default 10, 1–10). Preserve `roster_coverage` and `roster_truncated`. Counts include indexed active, senior, recalled, or visiting profiles, not an independently verified complete bench. | | `get_immigration_analytics` | Retrieve recorded outcomes for one immigration judge or court. | `entity` (`judge` or `court`), `profile_url` (canonical public judge or court URL) | `metric` (default `asylum_denial_rate`; alternative `proceeding_removal_rate` only when explicitly requested), `year` (1950–2100), `year_basis` (`calendar`, default, or `fiscal`), `nationality` (2–100 characters), `state` (2-letter code). | | `compare_immigration_analytics` | Compare highest/lowest recorded judge or court rates with joint geography, nationality, and period filters. | `entity` (`judge` or `court`) | `metric`, `year`, `year_basis`, `nationality`, `state` as above; `order` (`ascending`, default, or `descending`), `minimum_decisions` (default 1, 1–100000), `limit` (default 3, 1–10). | For asylum analytics, percentages use grants plus denials; procedural outcomes are reported separately. Samples below 35 decisions are labeled rather than hidden. Zero decisions mean no rate, not 0%. Keep `availability`, `message`, denominator/geography definitions, source, period coverage, and limitations. Historical rates neither predict an individual outcome nor imply that a person can choose a judge. ## Canonical public URL chaining Use URLs **returned by discovery**, preserving their exact jurisdiction-qualified form. Do not construct URLs from names or use bare slugs, internal keys, or IDs. ### Judge profile, biography, or practice ```text find_judges({"query":"Amy Totenberg","state":"GA","limit":3}) → select the matching results[i].profile_url → get_judge_profile({"judge_url": selectedProfileUrl}) // identity/assignments → get_judge_biography({"judge_url": selectedProfileUrl}) // biography question → get_courtroom_presentation_rules({"judge_url": selectedProfileUrl}) // practice question ``` The follow-ups are alternatives selected by the question, not a requirement to call all three. `profile_url` in a discovery result becomes `judge_url` in these tool inputs. ### Court information and recorded changes ```text find_court({"query":"U.S. District Court for the Northern District of Georgia","state":"GA"}) → select the matching results[i].court_url → get_court({"court_url": selectedCourtUrl,"limit":5}) → get_recent_rule_changes({"since":"2026-10-01","court_url": selectedCourtUrl}) ``` A judge-specific change lookup instead uses `judge_url` from judge discovery. An empty court roster means no indexed current matches; a null count means roster data is unavailable. Neither establishes the actual court has no judges. Retain location-specific contact notes rather than treating one courthouse's address or phone as courtwide. ### Legal-AI cases ```json { "name": "find_ai_abuse_cases", "arguments": { "query": "AI hallucinations fabricated legal citations", "response": "Monetary Sanctions", "limit": 5 } } ``` Report the recorded outcome and preserve the returned decision-link status; inclusion in the dataset alone does not establish a judicial finding that AI was used. ### Immigration comparisons ```text compare_immigration_analytics({"entity":"judge","nationality":"Brazil","state":"CA","year":2025,"order":"ascending","limit":3}) → lowest recorded asylum denial rates for the available filtered period compare_immigration_analytics({"entity":"judge","nationality":"Brazil","state":"CA","year":2025,"order":"descending","limit":3}) → highest recorded rates; retain counts, small-sample notes, and coverage → get_immigration_analytics({"entity":"judge","profile_url": returnedProfileUrl,"nationality":"Brazil","state":"CA","year":2025}) ``` Use an available, non-null returned public URL for the follow-up. These examples illustrate inputs; they do not guarantee data for a particular nationality/year. ## Bounds, quotas, and anti-enumeration - Searches, court rosters, and immigration comparisons return at most 10 records. Recent changes return at most 25. Practice-topic filters accept at most 10 topics. - No pagination, cursor, offset, batch enumeration, or bulk export is provided. Empty, wildcard, one-character, jurisdiction-only judge/court searches, and requests for all judges/courts are rejected. Use identifying name/location text plus narrowing filters. - Sequential prefix/identifier harvesting is throttled. Daily unique judge/court budgets count a previously accessed identity only once; changing conversation sessions does not reset an OpenAI subject's quota. - Generic anonymous callers use the IP fallback: 20 tool requests/hour, 100/day, and 50 newly accessed judge/court identities/day. - OpenAI callers supplying `_meta["openai/subject"]` use an anonymous subject bucket: 60 tool requests/hour, 300/day, and 100 new identities/day. `openai/session` is not a durable quota key. - Recognized Claude requests use session context when available for short-term control; no durable per-user identifier is inferred. Without a session, aggregate network controls apply. Session allowances are 60/hour, 300/day, and 100 new identities/day. - A separate recognized-provider IP/network backstop allows 1000 requests/hour, 10000/day, and 1000 new identities/day. Ordinary networks have a 200/hour, 1000/day backstop and a 100-new-identity/day network budget. These are aggregate ceilings, not individual entitlements. - MCP initialization/discovery/control requests count toward the network backstop, not the normal caller tool quota. REST uses the shared enforcement implementation and anonymous fallback when no MCP caller context exists. - Rate/harvesting limits can return HTTP 429 or a bounded MCP tool failure. Respect retry information; do not rotate identities to bypass controls. Invalid inputs and missing data are different states. For datasets or recurring/bulk use, see https://knowjudges.com/data-licensing. ## Sources and verification Keep returned KnowJudges URLs, source/official URLs, source titles, excerpts, scope/applicability, effective/revision dates, and last-checked dates where present. Judge-specific, courtwide, statewide, and nationally applicable federal/EOIR guidance are different authority scopes. Broader rules are not personal preferences. Missing documented practice findings establish neither permission nor prohibition. `last_updated` describes publication, while `last_verified` or `source_checked_at` describes an evidence check. A recent publication does not mean every source was checked that day. Preserve supported year-only biography dates and factual uncertainty. AI-case links may be verified decision destinations or explicitly labeled source fallbacks. Preserve `decision_link_status`, `dataset_source`, and `summary_note`; a fallback URL must not be described as a verified official court decision. Unknown ruling counts are unavailable, not zero. Check the linked source before relying on a requirement; case-specific orders may control. ## Links - REST documentation: https://knowjudges.com/api - Public profiles and courts: https://knowjudges.com/kyj - Terms: https://knowjudges.com/terms - Privacy: https://knowjudges.com/privacy - Directory listing: https://glama.ai/mcp/connectors/com.knowjudges/knowjudges Third-party listings and client tool catalogs may lag a release; live `tools/list` is authoritative.