Skip to main content
Glama
UK Parliament MCP Server

UK Parliament MCP Server

Disclaimer: This is an unofficial, independent project. It is not created, endorsed, or supported by UK Parliament. All data is sourced from the publicly available parliament.uk APIs.

GitHub: ChrisBrooksbank/uk-parliament-data-mcp

An MCP (Model Context Protocol) server that gives AI assistants access to UK Parliament data. Query MPs, Lords, bills, votes, committees, debates, and more through AI assistants like Claude Desktop and VS Code Copilot. Also includes a CLI for terminal access.

MCP Server for AI Assistants

Connect your AI assistant to 233 UK Parliament API tools for comprehensive parliamentary research.

Prefer the terminal? See the CLI demo.

Related MCP server: PoetryQuill Analytics MCP

Table of Contents

Getting Started

Step 1: Configure your AI assistant (see Claude Desktop or VS Code below)

Step 2: Start a parliamentary research session:

  • Use the /parliament slash command (in Claude Desktop or compatible MCP clients)

  • Or say "Order Order" (like the Speaker) to initialize the session

This gives your AI assistant the context it needs to effectively use the 233 available tools. To end the session, start a new chat.

You are a helpful assistant that answers questions using only data from UK Parliament MCP servers.

When the session begins, introduce yourself with a brief message such as:
"Hello! I'm a parliamentary data assistant. I can help answer questions using official data from the UK Parliament MCP APIs. Just ask me something, and I'll fetch what I can - and I'll always show you which sources I used."

When responding to user queries, you must:
Only retrieve and use data from the MCP API endpoints this server provides.
Avoid using any external sources or inferred knowledge.
After every response, append a list of all MCP API URLs used to generate the answer.
If no relevant data is available via the MCP API, state that clearly and do not attempt to fabricate a response.
Convert raw data into human-readable summaries while preserving accuracy, but always list the raw URLs used.

Parliament Research Skill (Claude Code)

If you use Claude Code, this repo includes a /parliament-research slash command that turns Claude into a Parliament research assistant.

Type /parliament-research followed by a natural language question:

/parliament-research How did Keir Starmer vote on climate?
/parliament-research When was Chelmsford mentioned in Hansard?
/parliament-research What bills about education are in progress?

Claude will pick the right CLI commands, run them, and present a sourced answer. The command file lives at .claude/commands/parliament-research.md.

Claude Desktop Setup

  1. Open Claude Desktop

  2. Click Settings โ†’ Developer โ†’ Edit Config

  3. Add the following configuration and save with UTF-8 encoding:

{
  "mcpServers": {
    "uk-parliament": {
      "command": "uvx",
      "args": ["uk-parliament-mcp"]
    }
  }
}
  1. Restart Claude Desktop

  2. Open the Developer tab to verify the server is running

Note: This uses uvx which runs the package directly without installation. It automatically uses the latest version from PyPI.

Don't have uvx? Install it with: pip install uv or see uv installation docs

VS Code Setup

  1. Press Ctrl+Shift+P to open the Command Palette

  2. Select MCP: Add Server

  3. Choose Command: Stdio

  4. Enter: uvx uk-parliament-mcp

  5. Press Enter

Start the Server

  1. Press Ctrl+Shift+P again

  2. Select MCP: List Servers

  3. Click the server you just added and choose Start server

First Interaction

  1. Open Copilot Chat in VS Code

  2. Set Agent mode using the dropdown in the bottom-left

  3. Select your preferred model (e.g., Claude Sonnet 4)

  4. Click Configure Tools, and select all tools from the newly added MCP server

  5. Try a prompt such as: "What is happening now in the House of Commons?"

  6. Accept any permission request to allow the MCP call

What Can I Ask?

You can ask questions about virtually all aspects of UK Parliament data. Here are some key areas:

  • Live Parliamentary Activity: "What's happening in the House of Commons right now?" or "What's currently being debated in the Lords?"

  • Members of Parliament: "Tell me everything you know about Boris Johnson," "What are Sir Keir Starmer's registered interests?" or "Show me the voting record of member 4129"

  • Bills & Legislation: "Show me details of bill 425," "What amendments were proposed for bill 425?" or "What publications exist for the Environment Bill?"

  • Voting Records: "How did MPs vote on the climate change motion?", "Show me Lords divisions on healthcare policy" or "How often do Diane Abbott and Keir Starmer vote the same way?"

  • Committees & Inquiries: "Which committees are investigating economic issues?", "Show me evidence submitted to the Treasury Committee" or "Which committees scrutinised the Renters' Rights Bill?"

  • Parliamentary Procedures: "Search Erskine May for references to Speaker's rulings" or "What are the oral question times this week?"

  • Constituencies & Elections: "Show me election results for Birmingham constituencies" or "List all constituencies in Scotland"

  • Official Documents: "Are there any statutory instruments about housing?", "What treaties involve trade agreements?" or "What papers has the Department for Transport deposited this month?"

  • House of Lords Business: "What is on the Lords order paper on 15 January?", "Did the Lords sit on 2 December?" or "Show Lords written questions answered in January"

  • Briefings & Explainers: "Find Commons Library briefings on net zero" or "Search the Parliament website for sitting hours"

  • Transparency Data: "Show register of interests for Treasury ministers" or "What are the declared interests categories?"

  • Not sure where to look? "Search Parliament for net zero" searches members, bills, committees, Hansard and written questions at once.

Power Tools

These high-level tools combine multiple API calls for common research tasks:

Tool

What it does

search_parliament(query)

One search across members, bills, committees, Hansard and written questions

get_mp_profile(member_id)

Complete MP/Lord profile: bio, interests, voting record

check_mp_vote(member_id, topic)

How an MP or Lord voted (Aye/No, Content/Not Content) on divisions about a topic

compare_member_votes(member_id_a, member_id_b, topic)

Two members' votes side by side, with how often they agree

get_member_bills(member_id)

Bills a member has sponsored

get_bill_overview(search_term)

Full bill info: details, stages, publications

get_bill_committees(bill_id)

Committees that examined a bill: committee stages and select committee scrutiny

get_committee_summary(topic)

Committee overview: evidence, publications

get_committee_bills(committee_id)

Bills a committee has scrutinised

get_my_mp(postcode, topic)

Find MP by UK postcode with full profile

Note: tools that take a member_id (int) need it looked up first with get_member_by_name(). When a power tool finds nothing it returns suggestions for what to try next (e.g. the surname only, a broader topic). Every house parameter accepts 1/2 or "Commons"/"Lords".

Example:

Tell me everything about Keir Starmer

The AI will use get_member_by_name to find the member_id, then get_mp_profile to fetch biography, registered interests, and voting history in a single efficient call.


Prompting Tips

Note: Since AI is involved, some responses may be inaccurate. These tips help improve reliability.

โœ… Initialize Your Session

Always begin your session with /parliament or say "Order Order". This ensures the AI assistant uses the correct tools and cites its sources properly.

๐Ÿ”„ Clear Context

Use the + icon (new chat) if:

  • The AI seems stuck in a loop

  • You want to reset the conversation context

๐Ÿ”— Re-Display the API URL

While the AI is instructed to list source URLs automatically, you can ask for them again at any time. This is useful for troubleshooting or if you simply want to re-confirm the source for the last response.

You can ask:

Show me the API URL you just used.

Example response:

The API URL just used to retrieve information about Boris Johnson is: https://members-api.parliament.uk/api/Members/Search?Name=Boris%20Johnson

๐Ÿง  Combine Data from Multiple Sources

Example:

Has Chelmsford been mentioned in either the Commons or Lords?

The AI may:

  • Query both Commons and Lords Hansard

  • Combine the results

  • Offer more detail if requested

๐Ÿงพ See the Raw JSON

For debugging or to inspect the raw data structure, you can ask the assistant to show you the full JSON response from its last API call. This is particularly useful for developers who want to understand exactly what information the AI is working with before it is summarized.

Example prompt:

Show me the JSON returned from the last MCP call.

Example Prompts

  • What is happening now in both Houses?

  • What's currently happening in the House of Commons?

  • What's currently happening in the House of Lords?

  • Show me the interests of Sir Keir Starmer

  • Tell me about Boris Johnson's parliamentary career

  • Look up the MP with ID 1471

  • Show me the biography for member 172

  • Show me contact details for member 4129

  • What are the registered interests of member 3743?

  • What speeches has member 172 made recently?

  • Show me how member 4129 has voted in the Commons

  • Show me how member 3743 has voted in the Lords

  • What was member 1471's career before Parliament?

  • What policy areas does member 172 focus on?

  • What early day motions has member 1471 signed?

  • Get the constituency election results for member 4129

  • Show me photos of member 172

  • What bills about fishing are currently before Parliament?

  • What bills were updated recently?

  • Show me details of bill 425

  • What stages has bill 425 been through?

  • What amendments were proposed for bill 425 at stage 15?

  • Show me amendment 1234 for bill 425 stage 15

  • What publications exist for bill 425?

  • What news articles are there about bill 425?

  • Show me all bill types available

  • What are the different stages a bill can go through?

  • Find bills related to the environment

  • Get the RSS feed to track all bills

  • Get the RSS feed for public bills

  • Get the RSS feed for bill 425

  • How have MPs voted on refugee-related issues?

  • Show details of Commons division 1234

  • Show details of Lords division 5678

  • Show how parties voted on climate issues in the Commons

  • How did Lords vote by party on issues involving member 3743?

  • How many votes have there been on Brexit?

  • What written questions have MPs asked about climate change?

  • Show me unanswered written questions to the Home Office

  • Find written questions about the NHS from the last month

  • Get details of written question 12345

  • What written ministerial statements were made about the budget?

  • Search for written statements about housing policy

  • Show me the daily report of written questions for this week

  • Has any MP asked written questions about artificial intelligence?

  • Which committees are focused on women's issues?

  • What committee meetings are scheduled this month?

  • Show me details of committee 789

  • What hearings has committee 789 held?

  • Who are the members of committee 789?

  • Find committee reports on healthcare

  • What written evidence was submitted to committee 789?

  • What oral evidence was given to committee 789?

  • What are all the committee types?

  • Search Hansard for recent debates on Brexit

  • What was said about immigration in the Commons last month?

  • Show me the full transcript of debate abc123-def456

  • What did Keir Starmer say during the debate on the economy?

  • Were there any votes during the NHS funding debate?

  • What debates happened in the Commons on March 15th 2024?

  • Which days in January 2024 had Commons sittings?

  • Show me all speeches by member 4514 in debate xyz789

  • Search Erskine May for references to the Mace

  • What oral question times are coming up?

  • What government departments exist?

  • What are the answering bodies in Parliament?

  • What parties are represented in the House of Commons?

  • What parties are represented in the House of Lords?

  • What's on the Commons calendar this month?

  • When are the upcoming parliamentary recesses?

  • What are the procedural rules for bill amendments?

  • List all UK constituencies

  • Show the election results for constituency 4359

  • Search for constituencies containing "london"

  • List all categories of members' interests

  • Get published registers of interests

  • Show staff interests declared by Lords members

  • Search the register of interests for member 1471

  • Are there any statutory instruments about harbours?

  • Search Acts of Parliament that mention roads

  • What treaties involve Spain?

  • What publication types are available for bills?

  • Show me document 123 from publication 456

  • What is on the Lords order paper on 15 January 2025?

  • Which sections of the Lords business paper are published for 15 January 2025?

  • Did the House of Lords hold any divisions on 15 January 2025?

  • Which days in December 2024 did the Lords not sit?

  • Show the Lords Journal minutes of proceedings for 15 January 2020

  • Show Lords written questions tabled in January 2025 that have been answered

  • Search deposited papers about defence procurement

  • What papers did the Department for Transport deposit in the Commons this year?

  • Show me deposited paper 2288285

  • Find Commons Library briefings on climate change

  • Search the Parliament website for sitting hours

  • Show the full data from this pasted API result: {PasteApiResultHere}

  • Show me the JSON returned from the last MCP call

  • Show me the API URL you just used

  • Search for bills sponsored by member 172 from the Environment department

  • Find committee meetings about climate change in the last few months


CLI Usage

The package includes a parliament CLI for terminal access to all 233 UK Parliament API tools. Perfect for developers, researchers, and automation scripts.

parliament CLI demo: Commons votes on the Terminally Ill Adults Bill, the MP for SW1A 1AA with their election result and recent votes, and a member search

Recorded against the live Parliament APIs (scripts/record-cli-demo.sh).

What's on the Lords order paper? List the day's business documents, then read the Order Paper PDF itself:

parliament CLI demo: listing the Lords business documents for 15 January 2025, fetching the Order Paper PDF and reading its oral questions, bills and regulations

Run against the live Lords business API (scripts/record-lords-demo.sh). lords-business document describes the PDF, which is then fetched from its DocumentForDayId URL and read with pdftotext.

No Python required. Download a single file, and you're ready to go:

On macOS/Linux, make the binary executable after downloading:

chmod +x parliament-linux-x64
./parliament-linux-x64 members search "Starmer"

On Windows, just run the .exe directly:

parliament-windows-x64.exe members search "Starmer"

Tip: Rename the download to parliament (or parliament.exe) and place it on your PATH for convenience.

Install โ€” pip (Alternative)

If you already have Python 3.11+, you can install from PyPI instead:

pip install uk-parliament-mcp

Quick Start

# Search for an MP

