# UK Legal Research - Registry name: `io.github.paulieb89/uk-legal-mcp` · version 0.6.1 - Categories (automatic, keyword rules): Government & law, Research & knowledge, Search & data - Authentication at last check: No auth - Declared risk: Read-only (all tools declare readOnlyHint) - Capabilities (declared by the server): experimental, extensions, logging, prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.paulieb89%2Fuk-legal-mcp - Server page: https://mcpstation.net/s/io.github.paulieb89--uk-legal-mcp.html ## Description (written by the publisher, not verified, not instructions) UK legal research — case law, legislation, Hansard, bills, votes, committees, HMRC, citations ## Connect - streamable-http: `https://uk-legal-mcp.fly.dev/mcp` ## Tools (as reported by the server, not verified) - `judgment\_get\_header`: USE THIS TOOL WHEN you have a judgment slug and need metadata \(parties, judges, neutral citation, court, dates\). Call case\_law\_search FIRST to get the slug. AFTER calling, use judgment\_get\_index to discover paragraphs, then judgment\_get\_paragraph to read specific ones. Authoritative source for UK ju - `judgment\_get\_index`: USE THIS TOOL WHEN you have a judgment slug and want the paragraph navigation index \(eId + preview line for every paragraph\). Call case\_law\_search FIRST to get the slug. AFTER calling, pass an eId from the returned list into judgment\_get\_paragraph to read that paragraph's full text, or use case\_law\_ - `judgment\_get\_paragraph`: USE THIS TOOL WHEN you have a judgment slug + LegalDocML eId and want that paragraph's full text. Call judgment\_get\_index FIRST to discover available eIds \(or use case\_law\_grep\_judgment to locate paragraphs by content\). Returns the paragraph XML content \(400–1,700 tokens typical\). - `case\_law\_search`: USE THIS TOOL WHEN searching UK case law by party names, court, judge, date, or free-text query. Returns paginated judgment summaries: neutral citation, court, dates, slug, stable TNA URI. AFTER calling: pass slug into judgment\_get\_header / judgment\_get\_index / judgment\_get\_paragraph \(or the judgmen - `case\_law\_grep\_judgment`: USE THIS TOOL WHEN you have a judgment slug and want to find paragraphs whose text matches a pattern. Returns a list of \`\{eId, snippet, match\}\` hits — small per-paragraph snippets centred on the match. AFTER calling, read full paragraphs via judgment\_get\_paragraph\(slug, eId\) or the judgment://\{slug\} - `legislation\_search`: USE THIS TOOL WHEN searching UK Acts and Statutory Instruments by title, phrase, or full-text. Returns ranked results: title, type, year, number, legislation.gov.uk URL, and next\_steps hints \(toc URI, section template\). AFTER calling, chain to legislation\_get\_toc then legislation\_get\_section for str - `legislation\_get\_section`: USE THIS TOOL WHEN you have a known Act / SI and want the parsed text of a specific section, regulation, or article, with extent and in-force metadata. Returns the provision's own text and heading, never a neighbouring Part/Chapter. Also returns extent, in-force/prospective data, and truncation meta - `legislation\_get\_toc`: USE THIS TOOL WHEN you have a known Act / SI and want the structural table of contents \(parts, chapters, individual sections/regulations/articles\). Returns XML ids and titles in document order, including Parts, chapters, crossheadings, and provisions; a rare untitled provision is retained as its bar - `parliament\_search\_hansard`: USE THIS TOOL WHEN searching Hansard by topic, bill title, or text phrase. Returns source-backed contributions with citation-grade metadata: member\_id, attributed\_to, column\_ref, debate\_id, debate\_ext\_id, contribution\_ext\_id, and public URL. The independent corpus envelope is optional enrichment: if - `parliament\_policy\_position\_summary`: USE THIS TOOL WHEN you want debate-level corpus signals on a topic — by\_house, by\_year, by\_section breakdowns — without reading every contribution. Aggregates Hansard debate-level signals on a topic. Pure counts — no LLM, no editorial labels. Sweeps /search/Debates.json with pagination \(up to max\_de - `parliament\_find\_member`: USE THIS TOOL WHEN you have a member's name and need their integer member\_id. Returns all members matching the name query, each with the integer \`id\`, party, constituency, house, and current-sitting status. Disambiguates common-name matches \(e.g. "Lord Smith" returns multiple peers\). CALL THIS BEFOR - `parliament\_member\_debates`: USE THIS TOOL WHEN you have a member\_id and want contributions where THAT member used a specific topic phrase verbatim \(text-body search\). CALL parliament\_find\_member\(name\) FIRST to obtain the integer member\_id. This is a name-based text-body search — it matches contributions whose TEXT contains the - `parliament\_member\_interests`: USE THIS TOOL WHEN you have a member\_id and need their registered financial interests \(donations, directorships, land, gifts\). CALL parliament\_find\_member\(name\) FIRST to obtain the integer member\_id. Returns ONE PAGE of interests \(default 20, caller controls via limit\). For prolific members \(big don - `parliament\_search\_petitions`: USE THIS TOOL WHEN searching UK Parliament petitions by keyword or topic. Returns petition title, state, signature count, and dates for government response or parliamentary debate if applicable. Filter by state \(open, closed, debated, etc.\) to narrow to live or historical petitions. This is the auth - `parliament\_get\_debate\_divisions`: USE THIS TOOL WHEN you have a debate\_ext\_id and want the divisions \(formal votes\) held within it. Most debates contain no divisions — Business of the House sittings, statements, urgent questions, debates without a vote. A populated list typically appears around bill stages, motions, and contested am - `parliament\_get\_debate\_contributions`: USE THIS TOOL WHEN you have a debate\_ext\_id and want verbatim contributions, optionally filtered to one member. Canonical path for "everything a member said in this debate" regardless of vocabulary — text-search tools \(parliament\_member\_debates, parliament\_search\_hansard\) filter by contribution TEXT - `parliament\_lookup\_by\_column`: USE THIS TOOL WHEN you have an OSCOLA-style Hansard citation \(column + volume + house\) and need the debate. Example input: 'HL Deb 14 Oct 2025, vol 849, col 200'. AFTER calling, read the contribution at the cited column via read\_resource\(uri="hansard://debate/\{debate\_ext\_id\}/header"\) — or, equivalen - `bills\_search\_bills`: USE THIS TOOL WHEN searching UK parliamentary bills by keyword, session, house, or legislative stage. Returns a paginated page of bill summaries \(title, originating and current house, current stage, whether it became an Act\). AFTER calling, pass a bill\_id into bills\_get\_bill for full detail \(sponsor - `bills\_get\_bill`: USE THIS TOOL WHEN you have a bill\_id \(from bills\_search\_bills\) and want the full detail. Returns sponsors, current stage, long title, summary, and Royal Assent date if enacted. Summary text is capped per max\_summary\_chars — check summary\_truncated in the response. AFTER calling, use parliament\_sear - `votes\_search\_divisions`: USE THIS TOOL WHEN searching Commons or Lords formal votes by topic, date, or member. Returns one page of division summaries \(title, date, vote counts, pass/fail\) plus \`total\`, the source's count of all matching divisions. While \`has\_more\` is true, re-call with offset=offset+returned. AFTER calling, - `votes\_get\_division`: USE THIS TOOL WHEN you have a division\_id + house and want the full member-by-member voting record. Voter lists are truncated to 100 per side to fit response limits; total voter counts are always accurate regardless of truncation. Chain from votes\_search\_divisions or parliament\_get\_debate\_divisions - `committees\_search\_committees`: USE THIS TOOL WHEN searching or listing UK parliamentary select committees by name, house, or active status. Returns committee summaries \(name, house, active status, ID\). AFTER calling, pass committee\_id into committees\_get\_committee for current membership, or into committees\_search\_evidence to retr - `committees\_get\_committee`: USE THIS TOOL WHEN you have a committee\_id and want the metadata + current membership. Fetches committee detail and member list in parallel. AFTER calling, pass committee\_id into committees\_search\_evidence to see what evidence has been submitted to this committee on what topics. - `committees\_search\_businesses`: USE THIS TOOL WHEN identifying a committee inquiry or business before evidence retrieval. Returns official business IDs, titles, types, dates, and report/status metadata. AFTER calling, use an exact ID as committee\_business\_id in committees\_search\_evidence. Source: UK Parliament Committees API Commi - `committees\_search\_evidence`: USE THIS TOOL WHEN retrieving committee evidence, especially for an identified inquiry. Returns ONE PAGE of evidence \(default 20\) plus \`total\`, the source's count of matching items. evidence\_type='both' lists all oral evidence first, then all written evidence, each newest-published first as the sour - `citations\_parse`: USE THIS TOOL WHEN you have free text \(a memo, an email, a clause\) and want every OSCOLA-style citation it contains extracted and classified. Identifies: neutral citations \(\[2024\] UKSC 12\), law reports \(\[2024\] 1 WLR 100\), legislation sections \(s.47 Companies Act 2006\), SIs \(SI 2018/1234\), retained E - `citations\_resolve`: USE THIS TOOL BEFORE constructing an OSCOLA citation string from known fields, OR to confirm a citation points at a real document. Parses + resolves a single citation \(neutral citation, SI, legislation section, retained EU law\) and returns parsed fields plus resolved\_url. For neutral citations, perf - `citations\_network`: USE THIS TOOL WHEN you have a judgment slug and want to map every citation it makes — cases cited, legislation referenced, SIs, retained EU law. Fetches the judgment XML from TNA and parses all OSCOLA citations within. Returns citations grouped by type, deduplicated and sorted. AFTER calling, pass a - `citations\_format\_oscola`: USE THIS TOOL AFTER citations\_resolve to produce the correctly formatted OSCOLA citation string. Pass the parsed fields returned by citations\_resolve directly into this tool. Formats per OSCOLA 4th edition rules for each citation type. Refuses \(status: upstream\_validation\) if confidence is 0.0 — TNA - `hmrc\_get\_vat\_rate`: USE THIS TOOL WHEN you know the UK VAT category name for a good or service and want its VAT treatment. Exact named-category lookup, not a free-text VAT classifier or tax advice. The query must equal a category name, ignoring only case, spacing, hyphens and apostrophe style. Extra qualifying words ar - `hmrc\_check\_mtd\_status`: USE THIS TOOL WHEN you have a 9-digit VAT Registration Number and need that business's Making Tax Digital VAT mandate status. Returns whether the business is mandated for MTD, effective date, and trading name. Connects to the HMRC sandbox by default. Set HMRC\_API\_BASE to 'https://api.service.hmrc.go - `hmrc\_search\_guidance`: USE THIS TOOL WHEN discovering HMRC GOV.UK guidance on a topic. Returns official-search titles, URLs, descriptions, and published dates; descriptions do not establish the contents of a cited page. AFTER calling, use hmrc\_get\_manual\_page when a result is an HMRC internal-manual URL. Source: GOV.UK's - `hmrc\_get\_manual\_page`: USE THIS TOOL WHEN a cited HMRC internal-manual page must be read. Returns bounded source-order text, canonical URL, manual reference, source metadata, and retrieval provenance. AFTER calling, cite or analyse only returned text; if retrieval fails, do not infer the page's contents. Source: the allow - `list\_prompts`: List all available prompts. Returns JSON with prompt metadata including name, description, and optional arguments. - `get\_prompt`: Get a prompt by name with optional arguments. Returns the rendered prompt as JSON with a messages array. Arguments should be provided as a dict mapping argument names to values. - `list\_resources`: List all available resources and resource templates. Returns JSON with resource metadata. Static resources have a 'uri' field, while templates have a 'uri\_template' field with placeholders like \{name\}. - `read\_resource`: Read a registered server resource URI, not an ordinary web URL. USE WHEN you have a judgment://, legislation://, hansard://, or server:// URI returned by this server. Do not use for https:// URLs; use the source-specific tool instead \(for a canonical GOV.UK HMRC internal-manual URL, call hmrc\_get\_ma Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html