UK Legal Research

io.github.paulieb89由 GitHub 账号 paulieb89 发布v0.6.1更新于 Oct 25, 2026

UK legal research — case law, legislation, Hansard, bills, votes, committees, HMRC, citations

已验证Streamable HTTP可网页运行网页搜索与抓取金融知识与记忆

概览

AI 生成的概览

英国法律研究服务器:让助手检索并阅读判例、立法、议会辩论记录、法案、表决、委员会、HMRC 指引及 OSCOLA 引注。

可以做什么
  • 检索英国判决,并读取其元数据、段落索引、具体段落及判决内文本匹配
  • 检索法案与法定文书,读取目录结构及具体条款,含适用范围与生效状态信息
  • 检索议会辩论记录、发言、议员、利益登记、请愿及栏号引注,并从辩论追踪到表决
  • 检索法案、下院与上院表决及逐议员投票记录,以及专门委员会的成员与证词
  • 解析、解析定位、格式化并梳理 OSCOLA 引注,查询增值税税率、HMRC 指引与手册页面
  • 列出并读取服务器提供的提示词与资源,如 judgment、legislation、hansard 等 URI
适用场景
适合需要核对英国一手法律来源而非凭记忆作答的场景:验证引注、阅读判决或法条、追溯议会辩论与表决,或整理可脚注核对的证据材料。
运行要求
可使用托管的 streamable HTTP 端点,或用 uvx 在本地运行(需 Python/uv)。法律来源无需 API 密钥;HMRC 数字税务状态查询为可选且需认证,默认连接 HMRC 沙箱,除非修改 HMRC_API_BASE。
安装前请注意
返回内容为研究材料而非法律意见,依赖前须核对适用范围、生效状态与引注准确性。可选的 HMRC MTD 查询需要凭据,并可通过 HMRC_API_BASE 指向 HMRC 正式服务。查询内容与抓取的来源会发送至托管端点及上游公开 API。

安装

在 SourceWeft 中

  1. 打开 控制台中的 UK Legal Research,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.paulieb89%2Fuk-legal-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "uk-legal-research": {
      "type": "http",
      "url": "https://uk-legal-mcp.fly.dev/mcp"
    }
  }
}

README

uk-legal-mcp

[PyPI] [SafeSkill] [Glama] [smithery badge] [Install in VS Code] [Install in VS Code Insiders] [Install in Cursor]

UK legal research sources for your AI assistant.

uk-legal-mcp connects ChatGPT, Claude, VS Code, Cursor, and other MCP-aware clients to UK case law, legislation, Hansard, bills, votes, committees, OSCOLA citation parsing, and HMRC guidance. It returns primary source text and citation metadata so your agent can build evidence packs you can check and footnote.

No API keys are required for the legal sources. HMRC's authenticated Making Tax Digital endpoint is optional.

For best results, tell your assistant to use the uk-legal-mcp server and not to answer from memory when a UK legal source can be checked.


Quick Start

Use the hosted MCP endpoint:

text
https://uk-legal-mcp.fly.dev/mcp

For clients that use mcpServers JSON:

json
{  "mcpServers": {    "uk-legal": {      "type": "http",      "url": "https://uk-legal-mcp.fly.dev/mcp"    }  }}

For local stdio use:

bash
uvx uk-legal-mcp

Claude Desktop local config:

json
{  "mcpServers": {    "uk-legal": {      "command": "uvx",      "args": ["uk-legal-mcp"]    }  }}

If a hosted tool stops responding, refresh the server from your client's Apps / Customise menu. For very large Acts, local mode can be more reliable because it uses your own IP rather than a shared cloud IP.


Try This First

After connecting the server, start a fresh chat and ask:

text
I am checking a UK legal source. Only use uk-legal-mcp. Find the source, give me the source URL, and tell me what metadata I should check before relying on it.

For legal work, ask for an evidence pack rather than a bare answer:

text
Only use uk-legal-mcp. Give me the source text or source summary, the source URL, citation metadata, and any caveats about jurisdiction, version, or uncertainty.

See the lawyer guide for ready-to-run prompts.


What It Covers

Source areaWhat your assistant can check
Case lawUK judgments from TNA Find Case Law, including neutral citations, court, date, judgment metadata, paragraph reads, and in-judgment search.
LegislationActs and Statutory Instruments from legislation.gov.uk, including tables of contents, sections, territorial extent, in-force signals, and point-in-time reads.
ParliamentHansard debates and contributions, debate-to-division chains, member biographies, column references, and petitions.
BillsParliamentary Bills, stages, sponsors, publications, and bill history.
VotesCommons and Lords divisions, counts, results, and per-member voting records.
CommitteesSelect committees, memberships, oral evidence, and written evidence.
CitationsOSCOLA-style citation parsing and resolution to canonical sources.
HMRCVAT rate lookups, GOV.UK HMRC guidance search, and optional authenticated MTD VAT status checks.

The server also exposes judgment://, legislation://, and hansard:// resources for source text that is too large to return in a single search result.

Full details are in the tool reference and upstream API reference.


Examples

Legislation check: the assistant finds the Worker Protection Act duty, commencement position, territorial extent, and source links.

[ChatGPT answer using uk-legal-mcp to summarise the Worker Protection Act duty, commencement, territorial extent, and source links]

Parliamentary evidence: the assistant follows a House of Lords debate into a division result for an Automated Vehicles Bill amendment.

[ChatGPT answer using uk-legal-mcp to connect an Automated Vehicles Bill Hansard debate to the division result for Lord Liddle's Amendment 28]

More examples are in the lawyer guide.


Using It Safely

uk-legal-mcp helps your AI assistant find and quote UK legal sources. It does not replace legal judgement.

  • Check jurisdiction. Legislation can apply differently in England, Wales, Scotland, and Northern Ireland. When reading a section, check the extent field before relying on it.
  • Check whether a provision is current. Some sections may be repealed, amended, prospective, or not yet in force. The server returns in-force and version-date information where the source provides it.
  • Verify citations before relying on them. Ask the agent to resolve case citations and Hansard volume/column references against the primary source.
  • Separate exact matches from nearby candidates. Case names and party names can be similar. A good answer should say which source was verified and which candidates were merely related.
  • Treat the result as an evidence pack. The server returns primary source text and citation metadata. Your agent can summarise it, but you decide how the law applies.

For Developers

Run the streamable HTTP server locally:

bash
python -m src.gateway

Run the declarative FastMCP manifest for inspection/dev tooling:

bash
fastmcp runfastmcp inspect

fastmcp run is for inspection/dev only — it wraps the FastMCP runner directly and skips the production uvicorn shape (_HttpGuard, _AcceptNormalizer, proxy_headers) that python -m src.gateway wires for the Fly deployment. The server answers GET /mcp with a native 405 (stateless, POST-only), so use python -m src.gateway for anything prod-like.

Use a local checkout over stdio:

json
{  "mcpServers": {    "local-uk-legal": {      "command": "uv",      "args": ["run", "--project", "<abs-path>", "uk-legal-mcp"],      "env": { "VIRTUAL_ENV": "" }    }  }}

Release notes live in CHANGELOG.md.

来源:README.md,提交 c0ca0b2

工具

37

judgment_get_header

Get Judgment 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 judgment metadata.

输入参数slug必填

judgment_get_index

Get Judgment Paragraph 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_grep_judgment for content search across all paragraphs.

输入参数slug必填

judgment_get_paragraph

Get Judgment 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).

输入参数eId必填slug必填

case_law_grep_judgment

Search within a UK Court 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}/para/{eId} resource. Use case: content search within one judgment (e.g. "negligence", "test for foreseeability", "Donoghue"). For paragraph-number navigation by eId, call judgment_get_index instead. Pattern is regex; if it doesn't compile, falls back to literal substring search.