**On PyPI:** [pypi.org/project/uk-parliament-mcp](https://pypi.org/project/uk-parliament-mcp/)
parliament members search "Keir Starmer"

# Get comprehensive MP profile (use member_id)
parliament composite mp-profile 4514 --pretty

# Check how an MP voted on a topic (use member_id)
parliament composite check-vote 172 "climate"

# Search everything at once
parliament composite search "net zero"

# Track bill progress
parliament bills search "Online Safety" --data-only | jq '.items[0]'

# What's happening now in Parliament?
parliament live commons-now --pretty

Common Commands

The CLI organizes 233 tools into 16 command groups, plus the top-level my-mp, digest, watch and reference commands:

# MP and Lords research
parliament members search "Starmer"
parliament members biography 4514
parliament interests search "Starmer"

# Bill tracking
parliament bills search "education"
parliament bills stages 123
parliament bills amendments 123

# Voting records
parliament votes search "climate" --house 1
parliament votes get-division 12345 --house 1

# Committee research
parliament committees search "Treasury"
parliament committees oral-evidence 456

# Parliamentary record
parliament hansard search-debates "NHS" --house 1

# Live activity
parliament live commons-now
parliament live calendar Commons 2025-01-15 2025-01-31
parliament live next-sitting-date Commons 2025-01-15

# Questions and statements
parliament questions search-edms "immigration"
parliament questions search-written "healthcare"

# Legislation and treaties
parliament legislation search-si "education"
parliament legislation search-treaties "trade"

# Erskine May procedure rules
parliament procedures search "closure"

# Deposited papers (departmental reports, command papers, ...)
parliament deposited-papers search "defence" --house Commons --take 5

# Lords business papers, Journal and Lords written questions
parliament lords-business sections-for-date 2025-01-15
parliament lords-business search-written-questions --tabled-from 2025-01-01 --tabled-to 2025-01-31 --take 5

# Search the parliament.uk website (Commons Library briefings, guides, ...)
parliament search website "climate change" --take 5

# Daily/weekly parliamentary digest
parliament digest                          # Today's summary
parliament digest --date 2025-01-15        # Specific date
parliament digest --period week            # This week (Mon-Fri)
parliament digest --house 1                # Commons only

# Live dashboard with auto-refresh
parliament watch

# API explorer
parliament api list                        # List all Parliament APIs
parliament api search "bill"               # Search across APIs

High-level composite tools (combine multiple API calls):

# Find your MP by postcode
parliament my-mp "SW1A 1AA"
parliament my-mp "N1 9GU" --votes climate

# Get everything about an MP in one call (use member_id)
parliament composite mp-profile 4514 --pretty

# Check how an MP voted on a topic (use member_id)
parliament composite check-vote 172 "climate" --pretty

# Get comprehensive bill overview
parliament composite bill-overview "Online Safety" --pretty

# Get full committee summary
parliament composite committee-summary "Treasury" --pretty

# Search members, bills, committees, Hansard and written questions at once
parliament composite search "renters rights"

# Compare two members' votes (same House), optionally on a topic
parliament composite compare-votes 4514 172 --topic welfare

# Bills a member has sponsored
parliament composite member-bills 4514

# Which committees examined a bill, and which bills a committee examined
parliament composite bill-committees 3764
parliament composite committee-bills 172

Daily/Weekly Digest

Get a quick overview of parliamentary activity without running multiple commands. The digest command aggregates 9 data sources (Hansard debates, Commons/Lords divisions, bills, committee meetings, written statements, oral questions, EDMs, and written questions) into a single summary with clickable links to parliament.uk:

# Today's digest (rich table output in terminal, JSON when piped)
parliament digest

# Pretty-printed for a specific date
parliament digest --date 2025-01-15 --pretty

# Weekly summary (Monday to Friday)
parliament digest --period week

# Filter to one house
parliament digest --house 1                # Commons only
parliament digest --house 2                # Lords only

# JSON output for scripting
parliament digest --format json | jq '.commons_divisions | length'

The rich output includes:

  • Divisions with Ayes/Noes counts, linked to votes.parliament.uk

  • Bills with titles and current stage, linked to bills.parliament.uk

  • Hansard debates linked to hansard.parliament.uk

  • Committee meetings with date, time, and topic, linked to committees.parliament.uk

  • Written statements, oral questions, EDMs, and written questions summaries

My MP Lookup

Find your MP by postcode with a single command:

# Basic lookup โ€” constituency, MP bio, interests, election result, recent votes
parliament my-mp "SW1A 1AA"

# Filter votes by topic
parliament my-mp "N1 9GU" --votes climate

# JSON output for scripting
parliament my-mp "SW1A 1AA" --format json | jq '.basic_info'

# Pretty-printed
parliament my-mp "SW1A 1AA" --pretty

API Explorer

Browse and search the Parliament API catalogue interactively:

# List all Parliament APIs
parliament api list

# Show endpoints for a specific API
parliament api endpoints members

# Get full details for an API
parliament api detail members

# Search across all APIs
parliament api search "bill"

# Show OpenAPI schema for an API
parliament api schema members

# Show parameters for a specific endpoint
parliament api params members "/api/Members/Search"

CLI Reference

View the full command reference without leaving the terminal:

# Overview of all command groups
parliament reference

# Detailed view of a specific group
parliament reference members

# Search for commands by keyword
parliament reference --search vote

# Export as JSON
parliament reference --format json

Output Formats

The CLI supports multiple output formats via the --format flag:

# Auto-detect: rich table in terminal, JSON when piped (default)
parliament members search "Starmer"

# Explicit formats
parliament members search "Starmer" --format table
parliament members search "Starmer" --format markdown
parliament members search "Starmer" --format csv
parliament members search "Starmer" --format json

# Select specific fields (case-insensitive matching)
parliament members search "Starmer" --fields "id,nameDisplayAs,latestParty.name"

# Raw JSON with full {url, data} wrapper
parliament members search "Starmer" --raw

# Pretty-printed JSON
parliament members search "Starmer" --pretty

# Just the data (strips url wrapper)
parliament members search "Starmer" --data-only | jq '.items[0]'

When using --fields, the CLI shows available fields on stderr if none match, so you can discover the correct field paths.

--raw and --fields also work before the command (parliament --raw members search "Starmer").

Global flags:

  • --format / -f - Output format: json, table, markdown, csv, auto (default: auto)

  • --fields - Comma-separated field paths for column selection (case-insensitive)

  • --raw - Output full wrapper JSON (url + data), disabling auto-formatting

  • --pretty / -p - Pretty-print JSON output

  • --data-only / -d - Return only the data field, not the {url, data} wrapper

URL Transparency

Every API request logs the source URL to stderr, so you can always see exactly which Parliament API endpoint was called:

# URLs appear on stderr, data on stdout
parliament members search "Starmer"
# stderr:
#   URLs called:
#     https://members-api.parliament.uk/api/Members/Search?Name=Starmer&skip=0&take=20

# Capture just the data (URLs go to stderr, not stdout)
parliament members search "Starmer" > results.json

This makes it easy to verify data sources, debug issues, or construct your own API calls.

Help System

# Show all command groups
parliament --help

# Show commands in a group
parliament members --help

# Show command details
parliament members search --help

# Full command reference (all groups and commands)
parliament reference
parliament reference members
parliament reference --search vote

# Browse the API catalogue
parliament api list
parliament api search "member"

# Get tool reference
parliament guide tools

# Get detailed domain guidance
parliament guide topic members

# Get research workflow
parliament guide workflow "How did my MP vote on X?"

Available help topics:

  • composite - High-level tools combining multiple API calls

  • members - MPs, Lords, constituencies, parties

  • bills - Legislation, amendments, stages

  • votes - Commons and Lords divisions

  • committees - Committee info, meetings, evidence

  • hansard - Parliamentary record

  • questions - Oral questions, written questions, EDMs

  • interests - Register of interests

  • live - Current activity and calendar

  • legislation - SIs and treaties

  • procedures - Erskine May procedure rules

  • deposited-papers - Papers deposited in the Libraries of both Houses

  • lords-business - Lords business papers, Journal, sittings and Lords written questions

  • search - Free-text search of the parliament.uk website


Alternative Installation Methods

The uvx method shown above is recommended for most users. For specific use cases, here are alternative approaches:

Which Method Should I Use?

Method

Best For

Pros

Cons

Standalone executable

Non-technical users, quick setup

Zero prerequisites, single file download

Manual updates, larger file size

uvx uk-parliament-mcp

MCP server users

No install needed, always latest version

Requires uvx installed

pip install uk-parliament-mcp

Python developers

Stable, version locked, CLI + MCP server

Requires Python 3.11+

Local development install

Contributors

Full source access, can modify

More complex setup

Using pip install

Install the package globally:

pip install uk-parliament-mcp

Then configure your AI client:

Claude Desktop:

{
  "mcpServers": {
    "uk-parliament": {
      "command": "uk-parliament-mcp"
    }
  }
}

VS Code: Use uk-parliament-mcp as the command when adding the MCP server.

Installation from Source

For development or to get the latest unreleased changes:

Prerequisites

Clone and Install

git clone https://github.com/ChrisBrooksbank/uk-parliament-data-mcp.git
cd uk-parliament-data-mcp

# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# .venv\Scripts\activate   # Windows

# Install the package
pip install -e .

Configure for Local Development

Claude Desktop:

{
  "mcpServers": {
    "uk-parliament": {
      "command": "C:\\code\\uk-parliament-data-mcp\\.venv\\Scripts\\python.exe",
      "args": ["-m", "uk_parliament_mcp"],
      "cwd": "C:\\code\\uk-parliament-data-mcp"
    }
  }
}

VS Code: Use the full path to the virtual environment Python:

C:\code\uk-parliament-data-mcp\.venv\Scripts\python.exe -m uk_parliament_mcp

Contributing

Contributions and feedback are welcome. See CONTRIBUTING.md for setup and conventions, ROADMAP.md for open work, and CHANGELOG.md for what has changed.

Available Tools

233 tools
bill_stagesB

Get all possible stages a bill can go through in its legislative journey. Use when tracking bill progress or understanding the legislative process (e.g., First Reading, Committee Stage, Royal Assent).

    Returns:
        All bill stages with descriptions.
    

Inputs: no named parameters. Returns: result

bill_typesA

Get all types of bills that can be introduced in Parliament (e.g., Government Bill, Private Member's Bill). Use when you need to understand different categories of legislation.

    Returns:
        All bill types with descriptions.
    

Inputs: no named parameters. Returns: result

browse_erskine_may_indexA

Browse the Erskine May index alphabetically | index terms, procedure topics | Use to discover topics by browsing alphabetically | Returns index terms starting with given letter.

    Args:
        start_letter: Starting letter to browse from (A-Z), or None for all.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 30).

    Returns:
        Index terms starting with the given letter.
    

Inputs: skip, take, start_letter. Returns: result

browse_locationsA

Browse locations by type and name, returning parent and child locations | location browse, constituency type, country region | Use when exploring the location hierarchy (e.g. countries, regions, constituencies) | Returns list of locations matching the type and name

    Args:
        location_type: Type of location (e.g. 'Constituency', 'Country', 'Region').
        location_name: Name of the location to browse.

    Returns:
        List of parent and child locations matching the criteria.
    

Inputs: location_name (required), location_type (required). Returns: result

check_lords_divisions_existA

Check whether the Lords held divisions on a date | did the Lords vote, division day check | Use before searching Lords divisions for a specific day | Returns true or false. See also: search_lords_divisions.

    Args:
        date: Date to check (YYYY-MM-DD).

    Returns:
        true if divisions exist for the date, otherwise false.
    

Inputs: date (required). Returns: result

check_mp_voteA

Check how an MP or Lord voted on a topic - combines member lookup and their division votes | MP voting stance, how did MP vote, voting record on topic, division lookup, aye or no | Use when you need to know how a specific member voted on a particular issue | Returns member details and each matching division with their vote (Aye/No, or Content/Not Content in the Lords). Combines: get_member_by_id, get_commons_voting_record_for_member or get_lords_voting_record_for_member (by the member's House). See also: compare_member_votes, search_commons_divisions.

    Args:
        member_id: Parliament member ID. Get from member search first. Example: 4514
        topic: Topic or keyword to search for in division titles (e.g., 'climate', 'NHS', 'brexit').
        take: Number of matching divisions to return (default 25, max 100).

    Returns:
        Member info and divisions matching the topic with the member's vote.
    

Inputs: topic (required), member_id (required), take. Returns: result

compare_member_votesA

Compare how two MPs (or two Lords) voted - lines up their votes division by division | compare voting records, do they agree, voting similarity, rebels, party loyalty, head to head | Use when asked whether two members vote the same way, overall or on a topic | Returns both members, agreement counts and rate, each shared division with both votes, and divisions only one of them voted in. Combines: get_member_by_id (x2), get_commons_voting_record_for_member or get_lords_voting_record_for_member (x2). See also: check_mp_vote, get_commons_divisions_grouped_by_party.

    Args:
        member_id_a: First member's Parliament ID. Get from get_member_by_name. Example: 4514
        member_id_b: Second member's Parliament ID; must sit in the same House as the first.
        topic: Optional: only divisions whose title matches this topic (e.g. 'climate', 'Rwanda').
        take: Number of each member's most recent matching divisions to compare (default 50, max 100).

    Returns:
        Agreement summary and division-by-division comparison.
    

Inputs: member_id_a (required), member_id_b (required), take, topic. Returns: result

edms_for_member_idA

Get all Early Day Motions signed by a specific MP. Use when you want to see what issues a particular member has supported or their political priorities through EDM signatures. See also: search_early_day_motions.

    Args:
        member_id: Parliament member ID to get EDMs for.

    Returns:
        List of Early Day Motions signed by the member.
    

Inputs: member_id (required). Returns: result

get_act_of_parliamentC

Get Act details | primary legislation, act of parliament, law | Get full details of an Act of Parliament | Returns Act details

    Args:
        act_id: The Act ID (alphanumeric string from search results).

    Returns:
        Full Act details.
    

Inputs: act_id (required). Returns: result

get_all_bills_rssA

Get RSS feed of all bills. Use when you want to stay updated on all legislative activity through RSS feeds.

    Returns:
        RSS feed of all bills.
    

Inputs: no named parameters. Returns: result

get_amendment_by_idB

Get detailed information about a specific amendment. Use when you need complete amendment details including text, sponsors, decision, and explanatory notes.

    Args:
        bill_id: Bill ID.
        bill_stage_id: Bill stage ID.
        amendment_id: Amendment ID to get details for.

    Returns:
        Detailed information about the amendment.
    

Inputs: bill_id (required), amendment_id (required), bill_stage_id (required). Returns: result

get_annulment_dateA

Get annulment date | SI annulment, negative SI, scrutiny period, 40 days | Calculate the annulment date for a negative statutory instrument | Returns annulment date

    Args:
        date_laid: Date the negative SI was laid (YYYY-MM-DD).
        days_in_future: Number of days from date_laid when the SI will be annulled (e.g. 40).
        is_treaty: Whether the SI is a treaty or agreement (default: false).

    Returns:
        Calculated annulment date for the statutory instrument.
    

Inputs: date_laid (required), days_in_future (required), is_treaty. Returns: result

get_annunciator_by_dateB

Get annunciator message for a specific chamber and date | annunciator, chamber display, historical activity | Retrieve what was displayed on the annunciator board for a given date | Returns annunciator message data

    Args:
        annunciator: Annunciator identifier, e.g. 'CommonsMain' or 'LordsMain'.
        date: Date to retrieve annunciator message for (YYYY-MM-DD).

    Returns:
        Annunciator message data for the specified chamber and date.
    

Inputs: date (required), annunciator (required). Returns: result

get_answer_deadlineA

Get answer deadline | PQ answer date, response deadline, when answers due | Get the earliest answer date for a written question (Commons only) | Returns answer deadline date

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        question_type: Type of written question: 'NamedDay' or 'Ordinary'.
        tabled_date: Date the question was tabled (YYYY-MM-DD).

    Returns:
        Answer deadline date for the question.
    

Inputs: house (required), tabled_date (required), question_type (required). Returns: result

get_answering_bodiesA

Get government departments and their parliamentary responsibilities | government departments, ministries, answering bodies, policy areas, department structure, who answers questions | Use for understanding government structure, finding responsible departments, or determining who answers questions on specific topics | Returns department names, abbreviations, and policy responsibilities See also: get_departments, search_written_questions.

    Args:
        name_contains: Filter by partial name match. Example: 'Treasury', 'Health'.

    Returns:
        Department names, abbreviations, and policy responsibilities.
    

Inputs: name_contains. Returns: result

get_bill_by_idB

Get detailed information about a specific bill by ID. Use when you need comprehensive bill details including title, sponsors, stages, summary, and current status. See also: get_bill_overview, get_bill_stages, get_bill_committees.

    Args:
        bill_id: Unique bill ID number.

    Returns:
        Comprehensive bill details.
    

Inputs: bill_id (required). Returns: result

get_bill_committeesA

Find the committees that examined a bill | which committee scrutinised this bill, legislative scrutiny, committee stage, select committee reports on a bill | Use when asked which committees looked at a bill, or to find committee evidence and reports on it | Returns the bill's committee stages (with sitting dates) and select committee business on it with the examining committee; items whose linked_bill_ids include the bill are confirmed links. Combines: get_bill_by_id, get_bill_stages, get_committee_business, get_committee_business_by_id, get_publications. See also: get_committee_bills (the reverse), get_bill_overview.

    Args:
        bill_id: Bill ID. Get from search_bills or get_bill_overview. Example: 3764

    Returns:
        Committee stages and committee business for the bill.
    

Inputs: bill_id (required). Returns: result

get_bill_news_articlesA

Get news articles related to a specific bill. Use when researching media coverage, press releases, or official communications about legislation.

    Args:
        bill_id: Bill ID to get news articles for.
        skip: Optional: number of records to skip (for pagination).
        take: Optional: number of records to return.

    Returns:
        News articles related to the bill.
    

Inputs: bill_id (required), skip, take. Returns: result

get_bill_overviewA

Get comprehensive bill overview in one call - combines search, details, stages, and publications | complete bill info, legislation overview, bill progress, full bill details | Use when you need complete information about a bill without multiple tool calls | Returns bill details, legislative stages, and associated publications. Combines: search_bills, get_bill_by_id, get_bill_stages, get_bill_publications. See also: get_bill_committees, get_member_bills.

    Args:
        search_term: Search term for bill title or content (e.g., 'Online Safety', 'Environment', 'Finance').

    Returns:
        Combined bill data: details, stages, and publications.
    

Inputs: search_term (required). Returns: result

get_bill_petition_by_idB

Get a specific bill petition by ID | bill petition, private bill, hybrid bill petition | Use to get full details of a petition submitted on a Private Bill | Returns petition details

    Args:
        petition_id: Bill petition ID.
        show_on_website_only: Show only petitions visible on website. Default: true.

    Returns:
        Detailed bill petition record.
    

Inputs: petition_id (required), show_on_website_only. Returns: result

get_bill_publicationsA

Get all publications for a specific bill. Use when researching bill documents, impact assessments, explanatory notes, or tracking document versions throughout the legislative process. See also: get_bill_stage_publications, get_publication_document.

    Args:
        bill_id: Bill ID to get publications for.

    Returns:
        Publications for the specified bill.
    

Inputs: bill_id (required). Returns: result

get_bill_rssC

Get RSS feed for a specific bill by ID. Use when you want to track updates and changes to a particular piece of legislation through RSS feeds.

    Args:
        bill_id: Bill ID to get RSS feed for.

    Returns:
        RSS feed for the specified bill.
    

Inputs: bill_id (required). Returns: result

get_bill_stage_amendmentsA

Get all amendments for a specific bill stage. Use when researching proposed changes to legislation, tracking amendment activity, or understanding what modifications are being suggested to a bill. See also: get_amendment_by_id, get_bill_stage_ping_pong_items.

    Args:
        bill_id: Bill ID.
        bill_stage_id: Bill stage ID to get amendments for.
        search_term: Optional: search term for amendment content.
        amendment_number: Optional: specific amendment number.
        decision: Optional: amendment decision status.
        member_id: Optional: member ID who proposed amendment.
        skip: Optional: number of records to skip (for pagination).
        take: Optional: number of records to return.

    Returns:
        Amendments for the specified bill stage.
    

Inputs: bill_id (required), bill_stage_id (required), skip, take, +4 more. Returns: result

get_bill_stage_detailsB

Get detailed information about a specific stage of a bill. Use when you need complete details about a particular stage including timings, committee involvement, and related activities.

    Args:
        bill_id: Bill ID.
        bill_stage_id: Bill stage ID to get details for.

    Returns:
        Detailed information about the bill stage.
    

Inputs: bill_id (required), bill_stage_id (required). Returns: result

get_bill_stage_ping_pong_itemsA

Get ping pong items (amendments and motions) for a bill stage. Use when researching the final stages of bills passing between Commons and Lords, including disagreements and agreements on amendments.

    Args:
        bill_id: Bill ID.
        bill_stage_id: Bill stage ID to get ping pong items for.
        search_term: Optional: search term for ping pong item content.
        amendment_number: Optional: specific amendment number.
        decision: Optional: ping pong item decision status.
        member_id: Optional: member ID who proposed item.
        skip: Optional: number of records to skip (for pagination).
        take: Optional: number of records to return.

    Returns:
        Ping pong items for the specified bill stage.
    

Inputs: bill_id (required), bill_stage_id (required), skip, take, +4 more. Returns: result

get_bill_stage_publicationsB

Get publications for a specific bill stage. Use when you need documents related to a particular stage of legislation, such as committee reports or stage-specific amendments.

    Args:
        bill_id: Bill ID.
        stage_id: Stage ID to get publications for.

    Returns:
        Publications for the specified bill stage.
    

Inputs: bill_id (required), stage_id (required). Returns: result

get_bill_stagesA

Get all stages of a specific bill by bill ID. Use when tracking a bill's progress through Parliament, understanding its legislative journey, or finding specific stages like Committee Stage or Third Reading. See also: get_bill_stage_details, get_bill_stage_amendments, get_bill_committees.

    Args:
        bill_id: Bill ID to get stages for.
        skip: Optional: number of records to skip (for pagination).
        take: Optional: number of records to return.

    Returns:
        All stages for the specified bill.
    

Inputs: bill_id (required), skip, take. Returns: result

get_calendar_categoriesB

Get calendar event categories | categories, event types, calendar taxonomy | List all categories used to classify parliamentary calendar events | Returns list of categories

    Returns:
        List of calendar event categories.
    

Inputs: no named parameters. Returns: result

get_calendar_eventC

Get calendar event by ID | specific event, event details | Use to get full details of a specific calendar event | Returns event details

    Args:
        event_id: The calendar event ID.

    Returns:
        Full details of the calendar event.
    

Inputs: event_id (required). Returns: result

get_calendar_locationsB

Get calendar locations | venues, committee rooms, locations, where | List all locations used for parliamentary calendar events | Returns list of locations

    Returns:
        List of parliamentary calendar locations.
    

Inputs: no named parameters. Returns: result

get_calendar_tagsB

Get calendar tags | tags, labels, calendar taxonomy | List all tags used to label parliamentary calendar events | Returns list of tags

    Returns:
        List of calendar event tags.
    

Inputs: no named parameters. Returns: result

get_calendar_typesC

Get calendar event types | event types, calendar classification | List all event types used in the parliamentary calendar | Returns list of event types

    Returns:
        List of parliamentary calendar event types.
    

Inputs: no named parameters. Returns: result

get_cli_referenceA

Get comprehensive CLI command reference | cli commands, terminal, command line, parliament command | Use to discover available CLI commands and their parameters | Returns JSON with command groups, names, descriptions, and parameters

    This tool helps LLMs understand what CLI commands are available in the
    `parliament` command-line tool, complementing the MCP tools.

    Args:
        group: Optional group name to filter (e.g., 'members', 'bills', 'votes').
               If not specified, returns all groups.
        search: Optional keyword to search across command names and descriptions.
                If specified, returns only matching commands.

    Returns:
        JSON with total_commands, total_groups, and groups array containing
        command details with parameters.
    

Inputs: group, search. Returns: result

get_committee_billsA

Find the bills a committee has examined | committee legislative scrutiny, bills scrutinised by committee, committee's bill work | Use when asked which bills a committee has looked at | Returns the committee and its legislative-scrutiny business, newest first, each with the bill it examined (current stage) and how the bill was matched (committee link or title). Combines: get_committee_by_id, get_committee_business, get_committee_business_by_id, get_bill_by_id. See also: get_bill_committees (the reverse), get_committee_summary.

    Args:
        committee_id: Committee ID. Get from search_committees or get_committee_summary. Example: 172 (Lords Constitution Committee)
        take: Number of most recent legislative scrutiny items to return (default 10, max 20).

    Returns:
        Committee summary and the bills it examined.
    

Inputs: committee_id (required), take. Returns: result

get_committee_businessA

Search for committee business (inquiries, investigations) | committee inquiries, investigations, call for evidence | Use to find committee inquiries by topic, status, or whether accepting evidence. Returns committee business items matching the criteria. See also: get_committee_business_by_id, get_bill_committees.

    Args:
        search_term: Optional: search term for business titles or content.
        committee_id: Optional: committee ID to filter by.
        date_from: Optional: start date in YYYY-MM-DD format.
        date_to: Optional: end date in YYYY-MM-DD format.
        business_type_id: Optional: business type ID (from get_committee_business_types).
        status: Optional: status filter (e.g. 'Open', 'Closed').
        currently_accepting_evidence: Optional: filter to inquiries accepting evidence.
        show_on_website_only: Show only items visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Committee business items matching the criteria.
    

Inputs: skip, take, status, date_to, +6 more. Returns: result

get_committee_business_by_idA

Get detailed information about a specific committee business item | inquiry details, investigation details | Use when you need complete details about a specific inquiry or investigation. Returns full business details including evidence calls and reports. See also: get_committee_business_publications_summary, get_bill_committees.

    Args:
        business_id: Committee business ID.
        show_on_website_only: Show only items visible on website.

    Returns:
        Detailed information about the committee business.
    

Inputs: business_id (required), show_on_website_only. Returns: result

get_committee_business_publications_summaryB

Get publication summary for an inquiry | inquiry publications, report groups | Use to see publication types for a committee business/inquiry | Returns publication groups with counts

    Args:
        business_id: Committee business ID.

    Returns:
        Summary of publications grouped by type for the inquiry.
    

Inputs: business_id (required). Returns: result

get_committee_business_typesA

Get all types of committee business | business types, inquiry types | Use to understand different types of committee work (inquiries, debates, etc.). Returns list of business types with descriptions.

    Returns:
        All committee business types with descriptions.
    

Inputs: no named parameters. Returns: result

get_committee_by_idA

Get comprehensive committee profile and membership details | committee information, committee members, committee purpose, parliamentary committee, scrutiny committee | Use for understanding committee roles, finding committee members, or researching committee activities | Returns full committee details including purpose, members, departments scrutinized, and contact information See also: get_committee_summary, get_committee_members, get_committee_bills.

    Args:
        committee_id: Committee ID. Required: get from committee search first. Example: 739
        include_banners: Include banner images. Default: false. May increase response size.
        show_on_website_only: Show only public committees. Default: true. Recommended for general use.

    Returns:
        Full committee details including purpose, members, and contact information.
    

Inputs: committee_id (required), include_banners, show_on_website_only. Returns: result

get_committee_eventsA

Get events for a specific committee by committee ID. Use when you want to see all meetings and activities for a particular committee, with options to filter by date range, business, and event type.

    Args:
        committee_id: Committee ID to get events for.
        committee_business_id: Optional: filter by committee business ID.
        search_term: Optional: search term for event titles or content.
        start_date_from: Optional: start date from in YYYY-MM-DD format.
        start_date_to: Optional: start date to in YYYY-MM-DD format.
        end_date_from: Optional: end date from in YYYY-MM-DD format.
        location_id: Optional: location ID to filter events.
        exclude_cancelled_events: Optional: exclude cancelled events.
        sort_ascending: Optional: sort ascending by date.
        event_type_id: Optional: filter by event type ID.
        include_event_attendees: Include event attendees in response.
        show_on_website_only: Show only events visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Events for the specified committee.
    

Inputs: committee_id (required), skip, take, location_id, +10 more. Returns: result

get_committee_meetingsA

Find committee meetings and hearings by date range | committee meetings, parliamentary hearings, committee schedule, committee calendar, when committees meet | Use for finding committee schedules, planning attendance, or researching past committee activity | Returns meeting details including committees, dates, times, and topics | Covers both Commons and Lords committees See also: get_events, get_committees_next_events.

    Args:
        from_date: Start date. Format: YYYY-MM-DD. Example: 2024-01-15
        to_date: End date. Format: YYYY-MM-DD. Must be after start date.

    Returns:
        Meeting details including committees, dates, times, and topics.
    

Inputs: to_date (required), from_date (required). Returns: result

get_committee_membersA

Get members and staff of a specific committee by committee ID. Use when you need to know who serves on a committee, their roles, and membership status (current/former). Returns both elected members and lay members.

    Args:
        committee_id: Committee ID to get members for.
        membership_status: Optional: filter by membership status (e.g. 'Current', 'Former').
        show_on_website_only: Show only members visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Members and staff of the committee.
    

Inputs: committee_id (required), skip, take, membership_status, +1 more. Returns: result

get_committee_publications_summaryB

Get summary of publications grouped by type | publication overview, report counts | Use to get an overview of a committee's publication output. Returns publication counts by type.

    Args:
        committee_id: Committee ID.

    Returns:
        Summary of publications grouped by type.
    

Inputs: committee_id (required). Returns: result

get_committee_publication_typesB

Get all types of committee publications | report types, document types | Use to understand different types of committee publications. Returns list of publication types with descriptions.

    Returns:
        All committee publication types with descriptions.
    

Inputs: no named parameters. Returns: result

get_committees_next_eventsA

Get upcoming events for all committees | next meetings, upcoming hearings | Use to see what committee meetings are scheduled. Returns list of committees with their next scheduled event.

    Args:
        house: Optional: filter by house - 1 or 'Commons', 2 or 'Lords'.
        event_from_date: Optional: start date in YYYY-MM-DD format (default today).
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30).

    Returns:
        Committees with their next scheduled events.
    

Inputs: skip, take, house, event_from_date. Returns: result

get_committee_staffA

Get staff members of a committee | committee staff, clerks, advisers | Use to find who supports a committee's work. Returns staff members with their roles.

    Args:
        committee_id: Committee ID.
        membership_status: Optional: filter by status (e.g. 'Current', 'Former').
        show_on_website_only: Show only staff visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30).

    Returns:
        Staff members of the committee.
    

