uk-parliament-mcp-server
Server Details
Search UK Parliament bills, members, votes, Hansard, written questions, and committees.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/uk-parliament-mcp-server
- GitHub Stars
- 0
- Server Listing
- uk-parliament-mcp-server
TDQS
Scored across 9 tools
Each tool targets a distinct parliamentary resource (bills, committees, members, divisions, hansard, questions, reference data), so misselection is unlikely. However, committee search is folded into ukparl_get_committee rather than a separate search tool, creating a slight asymmetry with the rest of the set, and several tools are multi-modal with dense mode parameters that could blur boundaries.
All tools use the consistent ukparl_ prefix and snake_case, with a clear get_ vs search_ distinction for most resources. The only deviations are ukparl_lookup_reference (uses 'lookup' instead of 'search' or 'get') and ukparl_get_committee, which also performs search—both minor inconsistencies.
Nine tools is well within the ideal 3–15 range and each tool corresponds to a meaningful resource or action in the parliamentary domain. The set is scoped and no tool feels redundant or like padding.
The surface covers the core read-only workflows for bills, committees, members, divisions, hansard, and questions, with detail and pagination modes embedded in relevant tools. Minor gaps exist—e.g., committee search is only available via get_committee and there is no standalone fetch for individual Hansard contributions by ID—but agents can work around these.
Available Tools
9 toolsukparl_get_billUkparl Get BillARead-onlyIdempotentInspect
Retrieve a Westminster bill overview or select stages, stage, publications, amendments, amendment, motions or motion. Stage/amendment/motion selections require the bill-specific billStageId from section=stages; singular amendment/motion also require itemId from their parent collection. Use amendmentId for amendment retrieval and motion.id for motions. Filter only the amendments collection by amendmentNumber, decision or sponsoring memberId. Collection selectors paginate whole records. Overview leaves publications unchecked; select publications to discover actual supplied legislation.gov.uk statute links. Follow contentCursor with the original selection to reconstruct oversized records.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Collection records; positive safe integer, default 20, effective cap 50; collections only. | |
| billId | Yes | Parent bill identifier from ukparl_search_bills. | |
| cursor | No | Collection continuation; collections only. | |
| itemId | No | Amendment amendmentId or ping-pong motion.id; singular selections only. | |
| section | No | Selected bill section; overview by default. | overview |
| decision | No | Official amendment decision filter; amendments collection only. | |
| memberId | No | Sponsoring member ID; amendments collection only. | |
| billStageId | No | Bill-specific stage occurrence ID, required for stage/amendment/motion selections. | |
| contentCursor | No | Lossless same-selection content continuation. | |
| amendmentNumber | No | Published amendment number, retaining letter suffixes; amendments collection only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective per-call collection limit. |
| page | No | Actual emitted collection continuation. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Whether the selected entity exists. |
| items | No | Whole selected collection records. |
| shown | No | Actual whole records emitted or selected for lossless reconstruction. |
| billId | No | Parent bill ID. |
| notice | No | Licence, workload and selected empty-collection notices. |
| record | No | Complete selected record. |
| source | No | Selected request provenance. |
| applied | No | Normalized selection and actual source. |
| section | No | Selected bill section. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| guidance | No | Same-server recovery for an entity miss. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further source records remain after this selected page. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Known selected collection total. |
| contentPage | No | Lossless recursive content continuation. |
| detailLevel | No | Selected source completeness. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Caller limit before clamping. |
| legislationHandoff | No | Authoritative statute handoff. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, lowering the disclosure burden. The description adds useful behavior beyond those annotations: collection selectors paginate whole records, overview omits publications, publications reveal supplied legislation.gov.uk statute links, and contentCursor reconstructs oversized records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core retrieval purpose and every clause carries a selection, dependency, or pagination rule. It is dense and semicolon-heavy, which makes it harder to scan, but there is little obvious filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex 10-parameter tool with an output schema and annotations. The description supplies the critical cross-parameter dependencies, collection filtering limits, publication nuance, and oversized-record recovery needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning beyond the schema. It links billStageId to section=stages, itemId to the parent collection for singular amendment/motion retrieval, and restricts amendment filters to the amendments collection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieve a Westminster bill overview or selected sections including stages, publications, amendments, and motions. It enumerates the selectable sections, so an agent can understand the tool's scope without opening the schema, and it is not a tautology of the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear conditional guidance for selecting sections, including that stage/amendment/motion selections require billStageId and singular selections also require itemId. It also explains filtering and pagination rules, though it does not explicitly route the agent from ukparl_search_bills to this retrieval tool beyond the schema's billId note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_get_committeeGet committees and evidenceARead-onlyIdempotentInspect
Find Westminster committees with mode=search, then use committeeId for detail, members, inquiries or publications. Inquiries returns every committee business type, labelled by isInquiry; use businessId with mode=inquiry for complete business detail or to filter publications. Use publicationId with mode=publication for complete report/publication metadata and source links. Use mode=evidence with businessId and evidenceType=written|oral to list evidence; mode=evidence_detail requires evidenceId and evidenceType in the same namespace. Memberships retain all role periods; personId is distinct from Members API memberId. No document downloads or text extraction. Follow cursors with unchanged filters; contentCursor retrieves oversized records losslessly. Typed entities retain sourcePath relationships to reconstruct nested source metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Search, committee detail, members, business list/detail, publication list/detail or written/oral evidence list/detail. | search |
| house | No | Commons, Lords or Joint, case-insensitive; exact House of Commons/Lords aliases also accepted. Search only. | |
| limit | No | Collection size: search default 10 cap 20; nested default 20 cap 50. Safe over-cap values clamp. Omit for singular modes. | |
| query | No | Search terms for search, inquiries or publications; latter two require at least two characters. | |
| cursor | No | Opaque collection continuation; repeat unchanged filters and effective limit. | |
| status | No | Search: Current|Former|All. Inquiries: Open|Closed. Omitted uses source default. | |
| openedTo | No | Inquiries opened on/before this ISO date. | |
| sortOrder | No | Inquiries: DateOpenedNewest|DateOpenedOldest|PublicationDateAscending|PublicationDateDescending. Publications: PublicationDateAscending|PublicationDateDescending|ResponseDateAscending|ResponseDateDescending. Omitted preserves source order. | |
| businessId | No | Business ID required for inquiry and evidence; optional additional publication filter. | |
| evidenceId | No | Evidence detail ID, scoped by evidenceType. | |
| membership | No | Members mode only, default all; filters role-period membership status. | |
| openedFrom | No | Inquiries opened on/after this ISO date. | |
| committeeId | No | Committee ID required for detail, members and publications; optional for inquiries to discover businesses across committees. | |
| publishedTo | No | Publications starting on/before this ISO date. | |
| evidenceType | No | Required for evidence list/detail; written and oral IDs are distinct. | |
| contentCursor | No | Opaque same-selection content continuation; reconstruct records before advancing collection cursor. | |
| publicationId | No | Publication ID required for publication detail. | |
| publishedFrom | No | Publications starting on/after this ISO date. | |
| acceptingEvidence | No | Inquiries only: true selects accepting businesses; false leaves source selection unrestricted. | |
| publicationTypeIds | No | Publications only: positive publication type IDs, serialized as repeated parameters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Maximum collection workload for this mode. |
| mode | No | Selected committee operation. |
| page | No | Whole-record collection continuation. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Singular lookup result; false requires guidance. |
| items | No | Selected whole collection items. |
| shown | No | Actually emitted whole collection records. |
| total | No | Source total collection records. |
| notice | No | Licence, namespace, business and document-access notices. |
| record | No | Complete selected source record with typed relationship pointers. |
| source | No | Actual selected official request provenance. |
| applied | No | Effective operation, page size and explicit source visibility. |
| filters | No | Complete normalized caller selection. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| guidance | No | Recovery for empty or missing selections. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further whole collection records remain. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| sourcePage | No | Source collection envelope metadata. |
| contentPage | No | Lossless recursive content continuation. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Original page-size request when capped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds real behavior beyond that: cursors must be followed with unchanged filters, contentCursor retrieves oversized records losslessly (and must be drained before advancing the collection cursor), memberships retain all role periods, and no document text is extracted. It does not discuss failure modes or error semantics for invalid ID/namespace combinations, but the added context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded well — the search-then-detail workflow leads — and every sentence is factual. But it is one undifferentiated paragraph of ten terse clauses with jargon (isInquiry, sourcePath, contentCursor) strung together, making it hard to scan for the mode an agent actually needs; the closing sentence about sourcePath is low-value density for most calls.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For 20 parameters across 9 modes with an output schema present, the description covers the routing, cursor discipline, ID namespaces, and scope exclusions an agent needs to invoke it correctly. Remaining gaps (rate limits, invalid-combination errors, expected empty results) are minor given full schema coverage and an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description earns above that by explaining parameter interdependencies the schema does not state as relationships — that evidenceId and evidenceType must be in the same namespace, that businessId is required for inquiry/evidence but merely an optional publication filter, and that personId is not the Members API memberId. It still leaves the evidenceType effect on evidence listing slightly implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Find Westminster committees") and immediately enumerates the multi-mode surface: detail, members, inquiries, publications, evidence. An agent can tell what the tool does and that it is a committee-scoped hub, and it is implicitly distinct from the bill/member/division siblings. It stops short of an explicit sibling differentiation statement (e.g., "for member biographies use ukparl_get_member instead of mode=members").
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The dominant usage decision for this tool is which mode to pick, and the description routes every one of them: mode=search to find, committeeId for detail/members/inquiries/publications, businessId+mode=inquiry for business detail, publicationId+mode=publication for report metadata, mode=evidence with businessId and evidenceType, mode=evidence_detail requiring evidenceId plus matching evidenceType. It also states a clear when-not ("No document downloads or text extraction") and a cross-API warning (personId vs Members API memberId).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_get_memberUkparl Get MemberARead-onlyIdempotentInspect
Retrieve a member profile, roles, committee seats, official contact information, registered interests or recorded voting history. Roles without category lists available biography categories; select category to page whole periods. Interests and voting require an explicit House. Committee person IDs differ from member IDs. Voting uses native 20-row pages and reports recorded lobby and teller facts, without lifetime participation metrics. Follow collection cursors with unchanged selectors; use contentCursor to reconstruct oversized records.
| Name | Required | Description | Default |
|---|---|---|---|
| house | No | Required for interests and voting; forbidden for other sections. | |
| limit | No | Requested whole rows; default 20, cap 50 for local histories. Voting uses native 20-row pages independently of limit. | |
| cursor | No | Opaque whole-item collection continuation with unchanged selectors. | |
| section | No | Selected member subsection; default profile. | profile |
| category | No | Roles only: select one complete biography collection. | |
| memberId | Yes | Members API decimal identifier from ukparl_search_members. | |
| contentCursor | No | Opaque same-selection lossless content continuation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective whole-item workload cap. |
| page | No | Continuation by actual emitted items. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Whether the parent member exists. |
| items | No | Whole selected source records tagged by kind. |
| links | No | Selected source relationship links. |
| shown | No | Actual whole items emitted in this collection page. |
| notice | No | Licence, coverage and workload notices. |
| record | No | Whole member profile or explicit role category outline. |
| source | No | Actual selected source request. |
| applied | No | Normalized selectors, source and effective workload. |
| section | No | Selected member subsection. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| guidance | No | Absence, uncertainty or same-server follow-up guidance. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| memberId | No | Canonical Members API identifier. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further whole collection items remain. |
| nativePage | No | Actual requested source voting page, starting at one. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Complete selected collection count when known. |
| contentPage | No | Lossless recursive content continuation. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| nativePageSize | No | Native voting page size, independent of caller limit. |
| requestedLimit | No | Caller limit when a cap or native-page rule applies. |
| membershipContexts | No | Source person metadata, including people with unavailable or empty membership collections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description discloses important behavior: voting uses native 20-row pages, reports lobby and teller facts, and omits lifetime participation metrics. It also explains cursor continuation rules and the existence of contentCursor for reconstructing oversized records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded and every clause carries operational meaning. It is somewhat semicolon-heavy and could be easier to scan, but it does not waste words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter tool with an output schema and rich annotations, the description covers all critical caller decisions: section selection, house applicability, role categories, cursor handling, and voting pagination. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is already 100%, the description adds cross-parameter semantics: house is required for interests/voting, category applies only to roles, and cursor continuation requires unchanged selectors. It also clarifies that voting pagination is independent of the limit parameter and that committee person IDs differ from member IDs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: retrieving a member profile and its subsections (roles, committee seats, contact, interests, voting). It clearly distinguishes the tool from list/search siblings by requiring a member ID and by enumerating member-specific subsections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage conditions: interests and voting require an explicit House, and roles need a category to page whole biography collections. It does not explicitly mention when to use this instead of ukparl_search_members, but the get-vs-search distinction is clear from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_lookup_referenceUkparl Lookup ReferenceARead-onlyIdempotentInspect
Resolve Parliament filter IDs and inspect source coverage before searching. Use identifiers for ID namespaces and required selectors, coverage for Hansard date limitations, or a named reference topic for filter IDs. Follow opaque collection cursors with the same filters; use contentCursor to reconstruct an oversized selected payload.
| Name | Required | Description | Default |
|---|---|---|---|
| house | No | Commons or Lords; required for active parties. | |
| limit | No | Requested whole reference rows; positive safe integer, default 10, effective cap 20. | |
| topic | Yes | Reference topic or static identifier/coverage guide. | |
| cursor | No | Opaque collection cursor; repeat the same normalized filters. | |
| nameContains | No | Case-insensitive AND tokens over the complete named reference set. | |
| contentCursor | No | Opaque same-selection recursive content continuation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective maximum whole reference rows per call. |
| page | No | Whole reference-row pagination. |
| error | No | Present when the call failed. Absent on success. |
| items | No | Complete named reference rows in the selected page. |
| shown | No | Actual whole reference rows selected for delivery. |
| topic | No | Selected reference topic on a full payload. |
| notice | No | Licence, coverage and workload notices. |
| applied | No | Normalized selection applied by this call. |
| sources | No | All requests that supplied the complete reference set. |
| coverage | No | Static typed historical coverage facts and official sources. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further reference rows remain after the selected page. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Known complete selected guide or reference row count. |
| contentPage | No | Lossless recursive content continuation. |
| identifiers | No | Static typed identifier namespaces and supported selections. |
| nameContains | No | Complete normalized AND-token filter, retained through content continuation. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Caller limit before an effective cap was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the description's value-add is the cursor lifecycle: 'Follow opaque collection cursors with the same filters; use contentCursor to reconstruct an oversized selected payload.' That explains pagination and reconstruction behavior beyond structured fields. It stops short of describing return shape, but the output schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core 'resolve/inspect before searching' purpose, then behavior. The phrase 'or a named reference topic for filter IDs' is slightly opaque, but overall there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters, full schema coverage, an output schema, and read-only annotations, the description covers the missing behavioral layer (cursor/reconstruction semantics). It is complete enough to invoke correctly, with only minor ambiguity around reference topics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds operational meaning to the cursors: cursor requires repeating the same normalized filters, and contentCursor reconstructs an oversized payload. That is genuine meaning beyond the schema's one-line parameter descriptions, justifying a bump.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb+resource pair ('Resolve Parliament filter IDs and inspect source coverage') and positions the tool as a pre-search reference, which distinguishes it from the sibling search/get tools. It is clear what the tool does, though the dense enumeration in the second sentence muddies the core purpose slightly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames usage as 'before searching' and maps topic choices to situations ('identifiers for ID namespaces and required selectors, coverage for Hansard date limitations, or a named reference topic for filter IDs'). This gives an agent clear selection context, though there are no explicit when-not-to-use exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_search_billsUkparl Search BillsARead-onlyIdempotentInspect
Search Westminster bill summaries by title, current or originating House, session, sponsoring member, department, reference stage, bill type or status, with optional official ordering. Use ukparl_lookup_reference for stage/type/department IDs and ukparl_get_bill for complete selected records. Department IDs are distinct from answering-body IDs. inAmendableStage=true restricts to amendable stages; false is unrestricted. No session or date scope is inferred. Follow collection cursors with the same filters; use contentCursor to reconstruct an oversized item.
| Name | Required | Description | Default |
|---|---|---|---|
| house | No | Current Commons or Lords House. | |
| limit | No | Requested bills; positive safe integer, default 10, effective cap 20. | |
| query | No | Bill title search text. | |
| cursor | No | Opaque collection continuation; preserve filters. | |
| memberId | No | Sponsoring member identifier. | |
| stageIds | No | Reference stages, distinct from bill-specific stage IDs. | |
| sessionId | No | Session identifier discovered in bill records. | |
| sortOrder | No | Official ordering; omission preserves the source default. | |
| isDefeated | No | Filter by defeated state, including false. | |
| billTypeIds | No | Reference bill types. | |
| isWithdrawn | No | Filter by withdrawn state, including false. | |
| departmentId | No | Members department ID from ukparl_lookup_reference topic=departments; distinct from answering-body IDs. | |
| contentCursor | No | Opaque same-selection lossless content continuation. | |
| inAmendableStage | No | True restricts to amendable stages; false applies no restriction. | |
| originatingHouse | No | Originating Commons or Lords House; omission includes all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective per-call collection limit. |
| page | No | Actual whole-item pagination. |
| error | No | Present when the call failed. Absent on success. |
| items | No | Complete source bill summaries on this page. |
| query | No | Complete normalized query text, also reconstructed through content continuation. |
| shown | No | Actual whole records emitted or selected for lossless reconstruction. |
| notice | No | Licence and empty/workload notices. |
| applied | No | Normalized filters; no implicit current-session scope. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further source matches remain after this selected page. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Source total matches. |
| contentPage | No | Lossless recursive content continuation. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Caller limit before clamping. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and open-world semantics. The description adds real operational context beyond them: no implicit session/date scoping, cursor continuation must retain filters, and contentCursor is a lossless same-selection continuation. It does not cover output shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then routes to siblings, then caveats. Dense but each sentence carries information; there is minor redundancy (department/answering-body distinction appears twice) but nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, all-optional search with a full output schema and safety annotations already present, the description supplies what's missing: sibling routing, the absence of implicit scoping, and pagination/oversized-item handling. An agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-field meaning: department IDs are distinct from answering-body IDs, inAmendableStage=false means unrestricted (not 'non-amendable'), and originatingHouse omission includes all. Some of this duplicates schema text, but the clarifications genuinely reduce misuse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') on a specific resource ('Westminster bill summaries') and enumerates the filterable dimensions (title, house, session, sponsor, department, stage, type, status). It explicitly distinguishes itself from ukparl_get_bill (full records) and ukparl_lookup_reference (ID resolution), so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: use ukparl_lookup_reference for stage/type/department IDs and ukparl_get_bill for complete records. It also states that no session/date scope is inferred, how to follow collection cursors (preserve filters), and how contentCursor reconstructs oversized items — concrete when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_search_divisionsUkparl Search DivisionsARead-onlyIdempotentInspect
Search official Commons or Lords division summaries, or use detail, voters or party_totals with a divisionId from the same House. Search supports title/number text, member and inclusive division dates; member searches include memberVote with the recorded House-native lobby and teller flag. Detail preserves complete metadata and teller identities, with roster selectors for voters mode. Voters can filter exact source party labels and House-compatible lobbies. not_recorded means only the source list, never abstention. Party totals count listed non-tellers and tellers separately from official headline counts. Follow collection cursors with unchanged filters; reconstruct oversized content using contentCursor.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Operation; defaults to search; accepts case-insensitive canonical mode names. | search |
| house | Yes | Selected House and division ID namespace. | |
| limit | No | Positive safe integer; search default 5/cap 10, voters default 20/cap 50; detail and party_totals do not paginate. | |
| lobby | No | Voters only: Commons aye/no/not_recorded or Lords content/not_content. | |
| party | No | Exact case-insensitive source party label; voters only, not a party ID. | |
| query | No | Division title or number search text; search mode only. | |
| cursor | No | Opaque search/voters collection continuation; repeat the same filters. | |
| endDate | No | Inclusive source division-date upper bound; search only. | |
| memberId | No | Members API ID; search returns this member's recorded lobby and teller flag, including divisions where they were a teller. | |
| startDate | No | Inclusive source division-date lower bound; search only. | |
| divisionId | No | Division ID in the selected House; required outside search. | |
| contentCursor | No | Opaque same-selection lossless content continuation, separate from collection cursor. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | Selected division operation. |
| page | No | Actual emitted whole-row collection continuation. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Selected division existence; absent in search mode. |
| house | No | House scoping division IDs. |
| items | No | Explicit search summaries without full roster arrays. |
| notice | No | Licence, coverage, empty-result and workload notices. |
| record | No | Complete selected division metadata, teller identities and roster selectors. |
| source | No | Actual selected API request provenance. |
| voters | No | Whole deduplicated selected voter rows, including tellers. |
| applied | No | Required normalized operation and actual workload metadata. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| guidance | No | Actionable recovery for a missing division or unavailable complete roster. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| selection | No | Complete normalized filters retained through content delivery. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Known selected collection total; search arrays do not supply a total. |
| truncation | No | Further collection rows remain; follow page.nextCursor. |
| contentPage | No | Lossless recursive content continuation. |
| partyTotals | No | Complete roster-derived party/lobby non-teller and teller counts. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Caller limit when clamped to the operation cap. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, so the bar is lower, yet the description adds real semantic caveats: 'not_recorded means only the source list, never abstention', party totals count non-tellers and tellers separately from headline counts, and detail preserves teller identities. It does not cover error behavior or cross-House mismatch consequences, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the search case correctly and has no filler, but it is a single semicolon-chained run-on that packs mode routing, caveats, and cursor rules together, making it harder to parse than a short bulleted structure would be. Terms like 'roster selectors' and 'memberVote' are introduced without explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, 4-mode tool with an output schema, the description covers mode selection, required divisionId, cursor vs contentCursor distinction, and data-interpretation quirks across all modes. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds meaning by tying memberId results to memberVote with the recorded lobby and teller flag, clarifying party is an exact source label 'not a party ID', and explaining that divisionId must come from the same House. That is genuine value beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search official Commons or Lords division summaries') and enumerates the four operation modes (search, detail, voters, party_totals). The resource noun (division summaries) implicitly separates it from siblings like search_hansard or search_bills, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear per-mode routing: text/date/member filtering for search, and 'use detail, voters or party_totals with a divisionId from the same House'. Also states the operational rules for cursors ('Follow collection cursors with unchanged filters'). No explicit when-not-to-use or named alternatives among the ukparl_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_search_hansardSearch spoken HansardARead-onlyIdempotentInspect
Search spoken Westminster Hansard contributions by topic, member, House, date or numeric debateSectionId. Returns full source contribution text where supplied, including HTML; previews are labelled summaries. Repeat with a returned debateSectionId to search that section, which does not establish an entire debate transcript. Historical completeness is not guaranteed, including the 2004–2006 website warning despite some API records. Use ukparl_lookup_reference topic=coverage for archive guidance. Follow collection cursors unchanged and contentCursor for lossless oversized contributions; retry timeouts with shorter date windows.
| Name | Required | Description | Default |
|---|---|---|---|
| house | No | Commons or Lords; exact official House aliases are accepted. | |
| limit | No | Requested whole contributions; default 5, effective cap 20 with notice. | |
| query | No | Spoken contribution search text; no date range is inferred. | |
| cursor | No | Opaque collection continuation; repeat the same filters and effective limit. | |
| endDate | No | Inclusive latest sitting date, real YYYY-MM-DD; must not precede startDate. | |
| memberId | No | Members API identifier discovered with ukparl_search_members. | |
| startDate | No | Inclusive earliest sitting date, real YYYY-MM-DD; no inferred archive cutoff. | |
| contentCursor | No | Opaque lossless content continuation; preserve original selection and collection cursor. | |
| debateSectionId | No | Returned numeric debateSectionId, distinct from external debate IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Actual collection workload cap. |
| page | No | Actual emitted whole-item continuation, independent of content delivery. |
| error | No | Present when the call failed. Absent on success. |
| items | No | Whole Spoken contributions in source search order. |
| query | No | Complete normalized search text, reconstructable during content delivery. |
| shown | No | Whole contributions emitted or selected for reconstruction. |
| notice | No | Licence, coverage, missing-text, empty-result and clamped-limit guidance. |
| source | No | Exact official Spoken request provenance, including empty pages. |
| applied | No | Normalized filters and actual workload. |
| coverage | No | Historical source facts; samples never establish complete coverage. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further whole contributions remain; follow the collection cursor. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Source TotalResultCount. |
| contentPage | No | Lossless recursive content continuation. |
| searchTerms | No | Source parsed terms, including explicit null. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Original request when above the workload cap. |
| spokenResultCount | No | Source SpokenResultCount, distinct from total matches. |
| writtenResultCount | No | Source WrittenResultCount metadata. |
| divisionsResultCount | No | Source DivisionsResultCount metadata. |
| correctionsResultCount | No | Source CorrectionsResultCount metadata. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld/idempotent annotations by disclosing that full contribution text including HTML is returned, that previews are labelled summaries, that debateSectionId does not yield a whole debate transcript, and that historical coverage has a 2004–2006 gap. It also specifies cursor disciplines (collection cursor unchanged, contentCursor for lossless oversized contributions), which is exactly the operational detail annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose lands in the first sentence and each subsequent sentence carries distinct information with no filler. The final sentence packs cursor and retry rules together, which is dense but still readable, so it falls just short of ideal structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, zero-required search tool with an output schema and full annotation coverage, the description supplies the remaining essentials: archive completeness caveats, sibling routing for coverage questions, pagination/continuation rules, and result-shape expectations. Nothing an agent needs in order to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics on top: it explains how cursor must be replayed with identical filters, what contentCursor is for, and how debateSectionId is used across repeated calls. Date-window narrowing on retry also gives practical meaning to startDate/endDate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb plus resource (search spoken Westminster Hansard contributions) and enumerates the available facets (topic, member, House, date, debateSectionId). The word 'spoken' cleanly separates it from siblings like ukparl_search_questions and ukparl_search_divisions without the agent needing to open another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating guidance: repeat with a returned debateSectionId to drill into a section, consult ukparl_lookup_reference topic=coverage for archive questions, and retry timeouts with shorter date windows. It doesn't explicitly state when to prefer a sibling such as ukparl_search_questions over this tool, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_search_membersUkparl Search MembersARead-onlyIdempotentInspect
Find MPs and peers by name, location or constituency, party, House, and current or historical membership. currentOnly=false includes current and former members. asOf selects historical membership and accepts name only, without House, party or location filters. Search results preserve latest profile fields; retrieve sections with ukparl_get_member. Follow opaque cursors with unchanged filters and use contentCursor for oversized records.
| Name | Required | Description | Default |
|---|---|---|---|
| asOf | No | Historical membership on YYYY-MM-DD; only name and pagination may accompany it. | |
| name | No | Name substring; omission searches all names. | |
| house | No | Filter most recent House; unavailable with asOf. | |
| limit | No | Requested whole members; default 10, cap 20; safe over-cap integers are clamped. | |
| cursor | No | Opaque collection cursor for the same filters. | |
| partyId | No | Party ID; active reference parties do not exhaust historical IDs. | |
| currentOnly | No | True restricts to current members; false includes former and current. | |
| constituency | No | Source location or constituency text, not exact equality. | |
| contentCursor | No | Same-selection lossless content continuation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective member workload cap. |
| mode | No | Modern or dated historical search. |
| page | No | Collection continuation by actually emitted records. |
| error | No | Present when the call failed. Absent on success. |
| items | No | Whole summary member records. |
| query | No | Complete normalized filters and membership-date semantics. |
| shown | No | Actual whole members emitted. |
| notice | No | Licence, historical scope and workload notices. |
| source | No | Actual official search request. |
| applied | No | Effective source and workload; full filters stay in /query. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| guidance | No | Empty-result recovery guidance. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further whole member results remain. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| totalCount | No | Source total before paging. |
| contentPage | No | Lossless recursive content continuation. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Original request when capped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and openWorld behavior, so the description's job is to add call-specific behavior. It does so by noting that results preserve latest profile fields, that cursor continuation requires unchanged filters, and that contentCursor handles oversized records. Those are valuable operational details beyond the annotations, though it could say more about result ordering or partial-match behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core purpose and immediately followed by the two most consequential parameter behaviors and the retrieval alternative. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover safety and an output schema exists, so the description need not explain return values. It still covers the operational edges an agent needs: historical queries, cursor stability, oversized records, and the handoff to ukparl_get_member.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 100%, the baseline is 3. The description restates the asOf restriction and cursor invariants that the schema already documents for those parameters, adding little new semantic detail beyond consolidation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Find MPs and peers') and enumerates the searchable dimensions. It also explicitly names the retrieval sibling ukparl_get_member, so an agent can distinguish search from fetch without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use this tool versus ukparl_get_member ('retrieve sections with ukparl_get_member') and gives explicit behavioral rules for currentOnly, asOf, and cursor reuse. The asOf exclusion ('accepts name only, without House, party or location filters') tells the agent exactly how to avoid an invalid combination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ukparl_search_questionsSearch written questionsARead-onlyIdempotentInspect
Search Westminster written questions and answer previews by text, exact UIN, asking or answering member, House, answering body, answer state and dates. An undated UIN returns candidates across sessions; narrow with tabling dates and retrieve mode=detail with a returned questionId for complete question and answer HTML, corrections and attachment links. A UIN is not a questionId and never determines House. Search includes all sessions and withdrawn questions. Follow collection cursors unchanged; use contentCursor for lossless oversized answers.
| Name | Required | Description | Default |
|---|---|---|---|
| uin | No | Exact UIN lookup string, such as 36068 or HL1234; preserves leading zeros. Search only; combine with tabling dates to narrow reused UINs. | |
| mode | No | Search previews or retrieve one complete question. | search |
| house | No | Commons or Lords; search only. | |
| limit | No | Search page size, default 10, cap 20; larger safe integers are capped. Omit in detail. | |
| query | No | Question or answer content terms; search only. | |
| cursor | No | Opaque search continuation; repeat unchanged filters. | |
| answered | No | True answered, false unanswered, omission either; search only. | |
| memberId | No | Asking Members API ID; search only. | |
| tabledTo | No | Inclusive tabling end YYYY-MM-DD; search only. | |
| answeredTo | No | Inclusive answer end YYYY-MM-DD; search only. | |
| questionId | No | Positive decimal Questions API ID required in detail; UIN is not this ID. | |
| tabledFrom | No | Inclusive tabling start YYYY-MM-DD; search only. | |
| answeredFrom | No | Inclusive answer start YYYY-MM-DD; search only. | |
| contentCursor | No | Opaque lossless content continuation for this same selection. | |
| answeringBodyIds | No | Up to 20 answering-body IDs resolved through ukparl_lookup_reference; search only. | |
| answeringMemberId | No | Answering Members API ID; search only, independent of asking memberId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective search page-size cap. |
| mode | No | Selected question operation. |
| page | No | Whole-question search continuation. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Detail lookup success; false requires guidance. |
| items | No | Selected search page; never automatically hydrated. |
| shown | No | Actually emitted whole search results. |
| total | No | Upstream total when known. |
| notice | No | Licence, preview and workload notices. |
| record | No | Complete selected question including answer HTML and attachments metadata. |
| source | No | Actual selected official request. |
| applied | No | Effective filters, explicit upstream scope and date semantics. |
| filters | No | Complete normalized selection filters. |
| delivery | No | Full selected payload, child outline, or JSON fragment. |
| guidance | No | Same-tool recovery for missing or empty selections. |
| identity | No | Stable selected-record identifiers retained during content retrieval. |
| retrieval | No | Same-tool retrieval instruction. |
| truncated | No | Further whole search results remain. |
| provenance | No | Selected response provenance retained during content retrieval; source notices remain in the reconstructed payload. |
| questionId | No | Selected Questions API ID. |
| contentPage | No | Lossless recursive content continuation. |
| collectionPage | No | Collection continuation; reconstruct the outlined selected payload before following it. |
| requestedLimit | No | Original page-size request when capped. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description adds real behavior beyond them: search spans all sessions and includes withdrawn questions, undated UIN lookups are ambiguous and return multiple candidates, and contentCursor exists for lossless oversized answers. It does not discuss error behavior or result ordering, but the scope and cursor semantics are meaningful disclosures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and facets, then moom into mode/UIN and cursor rules with no filler sentences. Dense but each clause carries an operational instruction; slightly packed, with four distinct rules in the middle sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 16 optional parameters, two modes, an output schema and complex cursor/pagination behavior, the description covers what an agent needs: how to pick a mode, how to disambiguate UINs, how to handle paging, and where to get full content. Output format details are correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds semantics the schema alone does not convey: the UIN/questionId distinction, that a UIN never determines House, and that answeringMemberId is independent of memberId. Cursor handling (follow collection cursors unchanged, use contentCursor for oversized answers) further clarifies two of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Search Westminster written questions and answer previews') and enumerates the searchable facets: text, UIN, asking/answering member, House, answering body, answer state and dates. It also distinguishes the detail mode, which separates it from the pure search siblings like ukparl_search_hansard.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational guidance: an undated UIN returns candidates across sessions, so narrow with tabling dates; switch to mode=detail with a returned questionId for full HTML, corrections and attachments. It also states the exclusion rule that a UIN is not a questionId and never determines House, and gives cursor handling instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
ukparl_get_bill - First observed
ukparl_get_committee - First observed
ukparl_get_member - First observed
ukparl_lookup_reference - First observed
ukparl_search_bills - First observed
ukparl_search_divisions - First observed
ukparl_search_hansard - First observed
ukparl_search_members - First observed
ukparl_search_questions
Related MCP Connectors
Search Parliamentary questions and motions from UK House of Commons
Search MPs and Lords, fetch profiles, synopses, and Westminster constituencies
Search UK Acts, Statutory Instruments, and legislation with full text retrieval
Search Swiss parliamentary business, votes, debates, members, and declared interests.
71
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying UK Parliament data including MPs, Lords, bills, Hansard debates, and divisions.6 npmMIT
- AlicenseAqualityDmaintenanceProvides access to live UK Parliament data including bills, votes, MP profiles, and financial interests without requiring an API key. It enables users to track parliamentary rebellions, search petitions, and cross-reference voting records with declared financial interests.54 npm9MIT
- AlicenseNot gradedqualityAmaintenanceEnables searching and reading UK legislation as it stands now, as enacted, or on any date, resolving citations to canonical items and provisions, listing amendments and effects, and tracking daily changes via the legislation.gov.uk publication log.36 npm2Apache 2.0
- AlicenseNot gradedqualityAmaintenanceSearch bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories via MCP.115 npm2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.