输入参数slug必填pattern必填max_hitscase_insensitive

legislation_get_section

Get Legislation 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 metadata. Pass the bare number: the tool handles Act sections and SI regulations/articles. A missing provision raises not_found rather than returning a plausible neighbouring node. AFTER calling, check `extent` before relying on the provision and inspect content_truncated for long text. Call legislation_get_toc to discover valid numbers, or read_resource with a legislation:// URI when raw CLML XML is required. Source: legislation.gov.uk CLML, with an explicitly marked public-HTML fallback only when CLML is unavailable.

输入参数type必填year必填number必填section必填max_chars

legislation_get_toc

Get Legislation Table of Contents

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 bare id. Results are paginated with offset/limit. AFTER calling, pass a provision's bare number (for example `47`, not `section-47`) to legislation_get_section. Check has_more and total_items for large statutes. Use read_resource with the legislation:// toc URI for the full raw listing. Source: legislation.gov.uk CLML table of contents.

输入参数type必填year必填limitnumber必填offset

parliament_search_hansard

Search Hansard Debates

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 it cannot be retrieved after one bounded retry, contributions still return with enrichment_status="degraded" and an explicit warning; omitted corpus totals and previews must not be inferred. AFTER calling, drill into full content via read_resource(uri="hansard://debate/{debate_ext_id}/header") — or call parliament_get_debate_contributions(debate_ext_id) for the same content as a structured tool response. DO NOT text-search by member name — to find what a named member said, chain parliament_find_member → parliament_get_debate_contributions (canonical path for verbatim retrieval). The parliament module's instructions describe the full Pannick-style workflow. Pagination: limit + offset honour the upstream paginated endpoint. For breadth across a topic, see parliament_policy_position_summary. Source: UK Parliament Hansard API. Contributions remain the authoritative retrieval result; envelope fields are source-backed only when complete.

输入参数houselimitquery必填offsetto_datefrom_datemember_idtext_modecontribution_type

parliament_policy_position_summary

Hansard Policy Position Summary (deterministic facets)

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_debates_scanned), then aggregates by_house, by_section, by_year, by_month, and top_debates from debate metadata. Also captures the corpus-wide envelope counts (total_contributions, total_written_statements, total_divisions, etc.) from /search.json for cross-section scope. AFTER calling, pick a debate from top_debates and pass its debate_ext_id into parliament_get_debate_contributions to drill into who said what. Note on member-level facets: Hansard's search API exposes debate metadata, not per-contribution member identifiers, at the corpus level. by_party and top_contributors are therefore omitted from this deterministic summary. To see who spoke in a specific debate, read hansard://debate/{debate_ext_id}/header for an ordered contribution index, or call parliament_member_debates for one named member. This is the authoritative source for UK Hansard corpus-level signals.

输入参数housetopic必填to_datefrom_datemax_debates_scanned

parliament_find_member

Find Member of Parliament

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 BEFORE any tool that filters by member_id — including parliament_get_debate_contributions, parliament_member_debates, and parliament_member_interests. Name → ID first; ID-based filtering second. Skipping this step and text-searching by name returns unrelated results (see parliament_search_hansard's anti-bypass note for the Pannick case).

输入参数name必填

parliament_member_debates

Get 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 topic phrase. A member who spoke in a debate but didn't use your phrase verbatim is filtered out. For verbatim retrieval of every contribution by a member in a known debate (regardless of vocabulary), use parliament_get_debate_contributions(debate_ext_id, member_id=...) instead. Each contribution's text field is capped at 3000 characters.

输入参数limittopicoffsetmember_id必填

parliament_member_interests

Get Member Financial 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 donors, many directorships, extensive land holdings), re-call with offset=offset+returned while has_more is true to paginate. Description text is capped per max_description_chars; raise it for forensic provenance work that needs the full narrative. This is the authoritative source for UK MP and peer financial-interest declarations (via the Members API). Web search returns stale snapshots.