Inputs: committee_id (required), skip, take, membership_status, +1 more. Returns: result

get_committee_summaryA

Get comprehensive committee summary in one call - combines search, details, evidence, and publications | complete committee info, inquiry overview, committee research, full committee details | Use when you need complete information about a committee's work without multiple tool calls | Returns committee details, oral/written evidence, and publications. Combines: search_committees, get_committee_by_id, get_oral_evidence, get_written_evidence, get_publications. See also: get_committee_bills.

    Args:
        topic: Search term for committee name or subject area (e.g., 'Treasury', 'Health', 'Defence').

    Returns:
        Combined committee data: details, evidence, and publications.
    

Inputs: topic (required). Returns: result

get_committee_typesA

Get all types of parliamentary committees (e.g., Select Committee, Public Bill Committee, Delegated Legislation Committee). Use when understanding committee structures or finding the right committee type.

    Returns:
        All committee types with descriptions.
    

Inputs: no named parameters. Returns: result

get_commons_division_by_idA

Get one House of Commons division by ID | Commons vote details, division list, tellers | Use when you need complete details of a particular vote | Returns who voted aye/no, tellers and vote totals.

    Args:
        division_id: Unique Commons division ID number.
    

Inputs: division_id (required). Returns: result

get_commons_divisions_grouped_by_partyA

Get House of Commons divisions grouped by party | party-line voting, how parties voted, rebellions | Use when analyzing how different parties voted on issues | Returns vote counts by party rather than individual members.

    Args:
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        member_id: Optional: only divisions this member voted in.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
    

Inputs: end_date, member_id, start_date, search_term, +2 more. Returns: result

get_commons_divisions_search_countA

Count House of Commons divisions matching search criteria | number of votes, how many divisions | Use to size a search before fetching results with search_commons_divisions | Returns the total count.

    Args:
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        member_id: Optional: only divisions this member voted in.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
    

Inputs: end_date, member_id, start_date, search_term, +2 more. Returns: result

get_commons_voting_record_for_memberA

Get the voting record of a MP in House of Commons divisions | MP votes, voting history, voting pattern | Use when analyzing how a specific MP votes or their stance on issues through their voting history | Returns the divisions the member voted in, newest first. See also: get_member_voting, compare_member_votes.

    Args:
        member_id: Parliament member ID.
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 25, max 100).
    

Inputs: member_id (required), skip, take, end_date, +4 more. Returns: result

get_constituenciesB

Search and list UK parliamentary constituencies | constituency search, find constituency, browse constituencies | Use when you need constituency information, want to search by name, or need constituency data for analysis | Returns list of UK parliamentary constituencies See also: get_my_mp, get_constituency_representations.

    Args:
        search_text: Optional filter by constituency name (partial match).
        skip: Number of constituencies to skip (for pagination).
        take: Number of constituencies to return (default 20, max 100).

    Returns:
        List of UK parliamentary constituencies.
    

Inputs: skip, take, search_text. Returns: result

get_constituency_by_idB

Get a constituency by ID with full details | constituency lookup, find constituency, constituency info | Use when you have a constituency ID and need full details about it | Returns constituency name, boundaries, and related data

    Args:
        constituency_id: Unique constituency ID number.

    Returns:
        Constituency details including name and related information.
    

Inputs: constituency_id (required). Returns: result

get_constituency_election_resultB

Get a specific election result for a constituency by election ID | constituency election, historic vote, election result | Use when you need a particular election result for a constituency | Returns vote counts, winner, turnout, and candidate details for that election

    Args:
        constituency_id: Unique constituency ID number.
        election_id: Election ID number.

    Returns:
        Election result with vote counts, winner, and turnout for the specified election.
    

Inputs: election_id (required), constituency_id (required). Returns: result

get_constituency_latest_electionA

Get the latest election result for a constituency | constituency election, latest vote, most recent election result | Use when you need the most recent election result for a specific constituency | Returns vote counts, winner, turnout, and candidate details

    Args:
        constituency_id: Unique constituency ID number.

    Returns:
        Latest election result with vote counts, winner, and turnout.
    

Inputs: constituency_id (required). Returns: result

get_constituency_representationsA

Get all MP representations for a constituency over time | constituency history, who represented, past MPs | Use when researching which MPs have represented a constituency historically | Returns list of representations with dates and member details See also: get_my_mp, get_constituency_by_id.

    Args:
        constituency_id: Unique constituency ID number.

    Returns:
        List of representations with member details and date ranges.
    

Inputs: constituency_id (required). Returns: result

get_constituency_synopsisA

