Skip to main content
Glama
ChrisBrooksbank

UK Parliament MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 210 tools.

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, all, conventions, workflows
    
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"
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
search_parliamentA

Search across Parliament in one call - members, bills, committees, Hansard debates and written questions | 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. See also: 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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
get_archived_publication_linksC

Get archived publication links for a committee | archived publications, legacy documents, old reports | Use to find archived publications linked to a committee | Returns grouped archived publication links

    Args:
        committee_id: Committee ID.

    Returns:
        Archived publication links grouped by type for the committee.
    
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.
    
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.
    
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).
    
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).
    
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.
    
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.
    
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.
    
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).
    
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).
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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 declared interests 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. Returns all declared interests.

    Returns:
        Declared interests including directorships, consultancies, gifts, and other financial interests.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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).
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    
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.
    

Prompts

Interactive templates invoked by user choice

NameDescription
parliamentInitialize UK Parliament research session with guidance on 210 available tools. Provides system instructions for parliamentary data queries, quick reference of tool categories, and guidance on common research workflows. Use this prompt to start a parliamentary research session. Optionally specify a topic to get detailed guidance for that domain. Args: topic: Optional topic for detailed guidance (members, bills, votes, committees, hansard, questions, interests, live, legislation, procedures, all, conventions, workflows)

Resources

Contextual data attached and managed by the client

NameDescription
conventions_resourceUK Parliament API conventions: house IDs, date formats, pagination, naming.
houses_resourceHouse of Commons and House of Lords reference data.
tools_summary_resourceQuick reference of all available Parliament MCP tools.
member_types_resourceMP vs Lord member type reference data.
parties_resourceActive political parties in both houses (cached, refreshes every 15 min).
bill_types_resourceBill type reference list (cached, refreshes every 15 min).
bill_stages_resourceLegislative stage reference list (cached, refreshes every 15 min).

TDQS

B3/5.0

Scored across 210 tools

Disambiguation2/5

There is heavy functional overlap across the 210 tools: get_member_voting, get_commons_voting_record_for_member, get_lords_voting_record_for_member, check_mp_vote, and search_commons_divisions all retrieve voting records; get_departments and get_answering_bodies appear to do the same thing; get_sitting_dates vs get_hansard_calendar vs search_calendar; get_constituency_latest_election vs get_constituency_election_result vs get_election_results_for_constituency. Agents will struggle to choose the right tool, especially between the many 'summary' aggregators and their base components.

Naming Consistency3/5

Mostly snake_case with verb_noun prefixes (get_, search_, list_, browse_), but there are significant deviations: 'happening_now_in_commons', 'order_order', 'parties_list_by_house' (noun_verb), 'bill_types'/'bill_stages' (bare nouns), 'interests_categories'. The mix of get_/search_/list_/browse_/bare-noun is readable but not predictable.

Tool Count1/5

210 tools is an extreme mismatch for even a large domain like UK Parliament. The surface includes redundant peers (get_member_portrait_url vs get_member_thumbnail_url, many RSS variants, many 'by_id' lookups), which forces the agent to navigate an enormous catalog. This clearly exceeds any reasonable MCP tool count.

Completeness4/5

Coverage is remarkably comprehensive: members, bills, committees, Hansard, divisions, interests, EDMs, SIs, treaties, Erskine May procedure, calendar, written questions/statements. CRUD-style read coverage of the parliamentary domain is near-total, though there are notable redundancies rather than true gaps, and the server is purely read-only (which fits the public data domain).

Maintenance

ActivityMaintained
ResponsivenessNo issues