输入参数limitoffsetcategorymember_id必填max_description_chars

parliament_search_petitions

Search UK Parliament 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 authoritative source for UK Parliament petitions (petition.parliament.uk).

输入参数limitquery必填stateoffset

parliament_get_debate_divisions

Get Divisions Held In A Debate

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 amendments. Empty list is the honest result, not a failure mode. Each returned division carries TWO IDs: - `id` — Hansard-side reference. Useful for cross-referencing in Hansard. - `votes_id` — Lords/Commons Votes API ID (cross-resolved by date+number). AFTER calling, pass `votes_id` as `division_id` into votes_get_division for the full member-by-member voting record. The two upstreams use distinct ID-spaces (Hansard Number=3 might be Votes-API divisionId=3392). The cross-resolve runs once per (date, house) group — typically one extra HTTP per debate. `votes_id` is None when the cross-resolve found no match.

输入参数debate_ext_id必填

parliament_get_debate_contributions

Get Contributions In A Debate

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, dropping members who spoke without using your phrase verbatim. This tool filters by MemberId on the debate's Items list, so vocabulary doesn't matter. Typical chain: parliament_find_member(name) → member_id, then parliament_search_hansard or parliament_lookup_by_column → debate_ext_id, then this tool. The parliament module's instructions describe the full composition pattern. Without member_id, returns every contribution (~100-200 for a long debate). If the wire returns no contributions for a member you expect to have spoken, report the empty result honestly — do NOT reconstruct quotes from training data. Authoritative source for member contributions.

输入参数member_iddebate_ext_id必填

parliament_lookup_by_column

Resolve A Hansard Column Citation

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, equivalently, call parliament_get_debate_contributions(debate_ext_id) for the full list as a structured tool response. Each match carries: - `contribution_count` — real contribution count from the debate's Items - `source` / `source_code` — citation finality (1=Rolling, 2=Daily, 3=BoundVolume, 4=Historic). Resolution is NOT gated on publication state. Empty `matches` typically means the volume_number is wrong (opposing counsel sometimes cites running-volume rather than bound-volume) or the column is in a Written Statement (use the 'W'-suffixed column as-is). It does NOT mean the citation is fabricated — surface the failure. Authoritative source for OSCOLA Hansard column resolution.

输入参数housecolumn_number必填volume_number必填

bills_search_bills

Search Parliamentary 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 (sponsors, long title, Royal Assent date). Authoritative source for UK parliamentary bill status.

输入参数houselimitquery必填stageoffsetsession

bills_get_bill

Get Bill Detail

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_search_hansard(query=bill_short_title) to find the bill's parliamentary debates, or bills_search_bills with a related keyword for adjacent bills.

输入参数bill_id必填max_summary_chars

votes_search_divisions

Search Parliamentary 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, pass division_id + house into votes_get_division for the full member-by-member voter lists. Authoritative source for UK parliamentary vote records.

输入参数houselimitqueryoffsetto_datefrom_datemember_id

votes_get_division

Get Division Detail

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 (which cross-resolves Hansard division refs into votes-API division_ids).

输入参数housedivision_id必填

committees_search_committees

Search Parliamentary 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 retrieve oral and written evidence submitted to that committee.

输入参数houselimitqueryactive_only

committees_get_committee

Get Committee Detail

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.

输入参数committee_id必填

committees_search_businesses

Search Committee Inquiries and Business

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 CommitteeBusiness endpoint.

输入参数limitquerycommittee_id必填

committees_search_evidence

Search Committee 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 source orders it. Free-text titles are capped per max_title_chars; witness lists are capped at 10 per item. An organisation witness (no named individual) is rendered as '<Organisation> (<Role>)'; a null entry means the source gave no name for that witness at all. For committees with many submissions, re-call with offset=offset+returned while has_more is true. For inquiry-specific research, first call committees_search_businesses and pass its exact committee_business_id; this filters at the authoritative source before pagination. Source: UK Parliament Committees API oral and written evidence endpoints.