Get a brief synopsis or summary for a constituency | constituency overview, constituency description, area summary | Use when you need a concise description or background information about a constituency | Returns text synopsis of the constituency

    Args:
        constituency_id: Unique constituency ID number.

    Returns:
        Text synopsis summarising the constituency.
    

Inputs: constituency_id (required). Returns: result

get_contributionsA

Get summary of parliamentary contributions (speeches, questions, interventions) made by a specific member. Use when analyzing an MP or Lord's parliamentary activity and participation levels. See also: get_member_contribution_summary, search_hansard_contributions.

    Args:
        member_id: Parliament member ID to get contribution summary for.

    Returns:
        Summary of parliamentary contributions for the member.
    

Inputs: member_id (required). Returns: result

get_daily_reportsA

Get daily reports of written questions and answers | daily reports, question reports, answer summaries, daily digest | Use for getting overview of parliamentary question activity on specific dates or date ranges | Returns daily reports with question and answer summaries

    Args:
        date_from: Start date for reports (YYYY-MM-DD).
        date_to: End date for reports (YYYY-MM-DD).
        house: Filter by house: 'Commons', 'Lords' or 'Bicameral' (1 or 2 also accepted).
        skip: Number of records to skip for pagination. Default: 0.
        take: Number of records to return. Default: 20.

    Returns:
        Daily reports with question and answer activity summaries.
    

Inputs: skip, take, house, date_to, +1 more. Returns: result

get_debate_by_columnB

Get a debate by Hansard column number | Hansard, column reference, volume | Use when you have a Hansard column reference (e.g. from a citation) and need to find the debate | Returns the debate at the specified column

    Args:
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        column_number: Hansard column number (optional).
        volume_number: Hansard volume number (optional).
        series_number: Hansard series number (optional).

    Returns:
        Debate at the specified column reference.
    

Inputs: house, column_number, series_number, volume_number. Returns: result

get_debate_by_external_idA

Get a debate by its external content item ID | Hansard, external ID, debate lookup | Use when you have an external content item ID to retrieve the specific debate | Returns the debate matching the external ID

    Args:
        content_item_external_id: External content item ID.
        house: House: 1 or 'Commons', 2 or 'Lords'.

    Returns:
        Debate matching the external content item ID.
    

Inputs: house (required), content_item_external_id (required). Returns: result

get_debate_by_idA

Get full debate transcript | Hansard, speeches, contributions | Use after search_hansard to get complete debate with all member speeches. Returns debate title, date, house, and all contributions. See also: get_debate_speakers, get_debate_divisions, get_member_hansard_contributions.

    Args:
        debate_section_id: External ID from search_hansard results.

    Returns:
        Full debate with all member contributions.
    

Inputs: debate_section_id (required). Returns: result

get_debate_by_titleA

Find a debate by title and date | Hansard, find debate, debate lookup | Use when you know the debate title and date but not the ID. Returns the debate matching the title and date.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        date: Date in YYYY-MM-DD format.
        section_title: Title of the debate section.

    Returns:
        Debate matching the title and date.
    

Inputs: date (required), house (required), section_title (required). Returns: result

get_debate_divisionsA

Get votes that occurred during a debate | Hansard, divisions, voting | Use to find divisions (votes) that took place in a specific debate. Returns list of divisions with aye/noe counts. See also: get_division_details, get_commons_division_by_id.

    Args:
        debate_section_id: External ID of debate section (from search_hansard).

    Returns:
        List of divisions with vote counts.
    

Inputs: debate_section_id (required). Returns: result

get_debate_speakersA

Get list of speakers in a debate | Hansard, debate speakers, who spoke | Use to see who participated in a specific debate. Returns list of members who spoke in the debate.

    Args:
        debate_section_id: External ID of debate section (from search_hansard).

    Returns:
        List of speakers in the debate.
    

Inputs: debate_section_id (required). Returns: result

get_departmentsA

Get list of all government departments. Use when you need to know the structure of government or which department handles specific policy areas. See also: get_answering_bodies, get_government_posts.

    Args:
        name_contains: Filter by partial name match. Example: 'Treasury', 'Health'.

    Returns:
        List of all government departments.
    

Inputs: name_contains. Returns: result

get_deposited_paperA

Get a deposited paper by id | deposited paper details, notes, attached documents, corporate authors | Use after search_deposited_papers to read one paper in full | Returns the paper with notes, attached document names, dates, authors and departments. See also: search_deposited_papers.

    Args:
        paper_id: Deposited paper id (paperId from search_deposited_papers).

    Returns:
        The deposited paper's full details.
    

Inputs: paper_id (required). Returns: result

get_division_detailsA

Get full division details including how each member voted | Hansard, division, voting records | Use to see individual voting records for a specific division. Returns division with debate title, counts, and member voting records.

    Args:
        division_id: External ID of division (from get_debate_divisions).
        is_evel: Filter to EVEL (English Votes for English Laws) voters only.

    Returns:
        Division details with member voting records.
    

Inputs: division_id (required), is_evel. Returns: result

get_early_day_motionB

Get EDM details | early day motion, signatures, sponsors, full text | Get full text and signature details for an Early Day Motion | Returns EDM text, primary sponsor, supporters, signature count

    Args:
        edm_id: The EDM ID number.

    Returns:
        Full EDM details including text, sponsors, and signature count.
    

Inputs: edm_id (required). Returns: result

get_election_results_for_constituencyA

Get historical election results for a specific constituency. Use when researching constituency voting patterns, election history, or past electoral outcomes for a particular area. See also: get_constituency_latest_election, get_member_latest_election_result.

    Args:
        constituency_id: Unique constituency ID number.

    Returns:
        Historical election results for the constituency.
    

Inputs: constituency_id (required). Returns: result

get_erskine_may_chapterB

Get a specific chapter of Erskine May | procedure sections, chapter content | Use to explore sections within a chapter | Returns chapter with title, description, and list of sections.

    Args:
        chapter_number: Chapter number.

    Returns:
        Chapter details with section list.
    

Inputs: chapter_number (required). Returns: result

get_erskine_may_index_termA

Get details of an index term | procedure topic, references | Use after browsing index to get term details | Returns index term with all paragraph references.

    Args:
        index_term_id: Index term ID (from browse_erskine_may_index).

    Returns:
        Index term with paragraph references.
    

Inputs: index_term_id (required). Returns: result

get_erskine_may_paragraphA

Look up a specific paragraph by reference number | paragraph citation, specific rule | Use when you have a paragraph reference like '4.5' | Returns the specific paragraph content.

    Args:
        reference: Paragraph reference (e.g. '4.5', '12.3').

    Returns:
        Paragraph content for the reference.
    

Inputs: reference (required). Returns: result

get_erskine_may_partA

Get a specific part of Erskine May | procedure structure, chapters | Use to explore chapters within a part | Returns part with title, description, and list of chapters.

    Args:
        part_number: Part number (1-6).

    Returns:
        Part details with chapter list.
    

Inputs: part_number (required). Returns: result

get_erskine_may_partsA

List all parts of Erskine May | procedure structure, table of contents | Use to navigate the 6 major parts of parliamentary procedure | Returns list of all parts with titles and descriptions.

    Returns:
        List of all 6 parts of Erskine May with titles.
    

Inputs: no named parameters. Returns: result

get_erskine_may_sectionB

Get full content of an Erskine May section | procedure text, rules, precedents | Use to read the actual procedural content | Returns section with full text content and footnotes.

    Args:
        section_id: Section ID (from chapter or navigation).

    Returns:
        Section with full text content.
    

Inputs: section_id (required). Returns: result

get_erskine_may_section_relativeB

Navigate to a section relative to current position | procedure navigation, next section, previous section | Use to move through sections sequentially | Returns section at offset from current section.

    Args:
        section_id: Current section ID.
        step: Step offset (e.g. 1 for next, -1 for previous).

    Returns:
        Section at the relative position.
    

Inputs: step (required), section_id (required). Returns: result

get_event_activitiesC

Get activities scheduled for an event | meeting agenda, event schedule | Use to see what's on the agenda for a committee meeting. Returns activities planned for the event.

    Args:
        event_id: Event ID.

    Returns:
        Activities scheduled for the event.
    

Inputs: event_id (required). Returns: result

get_event_attendanceC

Get attendance record for an event | who attended, meeting attendance | Use to see which members attended a committee meeting. Returns attendance list for the event.

    Args:
        event_id: Event ID.

    Returns:
        Attendance record for the event.
    

Inputs: event_id (required). Returns: result

get_event_by_idA

Get detailed information about a specific committee event by ID. Use when you need complete event details including activities, attendees, committees involved, and related business.

    Args:
        event_id: Unique event ID number.
        show_on_website_only: Show only events visible on website.

    Returns:
        Detailed information about the event.
    

Inputs: event_id (required), show_on_website_only. Returns: result

get_eventsA

Search for committee events with flexible filtering options. Use when you need to find meetings, hearings, or other committee activities by date, location, or committee. Supports filtering by start/end dates, house, event type, and location.

    Args:
        committee_id: Optional: filter by specific committee ID.
        committee_business_id: Optional: filter by committee business ID.
        search_term: Optional: search term for event titles or content.
        start_date_from: Optional: start date from in YYYY-MM-DD format.
        start_date_to: Optional: start date to in YYYY-MM-DD format.
        end_date_from: Optional: end date from in YYYY-MM-DD format.
        location_id: Optional: location ID to filter events.
        exclude_cancelled_events: Optional: exclude cancelled events.
        sort_ascending: Optional: sort ascending by date.
        event_type_id: Optional: filter by event type ID.
        include_event_attendees: Include event attendees in response.
        show_on_website_only: Show only events visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Committee events matching the criteria.
    

Inputs: skip, take, location_id, search_term, +10 more. Returns: result

get_event_type_metadataB

Get event type metadata | event types, calendar metadata, event classification | Retrieve metadata about parliamentary event types with optional filtering | Returns event type metadata

    Args:
        house: Optional house filter: 'Commons' or 'Lords' (1 or 2 also accepted).
        event_type_id: Optional event type ID to filter by.
        start_date: Optional start date filter (YYYY-MM-DD).
        end_date: Optional end date filter (YYYY-MM-DD).
        category_id: Optional category ID to filter by.
        search_term: Optional search term to filter events.

    Returns:
        Event type metadata matching the filter criteria.
    

Inputs: house, end_date, start_date, category_id, +2 more. Returns: result

get_government_postsA

Get government posts | ministers, cabinet, government positions, Home Secretary, Chancellor | List all current government ministerial positions with their holders | Returns list of posts with member details See also: get_opposition_posts, get_spokespersons, get_departments.

    Returns:
        List of government ministerial positions with current holders.
    

Inputs: no named parameters. Returns: result

get_hansard_calendarA

Get all sitting dates for a month | Hansard, calendar, sitting days | Use to discover which days have Hansard records available. Returns list of sitting dates with Hansard available.

    Args:
        year: Year (e.g. 2024).
        month: Month number (1-12).
        house: House: 1 or 'Commons', 2 or 'Lords'.

    Returns:
        List of sitting dates for the month.
    

Inputs: year (required), house (required), month (required). Returns: result

get_hansard_currently_processingA

Get Hansard content currently being processed | Hansard, processing status, live updates | Use to check what Hansard content is currently being transcribed or indexed | Returns list of items currently being processed

    Returns:
        Items currently being processed by the Hansard system.
    

Inputs: no named parameters. Returns: result

get_hansard_first_yearA

Get the earliest year Hansard records are available | Hansard, first year, earliest record | Use to determine the historical range of available Hansard data | Returns the first year with Hansard records

    Returns:
        The first year with available Hansard records.
    

Inputs: no named parameters. Returns: result

get_hansard_last_sitting_dateB

Get the most recent sitting date with Hansard | Hansard, latest, most recent | Use to find the most recent day Parliament sat. Returns the last sitting date.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).

    Returns:
        Most recent sitting date.
    

Inputs: house (required). Returns: result

get_hansard_linked_datesA

Get previous and next sitting dates | Hansard, navigation, sitting dates | Use to navigate between sitting days. Returns previous and next sitting dates relative to given date.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        date: Date in YYYY-MM-DD format.

    Returns:
        Previous and next sitting dates.
    

Inputs: date (required), house (required). Returns: result

get_hansard_pdfs_for_dayA

Get PDF documents for a specific sitting day | Hansard, PDFs, daily documents | Use to retrieve official PDF transcripts for a parliamentary sitting day | Returns list of PDF links for that day

    Args:
        date: Date in YYYY-MM-DD format.
        house: House: 1 or 'Commons', 2 or 'Lords'.

    Returns:
        List of PDF documents available for that sitting day.
    

Inputs: date (required), house (required). Returns: result

get_hansard_section_treesA

Get hierarchical structure of debates for a day | Hansard, debate hierarchy, structure | Use to see the tree structure of all debates on a sitting day. Returns hierarchical tree of debate sections.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        date: Date in YYYY-MM-DD format.
        section: Section name (e.g. 'Debate', 'WestHall', 'Petitions', 'GEN'). Get valid names from get_hansard_sitting_day.

    Returns:
        Hierarchical structure of debates.
    

Inputs: date (required), house (required), section (required). Returns: result

get_hansard_sitting_dayA

Get full agenda/sections for a sitting day | Hansard, daily business, agenda | Use to see all debates and business for a specific day. Returns all debate sections for that day. See also: get_hansard_section_trees, get_hansard_calendar.

    Args:
        sitting_date: Date in YYYY-MM-DD format.
        house: House: 1 or 'Commons', 2 or 'Lords'.

    Returns:
        All debate sections for that day.
    

Inputs: house (required), sitting_date (required). Returns: result

get_hansard_speakers_for_dayB

Get list of speakers for a specific sitting day section | Hansard, speakers, daily list | Use to find who spoke in a particular section of parliamentary business on a given day | Returns list of speakers for that section

    Args:
        date: Date in YYYY-MM-DD format.
        house: House: 1 or 'Commons', 2 or 'Lords'.
        section: Section name (e.g. 'Debate', 'WestHall', 'Petitions', 'GEN').

    Returns:
        List of speakers for the specified day and section.
    

Inputs: date (required), house (required), section (required). Returns: result

get_hansard_timeline_statsB

Get Hansard timeline statistics | Hansard, statistics, timeline, contribution counts | Use to get aggregate stats showing contribution activity over time | Returns timeline statistics for the given search parameters

    Args:
        contribution_type: Type of contribution to filter by (optional).
        is_debates_search: Whether to search debates only (optional).
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term (optional).
        member_id: Member ID to filter by (optional).

    Returns:
        Timeline statistics for contributions matching the criteria.
    

Inputs: house, end_date, member_id, start_date, +3 more. Returns: result

get_historic_sitting_dayB

Get details of a historic sitting day | historical Hansard, past session details | Use to get details of a specific historic sitting day | Returns sitting day details with sections

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        sitting_date: Date in YYYY-MM-DD format.

    Returns:
        Details of the historic sitting day.
    

Inputs: house (required), sitting_date (required). Returns: result

get_interest_by_idB

Get a specific registered interest by ID | register of interests, financial interest, declaration | Use to retrieve a specific interest declaration by its ID | Returns interest details

    Args:
        interest_id: Interest record ID.

    Returns:
        Details of the specified interest declaration.
    

Inputs: interest_id (required). Returns: result

get_interest_categoryC

Get a specific interest category by ID | register of interests, interest category, declaration type | Use to get details of a specific interest category | Returns category details

    Args:
        category_id: Interest category ID.

    Returns:
        Details of the specified interest category.
    

Inputs: category_id (required). Returns: result

get_last_sitting_dateA

Get last sitting date | previous sitting, last sat, before recess | Get the last sitting date prior to a specified date | Returns last sitting date

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        date_to_check: Find last sitting date before this date (YYYY-MM-DD).
        include_weekend_sittings: Whether to include weekend sittings (default: false).

    Returns:
        Last sitting date prior to the specified date.
    

Inputs: house (required), date_to_check (required), include_weekend_sittings. Returns: result

get_laying_bodiesB

List SI laying bodies | laying body, department, government organisation, JCSI | Get all bodies that can lay statutory instruments before Parliament | Returns list of laying bodies with IDs and names

    Returns:
        List of all laying bodies with IDs and names.
    

Inputs: no named parameters. Returns: result

get_lords_business_documentA

Get a Lords business document for a day | download business paper, document by id | Use after get_lords_business_documents_for_date to fetch one document | Returns the document for the DocumentForDayId. See also: get_lords_business_documents_for_date.

    Args:
        document_day_id: DocumentForDayId from get_lords_business_documents_for_date.

    Returns:
        The document record. For a PDF this is a descriptor (binary, contentType, sizeBytes, downloadUrl); fetch downloadUrl to get the file.
    

Inputs: document_day_id (required). Returns: result

get_lords_business_documents_for_dateA

List Lords business documents for a day | order paper PDF, HL business papers, daily documents | Use to find the published documents for a Lords sitting day | Returns document filenames, type ids and DocumentForDayId values. See also: get_lords_business_document.

    Args:
        day_date: Date to list documents for (YYYY-MM-DD).

    Returns:
        Documents published for the day.
    

Inputs: day_date (required). Returns: result

get_lords_business_section_dataA

Get the content of a Lords business paper section | order paper items, Lords agenda, items of business, motions, bills | Use to read what the House of Lords is scheduled to consider on a day | Returns the section's items of business for the date. See also: get_lords_business_sections_for_date, get_lords_item_of_business_summary.

    Args:
        business_paper_date: Business paper date (YYYY-MM-DD).
        section_id: Section id from get_lords_business_sections or get_lords_business_sections_for_date.

    Returns:
        Items of business for the section and date.
    

Inputs: section_id, business_paper_date. Returns: result

get_lords_business_sectionsA

List Lords business paper sections | order paper, future business, minutes, section types | Use to find section_id values for get_lords_business_section_data | Returns every section of the Lords business paper with id, name and display order. See also: get_lords_business_sections_for_date, get_lords_business_section_data.

    Returns:
        All Lords business sections with SectionId, Name and DisplayOrder.
    

Inputs: no named parameters. Returns: result

get_lords_business_sections_for_dateA

List the Lords business sections published for a date | business paper contents, what is on the Lords order paper that day | Use to see which sections of the Lords business paper exist for a sitting day | Returns a list of section ids. See also: get_lords_business_sections, get_lords_business_section_data.

    Args:
        business_paper_date: Business paper date (YYYY-MM-DD).

    Returns:
        List of SectionId values published for the date.
    

Inputs: business_paper_date (required). Returns: result

get_lords_by_typeA

Get Lords by peerage type | hereditary, life peers, bishops, crossbench | Breakdown of Lords by type of peerage | Returns counts by peerage type

    Args:
        for_date: Date for the composition (YYYY-MM-DD). Use today's date for current.

    Returns:
        Counts of Lords by peerage type.
    

Inputs: for_date (required). Returns: result

get_lords_division_by_idA

Get one House of Lords division by ID | Lords vote details, division list, tellers | Use when you need complete details of a particular vote | Returns who voted content/not content, tellers and vote totals.

    Args:
        division_id: Unique Lords division ID number.
    

Inputs: division_id (required). Returns: result

get_lords_divisions_grouped_by_partyA

Get House of Lords divisions grouped by party | party-line voting, how parties voted, rebellions | Use when analyzing how different parties voted on issues | Returns vote counts by party rather than individual members.

    Args:
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        member_id: Optional: only divisions this member voted in.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
    

Inputs: end_date, member_id, start_date, search_term, +2 more. Returns: result

get_lords_divisions_search_countA

Count House of Lords divisions matching search criteria | number of votes, how many divisions | Use to size a search before fetching results with search_lords_divisions | Returns the total count.

    Args:
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        member_id: Optional: only divisions this member voted in.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
    

Inputs: end_date, member_id, start_date, search_term, +2 more. Returns: result

get_lords_interests_registerA

Search the Lords register of interests | Lords interests, peer interests, Lords declarations, register | Use when investigating Lords' declared interests, financial interests, or outside roles | Returns registered interests matching the search criteria

    Args:
        search_term: Optional search term to filter interests.
        page: Optional page number for pagination (default 0, 20 per page).
        include_deleted: Optional flag to include deleted interests (default False).

    Returns:
        Registered interests matching the search criteria.
    

Inputs: page, search_term, include_deleted. Returns: result

get_lords_interests_staffA

Search staff interests declared by Lords | Lords staff, staff conflicts, staff interests | Use to investigate potential conflicts of interest related to Lords' staff | Returns staff interests matching the search term

    Args:
        search_term: Search term for staff names or interests.

    Returns:
        Staff interests declared by Lords matching the search term.
    

Inputs: search_term (required). Returns: result

get_lords_item_of_business_summaryA

Get a summary of one Lords item of business | business item, motion, bill, statutory instrument, written question | Use to drill into a single item found in a Lords business paper section | Returns the item's summary details. See also: get_lords_business_section_data.

    Args:
        item_of_business_id: Id of the item of business.
        business_paper_date: Date the item was published in the business paper (YYYY-MM-DD).

    Returns:
        Summary of the item of business.
    

Inputs: business_paper_date (required), item_of_business_id (required). Returns: result

get_lords_journal_attachmentB

Get a Lords Journal attachment | Journal attachment, appendix document | Use to fetch an attachment referenced from the Journal | Returns the attachment record. See also: get_lords_journal_sittings.

    Args:
        attachment_id: Journal attachment id.

    Returns:
        The Journal attachment.
    

Inputs: attachment_id (required). Returns: result

get_lords_journal_content_datesA

List dates that have Lords Journal data | Journal sitting dates, minutes of proceedings dates | Use to find which sitting dates have Journal content before calling get_lords_journal_sittings | Returns dates with Journal data. See also: get_lords_journal_sittings.

    Args:
        start_date: Start of the date range (YYYY-MM-DD).
        end_date: End of the date range (YYYY-MM-DD).

    Returns:
        Dates for which Journal data exists.
    

Inputs: end_date, start_date. Returns: result

get_lords_journal_general_indexA

Get the general index of a Lords Journal volume | Journal subject index, topics, bills, alphabetical | Use to look up subjects and references in a Journal volume (large response, filter with starting_with) | Returns index items. See also: get_lords_journal_membership_index, get_lords_journal_index_items.

    Args:
        volume_id: Journal volume id.
        starting_with: Only return index items starting with this letter or text.

    Returns:
        General index items for the volume.
    

Inputs: volume_id (required), starting_with. Returns: result

get_lords_journal_index_itemsB

Get a Lords Journal index item | Journal index entry, references, sub-items | Use to expand one index item found in a general index | Returns the index item and its references. See also: get_lords_journal_general_index.

    Args:
        index_item_guid: GUID of the Journal index item.
        journal_volume_id: Journal volume id the item belongs to.

    Returns:
        The index item with its references.
    

Inputs: index_item_guid (required), journal_volume_id (required). Returns: result

get_lords_journal_membership_indexA

Get the membership index of a Lords Journal volume | Journal members index, peers, attendance by name | Use to find where a Lord appears in a Journal volume | Returns membership index items. See also: get_lords_journal_general_index.

    Args:
        volume_id: Journal volume id.
        starting_with: Only return index items starting with this letter or text.

    Returns:
        Membership index items for the volume.
    

Inputs: volume_id (required), starting_with. Returns: result

get_lords_journal_sittingsA

Get Lords Journal content for a sitting date | minutes of proceedings, attendance, papers laid, appendix, divisions | Use to read what the Journal records for a Lords sitting | Returns sittings with the requested content. See also: get_lords_journal_content_dates.

    Args:
        sitting_date: Sitting date (YYYY-MM-DD).
        content_type: One of Attendance, MinutesOfProceedings, Papers, Appendix, Divisions.

    Returns:
        Journal sittings for the date and content type.
    

Inputs: content_type (required), sitting_date (required). Returns: result

get_lords_journal_volumeB

Get a Lords Journal volume | Journal volume details, session | Use to read one Journal volume's details | Returns the volume record. See also: get_lords_journal_volumes, get_lords_journal_general_index.

    Args:
        volume_id: Journal volume id.

    Returns:
        Journal volume details.
    

Inputs: volume_id (required). Returns: result

get_lords_journal_volumesA

List Lords Journal volumes | Journal of the House of Lords, session volumes, minutes archive | Use to browse the Journal by session and find volume ids | Returns volumes with id, name, publication status and PDF link. See also: get_lords_journal_volume.

    Args:
        skip: Number of volumes to skip.
        take: Number of volumes to return.

    Returns:
        List of Journal volumes.
    

Inputs: skip, take. Returns: result

get_lords_legacy_businessA

List legacy Lords business documents for a date | historic business papers, old order papers | Use for older Lords business papers from before the current system | Returns legacy business documents for the date. See also: get_lords_business_documents_for_date.

    Args:
        day_date: Date to list legacy documents for (YYYY-MM-DD).

    Returns:
        Legacy business documents for the date.
    

Inputs: day_date (required). Returns: result

get_lords_next_prev_business_daysA

Get the next and previous Lords days with business | next sitting day, previous sitting day, business papers | Use to step between Lords days that have published business | Returns the previous and next business dates. See also: get_lords_non_sitting_days, get_next_sitting_date.

    Args:
        initial_date: Date to search from (YYYY-MM-DD).

    Returns:
        PreviousBusinessDay and FutureBusinessDay.
    

Inputs: initial_date (required). Returns: result

get_lords_non_sitting_daysA

List Lords non-sitting days in a month | recess, days the Lords does not sit, no business | Use to check whether the Lords sits on a given day or in a given month | Returns the non-sitting dates (MM-DD-YYYY). See also: get_lords_next_prev_business_days, get_non_sitting_days.

    Args:
        month: Month number (1-12).
        year: Year (e.g. 2025).
        data_source: 'Calendar' (default) or 'PublishedBusiness' to return days with no published business instead.

    Returns:
        List of non-sitting days in the month.
    

Inputs: year (required), month (required), data_source. Returns: result

get_lords_voting_record_for_memberA

Get the voting record of a Lord in House of Lords divisions | Lord votes, voting history, voting pattern | Use when analyzing how a specific Lord votes or their stance on issues through their voting history | Returns the divisions the member voted in, newest first. See also: get_member_voting, compare_member_votes.

    Args:
        member_id: Parliament member ID.
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 25, max 100).
    

Inputs: member_id (required), skip, take, end_date, +4 more. Returns: result

get_lords_written_questionA

Get a single House of Lords written question | Lords question by id, HL question and answer | Use after search_lords_written_questions to read one question | Returns the question and its answer. See also: search_lords_written_questions, get_written_question.

    Args:
        question_id: Question id from search_lords_written_questions.

    Returns:
        The Lords written question.
    

Inputs: question_id (required). Returns: result

get_member_billsA

Get the bills a member has sponsored | bills introduced by MP, Private Members' Bills, sponsored legislation, member's bills | Use when asked which bills an MP or Lord has introduced or sponsored | Returns the member and their sponsored bills with current stage, most recently updated first. Combines: get_member_by_id, search_bills (member filter). See also: get_bill_overview, get_bill_committees.

    Args:
        member_id: Parliament member ID. Get from get_member_by_name. Example: 4514
        take: Number of bills to return (default 20).

    Returns:
        Member summary, total sponsored bills and bill summaries.
    

Inputs: member_id (required), take. Returns: result

get_member_by_idA

Get comprehensive member profile by ID with full parliamentary details | member details, MP profile, member information, parliamentary roles, constituency data | Use when you have a member ID and need complete biographical, political, and contact information | Returns detailed member data including roles, constituency, party, and career information See also: get_mp_profile, get_members_biography, get_member_synopsis.

    Args:
        member_id: Parliament member ID. Required: get from member search first. Example: 1423

    Returns:
        Detailed member data including roles, constituency, party, and career information.
    

Inputs: member_id (required). Returns: result

get_member_by_nameA

Search for MPs and Lords by name with comprehensive member details | find MP, search politician, lookup member, who is, member search, parliamentary representative | Use for identifying members, checking spellings, finding member IDs, or getting basic member information | Returns member profiles with names, parties, constituencies, and current status See also: get_mp_profile, search_members, search_historical_members.

    Args:
        name: Full or partial name to search for. Examples: 'Boris Johnson', 'Keir Starmer', 'Smith'. Searches current and former members.

    Returns:
        Member profiles with names, parties, constituencies, and current status.
    

Inputs: name (required). Returns: result

get_member_committee_membershipsA

Get committee memberships for one or more members | member committees, MP committees | Use to find which committees a member serves on. Returns committee memberships for the specified members. See also: get_committee_members.

    Args:
        member_ids: Comma-separated list of member IDs (e.g. '4514' or '4514,172').
        membership_status: Optional: filter by status (e.g. 'Current', 'Former').
        committee_category: Optional: filter by committee category.

    Returns:
        Committee memberships for the members.
    

Inputs: member_ids (required), membership_status, committee_category. Returns: result

get_member_contribution_summaryB

Get summary of a member's Hansard contributions | Hansard, speaking record, member activity | Use to see an overview of how often and when a member has spoken. Returns summary of member's parliamentary contributions.

    Args:
        member_id: Parliament member ID.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Summary of member's speaking record.
    

Inputs: member_id (required), skip, take. Returns: result

get_member_experienceA

Get professional experience and career background of a member by ID. Use when researching a member's qualifications, previous employment, education, or professional history before entering Parliament.

    Args:
        member_id: Parliament member ID to get professional experience for.

    Returns:
        Professional experience and career background of the member.
    

Inputs: member_id (required). Returns: result

get_member_focusA

Get areas of focus and policy interests of a member by ID. Use when understanding what issues and policy areas a member prioritizes or specializes in.

    Args:
        member_id: Parliament member ID to get policy focus areas for.

    Returns:
        Areas of focus and policy interests of the member.
    

Inputs: member_id (required). Returns: result

get_member_hansard_contributionsA

Get all speeches by a specific MP/Lord in a debate | Hansard, member speeches | Use to extract just one member's contributions from a debate. Returns all contributions by that member in the specified debate.

    Args:
        member_id: Parliament member ID (from members API).
        debate_section_id: External ID of debate section (from search_hansard).

    Returns:
        All contributions by that member in the debate.
    

Inputs: member_id (required), debate_section_id (required). Returns: result

get_member_latest_election_resultA

Get the latest election result for a member by ID. Use when researching how a member was elected, their constituency performance, vote share, or election margin. See also: get_election_results_for_constituency.

    Args:
        member_id: Parliament member ID to get latest election result for.

    Returns:
        Latest election result for the member.
    

Inputs: member_id (required). Returns: result

get_member_portrait_urlA

Get the portrait image URL for a member by ID. Use when you need a link to a member's official parliamentary portrait photograph.

    Args:
        member_id: Parliament member ID to get portrait URL for.

    Returns:
        Portrait image URL for the member.
    

Inputs: member_id (required). Returns: result

get_member_registered_interestsA

Get registered interests of a member by ID and house. Use when investigating potential conflicts of interest, financial interests, or external roles. Shows declared interests like directorships, consultancies, and gifts. See also: search_roi, get_lords_interests_register.

    Args:
        member_id: Parliament member ID to get registered interests for.
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.

    Returns:
        Registered interests of the member.
    

Inputs: member_id (required), house. Returns: result

get_members_biographyA

Get comprehensive member biography and personal history | MP background, life story, career details, education, personal info, political experience | Use for researching member backgrounds, writing profiles, understanding political journey | Returns detailed biographical data including education, career timeline, and political milestones See also: get_mp_profile, get_member_experience.

    Args:
        member_id: Parliament member ID. Required: get from member search first. Returns comprehensive biographical information.

    Returns:
        Detailed biographical data including education, career timeline, and political milestones.
    

Inputs: member_id (required). Returns: result

get_members_contactA

Get member contact details and office information | MP contact, phone number, email, office address, constituency office | Use for contacting members, finding office locations, or getting official contact details | Returns phone numbers, addresses, and official contact information

    Args:
        member_id: Parliament member ID. Required: get from member search first. Returns official contact details.

    Returns:
        Phone numbers, addresses, and official contact information.
    

Inputs: member_id (required). Returns: result

get_members_historyA

Get historical information for multiple members by their IDs. Returns name history, party affiliations, and membership details over time. Use when researching how members' details have changed throughout their careers.

    Args:
        member_ids: List of Parliament member IDs to get history for.

    Returns:
        Historical information for the specified members.
    

Inputs: member_ids (required). Returns: result