输入参数limitoffsetcommittee_id必填published_toevidence_typepublished_frommax_title_charscommittee_business_id

citations_parse

Parse OSCOLA Citations

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 EU law (Regulation (EU) 2016/679). Parsing is pure regex by default. Ambiguous citations (e.g. bare [2024] EWHC without division) can OPTIONALLY be disambiguated by setting disambiguate=True, which asks the CONNECTED CLIENT's own model (not this server) to resolve the division via MCP sampling — off by default. Citations resolve to TNA / legislation.gov.uk URLs when possible. AFTER calling, pass each citation through citations_resolve to verify it points at a real document before quoting or formatting it — the parser recognises the SHAPE of a citation but does not confirm the document exists.

输入参数text必填disambiguate

citations_resolve

Resolve Single OSCOLA Citation

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, performs a live TNA HEAD check — non-200 sets confidence to 0.0 (document absent). Do NOT format or quote a confidence-0.0 citation. If the TNA HEAD check fails (timeout, connection error), raises ToolError with {"error_category": "transient", "is_retryable": true}. One retry is attempted — retry this call or proceed without TNA verification. Formatting a citation from "known" fields without prior resolution is the most common fabrication route. If this tool raises or returns no resolved_url, do NOT manufacture a citation — surface the failure and ask the user for the source URL. Authoritative source for UK legal-citation resolution.

输入参数citation必填

citations_network

Get Case Citation 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 any individual citation through citations_resolve to confirm it resolves and to retrieve its canonical URL. Useful for authority-network analysis (what did this judgment rely on?) and for surfacing the legislative landscape a case sits inside.

输入参数case_uri必填

citations_format_oscola

Format OSCOLA Citation String

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 confirmed the document does not exist — or if a neutral citation has no resolved_url (ambiguous court code, e.g. bare EWHC without a division). In either case, do NOT manufacture a citation; surface the failure and ask the user for the source URL or better identifying details. DO NOT construct the input fields yourself. The structured input must come from citations_resolve — guessing fields is the primary citation-fabrication route and this tool is the guard against it. Authoritative OSCOLA formatting for UK legal citations (no network call).

输入参数rawpageyearcourtnumbervolumesectionsi_yearsi_numberconfidence必填resolved_urlcitation_type必填另有 2 个

hmrc_get_vat_rate

Get VAT Rate for Commodity

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 are never discarded: 'pet food' is its own category, and 'baby food' is not 'food'. A match returns `rate` (standard, reduced, zero or exempt), `rate_percentage` (None for exempt), conditions in `notes`, the GOV.UK `source_url`, and that entry's `verified_on` date. An unresolved query returns no rate: `matched_category`, `rate`, `rate_percentage` and `verified_on` are all null, never a default. Its `notes` list the category names. AFTER an unresolved result, retry with a listed name or call hmrc_search_guidance.

输入参数commodity_code必填

hmrc_check_mtd_status

Check MTD VAT 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.gov.uk' for production. Requires HMRC_CLIENT_ID + HMRC_CLIENT_SECRET environment variables (OAuth 2.0). Raises if credentials are not configured — do not infer status.

输入参数vrn必填

hmrc_search_guidance

Search HMRC 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-filtered content search API.

输入参数limitquery必填

hmrc_get_manual_page

Read HMRC Internal 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 allowlisted official GOV.UK HMRC internal-manual page.

输入参数max_charsreferencemanual_urlmanual_family

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.

输入参数name必填arguments

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_manual_page). Returns the resource content as a string. Binary content is base64-encoded. AFTER calling, use the returned primary-source content and URI in citations; if the URI is rejected, follow the named source-specific tool rather than treating the URL as retrieved evidence. Source: registered UK Legal MCP resource providers.

输入参数uri必填

版本历史

1
  1. v0.6.1最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分