get_member_staffA

Get staff members working for a specific MP or Lord by member ID. Use when researching parliamentary office staff, researchers, or support personnel.

    Args:
        member_id: Parliament member ID to get staff details for.

    Returns:
        Staff members working for the member.
    

Inputs: member_id (required). Returns: result

get_member_synopsisB

Get a brief synopsis or summary about a member by ID. Use when you need a concise overview of a member's background, role, or key information.

    Args:
        member_id: Parliament member ID to get synopsis for.

    Returns:
        Brief synopsis or summary about the member.
    

Inputs: member_id (required). Returns: result

get_member_thumbnail_urlA

Get the thumbnail image URL for a member by ID. Use when you need a link to a smaller version of a member's parliamentary photograph for lists or compact displays.

    Args:
        member_id: Parliament member ID to get thumbnail URL for.

    Returns:
        Thumbnail image URL for the member.
    

Inputs: member_id (required). Returns: result

get_member_votingA

Get voting records of a member by ID for a specific house. Use when analyzing how a member votes, their voting patterns, or their stance on particular issues through their voting history. See also: check_mp_vote, get_commons_voting_record_for_member, get_lords_voting_record_for_member.

    Args:
        member_id: Parliament member ID to get voting record for.
        house: House: 1 or 'Commons', 2 or 'Lords'.
        page: Optional page number, 20 votes per page. Page 1 (the default) is the most recent; the API's "skip" field reads 20 on page 1, which is a quirk, not an offset.

    Returns:
        Voting records of the member, newest first.
    

Inputs: house (required), member_id (required), page. Returns: result

get_member_written_questionsA

Get written questions submitted by a member by ID. Use when researching what questions a member has asked of government departments or their areas of parliamentary inquiry. See also: search_written_questions.

    Args:
        member_id: Parliament member ID to get written questions for.
        page: Optional: page number for pagination.

    Returns:
        Written questions submitted by the member.
    

Inputs: member_id (required), page. Returns: result

get_mp_profileA

Get comprehensive MP/Lord profile in one call - combines member details, biography, interests, and voting summary | complete MP info, full member profile, MP background, politician details, comprehensive member data | Use when you need a complete picture of an MP or Lord without multiple tool calls | Returns combined data: basic info, biography, registered interests, and recent voting activity. Combines: get_member_by_id, get_members_biography, search_roi, get_member_voting. See also: get_my_mp (by postcode), get_member_by_name (to find the member ID).

    Args:
        member_id: Parliament member ID. Get from member search first. Example: 4514

    Returns:
        Combined profile with basic info, biography, interests, and voting summary.
    

Inputs: member_id (required). Returns: result

get_my_mpA

Find your MP by postcode and get their full profile - combines postcode lookup, biography, interests, election result, and voting | who is my MP, postcode lookup, constituency MP, local representative | Use when someone wants to find their MP from a postcode | Returns MP profile with constituency, biography, interests, election results, and recent votes (and how they voted on a topic, if given). Combines: search_members (location), get_members_biography, search_roi, get_member_latest_election_result, get_member_voting, get_commons_voting_record_for_member. See also: get_mp_profile, check_mp_vote.

    Args:
        postcode: UK postcode to look up (e.g., 'SW1A 1AA', 'N1 9GU').
        topic: Optional topic keyword to filter votes (e.g., 'climate', 'NHS').

    Returns:
        Combined MP profile with constituency, biography, interests, election result, and voting data.
    

Inputs: postcode (required), topic. Returns: result

get_next_sitting_dateA

Get next sitting | parliament returns, next sitting day, when back | Get the next sitting date after a specified date | Returns next sitting date

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        date_to_check: Date to find next sitting after (YYYY-MM-DD). Use today's date to find when Parliament next sits.

    Returns:
        Next sitting date for the specified house.
    

Inputs: house (required), date_to_check (required). Returns: result

get_non_sitting_daysA

Get periods when Parliament is not sitting (recesses, holidays). Use when you need to know when Parliament is on break, recess periods, or when no parliamentary business is scheduled. See also: get_sitting_dates.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        start_date: Start date in YYYY-MM-DD format.
        end_date: End date in YYYY-MM-DD format.

    Returns:
        Non-sitting days in the date range.
    

Inputs: house (required), end_date (required), start_date (required). Returns: result

get_opposition_postsA

Get opposition posts | shadow cabinet, shadow ministers, opposition frontbench | List all current opposition frontbench positions with their holders | Returns list of posts with member details See also: get_government_posts, get_spokespersons.

    Returns:
        List of opposition frontbench positions with current holders.
    

Inputs: no named parameters. Returns: result

get_oral_evidenceA

Search for oral evidence sessions from committee hearings. Use when researching witness testimonies, committee hearings, or transcripts from evidence sessions. Can filter by committee, business, witness names, or meeting dates. See also: get_oral_evidence_by_id, get_written_evidence.

    Args:
        committee_business_id: Optional: committee business ID to filter by.
        committee_id: Optional: committee ID to filter by.
        search_term: Optional: search term for evidence content or witness names.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        show_on_website_only: Show only evidence visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Oral evidence sessions matching the criteria.
    

Inputs: skip, take, end_date, start_date, +4 more. Returns: result

get_oral_evidence_by_idC

Get detailed oral evidence by ID | witness testimony details | Use to get full details of a specific oral evidence session. Returns complete oral evidence record.

    Args:
        evidence_id: Oral evidence ID.
        show_on_website_only: Show only evidence visible on website.

    Returns:
        Detailed oral evidence record.
    

Inputs: evidence_id (required), show_on_website_only. Returns: result

get_parliamentary_diaryA

Get parliamentary diary | diary, schedule, events, business programme | Retrieve the parliamentary diary with upcoming business and events | Returns diary events

    Args:
        house: Optional house filter: 'Commons' or 'Lords' (1 or 2 also accepted).
        start_date: Optional start date filter (YYYY-MM-DD). Defaults to today when no date filter is given.
        end_date: Optional end date filter (YYYY-MM-DD).
        date: Optional specific date filter (YYYY-MM-DD).
        category_id: Optional category ID to filter by.
        search_term: Optional search term to filter events.

    Returns:
        Parliamentary diary events matching the filter criteria.
    

Inputs: date, house, end_date, start_date, +2 more. Returns: result

get_ping_pong_item_by_idB

Get detailed information about a specific ping pong item (amendment or motion). Use when you need complete details about final stage amendments or motions in the legislative process.

    Args:
        bill_id: Bill ID.
        bill_stage_id: Bill stage ID.
        ping_pong_item_id: Ping pong item ID to get details for.

    Returns:
        Detailed information about the ping pong item.
    

Inputs: bill_id (required), bill_stage_id (required), ping_pong_item_id (required). Returns: result

get_policy_interestsA

Get policy interest reference data | policy areas, member interests categories | Use to get IDs for filtering member searches by policy interest | Returns list of policy interest categories

    Returns:
        List of policy interest categories with IDs for use in member searches.
    

Inputs: no named parameters. Returns: result

get_private_bills_rssB

Get RSS feed of private bills only. Use when you want to monitor private member bills and private bills through RSS feeds.

    Returns:
        RSS feed of private bills.
    

Inputs: no named parameters. Returns: result

get_publication_by_idA

Get detailed information about a specific committee publication by ID. Use when you need complete publication details including documents, HC numbers, government responses, and associated committee business.

    Args:
        publication_id: Unique publication ID number.
        show_on_website_only: Show only publications visible on website.

    Returns:
        Detailed information about the publication.
    

Inputs: publication_id (required), show_on_website_only. Returns: result

get_publication_documentB

Get information about a specific publication document. Use when you need metadata about bill documents including filename, content type, and size.

    Args:
        publication_id: Publication ID.
        document_id: Document ID to get details for.

    Returns:
        Metadata about the publication document.
    

Inputs: document_id (required), publication_id (required). Returns: result

get_publicationsA

Search for committee publications including reports, government responses, and other documents. Use when researching committee outputs, finding reports on specific topics, or tracking publication dates and paper numbers. See also: get_publication_by_id, get_committee_publications_summary.

    Args:
        search_term: Optional: search term for publication titles or content.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        committee_business_id: Optional: committee business ID to filter by.
        committee_id: Optional: committee ID to filter by.
        show_on_website_only: Show only publications visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Committee publications matching the criteria.
    

Inputs: skip, take, end_date, start_date, +4 more. Returns: result

get_publication_typesA

Get all publication types available for bills. Use when you need to understand the different types of documents that can be associated with legislation.

    Args:
        skip: Optional: number of records to skip (for pagination).
        take: Optional: number of records to return.

    Returns:
        All publication types with descriptions.
    

Inputs: skip, take. Returns: result

get_public_bills_rssA

Get RSS feed of public bills only. Use when you want to monitor government and public bills through RSS feeds, excluding private bills.

    Returns:
        RSS feed of public bills.
    

Inputs: no named parameters. Returns: result

get_recently_tabled_edmsA

Get recently tabled Early Day Motions - formal political statements | EDMs, political motions, backbench initiatives, MP opinions, parliamentary statements, political positions, cross-party support | Use for tracking political sentiment, finding MP stances on issues, monitoring backbench activity, or researching political movements | Returns recent EDMs with titles, sponsors, supporters, and tabling dates | Data freshness: updated daily See also: search_early_day_motions.

    Args:
        take: Number of EDMs to return. Default: 10, recommended max: 50. Recent motions returned first.

    Returns:
        Recent EDMs with titles, sponsors, supporters, and tabling dates.
    

Inputs: take. Returns: result

get_recently_updated_billsA

Get most recently updated bills and current legislative activity | recent bills, new legislation, latest laws, parliamentary bills, legislative updates, current proposals | Use for tracking new legislation, monitoring bill progress, or finding recently introduced/updated laws | Returns bill titles, stages, sponsors, dates, and current status | Data freshness: updated frequently See also: search_bills, get_bill_overview.

    Args:
        take: Number of bills to return. Default: 10, recommended max: 50. Higher numbers may slow response.

    Returns:
        Bill titles, stages, sponsors, dates, and current status.
    

Inputs: take. Returns: result

get_register_by_idC

Get a specific Register of Interests by ID | register of interests, published register, transparency | Use to retrieve a specific published interest register by its ID | Returns register details

    Args:
        register_id: Register ID.

    Returns:
        Details of the specified Register of Interests.
    

Inputs: register_id (required). Returns: result

get_registers_of_interestsA

Get list of published Registers of Interests. Use when you need to see all available interest registers or understand the transparency framework for parliamentary interests.

    Returns:
        List of published Registers of Interests.
    

Inputs: no named parameters. Returns: result

get_session_by_idC

Get parliamentary session by ID | session details, parliamentary term, session lookup | Retrieve details of a specific parliamentary session by its ID | Returns session details

    Args:
        session_id: The unique session ID.

    Returns:
        Details of the specified parliamentary session.
    

Inputs: session_id (required). Returns: result

get_session_for_dateB

Get parliamentary session for date | which session, session lookup by date | Find which parliamentary session a given date falls within | Returns session details

    Args:
        date: Date to find the session for (YYYY-MM-DD).

    Returns:
        Parliamentary session details for the specified date.
    

Inputs: date (required). Returns: result

get_sessionsB

Get list of parliamentary sessions. Use when you need to understand parliamentary terms, session dates, or the parliamentary calendar structure.

    Returns:
        List of parliamentary sessions.
    

Inputs: no named parameters. Returns: result

get_si_business_itemsB

Get SI business items | SI progress, scrutiny, debates, motions | Get business items (debates, motions) for an SI | Returns list of business items with dates and outcomes

    Args:
        instrument_id: The SI ID (alphanumeric string from search results).

    Returns:
        Business items for the SI with dates and outcomes.
    

Inputs: instrument_id (required). Returns: result

get_si_procedureB

Get SI procedure details | statutory instrument procedure, affirmative, negative | Get details of a specific SI procedure | Returns procedure details including workflow steps

    Args:
        procedure_id: The procedure ID (alphanumeric string from get_si_procedures).

    Returns:
        Procedure details including workflow steps.
    

Inputs: procedure_id (required). Returns: result

get_si_proceduresB

List SI procedures | statutory instrument procedure, affirmative, negative, made affirmative | Get all statutory instrument procedures | Returns list of SI procedures with IDs and names

    Returns:
        List of all SI procedures with IDs and names.
    

Inputs: no named parameters. Returns: result

get_si_timeline_business_itemsC

Get SI timeline business items | statutory instrument timeline, workflow, procedure steps | Get business items for an SI workflow timeline | Returns all business items in the SI procedure timeline

    Args:
        timeline_id: The timeline ID (alphanumeric string from SI details).

    Returns:
        All business items in the SI procedure timeline.
    

Inputs: timeline_id (required). Returns: result

get_sitting_datesA

Get sitting dates | recess, sitting days, parliamentary calendar, when sitting | Get sitting dates for a house within a date range | Returns list of sitting dates See also: get_non_sitting_days, get_next_sitting_date.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        start_date: Start date (YYYY-MM-DD).
        end_date: End date (YYYY-MM-DD).

    Returns:
        List of sitting dates for the specified house.
    

Inputs: house (required), end_date (required), start_date (required). Returns: result

get_sittingsA

Get parliamentary sittings with optional filtering by house and date range. Use when researching when Parliament was in session, finding specific sitting dates, or tracking parliamentary activity. See also: get_sitting_dates, get_hansard_calendar.

    Args:
        house: Optional: 'Commons' or 'Lords' (1 or 2 also accepted).
        date_from: Optional: start date in YYYY-MM-DD format.
        date_to: Optional: end date in YYYY-MM-DD format.
        skip: Optional: number of records to skip (for pagination).
        take: Optional: number of records to return.

    Returns:
        Parliamentary sittings matching the criteria.
    

Inputs: skip, take, house, date_to, +1 more. Returns: result

get_speaker_and_deputiesA

Get the Speaker of the Commons and Deputy Speakers for a date | Speaker, Deputy Speaker, House officers | Use when you need to know who was Speaker or a Deputy Speaker on a given date | Returns member details for the Speaker and Deputy Speakers

    Args:
        for_date: Date for which to return the Speaker and Deputy Speakers (YYYY-MM-DD).

    Returns:
        Member details for the Speaker and Deputy Speakers on the given date.
    

Inputs: for_date (required). Returns: result

get_speaker_eventsB

Get speaker events | speakers, order paper, business items, speakers list | Retrieve parliamentary events with speaker information | Returns speaker event details

    Args:
        house: Optional house filter: 'Commons' or 'Lords' (1 or 2 also accepted).
        start_date: Optional start date filter (YYYY-MM-DD).
        end_date: Optional end date filter (YYYY-MM-DD).
        date: Optional specific date filter (YYYY-MM-DD).
        category_id: Optional category ID to filter by.
        search_term: Optional search term to filter events.

    Returns:
        Parliamentary events with speaker information matching the filter criteria.
    

Inputs: date, house, end_date, start_date, +2 more. Returns: result

get_spokespersonsA

Get party spokespersons | shadow ministers, opposition frontbench, party speakers | Use to find who speaks for a party on specific policy areas | Returns spokespersons with their portfolios

    Args:
        party_id: Party ID (required). Get party IDs from parties_list_by_house.

    Returns:
        List of party spokespersons with their portfolios.
    

Inputs: party_id (required). Returns: result

get_state_of_partiesA

Get party seat counts | party breakdown, seats, composition, majority | Get number of seats held by each party in a house | Returns party names with seat counts See also: parties_list_by_house.

    Args:
        house: 1 for Commons, 2 for Lords.
        for_date: Date for the party composition (YYYY-MM-DD). Use today's date for current.

    Returns:
        Party names with seat counts for the specified house.
    

Inputs: house (required), for_date (required). Returns: result

get_statutory_instrumentB

Get SI details | statutory instrument, secondary legislation, regulations | Get full details of a specific Statutory Instrument | Returns SI details including laying info, procedure, status

    Args:
        instrument_id: The SI ID (alphanumeric string from search results).

    Returns:
        Full SI details including laying info, procedure, and status.
    

Inputs: instrument_id (required). Returns: result

get_submission_periodC

Get a submission period by ID | submission period, evidence call, inquiry window | Use to get details of a specific evidence submission period | Returns submission period details

    Args:
        submission_period_id: Submission period ID.

    Returns:
        Submission period details.
    

Inputs: submission_period_id (required). Returns: result

get_tabling_deadlineB

Get tabling deadline | table questions, submission deadline, EDM deadline | Get the valid tabling date for a specified date (Commons only) | Returns tabling deadline date

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        requested_date: Date to find tabling deadline for (YYYY-MM-DD).

    Returns:
        Tabling deadline date for the specified house.
    

Inputs: house (required), requested_date (required). Returns: result

get_top_level_debate_idA

Get the top-level debate ID for a debate section | Hansard, debate navigation, parent debate | Use to navigate to the parent debate from a sub-section. Returns the top-level debate ID.

    Args:
        debate_section_id: External ID of debate section.

    Returns:
        Top-level debate ID.
    

Inputs: debate_section_id (required). Returns: result

get_treatyA

Get treaty details | international agreement, treaty, diplomatic | Get full details of a specific treaty | Returns treaty details including status, dates, parties

    Args:
        treaty_id: The treaty ID (alphanumeric string from search results).

    Returns:
        Full treaty details including status, dates, and parties.
    

Inputs: treaty_id (required). Returns: result

get_treaty_business_itemsB

Get treaty scrutiny | treaty progress, CRaG, debates, parliamentary scrutiny | Get parliamentary business items for treaty scrutiny | Returns list of business items with dates

    Args:
        treaty_id: The treaty ID (alphanumeric string from search results).

    Returns:
        Business items for the treaty with dates.
    

Inputs: treaty_id (required). Returns: result

get_treaty_government_organisationsA

Get departments that lay treaties | treaty departments, laying bodies, Foreign Office | Use to get organisation IDs for filtering treaty searches | Returns list of government organisations with IDs

    Returns:
        List of government organisations that can lay treaties, with their IDs.
    

Inputs: no named parameters. Returns: result

get_treaty_series_membershipsA

Get treaty series types | treaty categories, Country series, EU series | Use to understand treaty classification categories | Returns list of treaty series types

    Returns:
        List of treaty series membership types (Country, EU, Miscellaneous).
    

Inputs: no named parameters. Returns: result

get_written_evidenceA

Search for written evidence submissions to committees. Use when researching stakeholder submissions, witness statements, or public input to committee inquiries. Can filter by committee, business, witness names, or publication dates. See also: get_written_evidence_by_id, get_oral_evidence.

    Args:
        committee_business_id: Optional: committee business ID to filter by.
        committee_id: Optional: committee ID to filter by.
        search_term: Optional: search term for evidence content or witness names.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        show_on_website_only: Show only evidence visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Written evidence submissions matching the criteria.
    

Inputs: skip, take, end_date, start_date, +4 more. Returns: result

get_written_evidence_by_idB

Get detailed written evidence by ID | written submission details | Use to get full details of a specific written evidence submission. Returns complete written evidence record.

    Args:
        evidence_id: Written evidence ID.
        show_on_website_only: Show only evidence visible on website.

    Returns:
        Detailed written evidence record.
    

Inputs: evidence_id (required), show_on_website_only. Returns: result

get_written_questionA

Get a specific written question by ID | written question details, PQ lookup, question by ID | Use when you have a question ID and need full details including the question text, answer, and member information | Returns complete question with asking member, answering body, question text, and answer

    Args:
        question_id: The unique ID of the written question.
        expand_member: Whether to include full member details. Default: True.

    Returns:
        Complete written question details including question text, answer, and member information.
    

Inputs: question_id (required), expand_member. Returns: result

get_written_question_by_uinA

Get a written question by date and UIN (Unique Identification Number) | question by reference, UIN lookup, official question number | Use when you have a question's official UIN reference number to retrieve the full question details | Returns complete question with asking member, answering body, question text, and answer

    Args:
        date: Date the question was tabled in YYYY-MM-DD format.
        uin: The Unique Identification Number (UIN) of the question.
        expand_member: Whether to include full member details. Default: True.

    Returns:
        Complete written question details including question text, answer, and member information.
    

Inputs: uin (required), date (required), expand_member. Returns: result

get_written_statementA

Get a specific written statement by ID | written statement details, statement lookup, ministerial statement by ID | Use when you have a statement ID and need full details including the statement text and minister information | Returns complete statement with minister, department, and full statement content

    Args:
        statement_id: The unique ID of the written statement.
        expand_member: Whether to include full member details. Default: True.

    Returns:
        Complete written statement details including statement text and minister information.
    

Inputs: statement_id (required), expand_member. Returns: result

get_written_statement_by_uinA

Get a written statement by date and UIN (Unique Identification Number) | statement by reference, UIN lookup, official statement number | Use when you have a statement's official UIN reference number to retrieve the full statement details | Returns complete statement with minister, department, and full statement content

    Args:
        date: Date the statement was made in YYYY-MM-DD format.
        uin: The Unique Identification Number (UIN) of the statement.
        expand_member: Whether to include full member details. Default: True.

    Returns:
        Complete written statement details including statement text and minister information.
    

Inputs: uin (required), date (required), expand_member. Returns: result

happening_now_in_commonsA

Get live information about what's currently happening in the House of Commons chamber. Use when you want real-time updates on parliamentary business, current debates, or voting activity. See also: happening_now_in_lords, search_calendar.

    Returns:
        Live information about current Commons chamber activity.
    

Inputs: no named parameters. Returns: result

happening_now_in_lordsA

Get live information about what's currently happening in the House of Lords chamber. Use when you want real-time updates on Lords business, current debates, or voting activity. See also: happening_now_in_commons, search_calendar.

    Returns:
        Live information about current Lords chamber activity.
    

Inputs: no named parameters. Returns: result

interests_categoriesA

Get categories of interests that MPs and Lords must declare in the Register of Interests. Use when you need to understand what types of financial or other interests parliamentarians must declare.

    Returns:
        Categories of interests that must be declared.
    

Inputs: no named parameters. Returns: result

order_orderA

Start UK Parliament research session | order, begin, initialize, start session, parliament mode | Use at the START of any parliamentary research to get proper context and guidance. Say 'Order Order' (like the Speaker) to activate. Returns system prompt and quick reference for all 233 tools.

Inputs: no named parameters. Returns: result

parliament_guideA

Get detailed guidance for a specific Parliament data domain | tool help, API reference, how to use tools, available tools | Use when you need detailed information about tools in a specific area | Returns comprehensive guidance including tool names, parameters, and typical workflows

    Args:
        topic: Domain to get guidance for. Options: members, bills, votes, committees, hansard, questions, interests, live, legislation, procedures, lords_business, documents, all, conventions, workflows
    

Inputs: topic (required). Returns: result

parliament_workflowA

Get step-by-step workflow guidance for a parliamentary research task | workflow planning, multi-step tasks, research planning, how to find | Use when you have a specific research question and need to plan which tools to use in sequence | Returns recommended sequence of tools with parameters and expected data flow

    Args:
        query: Research question or task description. Examples: "How did my MP vote on climate?", "Track a bill's progress", "Find committee evidence on NHS"
    

Inputs: query (required). Returns: result

parties_list_by_houseA

Get list of active political parties in either House of Commons (1) or House of Lords (2). Use when you need to know current party representation or party structures in Parliament. See also: get_state_of_parties.

    Args:
        house: House: 1 or 'Commons', 2 or 'Lords'.

    Returns:
        List of active political parties in the specified house.
    

Inputs: house (required). Returns: result

search_acts_of_parliamentB

Search for Acts of Parliament (primary legislation) by name or topic. Use when researching existing laws, finding legislation on specific subjects, or understanding the legal framework on particular issues. See also: get_act_of_parliament, search_bills.

    Args:
        name: Name or title of the Act to search for (e.g. 'Climate Change Act', 'Human Rights Act').

    Returns:
        Acts of Parliament matching the search term.
    

Inputs: name (required). Returns: result

search_bill_petitionsB

Search petitions on Private Bills | private bill petitions, public petitions | Use to find public petitions submitted on Private Bills | Returns petitions with details

    Args:
        committee_business_id: Optional: filter by committee business ID.
        committee_id: Optional: filter by committee ID.
        search_term: Optional: search term for petition content.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        show_on_website_only: Show only petitions visible on website.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30).

    Returns:
        Bill petitions matching the criteria.
    

Inputs: skip, take, end_date, start_date, +4 more. Returns: result

search_billsA

Search for parliamentary bills by title, subject, or keyword. Use when researching proposed legislation, finding bills on specific topics, or tracking legislative progress. See also: get_bill_overview, get_recently_updated_bills, search_acts_of_parliament.

    Args:
        search_term: Search term for bill titles or content (e.g. 'environment', 'health', 'finance').
        member_id: Optional: member ID to filter bills sponsored by specific member.

    Returns:
        Matching bills with titles, stages, and sponsors.
    

Inputs: search_term (required), member_id. Returns: result

search_calendarA

Search parliamentary calendar for upcoming events and business in either chamber. Use when you want to know what's scheduled in Parliament, upcoming debates, or future parliamentary business. House: Commons/Lords. See also: get_parliamentary_diary, get_sitting_dates, happening_now_in_commons.

    Args:
        house: House: 'Commons' or 'Lords' (1 or 2 also accepted).
        start_date: Start date in YYYY-MM-DD format.
        end_date: End date in YYYY-MM-DD format.

    Returns:
        Parliamentary calendar events in the date range.
    

Inputs: house (required), end_date (required), start_date (required). Returns: result

search_committee_debatesB

Search committee debates in Hansard | Hansard, committees, select committee debates | Use to find debates and discussions from parliamentary committees | Returns committee debates matching the search criteria

    Args:
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term (optional).
        committee_title: Filter by committee title (optional).
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Committee debates matching the search criteria.
    

Inputs: skip, take, house, end_date, +3 more. Returns: result

search_committeesA

Search for parliamentary committees by name or subject area. Use when you need to find which committee covers a specific policy area or when researching committee work. See also: get_committee_summary, get_committee_by_id, get_committee_bills.

    Args:
        search_term: Search term for committee names or subject areas (e.g. 'Treasury', 'Health', 'Defence').

    Returns:
        Matching committees with details.
    

Inputs: search_term (required). Returns: result

search_commons_divisionsA

Search Commons divisions | House of Commons votes, Commons voting records, how MPs voted | Use to find how MPs voted on bills, amendments or issues; filter by member, date range or division number | Returns matching divisions with vote counts. See also: search_lords_divisions, get_commons_division_by_id, compare_member_votes.

    Args:
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        member_id: Optional: only divisions this member voted in.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 25, max 100).
    

Inputs: skip, take, end_date, member_id, +4 more. Returns: result

search_deposited_papersA

Search deposited papers | papers deposited in the Libraries, departmental reports, command papers, government documents, DEP numbers | Use to find documents ministers have deposited for Parliament by topic, department, house or date | Returns paged deposited papers with paper number, title, dates, houses and depositing departments. See also: get_deposited_paper, get_departments.

    Args:
        terms: Words to match against depositing department, paper number and summary (e.g. 'defence', 'DEP2026-0590').
        house: Papers relating to a house: 1/'Commons' or 2/'Lords'. Omit for both.
        deposited_from: Deposited after this date (YYYY-MM-DD).
        deposited_to: Deposited before this date (YYYY-MM-DD).
        department_ses_id: Depositing department id (see get_departments).
        order_by: Relevance, CommitmentDateAsc or CommitmentDateDesc.
        skip: Number of results to skip (default 0).
        take: Number of results to return (default 20).

    Returns:
        Paged list of deposited papers with a total result count.
    

Inputs: skip, take, house, terms, +4 more. Returns: result

search_early_day_motionsA

Search EDMs by topic | Early Day Motions, backbench motions, MP opinions, prayers against SIs | Use to find motions on specific issues, by member, or withdrawn motions | Returns EDMs with sponsors and signature counts See also: get_early_day_motion, edms_for_member_id, get_recently_tabled_edms.

    Args:
        search_term: Optional: search term for EDM topics or content.
        member_id: Optional: filter by member ID (tabled or sponsored by).
        include_sponsored_by_member: Optional: include EDMs where member is a sponsor (not just primary).
        statuses: Optional: filter by status - 'Published' or 'Withdrawn'.
        tabled_start_date: Optional: EDMs tabled on or after this date (YYYY-MM-DD).
        tabled_end_date: Optional: EDMs tabled on or before this date (YYYY-MM-DD).
        is_prayer: Optional: filter to prayers against negative Statutory Instruments.
        order_by: Optional: 'DateTabledAsc', 'DateTabledDesc', 'TitleAsc', 'TitleDesc', 'SignatureCountAsc', 'SignatureCountDesc'.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 25, max 100).

    Returns:
        EDMs matching the search criteria with sponsors and signature counts.
    

Inputs: skip, take, order_by, statuses, +6 more. Returns: result

search_erskine_mayA

Search Erskine May parliamentary procedure manual. Use when you need to understand parliamentary rules, procedures, or precedents. Erskine May is the authoritative guide to parliamentary procedure. See also: search_erskine_may_sections, search_erskine_may_index, get_erskine_may_paragraph.

    Args:
        search_term: Search term for parliamentary procedure rules (e.g. 'Speaker', 'amendment', 'division').

    Returns:
        Erskine May paragraphs matching the search term.
    

Inputs: search_term (required). Returns: result

search_erskine_may_indexB

Search the Erskine May index for terms | index search, find topics | Use to find index entries by keyword | Returns matching index terms.

    Args:
        search_term: Term to search for in the index.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 30).

    Returns:
        Index terms matching the search.
    

Inputs: search_term (required), skip, take. Returns: result

search_erskine_may_sectionsA

Search Erskine May section titles | section search, find by title | Use to find sections by title rather than content | Returns sections with matching titles.

    Args:
        search_term: Term to search for in section titles.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 30).

    Returns:
        Sections with matching titles.
    

Inputs: search_term (required), skip, take. Returns: result

search_event_activitiesA

Search committee event activities | event agenda items, meeting activities, committee sessions | Use to find activities across committee events with flexible filtering | Returns event activities matching criteria

    Args:
        committee_id: Optional: filter by committee ID.
        committee_business_id: Optional: filter by committee business ID.
        search_term: Optional: search term for activity titles or content (min 2 chars).
        start_date_from: Optional: start date from in YYYY-MM-DD format.
        start_date_to: Optional: start date to in YYYY-MM-DD format.
        house: Optional: filter by house - 1 or 'Commons', 2 or 'Lords'.
        location_id: Optional: location ID to filter events.
        event_type_id: Optional: filter by event type ID.
        include_activity_attendees: Include attendees with each activity. Default: false.
        show_on_website_only: Show only events visible on website. Default: true.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 30, max 100).

    Returns:
        Event activities matching the specified criteria.
    

Inputs: skip, take, house, location_id, +8 more. Returns: result

search_hansardA

Search Hansard (official parliamentary record) for speeches and debates. Use when researching what was said in Parliament on specific topics, by specific members, or in specific time periods. House: 1 or "Commons", 2 or "Lords". See also: search_hansard_full, search_hansard_contributions, search_parliament.

    Args:
        house: House: 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format.
        end_date: End date in YYYY-MM-DD format.
        search_term: Search term for speeches or debates (e.g. 'climate change', 'NHS').
        member_id: Optional member ID to filter results to a specific MP/Lord.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20, max varies by endpoint).

    Returns:
        Hansard records matching the search criteria.
    

Inputs: house (required), end_date (required), start_date (required), search_term (required), +3 more. Returns: result

search_hansard_committeesB

Search committees that appear in Hansard | Hansard, committee search, parliamentary committees | Use to find committees by name or keyword in Hansard records | Returns committees matching the search criteria

    Args:
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term (optional).
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Committees matching the search criteria.
    

Inputs: skip, take, house, end_date, +2 more. Returns: result

search_hansard_contributionsA

Search Hansard by contribution type | Hansard, spoken, written, interventions | Use to find specific types of parliamentary contributions. Returns contributions of the specified type. See also: get_member_contribution_summary, get_debate_by_id.

    Args:
        contribution_type: Type of contribution: 'Spoken', 'Written', 'Intervention', 'Question', 'Answer'.
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term (optional).
        member_id: Optional member ID to filter results.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Contributions of the specified type.
    

Inputs: contribution_type (required), skip, take, house, +4 more. Returns: result

search_hansard_divisionsB

Search for divisions (votes) in Hansard | Hansard, divisions, votes | Use to find recorded votes in Parliament. Returns divisions matching the search criteria. See also: search_commons_divisions, search_lords_divisions.

    Args:
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term (optional).
        member_id: Optional member ID to filter results.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Divisions matching the search criteria.
    

Inputs: skip, take, house, end_date, +3 more. Returns: result

search_hansard_fullA

Full search across all Hansard content types | Hansard, comprehensive search | Use for broad searches across debates, statements, questions, and petitions. Returns mixed results from all Hansard content types. See also: search_hansard, search_parliament.

    Args:
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term for speeches or debates (optional).
        member_id: Optional member ID to filter results to a specific MP/Lord.
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Hansard records matching the search criteria across all types.
    

Inputs: skip, take, house, end_date, +3 more. Returns: result

search_hansard_membersA

Search for members who appear in Hansard | Hansard, member search, speakers | Use to find members who have spoken in Parliament by name. Returns members matching the search term.

    Args:
        search_term: Name or partial name to search for.
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        include_former: Include former members (default true).
        include_current: Include current members (default true).
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Members matching the search term.
    

Inputs: search_term (required), skip, take, house, +2 more. Returns: result

search_hansard_petitionsB

Search petitions in Hansard | Hansard, petitions, parliamentary petitions | Use to find petitions presented in Parliament | Returns petitions matching the search criteria

    Args:
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        start_date: Start date in YYYY-MM-DD format (optional).
        end_date: End date in YYYY-MM-DD format (optional).
        search_term: Search term (optional).
        skip: Number of results to skip for pagination (default 0).
        take: Number of results to return (default 20).

    Returns:
        Petitions matching the search criteria.
    

Inputs: skip, take, house, end_date, +2 more. Returns: result

search_historical_membersA

Search historical members of the Commons or Lords | past MPs, historic members, former members, historical search | Use when researching members from historical periods or who were active on a specific date | Returns member profiles matching the historical search criteria See also: get_member_by_name, get_members_history.

    Args:
        name: Name search term (partial match). Required by the API.
        date_to_search_for: Find members active on this date (YYYY-MM-DD). Required by the API.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 20, max 20).

    Returns:
        Member profiles matching the historical search criteria.
    

Inputs: name (required), date_to_search_for (required), skip, take. Returns: result

search_historic_sitting_daysA

Search historic sitting days | historical Hansard, past sessions, sitting history | Use to find which days Parliament sat historically | Returns list of sitting days in date range

    Args:
        house: Optional: 'Commons' or 'Lords' (1 or 2 also accepted).
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        has_sitting_sections: Optional: filter to days with available sitting sections.

    Returns:
        List of historic sitting days matching criteria.
    

Inputs: house, end_date, start_date, has_sitting_sections. Returns: result

search_lords_divisionsA

Search Lords divisions | House of Lords votes, Lords voting records, how Lords voted | Use to find how Lords voted on bills, amendments or issues or find close/contested votes; filter by member, date range or division number | Returns matching divisions with vote counts. See also: search_commons_divisions, get_lords_division_by_id, compare_member_votes.

    Args:
        search_term: Optional: search term for division topics (e.g. 'brexit', 'climate', 'NHS').
        member_id: Optional: only divisions this member voted in.
        start_date: Optional: start date in YYYY-MM-DD format.
        end_date: Optional: end date in YYYY-MM-DD format.
        division_number: Optional: specific division number.
        include_when_member_was_teller: Optional: include divisions where the member was a teller.
        majority_comparator: Optional: compare majority - 'LessThan', 'LessThanOrEqualTo', 'EqualTo', 'GreaterThanOrEqualTo', 'GreaterThan'. Use with majority_value to find close votes.
        majority_value: Optional: majority threshold to compare against (e.g., 10 to find votes with margin < 10).
        total_votes_comparator: Optional: compare total votes - same options as majority_comparator.
        total_votes_value: Optional: total votes threshold to compare against.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 25, max 100).
    

Inputs: skip, take, end_date, member_id, +8 more. Returns: result

search_lords_written_questionsA

Search House of Lords written questions | Lords questions, HL questions, peers' questions, tabled, answered, withdrawn | Use for Lords written questions as published in the Lords business system; always give a date range as unfiltered requests are slow | Returns questions with text, dates, status, member and answering body. See also: search_written_questions, get_lords_written_question.

    Args:
        member_id: Filter by the asking Lord's member id.
        uin: Filter by question UIN (e.g. '4578').
        status: Tabled, Answered or Withdrawn.
        tabled_start_date: Tabled on or after (YYYY-MM-DD).
        tabled_end_date: Tabled on or before (YYYY-MM-DD).
        order_by: DateTabledAsc or DateTabledDesc.
        skip: Number of results to skip.
        take: Number of results to return.

    Returns:
        Paged list of Lords written questions.
    

Inputs: uin, skip, take, status, +4 more. Returns: result

search_membersA

Search for current MPs and Lords with comprehensive filtering options. Use when you need to find members by name, location, party, constituency, gender, posts held, or policy interests. Supports advanced search criteria including membership dates and eligibility status. See also: get_member_by_name, search_historical_members, get_mp_profile.

    Args:
        name: Optional: full or partial name to search for.
        location: Optional: location or constituency name.
        post_title: Optional: post title (e.g. 'Minister', 'Secretary of State').
        party_id: Optional: party ID to filter by.
        house: Optional: house - 1 or 'Commons', 2 or 'Lords'.
        constituency_id: Optional: constituency ID to filter by.
        name_starts_with: Optional: filter names starting with specific letter(s).
        gender: Optional: gender filter ('M' or 'F').
        membership_started_since: Optional: membership started since date in YYYY-MM-DD format.
        membership_ended_since: Optional: membership ended since date in YYYY-MM-DD format.
        was_member_on_or_after: Optional: was member on or after date in YYYY-MM-DD format.
        was_member_on_or_before: Optional: was member on or before date in YYYY-MM-DD format.
        was_member_of_house: Optional: was member of house - 1 or 'Commons', 2 or 'Lords'.
        is_eligible: Optional: filter by eligibility status.
        is_current_member: Optional: filter by current membership status.
        policy_interest_id: Optional: policy interest ID to filter by.
        experience: Optional: search term for professional experience.
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 20, max 100).

    Returns:
        Matching member profiles with comprehensive details.
    

Inputs: name, skip, take, house, +15 more. Returns: result

search_oral_questionsA

Search oral questions | PQs, question time, oral PQs, minister questions | Search oral parliamentary questions (not EDMs) | Returns list of oral questions with details See also: search_oral_question_times, search_written_questions.

    Args:
        answering_body_id: Filter by department/body answering (0 for all).
        asking_member_id: Filter by member asking (0 for all).
        question_status: Filter by status, e.g. 'ToBeAsked', 'Withdrawn', 'Unstarred', 'Transferred', 'Submitted' (empty for all).
        skip: Number of results to skip.
        take: Number of results to return.

    Returns:
        List of oral questions matching the filters.
    

Inputs: skip, take, question_status, asking_member_id, +1 more. Returns: result

search_oral_question_timesB

Get scheduled oral question times for ministers in Parliament. Use when you want to know when specific departments will answer questions or when particular topics will be discussed. See also: search_oral_questions.

    Args:
        answering_date_start: Start date for question times in YYYY-MM-DD format.
        answering_date_end: End date for question times in YYYY-MM-DD format.

    Returns:
        Scheduled oral question times in the date range.
    

Inputs: answering_date_end (required), answering_date_start (required). Returns: result

search_parliamentA

Search across Parliament in one call - members, bills, committees, Hansard debates, written questions and parliament.uk web pages | search everything, find anything, cross-search, where is this mentioned, general search | Use as a starting point when you don't know which kind of record holds the answer | Returns the top matches and total counts for each kind of record, with the tool to call next for each. Combines: search_members, search_bills, search_committees, search_hansard_full, search_written_questions, search_parliament_website. See also: search_parliament_website (faster, single call, for briefings, explainers and other free-text web content), parliament_workflow (to plan a research approach).

    Args:
        query: Search text (e.g. 'Renters Rights', 'Starmer', 'Treasury', 'net zero').
        take: Number of top matches per kind of record (default 5).

    Returns:
        Per-category matches and totals.
    

Inputs: query (required), take. Returns: result

search_parliament_websiteA

Search the parliament.uk website | site-wide search, web pages, research briefings, Commons Library, POST, publications, guides | Use for free-text discovery of any parliament.uk content that the structured APIs don't cover, such as Commons Library briefings or explainers | Returns total result count and a page of results with title, description (matches in tags), url and tags. See also: search_parliament, search_hansard.

    Args:
        search_terms: Terms to search for (e.g. 'climate change', 'sitting hours').
        start: Position of the first result to return (default 1). Page by adding take to it.
        take: Number of results per page (default and maximum 20).

    Returns:
        Search results from the parliament.uk website with title, description, url and tags.
    

Inputs: search_terms (required), take, start. Returns: result

search_roiA

Search member's Register of Interests for financial and business declarations | register of interests, ROI, financial interests, conflicts of interest, directorships, consultancies, gifts, external roles, transparency | Use for investigating potential conflicts, researching member finances, or checking declared interests | Returns a member's current declared interests (set include_expired for lapsed ones, register_type='CommonsStaff' for their staff's) including directorships, consultancies, gifts, and other financial interests. See also: get_member_registered_interests, interests_categories, get_mp_profile.

    Args:
        member_id: Parliament member ID. Required: get from member search first.
        register_type: Register to search: 'Commons' (the member's own interests, default) or 'CommonsStaff' (interests declared by the member's staff). Pass an empty string for both.
        include_expired: Also return interests that have expired (default False, current interests only).

    Returns:
        Declared interests including directorships, consultancies, gifts, and other financial interests.
    

Inputs: member_id (required), register_type, include_expired. Returns: result

search_statutory_instrumentsA

Search for Statutory Instruments (secondary legislation), including proposed negative SIs (PNSIs) under sifting. Use when researching government regulations, rules, or orders made under primary legislation. SIs are used to implement or modify laws. See also: get_statutory_instrument, get_si_business_items, get_annulment_date.

    Args:
        name: Optional. Name or title of the statutory instrument to search for.
        procedure_id: Optional. Procedure ID from get_si_procedures() (e.g. the "Proposed negative statutory instrument" procedure to list PNSIs).
        recommended_for_procedure_change: Optional. Only PNSIs a sifting committee recommended for the affirmative procedure.
        laying_body_id: Optional. Laying body ID from get_laying_bodies().
        department_id: Optional. Government department ID.
        house: Optional: 'Commons' or 'Lords' (1 or 2 also accepted).
        skip: Number of records to skip (pagination, default 0).
        take: Number of records to return (default 20).

    Returns:
        Statutory Instruments matching the filters.
    

Inputs: name, skip, take, house, +4 more. Returns: result

search_treatiesA

Search UK international treaties and agreements under parliamentary scrutiny | treaties, international agreements, trade deals, diplomatic treaties, international law, bilateral agreements | Use for researching international relations, trade agreements, or diplomatic commitments | Returns treaty details including titles, countries involved, and parliamentary scrutiny status See also: search_treaties_advanced, get_treaty, get_treaty_business_items.

    Args:
        search_text: Search term for treaties. Examples: 'trade', 'EU', 'climate', 'Brexit'. Searches titles and content.

    Returns:
        Treaty details including titles, countries involved, and parliamentary scrutiny status.
    

Inputs: search_text (required). Returns: result

search_treaties_advancedA

Advanced treaty search with full filtering | treaties, controversial treaties, committee concerns, scrutiny status | Use to find treaties by department, scrutiny status, or with parliamentary concerns | Returns treaties matching all specified filters

    Args:
        search_text: Optional: search term for treaty titles/content.
        government_organisation_id: Optional: filter by laying department ID (get IDs from get_treaty_government_organisations).
        series: Optional: treaty series type - 'CountrySeriesMembership', 'EuropeanUnionSeriesMembership', or 'MiscellaneousSeriesMembership'.
        parliamentary_process: Optional: 'NotConcluded' or 'Concluded'.
        debate_scheduled: Optional: filter to treaties where debate has been scheduled.
        motions_tabled: Optional: filter to treaties where motions have been tabled.
        committee_raised_concerns: Optional: filter to treaties where a committee has raised concerns.
        house: Optional: 'Commons' or 'Lords' (1 or 2 also accepted).
        skip: Number of records to skip (for pagination).
        take: Number of records to return (default 20).

    Returns:
        Treaties matching the specified filters with scrutiny status.
    

Inputs: skip, take, house, series, +6 more. Returns: result

search_written_questionsA

Search written parliamentary questions with comprehensive filtering | written questions, PQs, parliamentary questions, questions to ministers, government accountability | Use for researching MP activity, tracking government responses, analyzing ministerial accountability, or finding questions on specific topics | Returns questions with asking member, answering body, dates, and response status See also: get_written_question, search_written_statements, get_answering_bodies.

    Args:
        search_term: Text to search for in question content.
        asking_member_id: Filter by the member ID who asked the question.
        answering_body_id: Filter by the government department that answered.
        answered: Filter by answer status: "Any", "Answered", or "Unanswered".
        tabled_from: Start date for when question was tabled (YYYY-MM-DD).
        tabled_to: End date for when question was tabled (YYYY-MM-DD).
        house: Filter by house: 'Commons', 'Lords' or 'Bicameral' (1 or 2 also accepted).
        skip: Number of records to skip for pagination. Default: 0.
        take: Number of records to return. Default: 20.

    Returns:
        Written questions matching the search criteria with member, department, and answer details.
    

Inputs: skip, take, house, answered, +5 more. Returns: result

search_written_statementsB

Search written ministerial statements | written statements, ministerial statements, government announcements, policy statements | Use for tracking government announcements, researching policy statements, or finding ministerial communications on specific topics | Returns statements with minister, department, dates, and statement content See also: get_written_statement, search_written_questions.

    Args:
        search_term: Text to search for in statement content.
        member_id: Filter by the minister ID who made the statement.
        answering_body_id: Filter by government department.
        made_from: Start date for when statement was made (YYYY-MM-DD).
        made_to: End date for when statement was made (YYYY-MM-DD).
        house: Filter by house: 'Commons', 'Lords' or 'Bicameral' (1 or 2 also accepted).
        skip: Number of records to skip for pagination. Default: 0.
        take: Number of records to return. Default: 20.

    Returns:
        Written statements matching the search criteria with minister, department, and content.
    

Inputs: skip, take, house, made_to, +4 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelogโ€ฆ

    TDQS

    B3.1/5.0

    Scored across 233 tools

    Disambiguation2/5

    The tool set contains many overlapping options, especially for Hansard search (search_hansard, search_hansard_full, search_hansard_contributions, search_committee_debates), voting records (get_member_voting, get_commons_voting_record_for_member, get_lords_voting_record_for_member, check_mp_vote), and member lookup (search_members, get_member_by_name, search_historical_members, search_hansard_members). Combined convenience tools (e.g. get_mp_profile, get_bill_overview) also duplicate granular tools, so an agent must read descriptions carefully to choose correctly.

    Naming Consistency3/5

    Most names use snake_case, which is readable and predictable at a glance. However, verb conventions vary widely: get_*, search_*, check_*, compare_*, list-style names like parties_list_by_house, standalone nouns like bill_types, and special names like order_order and parliament_guide.

    Tool Count1/5

    233 tools is an extreme surface for any single MCP server, even a broad domain like UK Parliament. The count alone makes discovery and correct selection difficult, and many tools are highly granular reference or pagination helpers that could be consolidated.

    Completeness5/5

    The surface covers an unusually broad range of parliamentary data: bills, members, constituencies, elections, committees, evidence, Hansard, divisions, written questions and statements, EDMs, interests, treaties, statutory instruments, calendar/live business, and Erskine May procedure. No obvious domain-level gaps are apparent.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that gives Claude Desktop complete intelligence about any public GitHub repository. Research libraries, compare packages, audit dependencies, and explore codebases through natural conversation.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that gives your AI assistant full awareness of your local dev environment โ€” running processes, Docker containers, git state, open ports, log files, and more.
      8 npm
      1
      MIT