Skip to main content
Glama
ChrisBrooksbank

UK Parliament MCP Server

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

GitHub: ChrisBrooksbank/uk-parliament-data-mcp

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

MCP Server for AI Assistants

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

Prefer the terminal? See the CLI demo.

Related MCP server: PoetryQuill Analytics MCP

Table of Contents

Getting Started

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

Step 2: Start a parliamentary research session:

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

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

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

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

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

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

Parliament Research Skill (Claude Code)

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

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

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

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

Claude Desktop Setup

  1. Open Claude Desktop

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

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

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

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

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

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

VS Code Setup

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

  2. Select MCP: Add Server

  3. Choose Command: Stdio

  4. Enter: uvx uk-parliament-mcp

  5. Press Enter

Start the Server

  1. Press Ctrl+Shift+P again

  2. Select MCP: List Servers

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

First Interaction

  1. Open Copilot Chat in VS Code

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

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

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

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

  6. Accept any permission request to allow the MCP call

What Can I Ask?

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

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

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

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

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

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

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

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

  • Official Documents: "Are there any statutory instruments about housing?" or "What treaties involve trade agreements?"

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

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

Power Tools

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

Tool

What it does

search_parliament(query)

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

get_mp_profile(member_id)

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

check_mp_vote(member_id, topic)

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

compare_member_votes(member_id_a, member_id_b, topic)

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

get_member_bills(member_id)

Bills a member has sponsored

get_bill_overview(search_term)

Full bill info: details, stages, publications

get_bill_committees(bill_id)

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

get_committee_summary(topic)

Committee overview: evidence, publications

get_committee_bills(committee_id)

Bills a committee has scrutinised

get_my_mp(postcode, topic)

Find MP by UK postcode with full profile

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

Example:

Tell me everything about Keir Starmer

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


Prompting Tips

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

โœ… Initialize Your Session

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

๐Ÿ”„ Clear Context

Use the + icon (new chat) if:

  • The AI seems stuck in a loop

  • You want to reset the conversation context

๐Ÿ”— Re-Display the API URL

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

You can ask:

Show me the API URL you just used.

Example response:

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

๐Ÿง  Combine Data from Multiple Sources

Example:

Has Chelmsford been mentioned in either the Commons or Lords?

The AI may:

  • Query both Commons and Lords Hansard

  • Combine the results

  • Offer more detail if requested

๐Ÿงพ See the Raw JSON

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

Example prompt:

Show me the JSON returned from the last MCP call.

Example Prompts

  • What is happening now in both Houses?

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

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

  • Show me the interests of Sir Keir Starmer

  • Tell me about Boris Johnson's parliamentary career

  • Look up the MP with ID 1471

  • Show me the biography for member 172

  • Show me contact details for member 4129

  • What are the registered interests of member 3743?

  • What speeches has member 172 made recently?

  • Show me how member 4129 has voted in the Commons

  • Show me how member 3743 has voted in the Lords

  • What was member 1471's career before Parliament?

  • What policy areas does member 172 focus on?

  • What early day motions has member 1471 signed?

  • Get the constituency election results for member 4129

  • Show me photos of member 172

  • What bills about fishing are currently before Parliament?

  • What bills were updated recently?

  • Show me details of bill 425

  • What stages has bill 425 been through?

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

  • Show me amendment 1234 for bill 425 stage 15

  • What publications exist for bill 425?

  • What news articles are there about bill 425?

  • Show me all bill types available

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

  • Find bills related to the environment

  • Get the RSS feed to track all bills

  • Get the RSS feed for public bills

  • Get the RSS feed for bill 425

  • How have MPs voted on refugee-related issues?

  • Show details of Commons division 1234

  • Show details of Lords division 5678

  • Show how parties voted on climate issues in the Commons

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

  • How many votes have there been on Brexit?

  • What written questions have MPs asked about climate change?

  • Show me unanswered written questions to the Home Office

  • Find written questions about the NHS from the last month

  • Get details of written question 12345

  • What written ministerial statements were made about the budget?

  • Search for written statements about housing policy

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

  • Has any MP asked written questions about artificial intelligence?

  • Which committees are focused on women's issues?

  • What committee meetings are scheduled this month?

  • Show me details of committee 789

  • What hearings has committee 789 held?

  • Who are the members of committee 789?

  • Find committee reports on healthcare

  • What written evidence was submitted to committee 789?

  • What oral evidence was given to committee 789?

  • What are all the committee types?

  • Search Hansard for recent debates on Brexit

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

  • Show me the full transcript of debate abc123-def456

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

  • Were there any votes during the NHS funding debate?

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

  • Which days in January 2024 had Commons sittings?

  • Show me all speeches by member 4514 in debate xyz789

  • Search Erskine May for references to the Mace

  • What oral question times are coming up?

  • What government departments exist?

  • What are the answering bodies in Parliament?

  • What parties are represented in the House of Commons?

  • What parties are represented in the House of Lords?

  • What's on the Commons calendar this month?

  • When are the upcoming parliamentary recesses?

  • What are the procedural rules for bill amendments?

  • List all UK constituencies

  • Show the election results for constituency 4359

  • Search for constituencies containing "london"

  • List all categories of members' interests

  • Get published registers of interests

  • Show staff interests declared by Lords members

  • Search the register of interests for member 1471

  • Are there any statutory instruments about harbours?

  • Search Acts of Parliament that mention roads

  • What treaties involve Spain?

  • What publication types are available for bills?

  • Show me document 123 from publication 456

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

  • Show me the JSON returned from the last MCP call

  • Show me the API URL you just used

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

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


CLI Usage

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

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

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

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

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

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

On Windows, just run the .exe directly:

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

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

Install โ€” pip (Alternative)

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

pip install uk-parliament-mcp

Quick Start

# Search for an MP
parliament members search "Keir Starmer"

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

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

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

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

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

Common Commands

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

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

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

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

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

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

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

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

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

# Erskine May procedure rules
parliament procedures search "closure"

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

# Live dashboard with auto-refresh
parliament watch

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

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

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

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

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

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

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

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

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

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

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

Daily/Weekly Digest

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

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

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

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

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

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

The rich output includes:

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

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

  • Hansard debates linked to hansard.parliament.uk

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

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

My MP Lookup

Find your MP by postcode with a single command:

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

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

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

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

API Explorer

Browse and search the Parliament API catalogue interactively:

# List all Parliament APIs
parliament api list

# Show endpoints for a specific API
parliament api endpoints members

# Get full details for an API
parliament api detail members

# Search across all APIs
parliament api search "bill"

# Show OpenAPI schema for an API
parliament api schema members

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

CLI Reference

View the full command reference without leaving the terminal:

# Overview of all command groups
parliament reference

# Detailed view of a specific group
parliament reference members

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

# Export as JSON
parliament reference --format json

Output Formats

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

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

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

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

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

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

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

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

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

Global flags:

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

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

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

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

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

URL Transparency

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

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

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

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

Help System

# Show all command groups
parliament --help

# Show commands in a group
parliament members --help

# Show command details
parliament members search --help

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

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

# Get tool reference
parliament guide tools

# Get detailed domain guidance
parliament guide topic members

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

Available help topics:

  • composite - High-level tools combining multiple API calls

  • members - MPs, Lords, constituencies, parties

  • bills - Legislation, amendments, stages

  • votes - Commons and Lords divisions

  • committees - Committee info, meetings, evidence

  • hansard - Parliamentary record

  • questions - Oral questions, written questions, EDMs

  • interests - Register of interests

  • live - Current activity and calendar

  • legislation - SIs and treaties

  • procedures - Erskine May procedure rules


Alternative Installation Methods

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

Which Method Should I Use?

Method

Best For

Pros

Cons

Standalone executable

Non-technical users, quick setup

Zero prerequisites, single file download

Manual updates, larger file size

uvx uk-parliament-mcp

MCP server users

No install needed, always latest version

Requires uvx installed

pip install uk-parliament-mcp

Python developers

Stable, version locked, CLI + MCP server

Requires Python 3.11+

Local development install

Contributors

Full source access, can modify

More complex setup

Using pip install

Install the package globally:

pip install uk-parliament-mcp

Then configure your AI client:

Claude Desktop:

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

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

Installation from Source

For development or to get the latest unreleased changes:

Prerequisites

Clone and Install

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

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

# Install the package
pip install -e .

Configure for Local Development

Claude Desktop:

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

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

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

Contributing

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

Available Tools

210 tools
bill_stagesB

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

    Returns:
        All bill stages with descriptions.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it does establish that this is a static, exhaustive reference set (all possible stages) rather than a per-bill query, which is the key behavioral fact. It says nothing about caching, stability of the list, or how the order of stages relates to the legislative sequence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence and the description is short with no filler. The trailing 'Returns: All bill stages with descriptions' is mild padding given an output schema already exists, but it costs almost nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter lookup with a full output schema, the description is sufficient: purpose, an example of the values, and confirmation that descriptions accompany the stages. The only real gap is failure to disambiguate from get_bill_stages, which sits in the sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate โ€” baseline 4 applies. The parenthetical examples (First Reading, Committee Stage, Royal Assent) give useful flavor about what the returned stage values look like.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource โ€” 'Get all possible stages a bill can go through' โ€” and the word 'possible' signals this is the reference taxonomy rather than instance data. However, it never names or distinguishes itself from the closely-named siblings get_bill_stages and bill_types, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when tracking bill progress' is loosely worded and arguably points an agent at instance-level tools like get_bill_stages; no alternatives, exclusions, or preconditions are stated. The only real guidance is the parenthetical process example, which is illustrative rather than directional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full load. It notes that all bill types are returned with descriptions, implying this is a complete, safe, reference-style read. But it does not state that the tool takes no parameters or that results are static, which would fully close the behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded purpose followed by a usage cue and a Returns block. Slightly more verbose than necessary for a zero-parameter reference tool, but no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to spell out return fields, and the Returns line covers the shape at a high level. For a simple zero-param reference tool this is close to complete, though it omits any note about the enumeration being fixed/static.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Parameter count is 0, so the baseline is 4. Schema coverage is 100% and there is nothing for the description to disambiguate; no evidentiary basis to deduct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('types of bills'), with concrete examples (Government Bill, Private Member's Bill) so the agent knows exactly what is returned. Distinguishes itself from siblings like get_bill_by_id or search_bills by being a reference/enumeration lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage context: 'Use when you need to understand different categories of legislation.' This tells the agent when to reach for it, though it doesn't name an alternative or note when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
start_letterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose pagination mechanics (skip/take) and the shape of the return, which is useful, but says nothing about permissions, rate limits, or that the operation is a safe read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded pipe-delimited summary followed by Args/Returns. Efficient, though the Returns line is somewhat redundant given an output schema exists and repeats the purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple paginated browse tool with an output schema, the description covers parameters and behavior adequately. It need not explain return values since an output schema exists, and nothing essential to invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: start_letter is documented as A-Z or None for all, skip as pagination offset with default 0, take as result count with default 30. All three parameters gain meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (browse) and resource (Erskine May index), plus the alphabetical scope, which distinguishes it from search-style siblings. It does not explicitly name search_erskine_may_index as the contrasting tool, but the 'browsing alphabetically' framing makes the purpose legible.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to discover topics by browsing alphabetically' gives implied context for when this tool is appropriate versus a search. However, it never names the obvious alternative (search_erskine_may_index) or states an exclusion, so the guidance stays at the implied level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
location_nameYes
location_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does disclose the return shape (list of matching parent/child locations). However, it says nothing about read-only semantics, permissions, pagination, or result limits, which is a meaningful gap for a browse tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and useful, but the pipe-delimited keyword string ('location browse, constituency type, country region') is filler, and the 'Returns' line duplicates the opening sentence's return description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not detail return values, and it covers both required parameters with examples plus the hierarchical scope. Adequate for a two-parameter browse tool; only behavioral caveats (limits, matching mode) are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: location_type is given concrete example values ('Constituency', 'Country', 'Region') and location_name is identified as the name to browse. The only omission is whether matching is exact or partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (browse) and resource (locations) and describes the return shape ('parent and child locations'). It is distinguishable from sibling location tools such as get_constituencies or get_calendar_locations, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when exploring the location hierarchy (e.g. countries, regions, constituencies)' gives a clear triggering context. It stops short of stating when NOT to use it or which sibling to prefer for flat lookups, so it is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo
topicYes
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the tool composes get_member_by_id with the House-appropriate voting-record call, and that Lords votes return Content/Not Content rather than Aye/No. It omits error/edge behavior (e.g., unknown member_id, no matching divisions) and any rate-limit or auth notes, which keeps it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded: purpose, then trigger, then composition, then args, then returns. It is efficient, but the keyword-stuffed synonym line ('MP voting stance, how did MP vote, voting record on topic, division lookup, aye or no') is redundant padding that does not aid selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a composite tool over three parameters with an output schema present, the description covers what the tool does, when to use it, how it resolves the member's House, and what the caller must supply first. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: member_id is explained as a Parliament member ID obtainable from member search with a concrete example (4514), topic is defined as a keyword matched against division titles with examples, and take is given a default and a max (25/100) that the bare schema lacks. Every parameter gains meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Check how an MP or Lord voted on a topic') and immediately clarifies scope: it combines member lookup with division votes, covering both Houses. The 'See also' clause names compare_member_votes and search_commons_divisions, letting an agent distinguish it from the closest siblings 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear trigger condition ('Use when you need to know how a specific member voted on a particular issue') and points to alternatives via 'See also'. It does not state when NOT to use it or when compare_member_votes/search_commons_divisions would be the better pick, so it falls short of explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo
topicNo
member_id_aYes
member_id_bYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the composite implementation (combines get_member_by_id x2 and the voting-record calls x2), the same-House constraint on member_id_b, and the full return shape (agreement counts/rate, shared divisions, single-member divisions). It omits read-only/permission context and any rate-limit or cost notes, keeping it short of 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the Args/Returns sections are well organized, but the keyword block ('compare voting records, do they agree, voting similarity, rebels, party loyalty, head to head') is SEO-style padding that restates the same idea several times without adding selection signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a comparison tool whose output schema already documents the return values, the description supplies everything an agent needs to call it correctly: both IDs, the same-House constraint, topic filtering, and the take window, plus the composite-call behavior. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it does fully: it explains member_id_a's source and gives a concrete example (4514), states member_id_b's same-House requirement, defines topic with matching examples, and specifies take's default (50) and max (100).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Compare how two MPs ... voted - lines up their votes division by division') and names the sibling tools it is not (check_mp_vote, get_commons_divisions_grouped_by_party). An agent can distinguish this from the single-member voting-record tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when asked whether two members vote the same way, overall or on a topic') and routes to related siblings via 'See also'. It stops short of stating when NOT to use it or listing alternative tools the agent should prefer in edge cases, so it is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the shape of the result ('List of Early Day Motions signed by the member') and the 'all' scope, implying an exhaustive read, but says nothing about pagination, result limits, session coverage, or whether the MP must be current all relevant for a signatures listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and routing sentence are front-loaded with zero waste. The trailing 'Returns' block is mildly redundant given an output schema exists, but the overall block is short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema present, the description covers purpose, use case, alternative, parameter meaning, and result type. The remaining gap is how the caller sources member_id and whether results are scoped to a session or all time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single member_id parameter. It identifies the parameter as a 'Parliament member ID', which is better than raw schema, but gives no format hint or pointer to a lookup tool (e.g., get_member_by_name / search_members) for obtaining the ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (Early Day Motions), and scope (signed by a specific MP), which is exactly the discriminating detail against the sibling search_early_day_motions. An agent can tell what this returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the use case ('when you want to see what issues a particular member has supported or their political priorities through EDM signatures') and points to the alternative, search_early_day_motions. It stops short of stating when NOT to use it (e.g., no per-member filtering needed, or wanting EDM text rather than signature lists).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
act_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it discharges almost none of it: no indication of error behavior for an unknown ID, no permission/auth requirements, no note on whether the returned detail set is stable. 'Returns Act details' is a restatement, not disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The same idea is restated four times across the description ('Get Act details', 'Get full details of an Act of Parliament', 'Returns Act details', 'Full Act details') against a one-line tool. Keyword-stuffing for search rather than front-loaded information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema that already defines return values, the description plus schema cover the mechanics adequately. It is still missing sibling routing and error semantics, but those are not fatal here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate โ€” and it does partially, telling the agent the act_id is an 'alphanumeric string from search results', which supplies both format and provenance. It stops short of a format example or a pointer to the exact search tool that yields it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get full details of an Act of Parliament'), so the agent knows it retrieves a single Act by ID. However, it never distinguishes itself from the sibling search_acts_of_parliament, leaving the agent to infer the lookup-vs-search split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the sibling search tool that produces the act_id. The only hint is the parenthetical '(alphanumeric string from search results)', which implies a search-then-fetch flow but never states it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Get RSS feed' implies a read-only operation, but the description does not explicitly state that it has no side effects, nor does it disclose caching, format, or authentication behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose. However, the 'Returns:' section repeats the first sentence nearly verbatim, adding redundant text without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple no-param shape and the existence of an output schema, the description covers what the tool does. But in a toolset with several similar RSS siblings, it fails to help an agent choose this one over get_public_bills_rss, get_private_bills_rss, or get_bill_rss.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the input schema is empty. Per the rubric, zero parameters yields a baseline of 4; the description does not need to add parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get RSS feed of all bills.' The scope 'all bills' implicitly distinguishes it from public, private, and per-bill RSS siblings, but it does not name or explicitly contrast with those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a generic use condition: 'Use when you want to stay updated on all legislative activity through RSS feeds.' It does not say when to choose this over get_public_bills_rss, get_private_bills_rss, or get_bill_rss, nor does it provide any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes
amendment_idYes
bill_stage_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the burden; the 'Get' verb implies a read-only operation, but the definition never states permissions, that it is non-mutating, or any error/not-found behavior. It does add the field inventory of the response, which is modestly useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose well in one sentence, but the Args/Returns boilerplate largely duplicates the input schema and the existing output schema, so it does not fully earn its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed; the description adequately conveys that this is a single-item detail fetch. However, with zero annotation and zero schema description coverage, the definition leaves the agent under-informed about the three required parameters and read-only safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three integer parameters, and the description only restates names ('bill_id: Bill ID', 'bill_stage_id: Bill stage ID') without explaining how to obtain a stage id or how bill/stage/amendment ids relate. It adds essentially no meaning beyond the identifiers themselves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed information about a specific amendment') and enumerates the fields returned, which separates it from the list-style sibling get_bill_stage_amendments. The 'by_id' retrieval scope is clear, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need complete amendment details including text, sponsors, decision, and explanatory notes' gives contextual usage, but there is no when-not guidance and no alternative tool is named despite several amendment/bill-stage siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
date_laidYes
is_treatyNo
days_in_futureYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It is a pure calculation, so the main behavioral question is whether the day count includes sitting days, recesses, or is calendar-only, and whether the calculation accounts for treaty-specific rules. The description hints at treaty handling via is_treaty but does not disclose the calculation basis, leaving a meaningful gap for a date-sensitive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening line duplicates the same information three times ('Get annulment date | ... | Calculate the annulment date ... | Returns annulment date'), and the Returns line restates what the Args section already implies. The Args block itself is well-structured, but the redundant front matter and pipe keyword stuffing waste space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value detail is unnecessary, and the description adequately documents all three parameters for a low-risk calculation. The main missing piece is the behavioral basis of the calculation (calendar days vs sitting days, treaty handling), which matters for trusting the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it defines date_laid as the laying date with a YYYY-MM-DD format, days_in_future as the number of days from date_laid with an example (40), and is_treaty as whether the SI is a treaty/agreement with a default of false. This is solid compensation for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Calculate the annulment date for a negative statutory instrument', which is distinct from sibling SI tools like get_si_procedures or get_si_timeline_business_items. The pipe-separated keyword prefix ('SI annulment, negative SI, scrutiny period, 40 days') is noisy but reinforces the domain. It does not explicitly contrast itself with any sibling, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the domain context ('negative SI', 'scrutiny period', '40 days'), which tells an agent this is for the negative-SI annulment calculation. There is no explicit statement of when to use this versus related SI timeline tools, and no exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
annunciatorYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it adds almost nothing: it does not state that this is a read-only operation, what happens when no message exists for the date, or any auth/rate considerations. For a tool with zero annotation coverage, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the intent is restated three times ('Get annunciator message...', 'Retrieve what was displayed...', 'Returns annunciator message data...') and the keyword string 'annunciator, chamber display, historical activity' adds filler. Tighter phrasing would lose no information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't detail return values, and both parameters are documented with examples. Given the simplicity of a two-param readonly lookup, coverage is nearly complete; only edge-case behavior (empty results, pagination) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description compensates well: it gives concrete annunciator values ('CommonsMain' or 'LordsMain') and specifies the date format (YYYY-MM-DD), which the schema does not. It stops short of 5 only because it doesn't say whether the annunciator value is case-sensitive or validated against a fixed set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('annunciator message') scoped to a chamber and date, so the resource and operation are unambiguous. It does not distinguish itself from related siblings like happening_now_in_commons/happening_now_in_lords, which cover similar annunciator-board content, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'historical activity' and 'what was displayed on the annunciator board for a given date' implies this is for retrospective lookups rather than current display, but no when-to-use/when-not guidance or named alternative is given. Usage is inferable but not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
tabled_dateYes
question_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose a meaningful behavioral constraint ('Commons only') and the return value, but says nothing about error behavior when a non-Commons house is passed (despite the house param accepting 'Lords'), permission needs, or how deadlines are computed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns structure is readable and front-loads the purpose, but the opening pipe-separated keyword line ('PQ answer date, response deadline, when answers due') is search-bait that duplicates the purpose statement without adding meaning. Trimming it would tighten the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, 3-required-param tool with an output schema present, the definition covers purpose, all params, and the return value, so an agent can call it correctly. The only gap is the unresolved tension between 'Commons only' and a house parameter that accepts 'Lords'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents all three parameters, gives accepted values for house ('Commons'/'Lords', 1 or 2 also accepted), enumerates question_type values ('NamedDay'/'Ordinary'), and specifies the tabled_date format (YYYY-MM-DD). This is exactly the detail the schema omits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the earliest answer date for a written question') and adds a scope constraint ('Commons only'). The keyword line ('PQ answer date, response deadline, when answers due') reinforces the resource domain, making it easy to separate from siblings like get_written_question or search_written_questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: you use it when you have a house, question type, and tabled date and want the deadline. There is no explicit when-to-use vs when-not-to-use guidance or pointer to a related tool (e.g. get_written_question, get_tabling_deadline). The 'Commons only' note is a partial scoping hint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses return content (names, abbreviations, policy responsibilities) and filter behavior, but says nothing about pagination, permissions, or result size limits for a governance-lookup tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, but the pipe-separated keyword block is keyword stuffing and the return contents are stated twice (in the body and again under 'Returns'). The Args/Returns scaffolding adds length without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter lookup with an output schema present, the description covers purpose, usage context, filter semantics, and return content. Missing only operational details like pagination, which is a minor gap given the output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is only one parameter, so the description must supply the semantics itself. It does: 'Filter by partial name match' plus concrete examples ('Treasury', 'Health') clarify match behavior and expected values beyond the bare schema type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource โ€” 'Get government departments and their parliamentary responsibilities' โ€” and clarifies the ambiguous term 'answering bodies' via keyword context. However, it does not differentiate itself from the closely-related sibling get_departments, which is named in 'See also' without saying how the two differ.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use for understanding government structure, finding responsible departments, or determining who answers questions on specific topics' and names two alternatives (get_departments, search_written_questions). No when-not guidance is given, and it never explains when to prefer it over get_departments.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, yet it only says 'Get... Returns: Comprehensive bill details.' Read-only nature is implied by the verb and the output schema covers the return shape, but nothing is said about error behavior for an unknown ID, whether the ID must come from a search call, or any access constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by the usage trigger and sibling pointers; the Args/Returns blocks are lightly redundant but standard. Overall tight and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema already documenting the return shape, the description is close to sufficient. It omits, however, the practical detail of how an agent obtains a valid bill_id and what happens on a miss, which is the main remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is one required parameter, so the description must compensate. Its 'bill_id: Unique bill ID number' line adds essentially nothing beyond the property name and type โ€” it does not say where to obtain the ID (e.g., from search_bills or get_recently_updated_bills) or what form it takes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed information about a specific bill by ID') and enumerates the content it returns (title, sponsors, stages, summary, status). It names related siblings (get_bill_overview, get_bill_stages, get_bill_committees), which helps an agent see it as the comprehensive bill getter, though it never says explicitly how it differs from get_bill_overview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need comprehensive bill details including title, sponsors, stages, summary, and current status' gives a clear positive trigger and the 'See also' list surfaces the alternatives. No when-not guidance is offered, so it stops short of a full routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well: it discloses that this is an aggregator ('Combines: get_bill_by_id, get_bill_stages, ...'), what the return contains (committee stages with sitting dates, select committee business with the examining committee), and a data-quality caveat ('items whose linked_bill_ids include the bill are confirmed links'). It does not mention permissions, rate limits, or pagination, so it falls short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and trigger before the pipe-separated synonym keywords and the aggregation notes. The keyword list is somewhat stuffed and the separate 'Returns' section partly duplicates the body, but nothing is disorganized or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, yet the description still summarizes the shape usefully. For an aggregator of five underlying tools, it explains the combined provenance and the confirmed-link caveat; only auth/limits and the merged-item ordering are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (the only param has a bare title and no description), so the description must compensate, and it does: 'Bill ID. Get from search_bills or get_bill_overview. Example: 3764' supplies both provenance and format. It adds real value beyond the schema, though it doesn't state the type or invalid-ID behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Find') plus resource ('the committees that examined a bill'), with a synonym line and an explicit sibling disambiguation ('See also: get_committee_bills (the reverse)'). An agent can separate this from the reverse lookup and from get_bill_overview without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the trigger explicitly ('Use when asked which committees looked at a bill, or to find committee evidence and reports on it') and names the complementary/alternative tools (get_committee_bills as the reverse, get_bill_overview). Both when-to-use and the alternative routing are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
bill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says nothing about ordering, result limits, date filtering, or what the article records contain, leaving the agent with only the bare assertion that news articles are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and usage condition are front-loaded in the first two sentences, and the Args/Returns block is compact. The Returns line is largely redundant with the output schema, but overall the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with an output schema present, the definition covers the essentials. It is missing details such as result ordering or default page size behavior, which matter for correct pagination usage given take/skip defaults of null.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document all three parameters. It clarifies that skip is for pagination and take is the record count, adding meaning beyond the bare integer types in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get news articles related to a specific bill'), which is clear and distinct from generic siblings. It does not explicitly distinguish itself from adjacent bill tools like get_bill_publications or get_bill_overview, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context ('Use when researching media coverage, press releases, or official communications about legislation'), which tells the agent the research intent. However, it names no alternative tools or exclusions, so it stops short of full 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose that the tool aggregates four other calls into one, which is genuine value-add context. However, it says nothing about read-only nature, rate limits, auth requirements, or how the search matches, so the disclosure is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage condition are front-loaded efficiently, and the combiner list is concrete. The pipe-separated keyword dump ('complete bill info, legislation overview, bill progress, full bill details') is somewhat redundant tag-spam that duplicates the later Returns line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, an existing output schema, and no annotations, the description covers purpose, aggregation behavior, usage condition, and alternatives. Return-value detail is legitimately omitted because an output schema exists. Only minor behavioral gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the schema only defines 'search_term' as a bare string, so the description must compensate. It does: 'Search term for bill title or content' clarifies the matching semantics and adds three concrete examples, which meaningfully exceeds the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get comprehensive bill overview') and explicitly names what it aggregates: search_bills, get_bill_by_id, get_bill_stages, get_bill_publications. An agent can distinguish this aggregator tool from the individual sibling tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need complete information about a bill without multiple tool calls' gives a clear selection condition versus the single-purpose siblings it names. The 'See also' routing to get_bill_committees and get_member_bills is helpful, but no explicit when-NOT-to-use (e.g. when only one aspect is needed) is stated, so it falls 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
petition_idYes
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose a real behavioral trait โ€” the show_on_website_only filter and its default โ€” which is useful, but says nothing about permissions, visibility rules for non-website petitions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, but the pipe-delimited keyword list plus the redundant 'Returns petition details' / 'Returns: Detailed bill petition record.' duplication costs space without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out. For a simple get-by-id tool this is adequate, but it omits the get-vs-search routing guidance that would make it complete alongside search_bill_petitions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document both params ('Bill petition ID.' and the website-visibility filter with its default). The petition_id explanation is thin and adds little beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get a specific bill petition by ID') and adds domain keywords ('bill petition, private bill, hybrid bill petition'). The 'by ID' phrasing implicitly distinguishes it from search_bill_petitions, though the sibling is never named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get full details of a petition submitted on a Private Bill' gives implied usage context. However, it never states when NOT to use it or points to the sibling search_bill_petitions for discovery-style lookups, leaving the get-vs-search distinction to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, and the mention of 'document versions' hints at versioned content, but nothing is said about permissions, pagination, or result volume for a list-returning tool. An output schema exists, so return shape needn't be described, but the retrieval profile is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage sentences are front-loaded and efficient, but the trailing 'Args' and 'Returns' blocks duplicate information already carried by the input and output schemas, diluting an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and sibling alternatives are named. The remaining gap is the absence of any behavioral detail for a tool with zero annotations, though for a simple read-only bill listing that omission is not severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description's 'bill_id: Bill ID to get publications for' merely restates the parameter name/title without adding format, validation, or sourcing guidance. With a single self-evident integer parameter the gap is small, but no value is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with clear scope: 'Get all publications for a specific bill.' The 'See also' line naming get_bill_stage_publications and get_publication_document lets an agent separate the bill-level listing from the stage-scoped and single-document siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when researching bill documents, impact assessments, explanatory notes, or tracking document versions' gives concrete research contexts. It points at alternatives via 'See also' but never states the condition that selects one over another, so routing still requires inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about what the RSS feed actually is (a URL, XML payload, or metadata), whether any authentication or subscription is required, or any rate/refresh characteristics of a feed endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in one sentence, which is good. The Args/Returns block then restates the same information ('RSS feed for the specified bill'), which is boilerplate rather than added value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required. However, with no annotations and zero schema description coverage on the only parameter, the definition leaves the agent without enough behavioral or parameter context for a feed endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 0% schema description coverage. The description's 'bill_id: Bill ID to get RSS feed for' merely restates the name, adding no format, source, or valid-range detail to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get RSS feed for a specific bill by ID'), which is clear on its own. It does not, however, distinguish itself from the closely related siblings get_all_bills_rss, get_public_bills_rss, and get_private_bills_rss, so an agent must infer the scoping difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you want to track updates and changes to a particular piece of legislation' gives implied context for the single-bill case. It never names or contrasts with the sibling RSS tools, and gives no exclusions or prerequisites, so routing guidance is only partial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
bill_idYes
decisionNo
member_idNo
search_termNo
bill_stage_idYes
amendment_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses that results are stage-scoped and that skip/take enable pagination, but says nothing about permissions, result ordering, or volume, and the return statement is a bare restatement ('Amendments for the specified bill stage'). Adequate for a read-only list tool but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose sentence comes first, usage guidance second, sibling pointers third, then a compact Args/Returns block. Every line earns its place and nothing is buried; the docstring format keeps it scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, 2 required, 0% schema coverage, and an output schema present, the description covers the parameters and correctly leaves return-value detail to the output schema. It does not explain how filters interact (e.g., search_term with amendment_number) or pagination defaults, which keeps it just short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema only exposes titles like 'Skip' and 'Member Id'. The description compensates by labeling every one of the 8 params, marking which are optional, explaining skip/take as pagination, and clarifying that amendment_number targets a specific number and member_id identifies the proposer. That is meaningful semantic lift beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Get all amendments for a specific bill stage.' It also names the two nearest siblings (get_amendment_by_id, get_bill_stage_ping_pong_items), which helps an agent separate this scoped list from the single-item lookup and the ping-pong variant. It stops short of explicitly contrasting scope with those siblings, so a 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three concrete use cases ('researching proposed changes to legislation, tracking amendment activity, understanding what modifications are being suggested') and a 'See also' pointer to alternatives. It does not state when NOT to use it or the precise condition that selects get_amendment_by_id over this tool, so it lacks explicit routing rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes
bill_stage_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses what the response contains (timings, committee involvement, related activities) and the name implies a read-only lookup, but it never explicitly states read-only semantics, permissions, or any rate/scope limits. For a low-risk getter this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and useful, but the boilerplate Args/Returns sections are largely redundant โ€” the Returns line merely echoes the opening sentence, and the Args lines restate the schema titles. Some trimming would improve signal density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return format needn't be explained, and for a simple two-parameter read this is nearly sufficient. The remaining gap is parameter documentation (0% schema coverage) that the description fails to meaningfully fill.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, yet its Args block only restates the parameter names ('bill_id: Bill ID', 'bill_stage_id: Bill stage ID to get details for'). It adds no format, source, or constraint information (e.g., where to obtain stage IDs via get_bill_stages) beyond what the titles already convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: 'Get detailed information about a specific stage of a bill.' The word 'specific' implies a single-item lookup, distinguishing it from the list-style sibling get_bill_stages. However, it does not explicitly name its closest alternatives (get_bill_stages, get_bill_stage_amendments, get_bill_stage_publications).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use when you need complete details about a particular stage' gives an implied context, and it enumerates the content types (timings, committee involvement, related activities). But it names no alternative tool and gives no when-not-to-use guidance, leaving sibling selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
bill_idYes
decisionNo
member_idNo
search_termNo
bill_stage_idYes
amendment_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The 'Get' verb and the Returns line imply a safe read returning a list, which is adequate for a low-risk retrieval tool, but it says nothing about permissions, rate limits, filtering behavior, or pagination defaults even though skip/take exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is well front-loaded, but the Args block largely restates the input schema and the Returns line is redundant given an output schema exists. Several sentences do not earn their place against the structured data already available.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not explain return values, and its purpose, usage context, and parameter list are sufficient for an agent to call it correctly. The absence of any behavioral notes on filtering or pagination is the only material gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it partially does with an Args block covering all 8 parameters. However most entries are tautological ('bill_id: Bill ID'), and only skip/take ('for pagination') and decision/member_id add any real meaning beyond the property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get ping pong items') and defines the jargon inline as 'amendments and motions for a bill stage,' which an agent could not infer from the name alone. It does not explicitly name or exclude sibling tools like get_bill_stage_amendments or get_ping_pong_item_by_id, so a 5 is not warranted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when researching the final stages of bills passing between Commons and Lords, including disagreements and agreements on amendments' gives clear situational context for calling it. It lacks explicit when-not guidance and does not route the agent to alternative tools for the same data, so it falls 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes
stage_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. Beyond the implied read-only 'get', it discloses nothing about pagination, ordering, response size, authentication, or failure modes when stage_id is invalid, which is a meaningful gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded and efficient, but the Args block duplicates the schema and the Returns line ('Publications for the specified bill stage') is tautological, especially since an output schema already exists. Some sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema removes the need to explain return values, and the two-parameter surface is simple, so the description is minimally sufficient. However, it omits sibling differentiation and any meaningful parameter semantics, leaving gaps for an agent choosing among the many bill/publication tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it merely restates the schema titles: 'bill_id: Bill ID' and 'stage_id: Stage ID to get publications for'. It adds no format, validity, or relational meaning (e.g. that stage_id must belong to bill_id).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: retrieving publications scoped to a specific bill stage. It clarifies the stage-level scope, but never distinguishes itself from the very similar sibling get_bill_publications (bill-level) or get_bill_stage_amendments, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use when you need documents related to a particular stage of legislation, such as committee reports or stage-specific amendments' gives concrete context and examples of what qualifies. It stops short of naming alternatives or stating when-not-to-use, so it reaches solid context without exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
bill_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only listing and mentions pagination via skip/take, but discloses no permissions, rate limits, or result characteristics beyond the terse 'Returns: All stages for the specified bill.' Adequate but thin for a definition with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and usage before the Args/Returns boilerplate. The Google-style Args/Returns blocks are somewhat redundant with the schema and output schema, but the prose is tight and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained. For a simple read tool with one required parameter, the description plus structured fields cover what an agent needs to call it correctly, though behavioral details remain sparse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It names and briefly explains all three parameters ('bill ID to get stages for', 'number of records to skip', 'number of records to return'), which is helpful but minimal and adds little beyond the parameter names themselves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Get all stages of a specific bill by bill ID.' It also names the relevant sibling tools (get_bill_stage_details, get_bill_stage_amendments, get_bill_committees), letting an agent distinguish it from neighboring stage-related tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use triggers ('tracking a bill's progress', 'understanding its legislative journey', 'finding specific stages like Committee Stage'). The 'See also' list points to alternatives, though it doesn't state when to prefer those over this tool, so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it discloses essentially nothing beyond the fact that a list is returned (which the output schema already covers). For a zero-argument read-only enumeration there is little risk to disclose, but the description does not even confirm it is a safe, side-effect-free, no-auth lookup.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The same fact is restated four times: the title line, a pipe-separated keyword soup, a 'list all categories' sentence, and a 'Returns' block that duplicates the existing output schema. The pipe-delimited keywords are not front-loaded information but noise, and roughly half the text is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial no-arg enumeration with an output schema, the description is minimally sufficient. But against a sibling set crowded with near-identical calendar taxonomy endpoints, it omits the one thing that would make it complete: how categories differ from types, tags, and locations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. Nothing in the description could add parameter meaning, and it correctly refrains from inventing filters that do not exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb and resource (list all parliamentary calendar event categories), so an agent knows exactly what it retrieves. However it gives no differentiation from the near-identical siblings get_calendar_types, get_calendar_tags, and get_calendar_locations, and the keyword 'event types' actively blurs the line with get_calendar_types rather than sharpening it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus the taxonomy siblings, and no prerequisites or exclusions. The agent must infer from the name alone that this is an enumeration/lookup endpoint rather than a filtered search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only says it 'Returns event details' and does not disclose permission requirements, error behavior for an invalid/nonexistent ID, or any other operational trait an agent would need.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the same idea is repeated four times ('by ID | specific event, event details | Use to get full details | Returns event details'), and the Args/Returns block duplicates both the description and the existing output schema. Redundant rather than tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter getter with an output schema present, the description covers the basics without needing to explain return values. It is minimally viable but omits error/failure semantics and any differentiation from the numerous similar event tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the lone parameter, yet it only repeats 'event_id: The calendar event ID' โ€” a restatement of the property name with no added format, range, or sourcing detail. It fails to add meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Get calendar event by ID') and clarifies it returns full details of a specific event, so the agent knows exactly what it does. However, it never distinguishes itself from the many similar siblings (get_event_by_id, get_events, search_calendar), so an agent cannot tell which sibling to pick from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get full details of a specific calendar event' implies the use case (single event, full detail) but gives no when-not guidance and names no alternatives among the crowded calendar/event sibling set. Usage is inferable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It does not state that this is a read-only, no-parameter listing operation, nor anything about ordering, pagination, or size of the result set; 'Returns list of locations' merely restates the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded, but the opening pipe-delimited keyword dump is noisy and the return value is stated twice ('Returns list of locations' followed by a 'Returns:' block) with no added information in the second statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description is not obliged to explain return values โ€” yet it redundantly does so. The main completeness gap is the lack of differentiation from 'browse_locations' and other calendar listing tools, which is the one thing an agent actually needs here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The keyword string ('venues, committee rooms, locations, where') adds a little vocabulary context but no parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'List all locations used for parliamentary calendar events', which is more specific than the tool name alone. However, it never distinguishes itself from the sibling 'browse_locations', which appears to cover overlapping territory, so an agent cannot confidently choose between them from the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no alternatives are named. Given the presence of 'browse_locations', 'get_calendar_types', and 'search_calendar' among siblings, the absence of any routing signal is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only list operation through 'Get' and 'List all tags', and an output schema covers return shape, but it does not explicitly confirm read-only safety or any other trait. For a zero-parameter lookup this is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first purpose sentence is efficient and front-loaded, but the return information is duplicated: 'Returns list of tags' is immediately followed by 'Returns: List of calendar event tags.' The pipe-delimited keyword line also adds length without value, so the description wastes space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema present, the description need not explain return values. It states that the tool lists all calendar event tags, which is sufficient for an agent to invoke it correctly. The main missing element is sibling differentiation, which is a usage gap rather than a completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The schema has 100% description coverage and no parameters to document, meaning the description has no parameter semantics to add or omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('tags used to label parliamentary calendar events'), making the general purpose clear. However, it does not distinguish itself from sibling tools like get_calendar_types or get_calendar_categories, and the pipe-delimited keyword line adds no differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no circumstances for choosing this tool, and no alternatives. An agent cannot tell from this text whether to call get_calendar_tags instead of get_calendar_types, get_calendar_categories, or get_calendar_locations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and mostly fails: it does not state that this is a read-only reference lookup, whether the list is static or session-scoped, or anything about caching/rate behavior. 'List all event types' is essentially the only behavioral claim, and it is a tautology of the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description says the same thing three times ('Get calendar event types | event types, calendar classification | List all event types ... | Returns list of event types | Returns: List of ...'), a pipe-delimited keyword dump rather than front-loaded prose. None of the repetitions adds new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the zero-parameter surface is simple. But the absence of any differentiation from the many sibling type/category/metadata lookups leaves a real gap in a crowded namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate. No parameter-level information is expected or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: it lists the event types used in the parliamentary calendar. However, it never distinguishes itself from close siblings such as get_calendar_categories, get_calendar_tags, or especially get_event_type_metadata, so an agent cannot tell from this text which of the four to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all โ€” no prerequisites, no statement of when to prefer this over get_event_type_metadata or get_calendar_categories. The repeated keyword phrases ('event types, calendar classification') read as search optimization rather than usage instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo
searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the response shape and that it is a read-only reference ('Returns JSON with command groups, names, descriptions, and parameters'), which is useful. It omits any note on pagination, rate limits, or auth, though for a static reference tool the risk is low.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The leading pipe-separated keyword string ('cli commands, terminal, command line, parliament command') is keyword-stuffed filler, and the return-shape sentence is duplicated between the top line and the 'Returns' block. The Args section is efficient, but the overall payload has redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be spelled out, yet the description still summarizes them. Both optional parameters are documented with defaults and examples, making it complete enough for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: 'group' is explained as a filter with concrete examples ('members', 'bills', 'votes') plus the default behavior when omitted, and 'search' is defined as a keyword match across command names and descriptions. This meaningfully exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: 'Get comprehensive CLI command reference' with explicit scope ('CLI commands... in the parliament command-line tool'). It distinguishes itself conceptually from the MCP data tools it complements, though it never names a specific sibling (e.g. parliament_guide) to route the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to discover available CLI commands and their parameters' gives an implied use case, and 'complementing the MCP tools' hints at when it is relevant. However, it never states when NOT to use it or how it differs from related meta-tools like parliament_guide or parliament_workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo
committee_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses ordering ('newest first'), the matched-by mechanism ('committee link or title'), that the bill's current stage is included, and that the result is a composite ('Combines: get_committee_by_id, get_committee_business, get_committee_business_by_id, get_bill_by_id'). It does not mention permissions, rate limits, or failure behavior for an unknown committee_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited preamble is front-loaded and dense, then Args/Returns are cleanly separated; nearly every clause adds routing or parameter value. Minor waste in the 'Returns:' line, which largely restates what the output schema already conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 0% schema description coverage, the description documents both parameters with sources and constraints, explains the return shape's ordering and matching semantics, and names the composed sub-tools. With an output schema present, no further explanation of return values is required, so nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate fully, and it does: committee_id is explained with a source ('Get from search_committees or get_committee_summary') and a concrete example ('172 (Lords Constitution Committee)'), and take is explained with both a default and a cap ('default 10, max 20') โ€” the max is not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find the bills a committee has examined') and immediately scopes what is returned (legislative-scrutiny business, not all committee business). It explicitly differentiates itself from siblings by naming get_bill_committees as 'the reverse' and pointing to get_committee_summary, so an agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use when asked which bills a committee has looked at') plus two named alternatives with their relationship ('get_bill_committees (the reverse)', 'get_committee_summary'). The when-to-use condition and the alternative-selection logic are both present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
statusNo
date_toNo
date_fromNo
search_termNo
committee_idNo
business_type_idNo
show_on_website_onlyNo
currently_accepting_evidenceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It usefully discloses pagination controls and limits (skip, take, default 30, max 100), but never states that this is a read-only operation, nor any auth needs or result-count constraints. It partially compensates but leaves the safety profile implicit in the word 'Search'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads a pipe-delimited keyword line, then usage, siblings, args, and returns. Mostly every element earns its place, but the return statement is duplicated verbatim ('Returns committee business items matching the criteria' appears in both the body and the Returns block), and the keyword pipe line reads as search-engine padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, annotation-free search tool, the description covers purpose, usage, sibling routing, and every parameter, and an output schema exists so return-shape detail is not required. The main residual gap is the absence of any read-only/permission framing, but overall it is sufficient to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document all ten parameters โ€” and it does, in a structured Args block. It adds real meaning beyond the schema: 'YYYY-MM-DD format' for dates, take default/max, status examples ('Open', 'Closed'), and the provenance of business_type_id ('from get_committee_business_types'). A few entries (e.g. show_on_website_only) stay thin, keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource โ€” 'Search for committee business (inquiries, investigations)' โ€” with a clarifying parenthetical. It explicitly names siblings ('See also: get_committee_business_by_id, get_bill_committees'), which helps an agent separate list/search from single-item lookup, though it doesn't spell out the exact boundary condition with each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use case โ€” 'Use to find committee inquiries by topic, status, or whether accepting evidence' โ€” which maps directly onto search_term, status, and currently_accepting_evidence. No explicit when-not guidance or negative routing is provided, so it stops 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
business_idYes
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does disclose the return composition ('evidence calls and reports'), which is useful, but says nothing about authorization requirements, behavior on an invalid/unknown business_id, or rate limits. Notably it never mentions that show_on_website_only defaults to true, a behaviorally significant filter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, then alternatives, then params. The only soft spot is the trailing 'Returns: Detailed information about the committee business', which largely restates the opening, but the definition is still tight overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be enumerated, and the description correctly avoids that. For a two-parameter read tool with one required ID this is largely sufficient, with the main gap being the undocumented default filtering behavior of show_on_website_only.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does define both parameters in plain language ('Committee business ID', 'Show only items visible on website'). However it adds no format, type, or edge-case meaning (e.g. that the boolean defaults to true and thereby filters results by default).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get detailed information about a specific committee business item') and narrows scope with 'inquiry details, investigation details', which separates it from the plural listing sibling get_committee_business. It is clear what it does, though 'committee business item' itself is a domain term the description never defines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger condition: 'Use when you need complete details about a specific inquiry or investigation,' and it names two siblings under 'See also'. It gives when-to-use but no when-not-to-use or routing rule for choosing among those alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
business_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return shape ("publication groups with counts", "grouped by type"), which is genuine behavioral context, but says nothing about permissions, pagination, or whether it is a pure read. For a no-annotation tool this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, which is good, but the pipe-delimited keyword run ("inquiry publications, report groups") duplicates what the surrounding sentences already say. The Args/Returns block is boilerplate that partly repeats the opening line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one required integer parameter) and an output schema exists, so the description need not explain return values in depth. It covers purpose, parameter meaning, and the shape of the result, which is enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only restates the schema label as "Committee business ID," adding no format, provenance, or lookup guidance. It is not wrong, just minimal for a single required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get publication summary for an inquiry") and scopes it to a committee business/inquiry rather than a whole committee. It does not name the near-identical sibling get_committee_publications_summary, so the agent must infer the difference from the phrase "for a committee business/inquiry."

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to see publication types for a committee business/inquiry" gives an implied when-to-use, but there are no exclusions and no named alternatives. With siblings like get_committee_publications_summary and get_committee_publication_types in the set, the description should have said when to pick this one over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses that the result is a list of business types with descriptions, and 'Get' clearly implies a read-only lookup, but it does not state that this is a static reference enumeration or note anything about caching/completeness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The header is front-loaded and useful, but 'Returns list of business types with descriptions' and 'Returns: All committee business types with descriptions' say the same thing twice, adding redundancy with no new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter lookup tool with an output schema already present, the description covers what is needed. Since the output schema exists, the repeated return-value sentences are unnecessary rather than missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-param tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get all types of committee business') and names the concrete examples (inquiries, debates) it enumerates. However, it does not distinguish itself from the similarly named sibling get_committee_types (types of committees) or get_committee_business, so an agent could plausibly confuse them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to understand different types of committee work' gives an implied purpose but names no alternatives and no conditions for when-not to use it. With get_committee_types and get_committee_business in the sibling list, the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
committee_idYes
include_bannersNo
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the returned payload ('purpose, members, departments scrutinized, and contact information'), warns that include_banners 'May increase response size', and notes the public-only default. It says nothing about permissions, behavior on an invalid/nonexistent committee_id, or error cases, which a zero-annotation tool ideally would cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns structure is clean and front-loaded, but the keyword-list sentence is pure redundancy with the surrounding text and adds no information for an agent. Removing that clause would lose nothing, so the definition is not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the Returns restatement is harmless redundancy rather than a gap. Parameters, defaults, prerequisites, and sibling routing are all covered, giving an agent enough to call the tool correctly. Only the absence of any exclusion criteria or failure-mode guidance keeps it from 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it does: committee_id is marked required with an example (739) and instructions to obtain it from committee search first; include_banners is given its default (false) and the consequence of enabling it; show_on_website_only is given its default (true) plus a usage recommendation. All three parameters carry semantics absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get comprehensive committee profile and membership details') and names sibling tools (get_committee_summary, get_committee_members, get_committee_bills) so the agent can see it is not the summary or members-only variant. However the keyword-stuffed pipe segment ('committee information, committee members, committee purpose, parliamentary committee, scrutiny committee') muddies rather than sharpens the purpose, and the siblings are listed as links rather than differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use contexts ('understanding committee roles, finding committee members, or researching committee activities') and a prerequisite for the required param ('get from committee search first'). It also advises show_on_website_only is 'Recommended for general use'. No explicit when-not-this-tool condition is given, so it stops short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
location_idNo
search_termNo
committee_idYes
end_date_fromNo
event_type_idNo
start_date_toNo
sort_ascendingNo
start_date_fromNo
show_on_website_onlyNo
committee_business_idNo
include_event_attendeesNo
exclude_cancelled_eventsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses pagination controls (skip, take default 30, max 100) and implies a read-only operation via 'Get', but says nothing about permissions, error behavior on an invalid committee_id, or how the start_date vs end_date filters differ semantically.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage cue are front-loaded in the first sentence, and the Args block is long only because 14 parameters must be documented from zero schema coverage, so each line earns its place. The 'Returns' line is slightly redundant given an output schema exists but is one sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter, no-annotation tool with an output schema, the definition covers purpose, filtering options, pagination and defaults, which is enough to call it correctly. It lacks any disambiguation from the heavily overlapping committee-event siblings, which is the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning, and it documents all 14 arguments including the YYYY-MM-DD date format and the max-100 pagination cap, which the schema omits. Some entries are thin or restate the name ('Optional: filter by committee business ID'), keeping it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get events') scoped to 'a specific committee by committee ID', which distinguishes it from the broad get_events sibling. It does not name any alternative sibling (get_events, get_committee_meetings, get_committees_next_events) that an agent must choose between, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use when you want to see all meetings and activities for a particular committee' gives a clear usage context, but there is no when-not guidance and no routing against the many overlapping committee/event siblings. The agent is left to infer that this is the per-committee variant of get_events.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
to_dateYes
from_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses scope (Commons and Lords) and return content, and adds a validation rule ('to_date must be after start date'), but says nothing about pagination, result limits, sorting, or read-only nature. Useful context, but not the rich disclosure an un-annotated query tool warrants.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the pipe-separated keyword block ('committee meetings, parliamentary hearings, committee schedule, committee calendar, when committees meet') is SEO filler, and the return sentence is duplicated verbatim in the Args/Returns section. Some trimming would sharpen it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out. The description covers purpose, scope, parameters, and validation, which is close to complete for a two-param date-range query; only pagination/limit behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (properties carry only titles), so the description must compensate, and it does: it specifies the YYYY-MM-DD format with a worked example for from_date and the ordering constraint for to_date. This meaningfully exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find committee meetings and hearings by date range') and explicitly scopes coverage to both Commons and Lords committees. The 'See also' pointer to get_events and get_committees_next_events lets an agent separate it from closely-named siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases ('finding committee schedules, planning attendance, or researching past committee activity') and names two alternative tools. However, it never states when NOT to use this tool or the routing condition that selects get_committee_events vs get_events, so the alternatives are listed rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
committee_idYes
membership_statusNo
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that both elected and lay members are returned, that membership status can be current or former, and that take defaults to 30 with a max of 100. It never states that the operation is read-only or mentions permission/auth requirements, so it is adequate but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args block is front-loaded and each parameter line earns its place, making the docstring scannable. The 'Returns: Members and staff of the committee' line is redundant given the tool has an output schema and merely restates the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter filtered getter with an output schema (so return shape needs no explanation) and no annotations, the description covers the filters, pagination, and population returned. The main omissions are the absence of any read-only assertion and any routing guidance against sibling member-listing tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: all five parameters are documented, including examples for membership_status ('Current', 'Former'), the pagination role of skip, and the default (30) and ceiling (100) for take. It does not restate the default value of show_on_website_only, though that is present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get members and staff of a specific committee by committee ID.' It also scopes the output (elected members plus lay members, roles, current/former status). It does not differentiate from close siblings such as get_committee_staff or get_member_committee_memberships, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need to know who serves on a committee, their roles, and membership status' gives implied usage context, which is better than nothing. However, it names no alternative tool and gives no exclusion conditions, even though get_committee_staff and get_member_committee_memberships overlap in scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
committee_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden; it does disclose that the output is aggregated counts grouped by type rather than raw records, which is useful behavioral context. It says nothing about scope limits, permissions, or whether the counts are scoped to a time period, leaving notable gaps for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scoping sentence is front-loaded, but the description is redundant: the opening clause already says the result is grouped by type, and the trailing 'Returns: Summary of publications grouped by type' repeats it verbatim. The Args/Returns scaffolding adds length without information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only aggregation tool with an output schema present, the description tells the agent what it returns and when to use it, so return-value explanation is legitimately omitted. The only meaningful gap is differentiation from the sibling publications-summary tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but there is only one required parameter and the description's 'committee_id: Committee ID' merely restates the schema title. No identifier format, source, or lookup hint is added, though the parameter is largely self-evident from its name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get summary of publications grouped by type') and states that it returns publication counts by type, so an agent can tell it apart from generic list tools. It does not, however, distinguish itself from the near-identical sibling get_committee_business_publications_summary, which is a real ambiguity in this tool set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get an overview of a committee's publication output' implies the usage context but gives no when-not guidance, prerequisites, or a named alternative. With get_committee_business_publications_summary and get_publications available, the agent must guess which one to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, but this is a zero-parameter read-only lookup tool, so the risk profile is inherently trivial. The description confirms it returns a list with descriptions, though it says nothing about pagination or whether the taxonomy is static or mutableโ€”minor gaps for a reference endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, but the closing sentence 'Returns list of publication types with descriptions' is immediately restated as 'Returns: All committee publication types with descriptions,' which is pure duplication in an already very short description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out. For a simple enumerated lookup the description is sufficient to call the tool correctly; the main missing element is disambiguation from the many sibling '*_types' endpoints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so schema coverage is moot and the baseline of 4 applies. The description correctly identifies the returned fields (types with descriptions), which is the only semantic content available.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: getting all types of committee publications, and clarifies the scope with 'report types, document types'. It does not, however, distinguish itself from near-name siblings like get_publication_types or get_committee_business_types, so an agent must infer the difference from the word 'committee' alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is 'Use to understand different types of committee publications,' which restates the purpose rather than saying when to call this versus get_publication_types or get_committee_business_types. No prerequisites, no exclusions, no alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
event_from_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses useful operational facts โ€” defaults of today for event_from_date and 30 for take โ€” but says nothing about pagination semantics, ordering, or permissions. It is a read tool, but that is inferred rather than stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded summary before the Args/Returns detail, and each parameter gets one tight line. The 'Returns list of committees with their next scheduled event' statement is duplicated verbatim in the header and the Returns block, a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it covers all four parameters with formats and defaults. It is nearly complete; only the absence of sibling differentiation and pagination detail keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it gives the accepted values for house (1/'Commons', 2/'Lords'), the date format for event_from_date, and the meaning of skip/take with a default. This adds substantial meaning beyond the bare schema, though it doesn't clarify pagination interaction between skip and take.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get upcoming events for all committees') and clarifies the payload ('next meetings, upcoming hearings'). It does not explicitly distinguish itself from the closely named sibling get_committee_events, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to see what committee meetings are scheduled' implies context but gives no when-not guidance and never names the alternative tools (get_committee_events, get_events, get_committee_meetings) an agent would need to choose correctly among. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
committee_idYes
membership_statusNo
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose meaningful behavioral detail beyond the schema: the default of 30 records for take, pagination via skip/take, and that show_on_website_only filters to publicly visible staff by default. It does not state read-only nature, permission requirements, or error behavior for an invalid committee_id, which is a gap for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose and keyword line first, then Args, then Returns. There is some redundancy between the keyword line, 'Returns staff members with their roles,' and 'Staff members of the committee,' which could be trimmed, but the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with an output schema, the description covers purpose, parameters, and tie-in to results adequately. The notable gap is disambiguation from the large cluster of committee-member and member-staff siblings in this 190+ tool server, which the description never addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: all five parameters are explained, including an example value for membership_status ('Current', 'Former') and the default record count for take. The explanations are terse ('Committee ID.') but they cover every parameter and add semantics the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get staff members of a committee') and enumerates the entities covered (staff, clerks, advisers), which is clearer than the bare name. However, it never differentiates itself from the very similar sibling get_committee_members or get_member_staff, so an agent must infer the members-vs-staff distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find who supports a committee's work' gives an implied context of use, but there are no when-not conditions and no named alternatives among the many committee/member siblings. Adequate minimum viability, nothing more.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that this is an aggregator call that folds in search, details, oral evidence, written evidence, and publications, which is genuine behavioral context an agent cannot infer from the schema. It omits operational traits like result size, pagination, or rate limits, keeping 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The composite scope is front-loaded in the first clause, followed by usage guidance and the constituent-tool list. The middle pipe-delimited keyword string ('complete committee info, inquiry overview, committee research, full committee details') is somewhat redundant padding, but overall it is compact and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-required-parameter aggregator with an output schema present, the description needn't restate return values and covers purpose, usage, and composition adequately. It lacks any caveats about coverage limits or cost of the aggregate call, but nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it defines 'topic' as a search term for committee name or subject area and provides concrete examples ('Treasury', 'Health', 'Defence'). That meaningfully exceeds the bare string schema, though it doesn't discuss matching behavior (exact vs. fuzzy).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get comprehensive committee summary') and immediately discloses its composite scope, naming the five constituent tools (search_committees, get_committee_by_id, get_oral_evidence, get_written_evidence, get_publications). This lets an agent distinguish it from those siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the triggering condition: 'Use when you need complete information about a committee's work without multiple tool calls,' and routes to a related tool via 'See also: get_committee_bills.' It stops short of stating when NOT to use it (e.g., when only one artifact type is needed), so it is strong but not fully exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the call takes no input and returns the full set of types with descriptions, which is reasonable for a static read-only reference list, but it says nothing about caching, ordering, or whether the list is exhaustive/stable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose and followed by usage guidance. The trailing 'Returns: All committee types with descriptions' is slightly redundant given an output schema exists, but it costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless reference lookup with an output schema present, the description covers what the tool is and when to reach for it. The only real gap is routing among the many other '*_types' siblings, which is not addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. Nothing in the description conflicts with the empty schema, and there is no parameter behavior that needs explaining.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('all types of parliamentary committees') and grounds it with concrete examples (Select Committee, Public Bill Committee, Delegated Legislation Committee). It is clear what the tool returns, though it does not distinguish itself from adjacent type-lookup siblings such as get_committee_business_types or get_committee_publication_types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when understanding committee structures or finding the right committee type' gives an implied usage context, but no explicit when-not conditions and no named alternatives. An agent must infer on its own that this is the lookup to run before filtering committees by type.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
division_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses the payload contents (aye/no voters, tellers, vote totals), which tells the agent this is a read operation. However, it says nothing about permissions, rate limits, or whether the ID must exist in Commons rather than Lords.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Pipe-delimited and front-loaded with the core purpose, so the key information comes first. It is slightly repetitive, mentioning division/vote details and tellers more than once, but remains compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values did not need describing, yet the description still summarizes them. For a single-parameter read tool with no annotations, this is close to complete; only the absence of any error/prerequisite note keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter. The description adds only 'Unique Commons division ID number,' which clarifies it is an integer identifier but adds little beyond the schema's type and title. Marginal compensation for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one House of Commons division by ID') and scopes it to a single division, which cleanly separates it from siblings like search_commons_divisions and get_lords_division_by_id. An agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need complete details of a particular vote' gives implied usage context, but it never names the alternative (search_commons_divisions) or states when not to use this tool (e.g., when you only have a search query rather than an ID). Guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
member_idNo
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does so reasonably: it discloses the aggregation semantics (party-level counts, not individual member votes) and notes the teller-inclusion behavior of a parameter. It omits any note on pagination, result caps, or auth/rate characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and usage in the first two clauses, then provides an Args block that is necessary given the 0% schema coverage. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still characterizes the aggregate output. All parameters are covered, making the definition sufficient for correct invocation; only edge-case filtering interactions are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents all six parameters including the date format (YYYY-MM-DD), search term semantics with examples, and the meaning of include_when_member_was_teller. It could be stronger on how member_id and search_term interact or on defaults/optionality nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get House of Commons divisions grouped by party') and clearly delimits scope by explaining it returns 'vote counts by party rather than individual members,' distinguishing it from per-member sibling tools like get_commons_voting_record_for_member and get_lords_divisions_grouped_by_party.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage context ('Use when analyzing how different parties voted on issues') plus relevant analytical angles (party-line voting, rebellions). It stops short of explicitly naming competing siblings such as search_commons_divisions as alternatives to prefer for other needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
member_idNo
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the operation is a count rather than a record fetch, but says nothing about permissions, rate limits, or whether the count is exact/approximate. For a simple read-only counting tool the omission is minor, but the disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, keyword synonyms, and usage are front-loaded before the Args block, so the key routing information comes first. The pipe-separated synonym phrases ('number of votes, how many divisions') are somewhat redundant but serve search matching, so the padding is tolerable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters at 0% schema coverage, an output schema (so return values need no explanation), and no annotations, the description covers every parameter and the usage context. It is complete for correct invocation, with only behavioral caveats left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all six parameters with meanings such as 'only divisions this member voted in' and the YYYY-MM-DD date format that the schema lacks. A couple of entries (division_number) merely restate the name, keeping it just short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Count House of Commons divisions matching search criteria') and explicitly distinguishes itself from the sibling search_commons_divisions by being the counting counterpart. An agent can tell what it does and what it does not do without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to size a search before fetching results with search_commons_divisions' names the alternative tool and the condition that selects this one. This is explicit when-to-use routing with the alternative identified, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
member_idYes
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the sort order ('Returns the divisions the member voted in, newest first'), which is useful, but is silent on permissions, pagination limits beyond the take cap, and whether results are filtered to Commons divisions only. For a read-only tool the risk is low, but the disclosure is thin given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The summary is front-loaded and the Args block is cleanly separated and scannable. The pipe-delimited keyword clause ('MP votes, voting history, voting pattern') is somewhat redundant with the opening sentence, but overall the definition is efficient and well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, a 0%-coverage schema, and a present output schema, the description supplies the parameter documentation the schema lacks and need not explain return values. Combined with the stated sort order and sibling pointers, an agent has enough to call it correctly; only filter-combination behavior is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: every parameter is documented, including 'member_id: Parliament member ID,' date formats (YYYY-MM-DD), concrete search-term examples ('brexit', 'climate', 'NHS'), and the take default of 25 with a max of 100. It does not explain interaction between filters (e.g. search_term plus date range), which keeps it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the voting record of a MP in House of Commons divisions') and immediately scopes it to the Commons chamber, which distinguishes it from the parallel get_lords_voting_record_for_member sibling. The keyword line reinforces the resource, and an agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when analyzing how a specific MP votes or their stance on issues through their voting history,' which gives clear context, and it points to alternatives via 'See also: get_member_voting, compare_member_votes.' However, it never states how to choose between those alternatives or when-not to use this tool, so routing is hinted rather than resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
search_textNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does add real behavioral detail not in the schema: pagination via skip and a take default of 20 with a max of 100. However it omits permission requirements, ordering of results, and what search_text partial-matching actually matches.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose is fine, but the pipe-separated keyword block ('constituency search, find constituency, browse constituencies') is low-value stuffing, and the purpose is restated in both the opening line and the 'Returns' line. Size is acceptable but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format need not be explained, and the parameter descriptions are adequate. But with no annotations the description should say more about safe-read behavior or result ordering; it is adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameters, and it does: search_text is a partial name filter, skip is pagination offset, take is count with default 20 and max 100. These constraints (default/max) are genuinely added meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search/list) and resource (UK parliamentary constituencies) clearly enough that an agent knows what it returns. It gestures at siblings via 'See also: get_my_mp, get_constituency_representations' but never explains how it differs from get_constituency_by_id or the other constituency tools, so differentiation is incomplete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when you need constituency information, want to search by name, or need constituency data for analysis' clause gives a rough context, but it is generic and overlaps with many siblings. No explicit when-not or routing to alternatives like get_constituency_by_id for a known ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
constituency_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It discloses the return content ('name, boundaries, and related data'), implying a read-only lookup, but says nothing about missing-ID/error behavior or permissions, which is a notable gap for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited keyword stuffing ('constituency lookup, find constituency, constituency info') is redundant filler that repeats the tool name rather than adding information. The core purpose, usage condition, and Args/Returns structure are otherwise front-loaded and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and the description covers purpose, usage condition, and the required parameter. For a simple one-parameter read lookup this is largely complete, with only error behavior left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter, so the description must compensate. It does add limited meaning ('constituency_id: Unique constituency ID number'), clarifying it is an integer identifier, but provides no format or sourcing guidance beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a constituency by ID with full details') and makes the ID-keyed lookup scoping explicit. It does not explicitly differentiate itself from siblings like get_constituencies (list) or get_constituency_synopsis, so it falls short of a 5 but is clear on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you have a constituency ID and need full details about it' gives a usable precondition. However, it names no alternatives and gives no when-not guidance, even though the sibling set contains several overlapping constituency tools the agent must choose between.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
election_idYes
constituency_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. The 'get' verb implies a read-only lookup and the description discloses the returned fields, but it says nothing about permissions, pagination, or whether a missing election returns an error or empty result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded, but it is followed by pipe-separated keyword stuffing and an Args/Returns block that largely duplicates the schema and the opening sentence. Every element is readable but not all of it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter lookup with an output schema, the description covers purpose, parameters, and return contents adequately. The main gap is the absence of any routing against the many similar election-result siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description only restates the schema titles ('constituency_id: Unique constituency ID number', 'election_id: Election ID number'). It adds no format, range, or sourcing detail (e.g. where to obtain a valid election_id) to compensate for the undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a specific election result for a constituency') and scopes it by election ID. However, it does not distinguish itself from the very similar sibling get_election_results_for_constituency, so an agent cannot tell the two apart from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need a particular election result for a constituency' restates the purpose rather than giving real guidance; no alternatives, prerequisites, or when-not conditions are named despite several near-duplicate siblings (get_election_results_for_constituency, get_constituency_latest_election, get_member_latest_election_result).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
constituency_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and partially meets it by disclosing the payload shape (vote counts, winner, turnout, candidate details). It says nothing about what happens when no election data exists, permission/auth requirements, or error behavior, so gaps remain for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence and the Args/Returns blocks are compact. There is mild redundancy: "latest election result" is restated in the keyword string, the use-when clause, and the Returns section, and the Returns block duplicates the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the Returns block is not strictly needed, and the single parameter is documented. The meaningful gap for this tool is competitive positioning against the many closely titled constituency/member election siblings, which the description never addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% โ€” the schema only gives type integer and the label "Constituency Id". The description compensates by explaining that constituency_id is the "Unique constituency ID number", which is genuinely more informative than the bare schema, though it gives no format, range, or sourcing hint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ("Get the latest election result for a constituency") so the agent knows exactly what is fetched. However, it does not differentiate itself from near-identical siblings such as get_constituency_election_result and get_election_results_for_constituency, which an agent would need to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when you need the most recent election result for a specific constituency" states a clear triggering condition. It stops short of naming alternatives or exclusions (e.g. when to prefer a specific-election or by-election lookup), so it is clear context without routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
constituency_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the temporal scope ('over time') and the return shape ('list of representations with dates and member details'), but says nothing about authentication, rate limits, pagination, or result ordering for what is presumably a historical list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, synonyms, usage trigger, return summary and related tools are all front-loaded in the first block, and the Args/Returns sections are short. The pipe-delimited packing is dense but wastes no sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter lookup with an output schema already defined, the description covers purpose, usage, parameter meaning and a return summary, and routes to related tools. Only the absence of any guidance on sourcing constituency_id and on pagination/limits keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate for the single parameter. It adds that constituency_id is a 'Unique constituency ID number', which is marginally useful, but does not tell the agent where to obtain that ID (only implying it via the get_constituency_by_id cross-reference).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get all MP representations for a constituency over time') and immediately scopes it with search-friendly synonyms ('constituency history, who represented, past MPs'). It also names related tools (get_my_mp, get_constituency_by_id), so it is clearly distinguishable from siblings like get_constituencies or get_constituency_latest_election.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('Use when researching which MPs have represented a constituency historically') and points to two alternatives/companions. There is no explicit when-not or a statement of what to use for current representation, so it falls just short of a full routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
constituency_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the output is a text synopsis, implying a safe read, but says nothing about permissions, error behavior, or whether the synopsis may be absent for some constituencies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited keyword list ('constituency overview, constituency description, area summary') and the Args/Returns block pad the text with synonyms and repeat 'synopsis' several times. It is front-loaded and readable, but not every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained (though the description redundantly does so). For a single-parameter read tool with no annotations, the definition covers the essentials, though it omits any sibling routing that this crowded namespace would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: 'constituency_id: Unique constituency ID number.' This documents the single parameter's identity and type, which the bare integer schema does not. It is minimal but adequate for one required param.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (constituency synopsis) and clarifies the return is a text synopsis. However, it does not distinguish itself from the many sibling constituency tools (get_constituency_by_id, get_constituencies, get_constituency_representations) that an agent must choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a positive usage cue ('Use when you need a concise description or background information about a constituency'), which is more than nothing. But it offers no when-not guidance and names no alternative tool, so the agent must infer why to pick this over get_constituency_by_id.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only aggregation ('Get summary') and indicates the return is a summary, but says nothing about permissions, scope of aggregation, or how the summary is composed, leaving gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded in the first two sentences with no filler. The Args/Returns block is somewhat boilerplate, but overall the definition is tightly sized for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't explain return values, and the single parameter is documented. The main gap is the unresolved overlap with get_member_contribution_summary, but for a simple read tool the definition is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema only supplies the type (integer) and required flag. The description adds that member_id is the 'Parliament member ID to get contribution summary for', which clarifies intent but adds no format or sourcing details beyond the obvious.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource - summarizing parliamentary contributions (speeches, questions, interventions) for one member - which an agent can understand without opening the schema. However, it does not differentiate itself from the very similar sibling get_member_contribution_summary beyond a 'See also' pointer, so the distinction remains ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides context ('use when analyzing an MP or Lord's parliamentary activity and participation levels') and lists related tools, but gives no selection logic between this tool and the near-duplicate get_member_contribution_summary or search_hansard_contributions. Usage is implied rather than resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It discloses that the tool returns daily reports with summaries and lists pagination controls, but it never explicitly confirms read-only behavior, permission needs, or rate limits. The 'Get' verb implies a safe read, but that is left to inference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and usage context, then lists arguments and return values in a standard structure. The pipe-separated keyword line is somewhat redundant, but the overall size and ordering are efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter read tool with an output schema, the description covers purpose, usage context, all parameter semantics, and a brief return summary. It lacks any note about read-only status or permissions, but the output schema means return values need not be explained further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document all five parameters, and it does so thoroughly: date formats (YYYY-MM-DD), accepted house values ('Commons', 'Lords', 'Bicameral' or 1/2), and pagination defaults (skip 0, take 20). This compensates fully for the empty schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get daily reports of written questions and answers,' and adds that it gives an 'overview of parliamentary question activity.' This distinguishes it from individual question tools like search_written_questions, though it never explicitly names a sibling to avoid.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly says to 'Use for getting overview of parliamentary question activity on specific dates or date ranges,' giving a concrete context for when the tool applies. It does not state when not to use it or name alternative tools, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseNo
column_numberNo
series_numberNo
volume_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. 'Get' implies a read, but the definition never states that all four parameters are optional, what happens with an empty or ambiguous call, whether house defaults, or how missing series/volume is resolved. For a lookup with zero annotation coverage this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded summary is good, but the content is then repeated three times: the pipe-segment line, the Args block, and the Returns line, which duplicates the opening 'Returns the debate at the specified column'. Redundant restatement rather than waste-free structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return formatting need not be explained, and the house mapping is covered. However, with no annotations and 0% schema coverage, the definition leaves the key question unanswered: what is the minimum viable call and which reference fields must accompany column_number.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does add real value by decoding house ('1 or Commons, 2 or Lords') and labeling each argument, but it only repeats the bare names for column/volume/series and never clarifies the puzzling fact that every parameter is optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get a debate by Hansard column number') and identifies the lookup key (column reference), which separates it from the by_id/by_title/by_external_id siblings by implication. It stops short of explicitly naming those siblings or contrasting the key types, so it is clear but not sibling-differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you have a Hansard column reference (e.g. from a citation) and need to find the debate' gives a concrete trigger and an example source of the key. There is no when-not guidance and no alternative tool is named for the case where only a title/id is known, which the sibling list clearly offers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
content_item_external_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that this is a read-only lookup keyed on an external ID and that it returns the matching debate, but says nothing about behavior when no match exists (error vs empty) or any access constraints. An output schema exists, so return-format detail is not required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The header line and the trailing 'Returns: Debate matching the external content item ID' restate the same idea, and the pipe-separated keywords duplicate the opening sentence. Front-loaded and readable, but with visible redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read lookup with an output schema, the description covers both parameters including the non-obvious house encoding and states the retrieval semantics. Only the not-found behavior is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it documents content_item_external_id and, importantly, the accepted house values ('1 or Commons, 2 or Lords') which the schema's bare anyOf of integer/string does not convey. Only minor gaps remain (e.g. no format hint for the external ID).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a debate') and scopes it to the external content item ID, which separates it from the many sibling lookups like get_debate_by_id, get_debate_by_title and get_debate_by_column. It is clear but never explicitly names those siblings, so the differentiation is inferred from the key type rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you have an external content item ID to retrieve the specific debate' gives a usable trigger condition. However, in a family of near-identical debate lookups it never says when to prefer this over get_debate_by_id/title/column, so routing relies on the agent reading the parameter names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
debate_section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the return payload ('debate title, date, house, and all contributions'), which is useful, but says nothing about permissions, rate limits, or behavior on an invalid/nonexistent debate_section_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded summary followed by usage, a see-also list, and Args/Returns blocks. Well organized, though the Returns line restates the opening sentence's content and could be trimmed since an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup with an output schema, the description covers purpose, provenance of the ID, and related tools. The main omission is error/empty-result behavior, but that is a minor gap given the output schema and the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there is one required parameter, so the description must compensate. It does: 'debate_section_id: External ID from search_hansard results' tells the agent where the value comes from, which the bare string schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get full debate transcript') plus the domain ('Hansard, speeches, contributions'), which is clearly distinguishable from list/search siblings. It stops short of explicitly contrasting itself with the closest lookalikes such as get_debate_by_external_id or get_debate_by_title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete usage context ('Use after search_hansard to get complete debate') and names four related tools to consider. However, it does not say when to prefer those siblings over this one (e.g. get_debate_by_title vs by_id), so the routing is directional but not exclusive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
houseYes
section_titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup ('Find', 'Returns the debate matching...'), but says nothing about behavior when no match exists, case sensitivity, or permissions. Adequate but with clear gaps for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and usage, but contains waste: 'Returns the debate matching the title and date' is stated twice (opening line and Returns section), and the pipe-delimited keyword list ('Hansard, find debate, debate lookup') is search padding rather than agent guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, yet the description covers all params, formats, and the routing condition. Only the no-match/error behavior is left unspecified, which is a minor gap for a simple lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the 'house' param is an undocumented anyOf(integer|string). The description compensates well by documenting all three params, including the accepted values for house ('Commons'/'Lords' or 1/2) and the YYYY-MM-DD date format, adding real meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Find') and resource ('debate by title and date') and explicitly distinguishes itself from the ID-based lookup by saying it is for when you know the title and date but not the ID. An agent can route between this and get_debate_by_id without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use condition ('when you know the debate title and date but not the ID'), which implicitly contrasts with the ID-based sibling. No explicit when-not or failure conditions, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
debate_section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only says the tool returns a list of divisions with aye/noe counts; it says nothing about read-only nature, pagination, result size, or permission requirements for a lookup over potentially large debates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the key parameter note are front-loaded and easy to scan. There is mild redundancy between the opening summary and the Args/Returns block ('Returns list of divisions with aye/noe counts' repeats the summary), but it is short overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the single required parameter is documented with its source. The remaining gap is behavioral (pagination/scope), which matters less for a simple read lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it identifies debate_section_id as the 'External ID of debate section (from search_hansard)', telling the agent both the expected identifier type and where to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get votes that occurred during a debate') and clarifies with 'divisions (votes) that took place in a specific debate'. It names related siblings (get_division_details, get_commons_division_by_id) but as a bare 'See also' rather than an explicit contrast, so differentiation is present but not sharp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find divisions (votes) that took place in a specific debate' gives a clear context of use and points to two related tools. It stops short of stating when NOT to use it (e.g. vs search_hansard_divisions or search_commons_divisions), so it is context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
debate_section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the return shape ('List of members who spoke in the debate') and that the input comes from search_hansard, but it omits read-only framing, ordering, and whether it fails on invalid/unknown section IDs. Adequate, not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then usage, then arg provenance and return. Slightly redundant ('list of speakers' appears in the header, usage, and Returns sections), but nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed, and the description still summarizes them. The key missing piece for a single-param lookup is how to obtain debate_section_id โ€” which it partially addresses by naming search_hansard.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains debate_section_id is an 'External ID of debate section' and points to search_hansard as the source. It stops short of stating format or validation behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get list of speakers in a debate') and scopes it to a single debate, which distinguishes it from day-level siblings like get_hansard_speakers_for_day. It never names those siblings explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to see who participated in a specific debate' gives a clear context for use, but there are no exclusions and no named alternatives (e.g. search_hansard vs get_debate_by_id vs get_hansard_speakers_for_day). The guidance is present but minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
name_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It confirms this is a bulk read returning 'all government departments', but says nothing about ordering, pagination, completeness, or auth. Adequate for a simple static lookup, but thin given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and usage before the Args/Returns sections. The 'Returns: List of all government departments' line largely restates the opening sentence, a minor redundancy, but overall structure is clean and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, and the tool is a simple one-optional-parameter lookup. Purpose, usage, and the lone parameter are covered; only the (unnecessary) absence of ordering/pagination notes leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that name_contains is a partial/substring match and supplies concrete examples ('Treasury', 'Health'). This adds real semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get list of all government departments') and immediately clarifies its domain role ('structure of government', 'which department handles specific policy areas'), which lets an agent distinguish it from adjacent reference tools like get_government_posts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use condition ('when you need to know the structure of government or which department handles specific policy areas') and points to related tools via 'See also: get_answering_bodies, get_government_posts'. It stops short of stating when NOT to use it or how to choose between the two siblings, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
is_evelNo
division_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the return shape (debate title, counts, member voting records) and the EVEL filtering behavior, but 'Get' only implicitly signals read-only and it says nothing about error cases, ID type restrictions (Commons vs Lords), or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and keyword tags, but the return information is stated twice ('including how each member voted' and again as 'Returns division with... member voting records'), which is redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers return values, and the description supplies the two parameter semantics plus the ID provenance, which is what an agent needs to invoke it. The main residual gap is the absence of sibling differentiation for a family of near-identical division tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that division_id is an external ID sourced from get_debate_divisions and that is_evel restricts results to English Votes for English Laws voters. This meaning is not derivable from the bare boolean/string schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get full division details') and scopes it to individual member voting records within a division. However, it does not distinguish itself from closely related siblings such as get_commons_division_by_id or get_lords_division_by_id, leaving the agent to infer which one applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a usage context ('Use to see individual voting records for a specific division') and points to get_debate_divisions as the source of the ID, which is a useful workflow hint. There are no when-not conditions and no comparison against the many sibling division-retrieval tools, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
edm_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only retrieval and discloses the payload shape, but it says nothing about side effects, permissions, rate limits, or error behavior for an unknown edm_id. For a simple lookup this is passable but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The same content is asserted three times in a row ('Get EDM details' | 'Get full text and signature details' | 'Returns EDM text, primary sponsor, supporters, signature count') before the Args/Returns boilerplate. The keyword-stuffed pipe header plus restatements waste space without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, and one well-known integer key is easy to supply. What is missing is the retrieval context an agent needs โ€” where edm_id comes from and how this differs from the search/list EDM siblings โ€” leaving it minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It only restates that edm_id is 'The EDM ID number', adding no format, range, or provenance (e.g. where to obtain the ID) beyond the schema's integer type. Minimal compensation for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Get EDM details' / 'Early Day Motion') and enumerates what is retrieved (text, sponsors, signature count), which is enough to separate it from search siblings. It never names the closest alternative, search_early_day_motions, so differentiation is inferred from the id-based framing rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the required edm_id signals a single-record lookup, contrasting with the list/search siblings. There is no explicit when-to-use or when-not-to-use guidance, and no mention of search_early_day_motions as the alternative for discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
constituency_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read, but it says nothing about pagination, result ordering, history depth, or permissions. An output schema exists, so return format is partially excused, but the disclosure is thin for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and the routing hint, and the Args/Returns block is compact. 'Historical election results' is repeated in the Returns section, which is mild redundancy rather than a structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers what the tool does, when to use it, and what the one parameter is. The absence of annotations means slightly more behavioral context could have helped, but nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds only 'Unique constituency ID number' over the schema's 'Constituency Id' title, which is a marginal gain โ€” enough to establish that the ID identifies a constituency, but no format, source, or lookup guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get historical election results for a specific constituency') and the word 'historical' cleanly separates it from get_constituency_latest_election. An agent can pick this over the sibling constituency tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when to use it ('researching constituency voting patterns, election history, or past electoral outcomes') and points to alternatives via 'See also'. It stops short of stating when NOT to use it (e.g. use the latest-election sibling for current results), leaving that inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
chapter_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the return shape (title, description, section list), which is useful, but says nothing about read-only nature, permissions, or whether the chapter number must exist. Adequate but thin for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited first sentence is front-loaded and compact, though the Args/Returns block duplicates information already conveyed in the prose and in the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still omits how this tool sits relative to get_erskine_may_part and get_erskine_may_section. For a single-parameter lookup that is minimally acceptable but leaves the hierarchy ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the sole parameter is documented only as 'chapter_number: Chapter number', which merely restates the parameter name and the schema's own title. No format, range, or valid-value guidance is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get a specific chapter of Erskine May') and confirms it returns chapter content with a section list. It does not differentiate itself from the many sibling Erskine May tools (get_erskine_may_parts, get_erskine_may_part, get_erskine_may_section), so an agent must infer the hierarchy level on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to explore sections within a chapter' gives an implied usage context but no when-not guidance and no explicit routing to alternatives like get_erskine_may_part or get_erskine_may_section, which is a notable gap given the dense cluster of sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
index_term_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the return content ('index term with all paragraph references') and the required input origin, but never states this is a read-only operation or describes error/empty behavior. Adequate but with clear gaps for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited lead sentence is front-loaded and scannable. The Args/Returns blocks are somewhat redundant with the structured schema, but overall the entry is short and free of filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, and the description correctly covers purpose, workflow, and input origin. The only omission is the read-only/safety profile, which for an unannotated tool would have added value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter has no schema description, so the description must compensate. It does by identifying the parameter's source ('from browse_erskine_may_index'), which is genuinely useful provenance an agent needs to supply a valid ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Combines a specific verb and resource ('Get details of an index term') and clarifies the content ('procedure topic, references'), which distinguishes it from browsing/searching siblings. It stops short of naming a specific alternative sibling except implicitly through the workflow hint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use after browsing index to get term details' establishes the workflow position and implies browse_erskine_may_index as the prerequisite step. Clear context is given, though no explicit when-not or alternative-exclusion is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It conveys that this is a lookup returning 'the specific paragraph content', which implies a safe read, but says nothing about invalid/missing reference behavior, required permissions, or numbering scope (e.g. whether '4.5' is global or chapter-local).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded: purpose first, then usage cue, then return value. The Args/Returns block repeats information already implied by the first sentence (the reference parameter and the returned content), so there is minor redundancy, but no sentence is confusing or bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single required parameter and an output schema present, the definition needs only to establish what the tool retrieves and how to supply the reference; it does both. The remaining gap is hierarchical scoping of the reference, which is minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it names the parameter ('reference') and supplies concrete format examples ('4.5', '12.3'). It does not clarify whether the reference is globally unique or scoped to a section/chapter, which is a meaningful ambiguity for this hierarchy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Look up a specific paragraph by reference number') and adds keyword synonyms ('paragraph citation, specific rule'). It distinguishes by input shape from the search-type siblings, but does not explicitly contrast with get_erskine_may_section or get_erskine_may_chapter, which are the nearest alternatives in a paragraph/section/chapter/part hierarchy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one positive condition ('Use when you have a paragraph reference like 4.5'), which is genuinely useful selection guidance. However, in a sibling set containing paragraph, section, chapter, part, and relative-section lookups, no when-not condition or named alternative is offered, so routing for ambiguous hierarchical references is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
part_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does convey that this is a read-style retrieval returning a part with title, description and chapter list, but says nothing about authorization, rate limits, error behavior, or pagination. Adequate but thin for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is short and front-loads purpose ahead of usage, with Args/Returns sections that are easy to scan. The separate 'Returns' line partially duplicates the earlier 'list of chapters' phrase, which is mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter, an output schema present, and no annotations, the description covers purpose, usage context, valid parameter range, and return contents. What is missing is routing detail among the many Erskine May siblings, which it only implies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does add the meaningful constraint that part_number is in the range 1-6, which the raw schema does not express. It does not clarify behavior for out-of-range values, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get a specific part of Erskine May') and situates it in the document hierarchy ('procedure structure, chapters'). It implicitly distinguishes itself from siblings like get_erskine_may_parts and get_erskine_may_chapter via the hierarchy hint, but it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to explore chapters within a part' gives an implied workflow context, but there is no explicit statement of when to prefer this over get_erskine_may_parts or get_erskine_may_chapter, and no exclusions or prerequisites. Usage is inferable rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return cardinality ('all 6 parts') and payload shape ('titles and descriptions'), which is useful, but says nothing about whether results are static/cached or how this navigational listing relates to the more granular sibling lookups.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and one usage clause. Slightly redundant: the inline sentence 'Returns list of all parts with titles and descriptions' is repeated by the formal Returns block, and an output schema already exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be documented, yet they are (redundantly). For a zero-parameter listing tool, everything an agent needs to invoke it correctly is present, though the sibling-routing guidance is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics for the description to clarify. Baseline of 4 applies since schema coverage is irrelevant here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all parts of Erskine May') and scopes it as the procedure structure/table of contents. This clearly distinguishes it from siblings like get_erskine_may_part, get_erskine_may_chapter, and get_erskine_may_section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to navigate the 6 major parts of parliamentary procedure' gives implied usage as a top-level entry point, but it never says when to prefer this over get_erskine_may_chapter, get_erskine_may_section, or search_erskine_may. No exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it only discloses that full text and footnotes are returned. It says nothing about read-only nature, permissions, pagination, or size limits. The 'Get' verb implies a read, but beyond that the disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in a pipe-delimited line, but 'full content' and 'Returns section with full text content' are redundant, and the Returns block duplicates what the output schema already provides. Half the text is repetition rather than added value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the essentials are present, and the output schema covers the return shape. However, the description does not situate the tool in the Erskine May hierarchy (chapter โ†’ section โ†’ paragraph) enough for an agent to reliably pick it over sibling retrieval tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate for the single parameter. It adds provenance meaning by stating the ID originates 'from chapter or navigation', which the schema does not convey, but it gives no format or valid-range guidance for the integer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get full content of an Erskine May section', and identifies the content domain (procedure text, rules, precedents). The resource level is specific enough to distinguish it from get_erskine_may_chapter and get_erskine_may_paragraph, though it does not name those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers implied usage ('Use to read the actual procedural content') and hints at the hierarchy by noting section_id comes 'from chapter or navigation'. But there is no explicit when-to-use versus alternatives such as get_erskine_may_section_relative or search_erskine_may_sections, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
stepYes
section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. It discloses that the result is the section at the given offset, but says nothing about what happens when the offset runs past the start/end of the document, nor about any auth or rate constraints on this read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited header is front-loaded, but it restates the same idea twice ('relative to current position' vs 'at offset from current section'), and the Args/Returns block partially duplicates what the schema and output schema already convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter navigation tool with an output schema, the essentials are covered. The redundant 'Returns' line is harmless, but the description leaves the out-of-range behavior unspecified, which is the main thing an agent would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: section_id is defined as the current section ID and step as an offset with concrete examples (1 = next, -1 = previous). This adds real meaning the bare integer schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: navigate to a section relative to the current position in Erskine May. The 'relative' framing distinguishes it from get_erskine_may_section (absolute fetch) and get_erskine_may_paragraph, though it does not name those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to move through sections sequentially' implies the sequential-navigation use case, but it never contrasts with the absolute siblings (get_erskine_may_section, search_erskine_may_sections) or states when relative navigation is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. Beyond implying it is a read of pre-scheduled activities, it discloses nothing about permissions, pagination, whether past events return empty results, or ordering. The 'Returns' line is redundant because 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is short, but the pipe-separated keyword block and the Args/Returns sections create redundancy with the name, schema, and output schema. It is front-loaded on the core action, which saves it from being wasteful overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the tool takes a single required parameter. What is missing is routing context against the sibling search_event_activities and any read-only/pagination behavior, leaving an agent able to call it but not confidently to choose it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description's only parameter note is 'event_id: Event ID.', which merely restates the name. It adds no meaning such as where an event ID comes from or whether it must reference an existing event, so it fails to compensate for the empty schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get activities scheduled for an event') and reinforces it with searchable synonyms (meeting agenda, event schedule). However, it never distinguishes itself from the very similar sibling search_event_activities, so an agent must infer the difference between a direct lookup and a search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

One sentence gives a usage context ('Use to see what's on the agenda for a committee meeting'), which is a real usage hint rather than nothing. But there are no exclusions and no mention of the close alternative search_event_activities, leaving the agent to guess when a lookup by event_id is preferable to searching.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, yet it only says it returns an attendance list. It does not disclose whether attendance covers members only, whether apologies/absences are included, whether the event must be a committee meeting, or any permission/scope requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded and the docstring is short, but the pipe-delimited keyword fragments and the Args/Returns boilerplate partially duplicate the opening sentence ('Returns attendance list for the event'). Structurally serviceable but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return shape need not be explained, and the tool is a simple single-parameter read. Still, with no annotations and a tautological parameter note, the definition is only minimally adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description's only parameter note is 'event_id: Event ID.', which merely restates the schema title rather than adding meaning. With one required parameter and no compensating detail, the description does not cover the gap the schema leaves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get attendance record for an event') and reinforces it with 'who attended, meeting attendance'. It implies a committee-meeting scope, which loosely separates it from the many event/committee siblings, but it never names an alternative tool, so differentiation is inferred rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to see which members attended a committee meeting' gives a clear usage context, so the agent knows the general scenario. However, there is no when-not-to-use guidance and no mention of alternatives such as get_committee_members or get_event_by_id, leaving routing decisions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYes
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully enumerates what the response contains (activities, attendees, committees, related business) and clarifies the filtering behavior of show_on_website_only, but says nothing about auth requirements, rate limits, or what happens when an ID is not found. Adequate but incomplete for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is front-loaded with purpose, and the Args/Returns docstring structure is easy to scan. The Returns line ('Detailed information about the event.') is nearly redundant given the output schema, but overall the text is tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one required param and an existing output schema, the description covers purpose, both parameters, and a rough sense of the return payload. Only the absence of error/not-found behavior and sibling differentiation keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains both parameters: event_id as a 'Unique event ID number' and show_on_website_only as 'Show only events visible on website,' adding meaning beyond the bare schema titles (and clarifying the non-obvious default=true filter).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed information about a specific committee event by ID'), which is clearly distinguishable from the many non-event siblings. However, it does not differentiate itself from close siblings like get_events or get_committee_events, so an agent must infer the difference from the ID-based lookup pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need complete event details including activities, attendees, committees involved, and related business' gives an implied usage context. It does not name alternatives (e.g., get_committee_events for listing vs. this for a single event by ID) or state any exclusions, so routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
location_idNo
search_termNo
committee_idNo
end_date_fromNo
event_type_idNo
start_date_toNo
sort_ascendingNo
start_date_fromNo
show_on_website_onlyNo
committee_business_idNo
include_event_attendeesNo
exclude_cancelled_eventsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It is implicitly a read/search operation and it usefully discloses pagination constraints ('default 30, max 100'), which is real behavioral context. It still omits permission requirements, rate limits, and what 'include_event_attendees' changes in payload size/cost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and the Args list is structured, but the opening sentence already lists the filterable fields that the Args section then repeats, and it references a 'house' filter that does not correspond to any parameter in the schema. That duplication and slight inaccuracy cost efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with no annotations and 0% schema coverage, the description is thorough: every parameter is described and the return is summarized, with an output schema covering payload shape. Missing only default sort direction and any note on how the many date/type filters combine.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and largely does: it documents all 14 parameters, supplies date formats (YYYY-MM-DD), and gives pagination defaults and a max. A few entries are near-tautological ('committee_business_id: filter by committee business ID'), keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for committee events') and enumerates the filterable dimensions (dates, location, committee, event type). It is clear on its own, but it does not distinguish itself from close siblings such as get_committee_events, search_event_activities, or get_committees_next_events, so an agent cannot tell from the description alone which event tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use when you need to find meetings, hearings, or other committee activities by date, location, or committee' gives implied usage context. However, it offers no when-not guidance, no prerequisites, and never names an alternative among the many event-related siblings, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseNo
end_dateNo
start_dateNo
category_idNo
search_termNo
event_type_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It never states that the operation is read-only, has no side effects, requires no permissions, or has pagination/rate-limit behavior. Beyond the Args list it adds no behavioral context, leaving the agent to infer safety from the 'Get' prefix.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening line repeats itself three times over ('Get event type metadata | ... | Retrieve metadata about parliamentary event types | Returns event type metadata'), padding the description with redundant keyword-stuffed synonyms. The Args/Returns block is clean, but the front-loaded lead wastes space instead of stating scope or usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six optional parameters and an output schema present, the description needn't explain return values, and the parameter documentation is solid. However, for a filtering tool with zero annotations, the absence of any usage context or indication of what event-type metadata contains relative to sibling calendar tools leaves a usability gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: all six parameters are documented, including non-obvious details such as house accepting 'Commons'/'Lords' or 1/2, and the YYYY-MM-DD format for dates. These semantics are absent from the schema and genuinely reduce invocation errors.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: retrieve metadata about parliamentary event types with optional filtering. It distinguishes itself as a metadata lookup rather than an event listing (get_events) or calendar listing (get_calendar_types), though it never explicitly names or contrasts those siblings, leaving some ambiguity around 'event type' vs 'calendar type'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_events, get_event_by_id, or get_calendar_types. The mention of 'optional filtering' implies a query use case but gives no conditions, prerequisites, or exclusions to route the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that results are limited to 'current' ministerial positions and that the full set is returned unfiltered, but says nothing about permissions, ordering, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword-stuffed first line is followed by a near-verbatim restatement ('List all current government ministerial positions with their holders') and a 'Returns' block that repeats the same content, so a meaningful share of the text is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-parameter lookup with an output schema already covering return shape, the description is sufficient to select and invoke it; the only waste is restating return values the output schema already defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a 0-param tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('List all current government ministerial positions with their holders') and explicitly names sibling tools (get_opposition_posts, get_spokespersons, get_departments), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'See also' line routes the agent to the correct alternatives (opposition posts, spokespersons, departments), implying when to pick each. It stops short of an explicit when-to-use/when-not statement, but the routing signal is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
houseYes
monthYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the return content (a list of sitting dates that have Hansard) and that house/month/year scope the result, but says nothing about permissions, pagination, ordering, or whether non-sitting days are omitted versus returned empty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded in the first lines before the Args/Returns blocks. The pipe-delimited keyword list is mild clutter and the Returns line partly duplicates the output schema, but overall it is compact and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-param read tool with an output schema, the description covers purpose, use case, and every parameter including the ambiguous house encoding. The main gap is sibling disambiguation, which matters given the dense calendar/Hansard tool cluster.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and largely does: it documents all three parameters and, crucially, gives the house encoding ('1 or Commons, 2 or Lords') that the schema's bare anyOf integer/string leaves ambiguous. Year and month examples are helpful but thin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope ('all sitting dates for a month') and clarifies the Hansard-availability angle, so an agent knows it is a calendar lookup. However, it does not distinguish itself from near-identical siblings like get_sitting_dates, get_next_sitting_date, or get_non_sitting_days.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to discover which days have Hansard records available' gives one positive use case, which is more than nothing. But it offers no when-not guidance and does not route the agent away from overlapping siblings such as get_sitting_dates or search_hansard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that this is a live/current-state read ('currently being processed', 'live updates') and that it returns a list of in-flight items, which is useful behavioral context. It says nothing about refresh cadence, whether results are eventually consistent, or auth requirements, so gaps remain for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded, but the pipe-delimited keyword block duplicates information already stated in prose, and the return value is described twice (once inline, once under 'Returns'). Roughly half the text is redundant for a zero-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't explain the return structure in detail, and it still notes the result is a list of in-process items. For a zero-param read tool with an output schema, 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There are no parameter semantics for the description to add or omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get Hansard content currently being processed', with a clear scope ('currently being transcribed or indexed'). It is distinguishable from siblings like search_hansard or get_hansard_sitting_day, though it doesn't name any alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to check what Hansard content is currently being transcribed or indexed' gives a clear usage context for the tool. It does not state when NOT to use it or point to sibling alternatives such as search_hansard, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It does establish this is a pure read that yields a single year value, but it says nothing about behavior when no records exist, error conditions, or whether the result is cached/static.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening line and the closing "Returns" sentence restate the same fact (the first/earliest year with records), and the pipe-separated keyword block adds bulk. Front-loaded and short, but with redundancy that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and there are no parameters, so the description only needs to convey the single-value nature of the result, which it does. Minor remaining gap is the empty/no-data case, which is not addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly implies a no-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: retrieves the earliest year for which Hansard records exist. An agent can tell what it returns without opening the schema. However, it does not differentiate itself from related range/sibling tools such as get_hansard_last_sitting_date or get_hansard_calendar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to determine the historical range of available Hansard data" implies a use case, but gives no when-not guidance and names no alternative for the complementary 'latest' boundary. Usage is inferable rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses that the result is a single date and implies a read-only lookup, but says nothing about error behavior for an invalid house, pagination, or how it relates to the get_last_sitting_date sibling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and reasonably short, but it wastes space on a keyword block ('Hansard, latest, most recent') and repeats the return in both a 'Returns' section and the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values do not need spelling out, yet the description still restates them. For a single required parameter with documented values, the definition is complete enough to invoke correctly, missing only sibling disambiguation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the enum count is 0, so the description is the only source of parameter meaning. It supplies the accepted values ('Commons' or 'Lords') and the shorthand integer aliases (1 or 2), which compensates well for the bare anyOf integer/string schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Get the most recent sitting date with Hansard') and even names the domain. However it does not distinguish itself from the near-identical sibling get_last_sitting_date, nor from get_next_sitting_date, so an agent cannot tell why to pick this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find the most recent day Parliament sat' restates the purpose rather than giving when-to-use guidance. With a sibling literally named get_last_sitting_date in the same family, the absence of any routing rule is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
houseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the return content ('previous and next sitting dates relative to given date'), implying a safe read, but says nothing about permissions, what happens when the date is not a sitting day, or any other edge behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and reasonably short, but the return value is stated twice (in the opening block and again under 'Returns'), and the pipe-delimited tag line adds some noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description documents both parameters well and defines the tool's scope. Complete enough for an agent to call it correctly, with only the sibling routing left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it largely does: it documents both required params, giving accepted house values ('Commons' or 'Lords', with 1 or 2 also accepted) and the date format (YYYY-MM-DD). This adds real meaning the enum-less anyOf schema lacks, though spacing/validation nuances are absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get previous and next sitting dates') and clarifies it is relative to a given date, which separates it from the single-direction siblings get_next_sitting_date and get_last_sitting_date. However, it never names those siblings, so an agent must infer the distinction from the descriptions alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to navigate between sitting days' gives an implied use case but offers no when-not guidance and does not point to alternatives like get_sitting_dates, get_next_sitting_date, or get_hansard_last_sitting_date, all of which overlap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
houseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the result is a list of PDF documents/links, which confirms read-only retrieval context, but says nothing about permissions, pagination, or limits. For a no-annotation read tool this is adequate but shallow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose, then compact Args/Returns sections. The pipe-separated keyword line mildly duplicates the opening sentence, but overall it is well-sized with little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Both required parameters are fully explained and an output schema exists, so return values need not be detailed (the description still notes the return shape). The only gap is the absence of sibling-routing guidance in a very crowded namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: date is documented as YYYY-MM-DD format, and the ambiguous house parameter (anyOf integer|string, no enum) is spelled out as 1/'Commons' or 2/'Lords'. This is exactly the meaning the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Get PDF documents for a specific sitting day') and reinforces it with the keyword line naming Hansard, PDFs, and daily documents. It clearly distinguishes this document-retrieval tool from siblings like get_hansard_sitting_day in the large tool set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to retrieve official PDF transcripts for a parliamentary sitting day' restates the purpose as usage context, implying when it fits, but names no alternatives or exclusions. Given the huge sibling list (get_hansard_sitting_day, search_hansard, etc.), the agent gets no routing criteria for choosing this over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
houseYes
sectionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the read-only nature of the call (get), that the section must be a valid name obtained from another tool, and that the result is a hierarchical tree, but says nothing about error behavior on invalid sections, tree depth/size, or any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and mostly tight, but the pipe-delimited keyword tag line ('Hansard, debate hierarchy, structure') is filler and the content is stated twice: 'hierarchical structure of debates for a day' in the opening and 'Returns hierarchical structure of debates' at the end.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be spelled out, and all three required params are explained along with the prerequisite tool for section names. The definition is serviceable for calling the tool correctly; remaining gaps are error handling and disambiguation from adjacent debate tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and largely does: it documents all three params with accepted forms for house ('Commons'/'Lords', 1 or 2 accepted), an explicit date format (YYYY-MM-DD), and section examples ('Debate', 'WestHall', 'Petitions', 'GEN') plus where to get valid names. Only the exact semantics of 'section' versus the returned tree is left fuzzy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (hierarchical tree of debate sections for a sitting day), which is clear and self-contained. It does not explicitly differentiate itself from nearby Hansard siblings such as get_debate_by_id, get_top_level_debate_id, or get_debate_speakers, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to see the tree structure of all debates on a sitting day' gives clear context for invoking it, and the section arg points to get_hansard_sitting_day as the source of valid values, which is a concrete prerequisite. No when-not-to-use or explicit alternative is named, so it stops short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
sitting_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. The name and 'Get' phrasing imply a read-only operation and the return content is described ('all debate sections'), but there is no mention of pagination, volume limits, or auth requirements for a day-level aggregate query.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded and organized into usage, Args, and Returns blocks. The pipe-delimited tag line ('Hansard, daily business, agenda') is slightly noisy filler but is brief and does not obscure the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to detail return values, and it sensibly focuses on purpose, args, and alternatives. Both required params are documented, leaving only edge-case behavior (invalid dates, empty days) unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it specifies 'sitting_date: Date in YYYY-MM-DD format' and 'house: 1 or Commons, 2 or Lords'. This adds real meaning beyond the bare schema, though it does not explain what happens for an invalid or non-sitting date.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get full agenda/sections for a sitting day') and clarifies scope ('all debates and business for a specific day'). The agent can distinguish this from sibling tools like get_hansard_section_trees or get_debate_by_id without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to see all debates and business for a specific day' gives clear context, and 'See also: get_hansard_section_trees, get_hansard_calendar' names alternatives. However, it does not state when NOT to use this tool or the exact condition that selects one sibling over another.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
houseYes
sectionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It states what is returned but says nothing about behavior on non-sitting days, missing sections, permission requirements, or result ordering. It is a mere lookup, so the risk is low, but the description adds little behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the opening line and the 'Returns' clause restate the same point ('list of speakers... Returns list of speakers for that section'), and the pipe-delimited keyword block adds little. The Returns section is also redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Parameters are fully documented, which is the main need, and an output schema is present so return values need not be spelled out. The missing piece is routing among the many Hansard siblings, which the description never addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning and it largely does: date as YYYY-MM-DD, house as 1/'Commons' or 2/'Lords', and section with concrete examples ('Debate', 'WestHall', 'Petitions', 'GEN'). It adds real value beyond the bare typed schema, though it omits defaults and fallback behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get list of speakers for a specific sitting day section.' An agent can tell it returns speaker names rather than debates. However it does not distinguish itself from close siblings like get_debate_speakers or search_hansard_members, which is a real gap in this crowded Hansard namespace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find who spoke in a particular section of parliamentary business on a given day' implies the right context, but there is no explicit when-not guidance and no named alternative (e.g. get_debate_speakers for speakers by debate). Usage is inferable but not directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseNo
end_dateNo
member_idNo
start_dateNo
search_termNo
contribution_typeNo
is_debates_searchNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The 'Get' verb and the filter list imply a read-only, non-mutating aggregate query, which is the right signal, but it says nothing about pagination, result granularity, or any permission/auth requirements. Low risk given the read-only nature, but the disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword pipe list ('Hansard, statistics, timeline, contribution counts') is search-engine filler, and 'Returns timeline statistics for the given search parameters' duplicates the Returns section. The Args block itself is well-structured, but the framing sentences are redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. With 7 all-optional parameters and no annotations, the description covers purpose and parameter meaning adequately, but leaves open the aggregation granularity (per day? per month?) and the relationship to sibling Hansard search tools, which matters for correct selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates by documenting all seven parameters, including non-obvious semantics the schema lacks: house accepts 1/'Commons' or 2/'Lords', dates are YYYY-MM-DD, and is_debates_search restricts to debates only. It doesn't clarify the accepted values for contribution_type or whether parameters combine as AND, which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get Hansard timeline statistics') and clarifies the output is 'aggregate stats showing contribution activity over time'. This is clear, but it never distinguishes itself from near-siblings like get_member_contribution_summary or get_hansard_calendar, so an agent cannot route between them from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get aggregate stats showing contribution activity over time' gives implied usage context, but there are no when-not conditions, no named alternatives, and no guidance on how this differs from the other Hansard aggregate/summary tools in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
sitting_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, yet only mentions that sections are included in the return. It says nothing about auth needs, behavior for non-sitting dates, error handling, or even that this is a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, and the Args/Returns scaffolding is serviceable, but the lead phrase and the 'Use to...' sentence are near-duplicates, and the pipe-separated keyword tags ('historical Hansard, past session details') add little for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return value detail is not required, and both parameters are documented. The main gap is the absence of any routing against get_hansard_sitting_day and search_historic_sitting_days, but for a simple two-param getter it is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents that house accepts 'Commons'/'Lords' or 1/2 (critical since the schema only offers anyOf integer/string with no enum) and that sitting_date is YYYY-MM-DD. This meaningfully exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get details of a historic sitting day') and the 'historic' qualifier helps distinguish it from the sibling get_hansard_sitting_day. However, it never explicitly names or contrasts with that sibling, so an agent must infer the current-vs-historic distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use to get details of a specific historic sitting day' merely restates the purpose rather than giving real guidance. It does not mention search_historic_sitting_days (the obvious alternative for lookups) or when a retrieval by exact date should be preferred over a search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
interest_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Get' reasonably implies a read-only lookup, but nothing is said about permissions, behavior on a missing/invalid ID, or scope. For a low-risk single-record getter this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The same idea is stated three times ('Get a specific registered interest by ID' / 'Use to retrieve a specific interest declaration by its ID' / 'Returns interest details'), and the Returns block duplicates an output schema that already exists. The intent is front-loaded, but the redundancy costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with an output schema, the description covers purpose, the parameter's meaning, and the return scope. The remaining gap โ€” how this differs from the other interests/register tools โ€” is a routing concern rather than a missing operational detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single undocumented parameter. It does state 'interest_id: Interest record ID,' which confirms the identifier's meaning, but adds no type, format, or sourcing detail beyond the parameter name itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: 'Get a specific registered interest by ID,' and adds topical keywords (register of interests, financial interest, declaration). It does not differentiate from near-siblings like get_register_by_id, search_roi, or get_member_registered_interests, so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to retrieve a specific interest declaration by its ID' implies the lookup-by-known-ID case, but no alternatives are named and no when-not guidance is given. An agent choosing between this and search_roi or get_member_registered_interests gets only a weak signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only implies a read via 'Get'/'Returns' and does not disclose whether the ID is validated, what happens on a missing category, or the response shape beyond 'category details'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Reasonably short and front-loaded, but the pipe-delimited keyword list and the redundant Args/Returns sections repeat information already conveyed by the opening sentences, so not every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required. For a single-parameter lookup with no annotations, however, the description leaves behavior (errors, permissions, missing-ID handling) and parameter semantics undocumented, making it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but 'category_id: Interest category ID' only restates the parameter name. It adds no format, range, or source-of-value information for the single required integer parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get a specific interest category by ID') and clearly identifies the lookup-by-identifier nature of the tool. It does not distinguish itself from the list-style sibling interests_categories or from get_interest_by_id, but the action itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get details of a specific interest category' merely restates the purpose rather than giving conditions for selecting this tool over alternatives like interests_categories. No when-not guidance and no sibling named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
date_to_checkYes
include_weekend_sittingsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It usefully discloses that weekend sittings are excluded by default via the include_weekend_sittings flag, which materially affects results. However, it says nothing about validation errors, behavior when no prior sitting date exists, or house-code handling, and 'Returns last sitting date' adds no behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The alias phrase is front-loaded, which aids retrieval, and the Args/Returns structuring is easy to scan. It loses a point for mild redundancy - 'Get last sitting date' and 'Returns last sitting date' restate the same fact before any new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, well-bounded date lookup with a full output schema covering return values and complete parameter documentation, the description is nearly sufficient. The remaining gap is edge-case behavior (no date found, invalid house) which is not addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it does: it documents all three parameters, giving accepted house values ('Commons' or 'Lords', 1 or 2 also accepted - important since the schema allows both int and string), the required date format (YYYY-MM-DD), and the default for the optional weekend flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource and scope: 'Get the last sitting date prior to a specified date,' with useful search aliases ('previous sitting, last sat, before recess'). It is clear on its own, but it never distinguishes itself from the near-identical sibling 'get_hansard_last_sitting_date', leaving that routing ambiguity unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied through the scope phrase 'prior to a specified date,' which signals this is the backward-looking counterpart to get_next_sitting_date. There is no explicit when-to-use/when-not, no mention of the alternative tools (get_hansard_last_sitting_date, get_sitting_dates), and no stated prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return content (IDs and names) and the read-only nature implicitly, but says nothing about permissions, pagination, or ordering. Adequate but thin for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded, but the description is repetitive: 'Returns list of laying bodies with IDs and names' appears twice, and the opening keyword pipe-list is redundant scaffolding that adds no meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter lookup with an output schema present, the description is complete enough โ€” the agent knows what it fetches and roughly what comes back. It slightly over-explains the return value that the output schema already covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to add on parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and clarifies the domain: 'Get all bodies that can lay statutory instruments before Parliament'. This distinguishes it from generic list tools like get_departments or get_answering_bodies, though it never names a sibling to contrast with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not guidance is given. The keyword list ('laying body, department, government organisation, JCSI') implies a discovery context but offers no explicit condition for choosing this tool over the many other list endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
for_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the output shape (counts aggregated by peerage type), implying a read-only aggregation, but says nothing about permissions, rate limits, or whether the date affects historical versus current composition beyond the single hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short overall, but the pipe-separated title line and the 'Breakdown of Lords by type of peerage' sentence restate the same idea as 'Get Lords by peerage type', and the boilerplate 'Args:'/'Returns:' headers add padding without content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple: one required date parameter, no nested objects, and an output schema that already documents the return structure, so the description need not explain return values. With the date format and 'today = current' guidance covered, an agent has what it needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the sole parameter is undocumented in the schema, so the description must compensate. It does, giving the expected format (YYYY-MM-DD) and the semantic guidance to use today's date for a current snapshot, which is exactly the missing information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get Lords by peerage type') and enumerates the peerage categories, which tells an agent exactly what data domain this covers. It is distinguishable from most siblings, though it never names a sibling or contrasts scope with any near neighbor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance and no named alternative. The one usage hint present is embedded in the Args block ('Use today's date for current'), which is about parameter value choice rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
division_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the response shape (content/not content voters, tellers, vote totals), which implies a read-only operation, but says nothing about failure modes for an invalid or missing division_id, permission requirements, or whether the record always exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited front-loading puts the core action first, and the return-value summary is compact. The 'Args:' block is boilerplate but small. No sentence is wasted, though the pipes are terser than ideal prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only lookup with an output schema already declaring the return structure, the description covers what the tool does and what comes back. The main remaining gap is disambiguation from sibling division tools, which is a routing concern more than a completeness one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only restates the parameter as 'Unique Lords division ID number', which adds no format, range, or provenance detail (e.g. where to obtain a valid Lords division ID). It is marginally better than the bare integer in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 one House of Lords division by ID, and enumerates the payload (vote details, division list, tellers). The 'Lords' qualifier implicitly separates it from get_commons_division_by_id, but no sibling is named outright and the overlap with get_division_details is not addressed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need complete details of a particular vote' gives a usable trigger condition. However, it never contrasts this with the many nearby alternatives (search_lords_divisions for lookup, get_division_details, get_lords_divisions_grouped_by_party), so the agent must infer when this single-record fetch is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
member_idNo
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the output shape ('Returns vote counts by party rather than individual members'), which is useful behavioral context, but says nothing about pagination, result limits, defaults when no filters are supplied, or how filters combine. For a 6-param read tool with zero annotation coverage that is only partial disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded: the core purpose and its differentiator come first, followed by usage context, then a compact Args block. No filler sentences, though the per-parameter lines duplicate what ideally belongs in the schema and the multi-clause first line is slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, and the description still summarizes the return shape. For a read-only filtering tool with no annotations, the main gaps are the absence of pagination/limit behavior and default filter semantics, but the essential call information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents all six parameters, adding real meaning such as the YYYY-MM-DD date format (absent from the schema's plain 'string' type) and clarifying member_id scoping and the teller flag. The annotations are terse and largely restate parameter names, but every param gets coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get House of Lords divisions grouped by party') and immediately clarifies the distinguishing return shape: 'vote counts by party rather than individual members.' This separates it from siblings like search_lords_divisions and get_lords_division_by_id without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the scenario: 'Use when analyzing how different parties voted on issues,' reinforced by tags like 'party-line voting, how parties voted, rebellions.' It does not state when NOT to use it or name alternatives (e.g., get_commons_divisions_grouped_by_party for the Commons, or search_lords_divisions for raw division lists), so it stops 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
member_idNo
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the tool returns a total count (a non-mutating read), which is the key behavioral fact, but says nothing about permissions, rate limits, or whether the count is exact. Adequate for a simple count endpoint, not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and routing are front-loaded in the first line, followed by a useful Args block. The pipe-separated keyword fragment ('| number of votes, how many divisions |') is slightly stuffing-like but compact and harmless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be detailed, and the description still states 'Returns the total count'. Given six parameters at 0% schema coverage, the Args block makes the definition complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry all six parameters, and it does: it marks each as optional and adds formats and meaning (YYYY-MM-DD for dates, example search terms, member-scoped voting, teller inclusion) that the bare schema lacks. Some entries are thin ('specific division number') but overall it compensates well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Count') and resource ('House of Lords divisions') plus scope ('matching search criteria'), and the keyword line 'number of votes, how many divisions' reinforces intent. It is clearly distinguishable from the Commons counterpart (get_commons_divisions_search_count) and from the fetching sibling search_lords_divisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Use to size a search before fetching results with search_lords_divisions', naming the alternative and the condition that selects it. The only gap is the absence of an explicit 'do not use this to fetch records' exclusion, but the routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
search_termNo
include_deletedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose pagination behavior (default page 0, 20 per page) and an include_deleted flag, which is useful. However it says nothing about permissions, the meaning of 'deleted' records, or result ordering, leaving meaningful gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword-stuffed pipe-delimited header and the Args/Returns block add bulk, and the return value is stated twice ('Returns registered interests matching the search criteria' in the header trailer and again in Returns). The useful content is front-loaded, but there is noticeable redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format need not be explained, and the description documents the three otherwise-undescribed parameters. It is close to complete for a search tool, with the main omission being sibling differentiation among the many register/ROI tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: all three parameters (search_term, page, include_deleted) are described with their defaults and the page size. It adds real meaning beyond the bare schema types, though it omits search-term syntax or scope (e.g., name vs. category).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search the Lords register of interests', with a clear domain (declared/financial interests, outside roles). It does not name the closely overlapping siblings such as search_roi, get_registers_of_interests, or get_member_registered_interests, so an agent cannot fully disambiguate from this text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when investigating Lords' declared interests, financial interests, or outside roles' line gives a positive use context, but there is no when-not guidance and no mention of the obvious alternatives (search_roi, get_member_registered_interests, get_registers_of_interests) that an agent would need to choose correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It conveys that this is a read/search operation returning matching records, but says nothing about pagination, result limits, ordering, or whether the search is exact vs fuzzy โ€” meaningful gaps for a search tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The header repeats 'staff interests declared by Lords' in three pipe-separated fragments, and the Args/Returns sections restate the same fact. It is front-loaded and readable but has noticeable redundancy that could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-format detail is unnecessary (the description's Returns note is redundant but harmless). The single required parameter is documented with useful semantics, making the definition adequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (the schema only repeats 'Search Term'), so the description must compensate. It does so by clarifying that the term can match either staff names or interests, which is real added meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: searching staff interests declared by Lords. The resource is narrow enough to distinguish it from siblings like get_member_staff and get_lords_interests_register, though it does not name those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a use case ('investigate potential conflicts of interest related to Lords' staff'), which implies when to reach for it. However, it gives no when-not guidance and does not distinguish it from adjacent interest-register tools, leaving the agent to infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
member_idYes
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose useful behavior: results are ordered newest-first, teller-only divisions are opt-in, and pagination is supported via skip/take. It does not state permissions/auth requirements or rate limits, which is a gap for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded before the Args block, and the parameter list is compact. The pipe-separated keyword line ('Lord votes, voting history, voting pattern') is slightly redundant filler, but the rest earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and it correctly focuses on parameters and usage. Combined with full parameter documentation, an agent has enough to invoke it correctly; only auth/permission context is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: every one of the 8 parameters is explained, including the YYYY-MM-DD date format, the default 25 / max 100 for take, the purpose of skip, and example search terms ('brexit', 'climate', 'NHS'). This is meaningfully more than the bare schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (voting record), and scope (a Lord, in House of Lords divisions), which clearly separates it from the Commons counterpart and the generic get_member_voting. The 'Returns the divisions the member voted in, newest first' clause pins down the output shape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when analyzing how a specific Lord votes or their stance on issues through their voting history' gives a concrete use case, and 'See also: get_member_voting, compare_member_votes' names alternatives. It does not say when to prefer get_member_voting over this tool, so routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the ordering behavior ('most recently updated first') and implies a read-only fetch, but says nothing about permissions, pagination limits, or exhaustiveness of the result. For a simple read this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns sections are clean and front-loaded, but the opening pipe-delimited synonym list ('bills introduced by MP, Private Members' Bills, sponsored legislation, member's bills') is repetitive keyword padding that restates the same concept four ways.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the brief Returns note is a bonus rather than a requirement. With both parameters documented and the scoping/ordering behavior stated, an agent has what it needs to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: member_id is explained with its source (get_member_by_name) and a concrete example (4514), and take is defined with its default. This adds real meaning beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the bills a member has sponsored') and expands scope with concrete synonyms (Private Members' Bills, sponsored legislation). An agent can distinguish it from search_bills or get_member_by_id without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when asked which bills an MP or Lord has introduced or sponsored' gives a clear triggering condition, and it names related tools (get_bill_overview, get_bill_committees) plus the combination it wraps (get_member_by_id, search_bills). It lacks an explicit when-not or 'prefer X over this' statement, so it stops short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the disclosure burden. It implies a read-only lookup and confirms the return shape, but never states that it is non-mutating, whether authentication/entitlement is required, or how the result behaves for an unknown ID. Adequate for a simple getter, but thin given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and well-structured with Args/Returns blocks, but padded with a redundant synonym dump ('member details, MP profile, member information, parliamentary roles, constituency data') and the return summary is stated twice in nearly identical words. Roughly a third of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema (so return values need not be enumerated), the description covers purpose, trigger condition, parameter sourcing, and sibling awareness. It is complete enough to call correctly; the only real gap is the absence of any explicit differentiation from the named sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter has no schema description, but the description compensates meaningfully: it marks member_id as required, tells the agent to obtain it from a member search first, and gives a concrete example value (1423). That is more than the schema provides and removes the main ambiguity about where the ID comes from.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (retrieve a full member profile by ID) and lists the concrete data it covers: biographical, political, contact, roles, constituency, party, career. It explicitly names four sibling tools (get_mp_profile, get_members_biography, get_member_synopsis), so an agent can see alternatives exist, but it does not explain how this tool differs from them beyond 'comprehensive'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States a clear triggering condition: use when you have a member ID and need complete biographical, political and contact information. That is solid context, but there are no exclusions or explicit routing rules ('use X instead when you only need Y'), and the See-also list is bare names with no selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the search scope ('searches current and former members') and the returned fields, but says nothing about matching behavior (exact vs fuzzy), pagination, result limits, or behavior on ambiguous/multiple matches. For a read-only lookup that is a modest but real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentences are front-loaded and useful, but the pipe-delimited keyword block ('find MP, search politician, lookup member, who is...') is SEO filler that adds no decision value, and the Returns section duplicates what the output schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter search with an output schema present, the definition covers purpose, usage, argument semantics, and return fields adequately; return format need not be re-explained since an output schema exists. Missing only edge-case behavior for ambiguous or empty matches.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that 'name' accepts full or partial strings, gives concrete examples ('Boris Johnson', 'Keir Starmer', 'Smith'), and notes coverage of current and former members. It stops short of clarifying matching rules or multi-result handling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for MPs and Lords by name') and immediately disambiguates scope as covering both current and former members. The 'See also' line names the nearest siblings (get_mp_profile, search_members, search_historical_members), so an agent can place it in the tool family 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists the situations this tool serves: identifying members, checking spellings, finding member IDs, and getting basic member info. It names alternatives in the See-also line but does not state when NOT to use it (e.g. prefer search_members for broader queries, or get_member_by_id when the ID is already known).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idsYes
membership_statusNo
committee_categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose the filter semantics (status, category) and that results are scoped to the supplied members. However, it says nothing about permissions, pagination, or behavior for invalid/unknown member IDs, leaving real gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Wait โ€” see below.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is correctly omitted. Purpose, all three parameters, filter semantics, and the related sibling are covered; only edge-case behavior (invalid IDs, result size) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: member_ids format (comma-separated, with example '4514,172'), membership_status example values ('Current', 'Former'), and committee_category's role are all documented. Only committee_category lacks example values or accepted forms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: retrieving committee memberships for members, with a plain-language restatement ('which committees a member serves on'). It names the reverse-direction sibling get_committee_members, so the agent can distinguish directionality, though it does not spell out the contrast in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find which committees a member serves on' gives clear intended context, and 'See also: get_committee_members' points at the closest alternative. It stops short of stating when to prefer that alternative over this tool, so it falls just under explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It conveys that this is a read-only summary and exposes pagination controls (skip/take), but says nothing about permissions, rate limits, result format, or what the summary aggregates. The disclosure is adequate but shallow for an annotation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the pipe-delimited keyword line and the redundant 'Returns summary of member's parliamentary contributions' / 'Returns: Summary of member's speaking record' duplicate the same point twice. An Args/Returns block is acceptable but here adds little beyond restating the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out in prose. The gaps are instead in usage routing and behavioral context for a 0%-coverage, annotation-free tool: the definition covers the mechanics of calling it but not why or when to choose it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. Its Args block does document all three parameters, including defaults for skip (0) and take (20), which adds real value. But member_id is described only as 'Parliament member ID' with no format or sourcing hint, so the compensation is partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get summary of a member's Hansard contributions,' and clarifies it is an overview of speaking frequency/timing rather than full contributions. However, it never names the sibling get_member_hansard_contributions, which is the natural detailed counterpart, so routing between the two is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to see an overview of how often and when a member has spoken' implies the use case but never states when to prefer this over get_member_hansard_contributions, get_contributions, or search_hansard_contributions. No when-not guidance and no named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a simple read via 'Get' but discloses nothing about permissions, error behavior, or whether the record can be empty; for a trivial read-only lookup this is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in the first sentence, which is good. However, the 'Returns: Professional experience and career background of the member' line simply restates the opening sentence and is redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers what the tool returns and when to use it. The output schema relieves it of explaining return structure, so the remaining gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It identifies member_id as a 'Parliament member ID', which adds slight meaning over the bare schema title 'Member Id', but gives no format, range, or example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (professional experience/career background) with a clear scoping detail ('before entering Parliament') that separates it from general biography tools. It does not, however, name or distinguish itself from similar siblings such as get_members_biography, get_member_synopsis, or get_member_focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives when-to-use context: researching qualifications, previous employment, education, or professional history before entering Parliament. It provides clear triggering scenarios but names no alternatives or exclusions, so it falls short of the routing guidance a 5 requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. The 'Get' verb and 'Returns' line imply a safe read operation, but there is no disclosure of permissions, rate limits, or data freshness. For a simple single-param lookup this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose in the first sentence and is reasonably sized. The 'Returns' line largely restates the purpose and is somewhat redundant, but the overall structure is clean and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return formatting need not be explained. For a one-parameter read tool the description covers purpose, context, and the argument adequately, leaving only sibling disambiguation as a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It names the parameter and clarifies it is a 'Parliament member ID', which adds modest meaning, but gives no format, range, or source guidance for obtaining a valid ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get areas of focus and policy interests of a member by ID'), which is clear and distinct from most siblings. However, it does not differentiate itself from overlapping siblings like get_policy_interests or get_member_registered_interests, which an agent must disambiguate on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear usage context ('Use when understanding what issues and policy areas a member prioritizes or specializes in'). It gives when-to-use but no when-not-to-use and does not name an alternative like get_policy_interests, so the agent gets no routing help between near-duplicate siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes
debate_section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose scope ('all contributions by that member in the specified debate'), which is useful, but says nothing about permissions, pagination, volume, or whether the debate_section_id must be pre-resolved. Adequate but thin for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening keyword fragment ('Hansard, member speeches |') adds noise, and the 'Returns:' block restates verbatim the first paragraph's claim that it returns all contributions by that member in the debate. The Args section is efficient, but the duplication costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out; the description nonetheless gives a one-line summary. With both parameters sourced and the scope defined, an agent has what it needs, though nothing covers failure modes or empty results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description compensates well by giving provenance for both parameters: member_id 'from members API' and debate_section_id 'from search_hansard'. That tells the agent where to obtain each value, which the bare integer/string schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get all speeches by a specific MP/Lord in a debate', with a scoping clause ('extract just one member's contributions') that separates it from the broader contribution search tools. It does not name a sibling explicitly, but the filter-by-member-in-one-debate intent is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Use to extract just one member's contributions from a debate' implies the use case, but no alternative (e.g. search_hansard_contributions, get_contributions) is named and no when-not condition is given. Usage is inferable but not routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it discloses little beyond the operation itself. It implies a read-only 'latest result' lookup but says nothing about behavior for members with no election record, null/no-contest handling, or whether results are historical only. For a simple lookup this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence and usage trigger are front-loaded and waste no words. The trailing 'Args:'/'Returns:' boilerplate is largely redundant given the input schema and the existing output schema, which is the only drag on conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not narrate return values, and the single required parameter is named in the schema. Purpose, usage trigger, and an adjacent tool pointer give an agent enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is one parameter, so the description must compensate. It loosely describes member_id as a 'Parliament member ID', which adds mild meaning over the raw integer type, but gives no source, format, or coverage hints (e.g., Commons vs Lords, historical members).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the latest election result for a member by ID'), and the 'for a member' scope distinguishes it from sibling tools like get_election_results_for_constituency and get_constituency_latest_election. It stops short of explicitly contrasting the member-scoped tool with those constituency-scoped siblings beyond a 'See also' pointer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the research scenarios that select this tool: how a member was elected, constituency performance, vote share, or election margin. It also references an alternative (get_election_results_for_constituency) but does not state when that alternative is preferred over this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the input and return shape of a read-only lookup, but says nothing about error or edge behavior (e.g. what happens for an invalid or unknown member_id, or whether a placeholder URL is returned). For a trivial fetch this is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then a short usage sentence, then structured Args/Returns blocks. The Returns line duplicates what the output schema already provides, which is mild redundancy, but overall it is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained; one required parameter at a trivial tool's complexity means little more is needed. The only meaningful omission is the portrait-vs-thumbnail distinction against a sibling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does clarify that member_id is a 'Parliament member ID', which disambiguates the ID namespace, but adds no format, range, or validity constraints beyond what the schema already conveys via the integer type and required flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource combination ('Get the portrait image URL for a member by ID') and scopes it to the official parliamentary portrait photograph, which is clear. However, the sibling get_member_thumbnail_url is an obvious near-duplicate and the description never distinguishes portrait from thumbnail, leaving sibling differentiation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need a link to a member's official parliamentary portrait photograph' gives an implied usage context, but offers no alternatives or exclusions. It never says when to prefer this over get_member_thumbnail_url, get_mp_profile, or get_members_biography, which is the main routing decision here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseNo
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does characterize the payload ('declared interests like directorships, consultancies, and gifts'), but says nothing about permissions, rate limits, or whether an absent member/house errors or returns empty. Adequate content context, incomplete operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage trigger are front-loaded in the first two sentences, and the Args/Returns block is compact. The Returns line is thin but harmless, and no sentence is redundant with the others.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not detail return structure, and the when-to-use, parameter encoding, and sibling pointers are all present. The remaining gap is disambiguation between this tool and get_lords_interests_register/search_roi, which matters given how many interest-related siblings exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does for the non-obvious parameter: 'house - 1 or Commons, 2 or Lords' supplies an encoding the schema's unconstrained anyOf does not. The member_id line largely restates the schema, so it is not a full compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get registered interests of a member') plus the two scoping keys (ID and house), and enumerates the content type (directorships, consultancies, gifts). It points at siblings via 'See also' but does not explain how it differs from them, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use trigger ('investigating potential conflicts of interest, financial interests, or external roles') and names two alternatives (search_roi, get_lords_interests_register). However it never states when to prefer those alternatives over this tool, so the routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that member_id is required and should come from a member search first, and that the result is a read-style detailed biography. It does not state permissions, rate limits, or what happens on an invalid ID, so behavioral coverage is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scope sentence is front-loaded and useful, but the content is redundant: 'Returns detailed biographical data including education, career timeline, and political milestones' appears in the opening paragraph and again verbatim in the Returns block, and an output schema already exists. This duplication dilutes an otherwise compact definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter getter with an output schema, the description covers purpose, usage context, and how to source the required ID, which is sufficient to call it correctly. The main gap is the absence of any disambiguation against get_mp_profile and get_member_experience, which matters given how many overlapping member tools exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the only parameter is an integer with no description, so the description must compensate. It does so by explaining that member_id is the Parliament member ID, is required, and should be obtained from member search first โ€” meaningful guidance beyond the bare schema type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get comprehensive member biography and personal history') and enumerates the covered facets (education, career, political experience). It names siblings via 'See also' but does not explain how it differs from get_mp_profile or get_member_synopsis, so an agent can't fully disambiguate without opening both schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives positive usage contexts ('researching member backgrounds, writing profiles, understanding political journey'), which is useful implied guidance. However, it offers no when-not conditions and no rule for choosing between this tool and the three siblings it references, leaving the selection decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the prerequisite chain (member_id must come from a member search), but says nothing about authorization requirements, error behavior for an invalid ID, or whether Lords members are covered. Adequate but with real gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening pipe-delimited summary is front-loaded and effective, but the Args and Returns blocks largely restate what the first line already listed ('phone numbers, addresses, and official contact information' repeats the header list). Redundancy costs it conciseness points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single required parameter and an output schema present, the description covers purpose, use cases, and the prerequisite for acquiring member_id. The superfluous Returns section could have been spent instead on edge-case behavior, but nothing essential for calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter has no title-level documentation, so the description is the only source of meaning. It identifies member_id as a required Parliament member ID and tells the agent where to obtain it, which is genuinely useful procedural context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get member contact details and office information') and enumerates the returned fields (phone, email, office address, constituency office). It is clearly distinct from most siblings, though it does not explicitly mark itself off from lookalikes such as get_mp_profile or get_members_biography.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear use cases ('Use for contacting members, finding office locations, or getting official contact details') and a precondition for the parameter ('get from member search first'). It stops short of naming an alternative tool or stating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses that it returns historical information, but does not state permissions, rate limits, pagination, or explicitly confirm read-only safety beyond the verb 'Get'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and usage. The Args and Returns sections are somewhat redundant with the opening sentences, but the overall structure is efficient and not excessively long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter retrieval tool with an output schema, the description covers purpose, usage, and return content adequately. The main gap is lack of differentiation from related member-history siblings, but the agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single parameter. It documents member_ids as a list of Parliament member IDs to get history for, which adds some meaning, but gives no format or constraints beyond the schema's array-of-integers type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: get historical information for multiple members by IDs, including name history, party affiliations, and membership details over time. It is clear but does not differentiate from related siblings such as get_members_biography, get_member_experience, or search_historical_members.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context for when to use it: researching how members' details have changed throughout their careers. It does not name alternative tools or exclusions, but the intended scenario is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. The 'Get' verb implies a read-only lookup, but nothing is said about authorization, pagination, or whether staff data is current/limited. For a simple single-record read the gap is modest, but the disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded, with the core purpose in the first sentence and Args/Returns sections kept minimal. Slight redundancy between the opening sentence and the Returns line, but no meaningful waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple read with one documented parameter and an output schema that already defines the return shape, so the description need not elaborate on returns. Only behavioral edges (auth, freshness) are unaddressed, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the lone parameter, but the description compensates by explaining member_id as the 'Parliament member ID to get staff details for'. That covers the single parameter adequately, though it adds no format or source detail beyond the schema's naming.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get staff members') and scopes it to 'working for a specific MP or Lord by member ID', which implicitly separates it from committee-oriented siblings like get_committee_staff. It never names an alternative outright, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when researching parliamentary office staff, researchers, or support personnel' gives a usage context, but it largely restates the resource rather than stating when-not to use it or which sibling to pick instead (e.g. committee vs member staff). Usage is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses nothing beyond the basic action โ€” no read-only confirmation, no indication of data freshness, caching, or whether the synopsis is derived versus stored. The 'Returns' line merely restates the purpose sentence and adds no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The leading sentences are appropriately front-loaded, but the Args/Returns docstring block is largely redundant: the single parameter's type is in the schema and the return value is covered by an output schema. The Returns line repeats 'Brief synopsis or summary about the member' verbatim from the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema, the description covers purpose and a rough usage cue, and returns need not be explained. What is missing is the disambiguation from the cluster of sibling member-information tools, which is the main gap for an agent choosing among them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does identify member_id as a 'Parliament member ID', which adds meaning beyond the bare integer type, but it omits format, valid range, and how to obtain a valid ID (e.g. via get_member_by_name or search_members).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get a brief synopsis or summary about a member by ID.' An agent knows exactly what it retrieves. However, it never distinguishes itself from closely related siblings such as get_members_biography, get_mp_profile, get_member_focus, or the parallel get_constituency_synopsis, so the boundary of 'synopsis' is left ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need a concise overview of a member's background, role, or key information' gives an implied trigger condition, which is better than nothing. But it offers no when-not guidance and no routing to the many sibling member tools (biography, profile, focus), which is the main decision an agent faces here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It reveals the return is a URL string, which is helpful, but it doesn't state whether the thumbnail always exists, what happens for members without a photo, or any caching/format details. For a simple lookup tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured and front-loaded with the core purpose, followed by Args and Returns sections. Slightly verbose with the explanatory phrase about 'smaller version of a member's parliamentary photograph,' but every part is relevant and there's no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter, no annotations, and an output schema (which the description doesn't need to duplicate for return value details), the description covers the essential purpose and parameter. It's complete enough to call correctly, but lacks edge-case or reliability context (e.g., missing thumbnails) that would be useful for a no-annotation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents the single parameter (member_id) as 'Parliament member ID to get thumbnail URL for,' which adds meaning beyond the schema's bare integer type. However, it doesn't clarify format or source of the ID, so it's baseline adequate rather than strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the thumbnail image URL for a member by ID') with explicit scope. The sibling get_member_portrait_url exists, and the description clarifies this returns a 'smaller version of a member's parliamentary photograph,' implicitly distinguishing thumbnail from full portrait.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'Use when you need a link to a smaller version of a member's parliamentary photograph for lists or compact displays.' This gives a use case (compact displays) but does not explicitly name get_member_portrait_url as the alternative for full-resolution needs, leaving a small gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
houseYes
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full behavioral burden. It discloses meaningful traits: pagination (20 votes per page), default ordering ('Page 1 ... most recent'), return ordering ('newest first'), and even an API quirk ('the API's "skip" field reads 20 on page 1'). That is well beyond the schema, though it omits any auth or rate-limit context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then Args/Returns sections that are easy to scan. Slightly longer than strictly necessary, but every sentence (especially the pagination quirk) earns its place and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still adds return ordering. Parameter behavior, house enum values, and pagination quirks are covered, so an agent has what it needs to invoke correctly. The one real gap is routing guidance versus the commons/lords-specific siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate, and it does. It documents member_id, the house values ('1 or Commons, 2 or Lords'), and page semantics including the 20-per-page size and the skip quirk that no schema would convey. All three parameters gain meaning beyond the bare types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get voting records of a member by ID for a specific house'), which is unambiguous. It names related siblings, but does not explain why an agent should pick this tool over get_commons_voting_record_for_member or get_lords_voting_record_for_member, which appear functionally near-identical. Clear purpose, weak sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a usage context ('analyzing how a member votes, their voting patterns, or their stance on particular issues'), which is genuinely helpful. However, the 'See also' line is a bare list with no conditions for selecting among the alternatives, and given the semantics-overlapping siblings, that differentiation is exactly what is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses that this is a filtered read returning a member's written questions and hints at pagination via the page arg, but omits any auth requirements, result limits, or pagination behavior beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose in the first sentence and organizes supplementary detail into Args/Returns sections. No filler, though the Returns line is somewhat redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no elaboration, and the description nonetheless covers purpose, usage context, and both parameters. The main gap for a zero-annotation tool is the lack of any behavioral/operational detail such as pagination semantics or ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does describe both parameters ('member_id: Parliament member ID' and 'page: Optional: page number for pagination'), supplying minimal but real meaning over the bare schema titles, though nothing about format or bounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get written questions submitted by a member by ID'), which clearly identifies both the operation and the entity. It names the sibling 'search_written_questions' as related, aiding differentiation, though it does not spell out the exact contrast between them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for use ('when researching what questions a member has asked of government departments or their areas of parliamentary inquiry') and points to 'search_written_questions' as a related tool. It stops short of stating explicit when-not conditions or which of the two tools to choose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose the key behavioral trait: this is an aggregator that combines get_member_by_id, get_members_biography, search_roi, and get_member_voting into one response, plus what the response contains. It stops short of stating read-only/safety characteristics (implied by 'Get' but never asserted) or any cost/size caveats for the voting summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded purpose sentence, the usage line, and the Args/Returns blocks are efficient and well ordered, but the pipe-delimited keyword block ('complete MP info, full member profile, MP background, politician details, comprehensive member data') is redundant search-stuffing that adds no meaning and dilutes the useful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param aggregator with an output schema present, the description covers the essentials: what is combined, which tools feed it, the return contents, and how to source the ID. Minor gaps remain around whether the call is read-only and whether the voting activity payload is bounded or paginated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single member_id parameter, so the description must compensate and does: it identifies it as the 'Parliament member ID', tells the agent to obtain it from member search first, and supplies a concrete example value (4514). That is more guidance than the bare integer-typed schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get comprehensive MP/Lord profile in one call') and enumerates the component data sets (member details, biography, interests, voting summary). It explicitly distinguishes itself from siblings by naming get_my_mp, get_member_by_name, and the four underlying tools it combines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need a complete picture of an MP or Lord without multiple tool calls' gives the selecting condition, and 'See also' names the alternatives with their distinct roles (get_my_mp by postcode, get_member_by_name to find the member ID). An agent can route correctly without opening any other schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo
postcodeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden, and it does disclose a non-obvious trait: this is a composite that internally combines search_members, get_members_biography, search_roi, get_member_latest_election_result, get_member_voting, and get_commons_voting_record_for_member. It also states the conditional behavior for topic ('how they voted on a topic, if given'). It does not state read-only status explicitly or any cost/latency implications of the multi-call aggregation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the pipe-delimited synonym/keyword section is efficient, but the returned-field list is enumerated three separate times (intro clause, 'Returns MP profile with...', and the Returns block), which is wasted repetition in an otherwise well-structured description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't define return values, yet it still summarizes them; combined with documented args, composition, and usage trigger, the definition is nearly complete for a 2-param aggregate tool. The missing piece is guidance on failure modes or the cost of the multi-tool fan-out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: postcode is given format examples ('SW1A 1AA', 'N1 9GU') and topic is described as an optional keyword filter with examples ('climate', 'NHS'). It adds real meaning beyond the bare schema types, though it doesn't cover malformed-postcode or no-match handling.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find your MP by postcode and get their full profile') and explicitly frames itself as an aggregate of six named sibling tools. An agent can distinguish it from get_mp_profile and check_mp_vote without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when someone wants to find their MP from a postcode' gives a clear trigger condition, and the 'See also' line names get_mp_profile and check_mp_vote as related alternatives. It stops short of saying when NOT to use this versus those siblings, which keeps it out of 5 territory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
date_to_checkYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return shape (next sitting date for the house) and acceptable house inputs, which is useful, but says nothing about error behavior for invalid houses, non-sitting date handling, or permissions. Adequate but not rich for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns structure is clean and front-loaded, but the opening pipe-delimited keyword string ('Get next sitting | parliament returns, next sitting day, when back') is filler that does not earn its place. Core content is otherwise efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Both required params are explained and an output schema exists, so return-value detail is not needed. For a two-param read tool the description covers what an agent needs to call it correctly; only edge-case behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the house param is an unconstrained anyOf(integer,string), so the description must compensate and largely does: it enumerates 'Commons'/'Lords' plus 1/2 aliases and gives the date format (YYYY-MM-DD). This meaningfully reduces ambiguity beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the next sitting date after a specified date') and the return ('Returns next sitting date'), which is enough to distinguish it from siblings like get_last_sitting_date or get_sitting_dates. The keyword-pipe header ('parliament returns, next sitting day, when back') is search-bait rather than clarification, so it stops short of a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one concrete usage hint ('Use today's date to find when Parliament next sits'), which is genuinely helpful. However, it never names alternatives such as get_last_sitting_date or get_sitting_dates, nor states when this tool is the wrong choice, so usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It discloses the return scope ('Non-sitting days in the date range') but nothing about permissions, response shape, or edge cases. An output schema exists, which lowers the bar, so this is adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage guidance are front-loaded in the first two sentences, followed by structured Args/Returns blocks. The Args section largely mirrors the schema but is justified given 0% schema coverage; overall it is efficient with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All three required params are documented, usage context and the sibling alternative are given, and an output schema exists so return values need not be spelled out. The only gap is the absence of behavioral detail (e.g., whether non-sitting days are returned as a list of dates or ranges) that annotations would otherwise have covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that house accepts 'Commons'/'Lords' or the integers 1/2 (resolving the schema's opaque anyOf of integer|string) and that start_date/end_date use YYYY-MM-DD format. This adds real meaning beyond the schema, though it does not clarify range/inclusivity behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get periods when Parliament is not sitting') and parenthetically enumerates the semantic scope (recesses, holidays). It is immediately distinguishable from the sibling get_sitting_dates, which it explicitly references.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context ('Use when you need to know when Parliament is on break, recess periods, or when no parliamentary business is scheduled') and names the complementary sibling via 'See also: get_sitting_dates.' It lacks an explicit when-not/alternative-selection rule, so it falls just 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the operation's nature and scope (a read of 'all current' posts, returning holders with member details), which is adequate for a no-argument list endpoint, but says nothing about permissions, volume, or how 'current' is determined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The synonym keywords are front-loaded, which is good, but the core statement is duplicated: 'List all current opposition frontbench positions with their holders' and the trailing 'Returns: List of opposition frontbench positions with current holders' say the same thing. The pipe-delimited layout also reads like stitched-together metadata rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read tool with an output schema and no annotations, the description covers purpose, scope, and alternatives sufficiently. The duplicate return sentence is unnecessary given the output schema already defines the payload, but nothing an agent needs in order to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing parameter-related for the description to clarify; this is the baseline 4 case. The description correctly does not invent options that the empty schema does not support.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all current opposition frontbench positions with their holders') and adds retrieval synonyms (shadow cabinet, shadow ministers, opposition frontbench). The word 'opposition' cleanly separates it from the sibling get_government_posts, so an agent can tell the two apart without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It points at two alternatives ('See also: get_government_posts, get_spokespersons') but never states the condition that selects one over the other, nor any when-not-to-use cases. The routing intent is implied by the sibling names rather than explained, which is only minimum-viable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
start_dateNo
search_termNo
committee_idNo
show_on_website_onlyNo
committee_business_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose practical behavior such as filter dimensions and pagination caps ('default 30, max 100'), but says nothing about authentication, rate limits, or result ordering. It is enough to call the tool but not a rich behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and routing guidance are front-loaded in the first three sentences, followed by a well-structured Args list. The Args section partly restates the schema, but since the schema itself carries zero descriptions this redundancy is justified rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return shape, and the one-line Returns statement is acceptable. Combined with full parameter documentation and usage context, the definition is nearly complete; the only missing piece is explicit guidance on when to prefer the by_id sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description is the only source of parameter meaning, and it documents all 8 parameters including a date format ('YYYY-MM-DD') and pagination semantics ('skip', 'take' default 30 max 100). A few entries are near-tautological ('committee_id: Optional: committee ID to filter by'), which keeps it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (oral evidence sessions from committee hearings) and clarifies scope with 'witness testimonies, committee hearings, or transcripts.' The 'See also' line names the two closest siblings, so an agent can distinguish it from get_oral_evidence_by_id and get_written_evidence without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for when to use it ('researching witness testimonies, committee hearings, or transcripts') and names the two alternative tools. It does not, however, state the selecting condition between this search tool and get_oral_evidence_by_id (e.g. 'use by_id when you already have the ID'), so routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
evidence_idYes
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no permission requirements, no behavior when the ID is missing or not public, no note on the interaction between evidence_id and the show_on_website_only default. 'Returns complete oral evidence record' is a restatement, not disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description repeats itself across three near-synonymous lines ('detailed', 'full details', 'complete record') before the Args block, and the pipe-delimited fragment 'witness testimony details' adds a keyword but no operational meaning. Front-loading is fine but several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining return values is unnecessary yet done redundantly. With only two parameters at 0% schema coverage and no annotations, the description should at minimum disambiguate the show_on_website_only default and the relationship to get_oral_evidence; it leaves both unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. 'evidence_id: Oral evidence ID' is tautological and adds no format or sourcing information, while 'show_on_website_only: Show only evidence visible on website' gives a thin gloss on a parameter whose default is true but never explains what happens when it is false.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (oral evidence by ID) and clarifies it returns a single session's full record. It implicitly contrasts with the list-style sibling get_oral_evidence, but never names it, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Use to get full details of a specific oral evidence session' implies the retrieval-by-identifier use case but gives no explicit when-not guidance and does not point to get_oral_evidence for browsing or listing, which is the most likely alternative an agent would need to weigh.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
houseNo
end_dateNo
start_dateNo
category_idNo
search_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It usefully discloses defaulting behavior (today) and accepted input formats, which is real behavioral context. However it says nothing about result volume, pagination, sort order, or timezone โ€” gaps for a diary feed that may return many events.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the Args block is tight, but the leading pipe-delimited keyword line ('diary, schedule, events, business programme') merely restates the name and the return sentence ('Returns diary events') duplicates the Returns section โ€” two passages that do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, 0% schema coverage, and an output schema present, the description does what it needs to: it documents every input and defers return-value detail to the output schema. Only the undiscoverable category_id values and pagination behavior keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: all six params are documented with formats (YYYY-MM-DD), accepted values ('Commons'/'Lords', 1 or 2), and optionality. The one gap is category_id, whose valid values are never hinted at (e.g. via get_calendar_categories).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Retrieve the parliamentary diary with upcoming business and events.' An agent can tell this apart from calendar-adjacent siblings like search_calendar or get_sittings by the 'diary' resource. It does not explicitly name a sibling it differs from, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one concrete usage rule โ€” 'Defaults to today when no date filter is given' โ€” which tells the agent the no-arg call is valid and meaningful. Beyond that there is no when-to-use/when-not guidance and no routing to alternatives such as get_calendar_event or search_calendar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYes
bill_stage_idYes
ping_pong_item_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation and 'Returns: Detailed information' indicates the output shape, but there is no mention of permissions, error behavior, or how IDs relate to one another. This is minimally adequate for a read-only detail endpoint, but significant gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the tool's purpose and organized with Args and Returns sections. It is reasonably concise, though the Args section largely duplicates the schema without adding value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained in detail. However, with three required parameters at 0% schema description coverage and no annotations, the description should provide more context about parameter relationships and when to prefer this tool over sibling list or amendment tools. It is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must fully compensate for parameter semantics. The Args section only restates the parameter names as 'Bill ID', 'Bill stage ID', and 'Ping pong item ID to get details for', adding essentially no meaning beyond the schema. It does not explain how to obtain these IDs or how the three identifiers relate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('Get detailed information about a specific ping pong item') and clarifies the domain as amendments or motions in final legislative stages. It does not explicitly differentiate from sibling tools such as get_bill_stage_ping_pong_items or get_amendment_by_id, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context ('Use when you need complete details about final stage amendments or motions in the legislative process'), which is enough to indicate when this tool is appropriate. However, it does not name alternatives or state when not to use it, such as when only a list of ping pong items is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. 'Get' implies a safe read of static reference data and it says what is returned, which is adequate for a no-param lookup, but it never explicitly states this is read-only, requires no authentication, or that it takes no arguments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded pipe-delimited summary is efficient, but the trailing 'Returns:' paragraph restates the same fact ('list of policy interest categories with IDs') already conveyed in the opening line, creating redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, argument-free reference lookup with an output schema present, the description covers purpose and usage sufficiently and need not explain return values. Its only shortfall is not resolving the overlap with the 'interests_categories' sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to clarify beyond noting that no arguments are needed, which it implicitly conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Get policy interest reference data') and clarifies it returns policy interest categories with IDs. It is distinct enough from siblings like get_member_registered_interests, but it does not differentiate itself from the very similar-sounding sibling 'interests_categories', which an agent would have trouble choosing between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one concrete use case ('Use to get IDs for filtering member searches by policy interest'), which is helpful context. However, it names no alternatives and gives no when-not-to-use guidance, which is a real gap given the several overlapping interest-related siblings in the toolset.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no auth requirements, rate limits, caching, or update cadence. The only behavioral trait conveyed is the content scope (private bills), which is thin for a tool with zero structured behavioral hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scoping sentence is front-loaded and useful, but the 'Returns: RSS feed of private bills' block is redundant with the output schema and restates 'private bills' for the third time. Minor trimming would improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-param read-only feed with an output schema, the description is close to sufficient, but it never explicitly routes the agent away from get_public_bills_rss and get_all_bills_rss. In a sibling set this dense, that missing distinction leaves a real selection gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to clarify and the baseline of 4 applies. No parameter-level gaps exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (RSS feed of private bills), and the word 'only' scopes it against the public/all-bills RSS siblings. It stops short of naming those siblings (get_public_bills_rss, get_all_bills_rss), so the differentiation is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you want to monitor private member bills and private bills through RSS feeds' gives a plausible use case but no when-not condition and no named alternative. An agent choosing among the four RSS siblings gets only the word 'only' as routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
publication_idYes
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only fetch and enumerates the kinds of content returned, but says nothing about invalid-ID behavior, error responses, or whether the ID namespace is committee-specific vs global.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence, followed by usage. The Args/Returns blocks are somewhat redundant with the schema and output schema, but the overall text is short and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema already covering return shape, the description supplies the purpose, usage context, and both parameter meanings. Only error/edge-case behavior for an invalid ID is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description compensates by defining both parameters: publication_id as a 'Unique publication ID number' and show_on_website_only as filtering to website-visible publications. It omits the default value (true), which the schema itself supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed information about a specific committee publication by ID'), which is clearer than the sibling get_publications and distinct from get_publication_document. It does not explicitly contrast itself against nearby siblings like get_committee_publications_summary, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need complete publication details including documents, HC numbers, government responses, and associated committee business' gives a clear trigger condition. There are no explicit exclusions or named alternatives, which is the only gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes
publication_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden. It discloses the shape of the return (metadata fields) and the read-only nature implied by 'Get', but says nothing about permissions, error behavior, or how it relates to the parent publication resource.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose and usage sentence before the Args/Returns boilerplate. The structure is clean, though the Args section adds little value and slightly pads the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-ID read tool with an output schema available, the description covers purpose, trigger, and return category adequately; missing pieces (sibling disambiguation, param meaning) are the ones noted above rather than a wholesale gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters, so the description must compensate, and it does not: 'publication_id: Publication ID.' and 'document_id: Document ID to get details for.' merely restate the parameter names. No format, range, or relationship between the two IDs is clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get information about a specific publication document') and enumerates the returned metadata (filename, content type, size), which distinguishes it from sibling list tools like get_publications or get_bill_publications. It does not, however, explicitly differentiate itself from the very similar get_publication_by_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use when you need metadata about bill documents' gives implied context for invocation, but no explicit when-not conditions and no named alternatives (e.g. get_publication_by_id vs get_bill_publications) are given despite many near-neighbours in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
start_dateNo
search_termNo
committee_idNo
show_on_website_onlyNo
committee_business_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Search' reasonably implies a non-mutating read and the Args block discloses pagination semantics (skip, take default 30 / max 100), but there is no explicit statement that it is read-only, no mention of result limits or ordering behavior, leaving the safety/mutation profile for an agent to infer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with purpose and usage front-loaded, then Args and Returns blocks. Every line earns its place, though the Returns line is redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter search tool with zero required params and an existing output schema, the description covers purpose, usage, routing, and every parameter. Nothing critical is missing, but with no annotations it could say more about scope, ordering, and result limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document all 8 parameters. It adds real value with the YYYY-MM-DD date formats, the take default/max, and pagination intent, though a few entries (e.g., 'committee_id: committee ID to filter by') are near-tautological restatements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (committee publications) and enumerates the document kinds covered (reports, government responses, other documents). It also names the sibling tools it is distinct from, so an agent can separate it from get_publication_by_id and get_committee_publications_summary without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases (researching committee outputs, finding reports on topics, tracking dates and paper numbers) and routes to alternatives via 'See also'. It stops short of stating when NOT to use it or how to choose between the named siblings, so routing is helpful but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The word 'Get' and the fixed-return phrasing imply a safe read-only lookup, and it notes the response includes descriptions, but it says nothing about permissions, caching, or how many records are returned by default. Adequate for a trivial lookup but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then a usage sentence, then a compact Args/Returns block. The Args section is somewhat redundant given the input schema, but overall it is tight and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-param lookup with an output schema already describing the return shape, the description covers purpose, usage context, params, and the nature of the response. The only real gap is disambiguation from sibling type-listing tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents skip as 'number of records to skip (for pagination)' and take as 'number of records to return.' This meaningfully clarifies the two bare integer params, though it doesn't give defaults or max values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get all publication types available for bills') and scopes it to bills, which implicitly separates it from the similarly named sibling get_committee_publication_types. It stops short of naming that sibling explicitly, so it's clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need to understand the different types of documents that can be associated with legislation' gives an implied context but no when-not guidance and no alternatives (e.g., get_committee_publication_types, bill_types). The usage cue is present but shallow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It does disclose the output medium (an RSS feed) and that only public bills are included, but says nothing about freshness/update cadence, authentication, or whether the feed is cached โ€” modest but not rich behavioral context for a zero-parameter read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and clear, but the 'Returns: RSS feed of public bills.' block merely restates the opening sentence, adding a redundant line to an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter tool with an output schema present, the description only needs to convey what the feed covers and when to use it โ€” both are covered. It is complete enough to call correctly, with only minor freshness/auth details absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get RSS feed of public bills') and immediately scopes it with 'only' and 'excluding private bills', which cleanly separates it from the sibling tools get_all_bills_rss and get_private_bills_rss.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you want to monitor government and public bills through RSS feeds' gives a clear use context, and the exclusion clause implicitly routes agents away from the private/all-bills variants. It never names those siblings explicitly, so it stops short of full 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses useful behavior โ€” data freshness (updated daily) and ordering (recent motions first) โ€” but omits whether the call is read-only, pagination limits, or rate behavior. Adequate but with clear gaps for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and constraints in the first paragraph, then separates Args/Returns. The pipe-separated keyword list ('EDMs, political motions, backbench initiatives, MP opinions...') is redundant noise, and the Returns line duplicates the output schema, costing a little efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be re-explained, and the description still covers scope, freshness, and the single parameter's bounds. For a simple one-parameter read tool this is complete enough, missing only explicit alternative-routing detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains that 'take' is the number of EDMs, gives the default (10) and a recommended max (50), and states recent motions are returned first. This meaningfully exceeds the bare schema, though the ordering note is somewhat redundant with the purpose text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get recently tabled Early Day Motions') with enough domain framing (sponsors, supporters, tabling dates) to know what is returned. It names a sibling (search_early_day_motions) via See also, but never explains how the two differ, so sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers concrete use cases ('tracking political sentiment, finding MP stances on issues, monitoring backbench activity') and points to an alternative via See also. However, it gives no explicit when-not or the condition that selects search_early_day_motions over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the freshness model ('updated frequently') and roughly what is returned, but says nothing about auth needs, pagination, or whether the result set is bounded by recency window versus count. Adequate but incomplete for a read tool with a soft max parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited purpose/keyword/usage line is front-loaded, but the synonym stuffing ('recent bills, new legislation, latest laws, parliamentary bills, legislative updates, current proposals') is redundant filler. The 'Returns' block also duplicates the existing output schema, repeating content the agent already has.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain the return payload (its Returns line is redundant but harmless). For a single-parameter read tool it covers purpose, freshness, and the parameter caveat. Minor gaps remain around auth and pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must do all the work, and it does: it defines 'take' as the number of bills, restates the default, adds a recommended max of 50, and warns that higher values slow the response. That is a real caveat the schema's bare integer type cannot convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get most recently updated bills') with the scope qualifier 'most recently updated' that separates it from a paginated list. The 'See also' reference to search_bills and get_bill_overview lets an agent place it in context without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases ('tracking new legislation, monitoring bill progress, or finding recently introduced/updated laws') and names two alternatives. However, it never states when to prefer search_bills or get_bill_overview over this tool, so the routing decision is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
register_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and does not meet it. It implies a read but never states side effects, permission requirements, pagination, or error behavior; 'Returns register details' is the only behavioral statement and is trivial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword block ('register of interests, published register, transparency') is search-oriented filler, and the Args/Returns scaffold restates the opening sentence. The core purpose is front-loaded, so it is functional but has removable redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup with an output schema, the description need not explain return values, and it does state the lookup target. However, with zero annotations and zero parameter documentation, an agent gets no behavioral or argument-level context to call it correctly versus its many siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% โ€” register_id is typed as integer with no field description. The description's 'register_id: Register ID.' merely restates the parameter name and adds no format, source, or example of a valid ID, so the schema gap is not compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Get a specific Register of Interests by ID') plus keyword tags, so an agent knows what it does. It does not differentiate from close siblings such as get_registers_of_interests (list vs. by-ID) or get_interest_by_id (register vs. individual interest), which matters in this crowded namespace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to retrieve a specific published interest register by its ID' implies the usage context but never states when to prefer this over get_registers_of_interests, search_roi, or get_interest_by_id. No exclusions or prerequisites are offered, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. 'Get' and 'published' imply a safe read of public data, and the output schema covers the return shape, but nothing is said about whether results are paginated, scoped by house, or require any auth โ€” a real gap for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose in the first sentence, followed by usage guidance. The trailing 'Returns: List of published Registers of Interests' largely restates the opening line, which is mild redundancy rather than bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with an output schema already documenting the return shape, the description supplies purpose plus usage context. The main omission is any hint about pagination or result volume, but nothing essential for calling the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter meaning to document and the schema cannot be under-covered. The baseline of 4 applies; no additional parameter guidance is possible or needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get list of published Registers of Interests.' The phrase 'all available interest registers' implicitly contrasts with single-register siblings like get_register_by_id and get_lords_interests_register, but no sibling is named explicitly, so an agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need to see all available interest registers or understand the transparency framework for parliamentary interests' gives a clear usage context. However, it names no alternatives (e.g. get_register_by_id for a single register, search_roi for filtering) and states no exclusions, so routing among the many interest-related siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state what happens for an invalid/unknown ID, whether the lookup requires auth, or anything beyond the trivial 'returns session details', so this is a significant gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description repeats the same purpose three times and appends boilerplate Args/Returns blocks that restate the schema and the obvious return. It is keyword-stuffed rather than front-loaded with genuinely distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and a single-parameter getter is intrinsically simple. Still, with no annotations and no error/not-found or sourcing context, the definition is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the sole parameter is documented only as 'The unique session ID', which is a tautological restatement of the field name and schema title. It adds no format, range, or sourcing guidance (e.g., where to obtain a valid session_id).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Retrieve details of a specific parliamentary session by its ID'), so an agent can tell what it does. However, it gives no differentiation from close siblings like get_sessions and get_session_for_date, and the purpose is stated three separate times in near-identical phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives such as get_sessions or get_session_for_date. The agent must infer from the name alone that this is the ID-based lookup rather than the list or date-based lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It confirms the tool returns session details, but says nothing about the important edge case of a date that falls outside any session (recess), nor about error behavior or whether the lookup is inclusive of session boundaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with three near-identical restatements of the same purpose separated by pipes, which is redundant padding. The Args/Returns docstring block is cleanly structured, but the 'Returns' sentence duplicates what the output schema already declares.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema present, the description is largely sufficient: it states the date format and what is returned. The remaining gap is the unspecified behavior for dates not covered by any session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% โ€“ the single 'date' parameter is a bare string with no format hint in the schema. The description compensates by specifying the required 'YYYY-MM-DD' format, which is genuinely load-bearing information the agent could not get from the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Get parliamentary session for date') and clarifies the lookup semantics (find which session a date falls within). It implicitly contrasts with get_session_by_id via the 'by date' framing, but never names that sibling, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The three pipe-separated variants ('which session', 'session lookup by date', 'Find which parliamentary session a given date falls within') all restate the same purpose rather than providing usage guidance. There is no statement of when to prefer this over get_sessions, get_session_by_id, or get_sitting_dates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. Beyond restating that it returns a list, it discloses nothing about ordering, pagination, scope breadth, or read-only guarantees, leaving the agent to guess at call behavior for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core purpose in the first sentence. The trailing 'Returns: List of parliamentary sessions.' is a restatement that duplicates the output schema and earns little, but it is a minor redundancy rather than bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters and an output schema present, the structural context is largely covered, so the description does not need to explain return values. What remains missing is disambiguation from the many sibling session/calendar tools, which the description does not address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to convey and the baseline of 4 applies. The description neither helps nor harms here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get list of parliamentary sessions'), which is unambiguous on its own. It does not differentiate from close siblings like get_session_by_id, get_session_for_date, or get_sitting_dates, so an agent still has to infer which one applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides implied usage ('Use when you need to understand parliamentary terms, session dates, or the parliamentary calendar structure'), which is clearer than nothing. However, it names no alternatives or exclusions, and 'session dates' plausibly overlaps with siblings such as get_sitting_dates or get_session_for_date without routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the tool is a read operation returning a list of business items with dates and outcomes, which is useful, but it says nothing about ordering, pagination, result size, or what an empty result means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is short but redundant: the same idea ('business items (debates, motions) for an SI', 'returns ... with dates and outcomes') is restated three times across the header, body, and Returns block. The key fact is front-loaded, but the repetition costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, and the single parameter is well covered. What is missing is usage context against the many sibling SI/business-item tools, leaving the agent to guess when this one applies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it explains instrument_id is the SI ID and that it is an alphanumeric string obtained from search results, telling the agent both the format and provenance of the value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get business items (debates, motions) for an SI', with the domain (SI progress, scrutiny) named. It is distinguishable from generic bill or committee tools, though it does not explicitly contrast itself with the close sibling get_si_timeline_business_items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no mention of alternatives. With siblings like search_statutory_instruments and get_si_timeline_business_items in the list, an agent gets no help deciding which SI-related tool fits which need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
procedure_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It says the tool returns workflow steps, but never states that it is a read-only lookup, how missing/invalid IDs are handled, or whether any auth is needed. For a no-annotation tool this leaves real gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword/purpose line is front-loaded and useful, but 'Returns procedure details including workflow steps' appears twice (once in the body, once under Returns), and 'Get SI procedure details' restates the name. There is avoidable duplication in an otherwise short payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not enumerate return fields, and for a single-required-parameter lookup the coverage is close to sufficient. The main omission is behavioral (read-only confirmation, error behavior) rather than structural.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it identifies procedure_id as an alphanumeric string sourced from get_si_procedures, which is meaningfully more than the bare schema type. It could still say what happens if the ID is stale or malformed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('SI procedure details'), and the keyword line adds domain context (statutory instrument procedure, affirmative, negative). The singular 'procedure' vs the sibling 'get_si_procedures' implies list-vs-single, but the description never names that sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the Args note that procedure_id comes 'from get_si_procedures' hints that the list tool must be called first, which is a useful sequencing cue. There is no explicit when-to-use vs. when-not, and no mention of what to do if the ID is unknown or invalid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It states the tool returns all procedures with IDs and names, but says nothing about ordering, pagination, size of the result set, or whether the procedure type values are enumerable โ€” meaningful gaps for a 'get all' endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is short, but the same fact is stated three times ('Get all statutory instrument procedures', 'Returns list of SI procedures with IDs and names', and the Returns block repeating it verbatim). The keyword-pipe segment at the top is also unstructured, so the front-loading is noisy rather than efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists and covers the return shape, so the description need not restate it. For a simple zero-parameter reference lookup the definition is essentially complete, with only the redundant repetition and absent pagination/ordering note holding it below the top score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate beyond noting that no filter input is accepted, which it implicitly does by framing the call as returning all procedures.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List SI procedures') and enumerates the procedure types (affirmative, negative, made affirmative), which distinguishes it from the singular sibling get_si_procedure. It is clear what the tool returns, though it does not explicitly call out the singular sibling as the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given. The description does not explain the relationship to get_si_procedure or search_statutory_instruments, so an agent must infer that this is the unfiltered reference-list lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
timeline_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It only says it 'returns all business items in the SI procedure timeline' โ€“ nothing about ordering, pagination, whether the timeline must exist, or whether the call is read-only is disclosed beyond the obvious 'Get' verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The same idea is restated four times in the header ('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'), which is keyword stuffing rather than front-loaded structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, and for a single-parameter lookup this is minimally adequate. However, with no annotations and no sibling differentiation, the definition leaves real gaps for an agent operating inside a dense SI tool cluster.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it names the parameter and adds format/origin context ('alphanumeric string from SI details') that the bare schema type does not provide. That is genuinely useful for sourcing the ID, though no example value or lookup path is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get business items for an SI workflow timeline') and repeats it several ways, so the intent is unambiguous. It gestures at a 'timeline' scope that distinguishes it from the plain get_si_business_items sibling, but never explicitly contrasts the two, so the differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus get_si_business_items, get_si_procedures, or get_si_procedure, all of which live in the same SI cluster. The agent gets a purpose but no routing guidance or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the return content ('List of sitting dates for the specified house'), which is useful for a read-only calendar lookup, but says nothing about permissions, pagination, or handling of out-of-range/empty results. Adequate for a simple read, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence, Args, and Returns are well structured and front-loaded, but the leading pipe-delimited keyword block ('recess, sitting days, parliamentary calendar, when sitting') is retrieval noise that a caller must read past. Appropriate length otherwise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter read tool with an output schema present (so return values need not be explained), the description covers purpose, sibling routing, and all parameter semantics. Only minor gaps remain around empty/edge-case behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are no enums, so the schema alone leaves the agent guessing. The description fully compensates: house accepts 'Commons'/'Lords' (or 1/2), and both dates use YYYY-MM-DD. This is exactly the missing information an agent needs to invoke correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get sitting dates for a house within a date range') and explicitly names the scope (a house + date range). It also routes to siblings via 'See also: get_non_sitting_days, get_next_sitting_date', so an agent can distinguish it from related calendar tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'See also' line implies these are adjacent tools, and the 'for a house within a date range' phrasing implies when it applies, but it never states when to prefer this over get_non_sitting_days, get_next_sitting_date, or get_sittings. Usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral weight, and it does imply a read-only retrieval and mentions pagination via skip/take. But it discloses no auth requirements, rate limits, or default result sizing, and the 'Returns' line only restates the purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, usage, cross-references, args, and returns are laid out in a scannable order with the primary verb front-loaded. The 'Returns' sentence ('sittings matching the criteria') is close to tautological and could be dropped, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be spelled out, and all parameters plus usage context are covered. For a read-only, optionally-filtered list tool this is sufficient, with only minor gaps around defaults and alternative selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document all five parameters: house with accepted values ('Commons'/'Lords', 1 or 2), date formats (YYYY-MM-DD), and skip/take semantics for pagination. That is meaningful added meaning beyond the bare schema, though it omits default behavior when filters are absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get parliamentary sittings') plus its filter scope ('by house and date range'), which cleanly separates it from unfiltered calendar lookups. It gestures at siblings with 'See also' but doesn't explain how get_sitting_dates or get_hansard_calendar differ, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when researching when Parliament was in session, finding specific sitting dates, or tracking parliamentary activity' sentence gives concrete contexts. However, the named alternatives are offered without conditions, so an agent has no rule for choosing among them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
for_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It states that it returns member details for the Speaker and Deputy Speakers, but says nothing about permissions, rate limits, or behaviour when no Speaker exists for the date. Adequate but thin for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and readable, but the pipe-delimited keyword list ('Speaker, Deputy Speaker, House officers') is filler, and the return value is stated twice โ€“ once in the header line and again in the Returns block. Some redundancy costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained; the description adequately covers what the tool does, its single argument, and its use condition. Little is missing for a tool of this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description documents the single required parameter and supplies the format (YYYY-MM-DD), which the schema omits. That added detail effectively compensates for the coverage gap for a one-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (the Speaker of the Commons and Deputy Speakers) scoped by a date, which distinguishes it from the many member-related siblings. It does not explicitly contrast with near-neighbours like get_spokespersons or get_debate_speakers, so a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Use when you need to know who was Speaker or a Deputy Speaker on a given date' gives a clear use condition. There is no statement of when NOT to use it and no named alternative among the siblings, so it stops 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
houseNo
end_dateNo
start_dateNo
category_idNo
search_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup, but says nothing about pagination, result limits, authentication, or how filtering interacts (e.g. whether date and start_date/end_date can be combined). The 'Returns' line restates the purpose rather than disclosing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns block is front-loaded and useful, but the opening pipe-delimited header says the same thing three times ('Get speaker events', 'Retrieve parliamentary events with speaker information', 'Returns speaker event details'), which is redundant filler rather than added information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not needed. The parameter documentation is adequate, but the description leaves the core concept ('speaker events' โ€” order paper, business items) undefined and gives no basis for choosing this tool over the numerous sibling speaker/event tools, which is the main gap for a 6-param retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all six parameters with accepted values and formats ('Commons' or 'Lords' or 1/2; YYYY-MM-DD dates) and labels each as optional. It doesn't explain category_id sourcing or search_term matching behavior, which keeps it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: retrieve parliamentary events with speaker information, and the keyword list (speakers, order paper, business items, speakers list) hints at the domain. However, it does not distinguish this tool from close siblings like get_debate_speakers, get_hansard_speakers_for_day, or get_speaker_and_deputies, so an agent could easily pick the wrong one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no conditions selecting this over alternatives, and no exclusions. The Args list implies filter-based retrieval but never says in what scenario an agent should reach for this tool rather than the many other speaker/event tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
party_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that this is a read-style lookup returning a list with portfolios, and gives the ID prerequisite. However it says nothing about permissions, pagination, or result ordering, leaving behavioral gaps for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded pipe-delimited summary is efficient and scannable, with Args/Returns sections. Minor redundancy: 'Returns spokespersons with their portfolios' appears both in the header line and the Returns block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be re-explained, yet the description still clarifies them; the prerequisite for party_id is covered. Given no annotations, a bit more on read behavior or result shape would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single required parameter would otherwise be undocumented. The description compensates by explaining that party_id is a Party ID and, importantly, how to obtain one via parties_list_by_house โ€” meaningful added value beyond the bare integer schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get party spokespersons) and immediately disambiguates with synonyms โ€” shadow ministers, opposition frontbench, party speakers โ€” so an agent knows exactly what entity is returned. The scope (per party, with portfolios) is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a usage context ('Use to find who speaks for a party on specific policy areas') and a prerequisite pointer to parties_list_by_house for obtaining IDs. It does not explicitly state when NOT to use it or name a competing sibling for the same job, so it falls 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
for_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the return shape (party names with seat counts) but says nothing about permissions, rate limits, or behavior for historical vs current dates beyond a brief hint. Adequate for a simple read but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and structured, but the first line and the 'Returns' section both restate 'party names with seat counts,' and the pipe-delimited keyword list duplicates the purpose statement. Some redundancy trims the efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed, and both required parameters are explained. The main gap is the absent when-to-use distinction from parties_list_by_house, but overall an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: 'house: 1 for Commons, 2 for Lords' documents the otherwise opaque anyOf integer/string parameter, and 'for_date: ... (YYYY-MM-DD). Use today's date for current' supplies format and a default. This adds genuine meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get number of seats held by each party in a house.' It also names the closely related sibling (parties_list_by_house), letting an agent distinguish it without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'See also: parties_list_by_house' pointer hints at an alternative but never states when to choose one over the other. Usage is implied (get composition for a given house/date) rather than explicitly bounded.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It never states that this is a read-only lookup, whether it requires authentication, what happens on a bad ID, or any rate limits. Only the return contents are mentioned, which is the one thing the output schema already covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose, but the return contents ('laying info, procedure, status') are stated twice โ€” once in the header and again under Returns โ€” which is redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers purpose, the sole parameter, and return scope. However, with zero annotations and no explicit read-only statement, the behavioral profile is left to inference from the verb 'Get'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does explain that instrument_id is an alphanumeric string sourced from search results, adding format and provenance meaning beyond the bare 'Instrument Id' schema title, but gives no example or ID-shape detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get full details of a specific Statutory Instrument') and identifies the domain (statutory instrument, secondary legislation, regulations). It implicitly distinguishes itself from search_statutory_instruments by requiring a specific ID, but it never names the sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the parameter note 'alphanumeric string from search results' suggests this tool is called after a search, but there is no explicit when-to-use or when-not-to-use guidance, and no named alternative for browsing SIs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
submission_period_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. 'Get' implies a read-only operation, but the description does not state authentication requirements, error behavior for invalid IDs, or that no side effects occur; the return statement duplicates the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main purpose is front-loaded and short, but the pipe-separated keyword block and the Args/Returns boilerplate are padding. 'Returns submission period details' is redundant given the output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup with an output schema, the description covers purpose and names the parameter, so the agent can invoke it. However, it omits usage routing and behavioral context, leaving clear gaps for a definition with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description merely echoes the schema title ('submission_period_id: Submission period ID.'). It adds no format, range, example, or other semantic detail beyond what the schema already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb 'Get' and resource 'submission period by ID', with extra domain keywords ('submission period, evidence call, inquiry window'). It does not explicitly contrast with sibling evidence tools such as get_written_evidence_by_id or get_oral_evidence_by_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is 'Use to get details of a specific evidence submission period', which merely restates the purpose. No when-not conditions or alternative tools are mentioned, leaving the agent without routing information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
requested_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says nothing about permissions, whether the deadline is a fixed or computed value, or how non-sitting days are handled. The '(Commons only)' constraint is the one behavioral claim, and it conflicts with the house parameter that accepts Lords, muddying rather than clarifying behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited header repeats the tool name and lists loosely related concepts ('table questions, submission deadline, EDM deadline') that aren't otherwise explained, and the 'Returns' line restates the purpose line. The Args section is useful, but the definition is padded rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and both required params are covered. However, the internal Commons-vs-Lords contradiction is unresolved and there is no routing guidance among the many deadline/calendar siblings, leaving an agent to guess in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: house is documented as 'Commons' or 'Lords' with 1/2 also accepted, and requested_date is documented as YYYY-MM-DD. This adds real meaning beyond the bare anyOf/string schema, though it doesn't explain what happens for invalid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('tabling deadline') and clarifies it returns the valid tabling date for a given date. It is distinguishable from calendar/deadline siblings by naming tabling specifically, but it never explicitly contrasts with near neighbors like get_answer_deadline or get_submission_period.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus alternatives; the only scoping hint is a parenthetical '(Commons only)', which is immediately undercut by the house argument accepting 'Commons' or 'Lords'. No prerequisites or when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
debate_section_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. 'Get' implies a safe read, but nothing states idempotency, permission needs, or whether the section ID must already exist; an unsupported/unknown section ID behavior is left implicit. It does at least state the return, though the output schema already 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with the core purpose, but padding creeps in: the pipe-delimited keyword line, a 'Returns the top-level debate ID' sentence, and then an Args/Returns block that repeats the same return value โ€” on top of an output schema that already documents it. A third of the text is restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup with an output schema, the description supplies purpose, usage context, the parameter meaning, and the return, which is close to sufficient. The main residual gap is behavior for invalid/unknown debate section IDs, which neither annotations nor description address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document the sole parameter as the 'External ID of debate section' โ€” the word 'External' meaningfully distinguishes it from internal IDs used elsewhere in the API. It omits any format example or where such IDs come from, so it is good but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Get the top-level debate ID') and scopes it to a debate section, so the agent knows exactly what is fetched. It does not, however, differentiate itself from nearby lookups such as get_debate_by_id or get_debate_by_external_id, which an agent in this crowded Hansard namespace could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to navigate to the parent debate from a sub-section' gives a clear triggering context and makes the parent/child relationship explicit. There is no statement of when-not to use it and no named alternative, so it stops short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
treaty_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. 'Get' correctly implies a read-only operation, which is the main safety signal for a single-ID fetch, and it hints at response content (status, dates, parties). It says nothing about behavior on an unknown/invalid ID, error handling, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword line 'international agreement, treaty, diplomatic' is search-bait, and the return content is stated twice ('Returns treaty details including status, dates, parties' as a header line and again in the Returns block). The core purpose is front-loaded, but there is measurable redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not enumerate return fields - it mentions them anyway, which is harmless redundancy. For a one-parameter get-by-id tool with an output schema, nothing critical is missing; only error/not-found behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but there is only one parameter and the description meaningfully elaborates it: an alphanumeric string obtained from search results. That adds format and provenance beyond the schema's bare 'Treaty Id'. Coverage is adequate for a single-param tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get full details of a specific treaty.' It is clearly a fetch-by-id tool, and the mention that the ID comes 'from search results' implicitly distinguishes it from search_treaties. However, it never names the sibling search tools it complements, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'treaty_id: The treaty ID (alphanumeric string from search results)' implies you run a search first, which is useful ordering context. But there is no explicit when-to-use statement, no when-not, and no named alternative (search_treaties / search_treaties_advanced). Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
treaty_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It says it returns 'a list of business items with dates', which is minimal output disclosure, but it never states that this is a read-only operation, whether results are paginated, whether a valid treaty_id is required (it is, per schema), or what happens for a treaty with no scrutiny business.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited keyword list front-loads topic terms, but the third clause ('Get parliamentary business items for treaty scrutiny') largely repeats the first line, and the Args/Returns scaffolding restates what the schema and output schema already carry. Some redundancy dilutes an otherwise short description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and an output schema present, the description need not explain return values, and it correctly identifies the resource and its domain. However, for a tool with zero annotation coverage it omits the read-only nature and pagination behavior an agent would want before invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter, so the description must compensate. It adds useful provenance ('alphanumeric string from search results') that the schema lacks, but gives no format example, validation constraints, or failure behavior for an invalid ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get parliamentary business items for treaty scrutiny') and scopes it with concrete domain terms (CRaG, debates, treaty progress), which distinguishes it from siblings like get_treaty or search_treaties. It is clear, though it does not explicitly name a sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the parameter note 'from search results' hints that a treaty must first be found via search_treaties, but the description never says when to use this tool versus get_treaty or get_si_business_items, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (a list of organisations with IDs), but for a read lookup tool this is minimal and adds nothing about ordering, completeness, or upstream source. Adequate but thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited keyword cluster is front-loaded, but the return value is stated twice: once in the first block ('Returns list of government organisations with IDs') and again in the trailing 'Returns:' stanza. That duplication wastes space without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description doesn't need to detail the return structure. With zero parameters and a documented output, what's present is sufficient for an agent to invoke the tool correctly, though the sibling ambiguity noted above is the one residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There are no call arguments whose semantics need explaining in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get departments that lay treaties') and tags synonyms ('treaty departments, laying bodies, Foreign Office'). It doesn't explicitly distinguish itself from the nearby sibling get_laying_bodies, so an agent can't be fully sure which of the two is the treaty-specific one without opening both.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete reason to call it: 'Use to get organisation IDs for filtering treaty searches,' which tells the agent this is a prerequisite lookup for a treaty query. It stops short of naming when-not-to-use or an alternative, so it isn't a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that this is a read-style enumeration returning a fixed set of series types, which is adequate behavior for a zero-parameter lookup. It adds nothing about ordering, completeness, or stability of the returned set, so it does not exceed the minimum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited phrasing is awkward and the same idea is stated three times: 'treaty series types', 'treaty classification categories', and the trailing Returns block. The content is small enough that it stays readable, but the redundancy prevents it from being tight and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain the return shape, and the tool is a simple parameterless lookup with low complexity. The description is complete enough for an agent to call it correctly, with only minor redundancy rather than missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The enumeration of possible return values adds mild value but no parameter meaning is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get treaty series types') and enumerates the returned values (Country, EU, Miscellaneous), so the agent knows exactly what this tool yields. It is clear but does not distinguish itself from lookup-style siblings such as get_calendar_types, get_committee_types, or get_publication_types, which share the same shape.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to understand treaty classification categories' gives an implied usage context for a lookup tool. However, it names no alternative (e.g., get_treaty or search_treaties) and gives no when-not condition, so routing between this and its treaty siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
start_dateNo
search_termNo
committee_idNo
show_on_website_onlyNo
committee_business_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses useful operational traits (date format, pagination via skip/take, default 30 and max 100), but says nothing about authorization needs, result ordering, or whether search_term is full-text across witnesses and content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded in two sentences before the Args/Returns blocks, which is the right order. The Args block is somewhat redundant against the schema but justified given the 0% schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 optional params and an output schema present, the description covers the filter set, pagination, and return intent adequately. Return-value detail is rightly omitted since an output schema exists; the main gap is richer guidance on choosing between this and its sibling evidence tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents all 8 parameters with their filtering intent. It adds meaning beyond the schema for start/end_date format (YYYY-MM-DD) and pagination semantics, though most entries largely restate the parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for written evidence submissions to committees') and explicitly names the two closest siblings (get_written_evidence_by_id, get_oral_evidence), so an agent can distinguish it 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete research scenarios ('stakeholder submissions, witness statements, or public input to committee inquiries') that indicate when to reach for it, and points to alternatives. It stops short of stating when NOT to use this versus the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
evidence_idYes
show_on_website_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says the tool returns a 'complete written evidence record' but discloses nothing about permissions, error/not-found behavior, or rate limits, and the show_on_website_only flag's effect on results is only restated from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The leading line duplicates the title and repeats 'Get detailed written evidence by ID | written submission details', and the Args/Returns blocks restate the schema and output schema. Content is front-loaded but carries noticeable redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining the return value is redundant rather than necessary. For a simple two-parameter read tool this is minimally adequate, but with zero annotation coverage and zero schema descriptions the definition leaves behavioral and parameter nuances under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it partially does: it documents both evidence_id (the ID) and show_on_website_only (only website-visible evidence). However, it adds no real meaning beyond the parameter names, such as what 'website visible' excludes or the type/format of the ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get detailed written evidence by ID') that clearly separates it from the list-style sibling get_written_evidence and from get_oral_evidence_by_id. It is clear what the tool does, though it never explicitly names those siblings to route the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get full details of a specific written evidence submission' gives implied context for retrieval, but there is no when-not guidance, no prerequisites, and no explicit pointer to get_written_evidence for listing or discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
question_idYes
expand_memberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return contents (asking member, answering body, question text, answer) and the expand_member default, but says nothing about permissions, read-only nature, or any side effects. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, but the pipe-delimited keyword line ('written question details, PQ lookup, question by ID') is largely redundant padding, and the Args/Returns sections restate what the schema and output schema already convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema, the description covers purpose, trigger condition, both parameters, and the return shape. Nothing critical for correct invocation is missing, though permission/behavioral context is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it explains question_id as the unique ID and expand_member as controlling inclusion of full member details with a stated default of True. That is meaningful beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a specific written question by ID') and its scope, clearly separating it from siblings like search_written_questions and get_written_question_by_uin. An agent can identify the retrieval-by-ID intent without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you have a question ID and need full details including the question text, answer, and member information' gives a clear triggering condition. It does not name when to prefer get_written_question_by_uin or search_written_questions instead, so it stops short of explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
uinYes
dateYes
expand_memberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses the return contents (question text, answer, member info) and the expand_member toggle, but says nothing about permissions, rate limits, or whether the record can be missing. Adequate but thin for an annotation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and usage are front-loaded, which is good, but the leading clause stacks near-synonyms ('question by reference, UIN lookup, official question number') that read as keyword stuffing, and the Returns section partly duplicates the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't detail the response format, and all three parameters are documented. For a simple read-by-identifier tool the definition covers what an agent needs, with only minor behavioral gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it defines date as the tabling date in YYYY-MM-DD format, explains UIN, and notes expand_member defaults to True. It leaves the meaning of 'full member details' when expand_member is false somewhat unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get a written question by date and UIN') and gives the distinguishing retrieval key (official UIN reference). It implicitly separates itself from search-based siblings, though it never explicitly names get_written_question or search_written_questions as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the triggering condition: 'Use when you have a question's official UIN reference number to retrieve the full question details.' This tells the agent the precondition, but it does not name the sibling to use when the UIN is not known (e.g. search_written_questions).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
statement_idYes
expand_memberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It discloses the return payload (statement text, minister, department) and the expand_member default, which is useful, but says nothing about permissions, error behavior for bad IDs, or freshness. Adequate but not rich for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly, but padded with pipe-separated keyword stuffing and a redundant return statement: 'Returns complete statement with minister, department, and full statement content' is repeated verbatim-in-substance in the Returns section. Both mentions could collapse into one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, yet it does so redundantly. For a simple two-parameter lookup it covers the essentialsโ€”what it is, when to use it, and both parametersโ€”though it leaves the sibling-routing question (ID vs UIN vs search) for the agent to work out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning. It explains statement_id as the unique statement ID and expand_member as controlling whether full member details are included, with its default. It does not say what expand_member=false yields instead, leaving that to inference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Get a specific written statement by ID.' The 'by ID' qualifier is meaningful because the sibling set includes get_written_statement_by_uin and search_written_statements. It stops short of naming those siblings explicitly, so an agent must infer the ID-vs-UIN distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you have a statement ID and need full details including the statement text and minister information' gives a clear precondition and goal. It does not, however, mention the alternative paths (by-UIN lookup, or search to obtain an ID), which would have made the routing decision unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
uinYes
dateYes
expand_memberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose the return shape (minister, department, full statement content) and the expand_member default, which is useful. However, it says nothing about permissions, error behavior when the UIN/date pair does not match, or pagination, leaving real gaps for a read tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and clear, but the pipe-separated keyword list ('statement by reference, UIN lookup, official statement number') is filler, and the 'Returns' block duplicates information already carried by the output schema. The Args section is justified since the schema has no descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it correctly covers the two required params plus the optional one. Given 0% schema coverage and no annotations, the documentation of parameters is the important gap it fills; missing failure modes are a minor residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it gives the date format (YYYY-MM-DD), explains UIN as the Unique Identification Number, and states expand_member's default of True. The only shortfall is that it does not explain what expand_member actually controls in the response beyond 'full member details'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get a written statement') and pins it to a unique key ('by date and UIN'), which cleanly separates it from siblings get_written_statement and search_written_statements. An agent can tell what this retrieves without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the selecting condition explicitly: 'Use when you have a statement's official UIN reference number.' That is clear context, but it never names the alternatives (get_written_statement, search_written_statements) even though they are close siblings, so the routing guidance is incomplete rather than exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It does disclose the key trait that the data is live/real-time, which matters for a 'happening now' tool, but says nothing about refresh cadence, freshness limits, or that the chamber may be idle/empty. Return shape is covered by the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose and usage context. The trailing 'Returns:' line is mildly redundant given the output schema but does not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only lookup with an output schema, the description covers what it does, when to use it, and which siblings relate. Only the behavioral side (freshness guarantees, empty-chamber behavior) is thin, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing to document beyond the schema; the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: live information about current House of Commons chamber activity. It is immediately distinguishable from the sibling happening_now_in_lords by naming the chamber, and it names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context ('when you want real-time updates on parliamentary business, current debates, or voting activity') and points to two related tools. It stops short of stating when NOT to use it or the exact condition that selects search_calendar over this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It conveys that data is 'live'/'real-time', but says nothing about freshness guarantees, what is returned when the chamber is not sitting, auth or rate limits, or data source. For a zero-parameter live-feed tool with no annotation coverage, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening two sentences are well front-loaded and earn their place, but the trailing 'Returns:' block restates the first sentence almost verbatim ('Live information about current Lords chamber activity') while an output schema already exists. That repetition adds no information and could be dropped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema present, the description need not explain return values. It covers purpose, usage context, and sibling alternatives, so an agent has enough to invoke it correctly; only behavioral/freshness detail is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing for the description to disambiguate and no schema coverage gap to compensate for. Baseline for a zero-parameter tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get live information about what's currently happening in the House of Lords chamber') and explicitly distinguishes itself from the near-identical sibling happening_now_in_commons. An agent can select between the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage condition ('Use when you want real-time updates on Lords business, current debates, or voting activity') and names two alternatives (happening_now_in_commons, search_calendar). It stops short of saying when NOT to use this tool or which alternative to prefer for historical/date-based lookups, so it is clear context without full routing logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It conveys that this is a reference/lookup operation over declaration categories and discloses nothing dangerous, which is proportionate for a zero-parameter list. It adds nothing about scope, completeness of the category list, or how it differs from get_interest_category.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, but the trailing 'Returns: Categories of interests that must be declared.' simply restates the opening sentence and is redundant, especially since an output schema already exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter enumeration tool with an output schema, the description covers what is needed to invoke it correctly; return structure can be read from the schema. The only gap is disambiguation from sibling interest-category tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema has nothing to document and the baseline of 4 applies. There are no argument formats or defaults an agent needs from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get categories of interests that MPs and Lords must declare in the Register of Interests'), making the subject matter unambiguous. However, it does not differentiate itself from close siblings such as get_interest_category, get_registers_of_interests, or get_policy_interests, which an agent must choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sentence 'Use when you need to understand what types of financial or other interests parliamentarians must declare' gives implied usage context, but names no alternatives and no when-not-to-use conditions. With several similarly named interest tools in the sibling list, routing guidance is the main missing piece.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that the tool returns a system prompt and a quick reference for all 210 tools, which is useful behavioral context, but it does not state that the call has no side effects or mutates no state, nor anything about idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core instruction is front-loaded and useful, but the second line is pure keyword stuffing ('order, begin, initialize, start session, parliament mode') and the 'Say Order Order (like the Speaker)' line is flavor rather than information. Roughly a third of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param bootstrap with an output schema, the description supplies what an agent needs: when to call it and roughly what comes back. The presence of an output schema means it need not enumerate return fields, so this is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Start UK Parliament research session') and clearly distinguishes itself from the 200+ lookup siblings as a bootstrap/session tool. The keyword-stuffing line ('order, begin, initialize, start session, parliament mode') dilutes rather than sharpens the purpose, so it falls short of a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use at the START of any parliamentary research to get proper context and guidance,' giving a clear triggering condition. It does not state when NOT to use it or name an alternative, but for a zero-param bootstrap tool that omission is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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
    
ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but this is an informational lookup with no destructive or auth-sensitive behavior, so the burden is low. The description does disclose the return content ('tool names, parameters, and typical workflows'), which adds modest value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is front-loaded and clear, but the pipe-delimited segments repeat the same idea three times ('tool help, API reference', 'Use when you need detailed information about tools', 'Returns comprehensive guidance including tool names...'). The Args block earns its place; the rest is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter help tool with an output schema already covering return values, the description supplies purpose, a usage condition, and the full topic enumeration. The notable gap is not routing the agent away from similar reference siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with one required parameter, so the description must compensate, and it does by enumerating the thirteen valid topic values (members, bills, votes, committees, hansard, questions, interests, live, legislation, procedures, all, conventions, workflows). This is meaningful guidance not present in the structured schema, though it lacks per-value meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get detailed guidance for a specific Parliament data domain') and clarifies the payload ('tool help, API reference, how to use tools'). It is recognizably the meta/help tool among domain-specific siblings, but it does not differentiate itself from related siblings like get_cli_reference or parliament_workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need detailed information about tools in a specific area' gives an implied condition, but it largely restates the purpose and names no alternatives or when-not scenarios. The agent is left to infer how this differs from the other reference-style siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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"
    
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations the description must carry the full burden, and it does disclose what comes back: 'recommended sequence of tools with parameters and expected data flow.' However, it never states that the tool only plans and does not execute the research, nor anything about read-only safety or latency, which is meaningful behavioral context for a meta-tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then trigger, then return shape, then the Args block. The pipe-delimited keyword list partly restates the first sentence, a minor redundancy, but the overall length is proportionate and no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't enumerate return values, and it still summarizes them. Purpose, trigger, and query examples are all present; only the plan-vs-execute distinction is left implicit for this one-param planning tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% with a single 'query' parameter, so the description must compensate โ€” and it does, giving three concrete example queries ('How did my MP vote on climate?', 'Track a bill's progress', 'Find committee evidence on NHS') that define the expected granularity. It adds real meaning beyond the bare string type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get step-by-step workflow guidance for a parliamentary research task') and is immediately distinguishable from the ~180 sibling data-retrieval tools, since it plans rather than fetches. The keyword line reinforces the scope without obscuring it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit trigger: 'Use when you have a specific research question and need to plan which tools to use in sequence.' That clearly separates it from direct lookup tools like search_hansard or check_mp_vote. It stops short of an explicit when-not-to-use rule, so it falls one step below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. The phrase 'Get list of active...' implies a read-only operation and an active-filtering behavior, but there is no disclosure of authentication requirements, rate limits, or other side-effect details. For a simple read-only tool this is minimally adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening purpose and usage sentences are front-loaded and efficient. The Args section is necessary because the schema has no descriptions, but the Returns section duplicates the opening and the output schema, introducing some redundancy without derailing the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a one-parameter read-only tool with an output schema, the description covers purpose, usage context, a sibling alternative, and the parameter's accepted values. The remaining gaps, such as deeper alternative routing and behavioral details, are modest for this level of complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must define the only parameter. It fully specifies the accepted values and their meanings: 'house: House: 1 or "Commons", 2 or "Lords"'. This adds complete semantic clarity that the bare schema does not provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: getting a list of active political parties in a specified parliamentary house. It is clear enough for an agent to know what the tool does, but it does not meaningfully differentiate itself from the named sibling get_state_of_parties, so it falls short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use case ('when you need to know current party representation or party structures in Parliament') and points to an alternative ('See also: get_state_of_parties'). However, it does not state when not to use this tool or the conditions under which the alternative is preferable, so it is not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing beyond the bare purpose. There is no mention of result limits, pagination, matching behavior (exact vs partial), permissions, or how broad a 'topic' query can be. The only behavioral statement is a generic 'Returns: Acts of Parliament matching the search term.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence followed by a compact usage sentence and a See-also pointer. The Args/Returns block is somewhat boilerplate, and the Returns line is redundant given an output schema exists, but overall there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and there is only one parameter. The description covers purpose and usage adequately but omits behavioral detail (match behavior, result limits, topic-vs-name relationship) that an agent would need to call this correctly. Minimum viable but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does partially by explaining the single 'name' parameter and giving concrete examples ('Climate Change Act', 'Human Rights Act'). It does not clarify matching semantics (exact title, substring, keyword) or how 'topic' search relates to a name-only parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Search for Acts of Parliament (primary legislation) by name or topic.' It also distinguishes itself from siblings via 'See also: get_act_of_parliament, search_bills,' so an agent can route between them. However, the 'or topic' claim is not backed by any parameter in the schema, which muddies the exact scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage contexts ('researching existing laws, finding legislation on specific subjects, or understanding the legal framework') and names two alternative tools, which is strong routing guidance. It stops short of stating when NOT to use this tool (e.g. for bills or secondary legislation), so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
start_dateNo
search_termNo
committee_idNo
show_on_website_onlyNo
committee_business_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It says only 'Returns petitions with details', disclosing nothing about permissions, result volume, ordering, or how pagination interacts with the default take=30 โ€” significant gaps for an unannotated search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, keywords, and usage are front-loaded, which is good. However, the Args block largely restates the schema's own titles/defaults, adding bulk that is only marginally informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, return values need not be explained. The description covers purpose and parameters but leaves the apparent public-vs-private petition scope ambiguous and gives no behavioral context for an unannotated tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it documents all eight parameters with brief meanings (filters, date format YYYY-MM-DD, pagination defaults). It still doesn't clarify the distinction between committee_id and committee_business_id, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb+resource ('Search petitions on Private Bills') and clarifies the target with 'find public petitions submitted on Private Bills'. The keyword line 'private bill petitions, public petitions' is slightly muddled, but an agent can tell this apart from search_hansard_petitions and get_bill_petition_by_id well enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a use case ('Use to find public petitions submitted on Private Bills') but offers no exclusions or alternatives, even though nearby siblings like search_hansard_petitions and get_bill_petition_by_id overlap in domain. Usage is implied rather than fully guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idNo
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full behavioral burden. It discloses the return shape ('matching bills with titles, stages, and sponsors') and the filter behavior, but says nothing about matching logic, pagination, result limits, or auth requirements. Adds some value but leaves meaningful behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded, then Args and Returns are cleanly separated. Slightly verbose with the structured Args/Returns formatting, but every line carries information and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the Returns section is a bonus rather than a necessity. For a simple 2-param/1-required tool, the description covers purpose, usage, params, and returns; only pagination/result-limit behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: search_term is defined as searching titles or content with concrete examples, and member_id is explained as an optional filter for sponsored bills. Both params gain meaning beyond the bare 'integer'/'string' schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Search') plus clear resource ('parliamentary bills') and enumerated searchable dimensions ('by title, subject, or keyword'). It also names three sibling tools (get_bill_overview, get_recently_updated_bills, search_acts_of_parliament), giving the agent enough to route away from near-neighbors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use when' clause covers three concrete scenarios (researching proposed legislation, finding bills on topics, tracking progress). It lists alternatives via 'See also' but gives no when-not or routing logic between them, so it stops 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseYes
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return content ('Parliamentary calendar events in the date range') and that both chambers are covered, but says nothing about pagination, result caps, or how large a date range is tolerated โ€” meaningful gaps for a search endpoint with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by Args and Returns blocks that are easy to scan. The standalone 'House: Commons/Lords.' sentence duplicates the Args entry, and 'what's scheduled in Parliament' mildly restates sentence one, so there is minor waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the description still briefly covers them. For a simple 3-required-param search with 0% schema coverage, purpose, usage context, and all three parameters are addressed; only edge-case behavior (invalid format, range limits) is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents the accepted house values ('Commons' or 'Lords', with 1 or 2 also accepted) and the YYYY-MM-DD date format for both dates. It does not clarify whether end_date is inclusive or how the range is bounded, which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb+resource ('Search parliamentary calendar') and scopes it to 'upcoming events and business in either chamber.' The 'See also' line names three siblings (get_parliamentary_diary, get_sitting_dates, happening_now_in_commons), which lets an agent distinguish this from adjacent calendar/sitting tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when you want to know what's scheduled in Parliament, upcoming debates, or future parliamentary business' sentence gives clear usage context. It also lists alternatives, but does not state when to pick which alternative (e.g., diary vs. sitting dates vs. this tool), so it stops short of full 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.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
end_dateNo
start_dateNo
search_termNo
committee_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses nothing about permissions, result ordering, or how partial matches behave, and the only behavioral detail (skip/take pagination) is restated from the schema defaults rather than adding new insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose is good, but the header line and the Returns block both say 'committee debates matching the search criteria', which is redundant, and the pipe-separated keyword list adds bulk with limited routing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required, and the args block fully documents all seven parameters. The only gap is guidance on when to prefer this over the other Hansard search tools, which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it enumerates all seven parameters, gives the house enum values (1/'Commons', 2/'Lords'), the date format YYYY-MM-DD, and pagination defaults. It is the primary documentation source and does the job well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search committee debates in Hansard') with keyword tags clarifying domain. An agent can tell it retrieves committee debates, but the description does not distinguish it from near-siblings like search_hansard or search_hansard_committees, which cover overlapping ground.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find debates and discussions from parliamentary committees' gives an implied context but names no alternatives and no when-not conditions. With many search_* siblings, an agent is left to infer which search to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It discloses the return shape at a high level ('matching committees with details') and implies a read-only lookup, but says nothing about result limits, pagination, matching behavior (exact vs fuzzy), or empty-result handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then usage, then siblings, then Args/Returns. The 'Returns: Matching committees with details' line is largely redundant given the output schema exists, but the rest is tight and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter search with an output schema handling return values, the description covers purpose, usage and argument semantics adequately. The remaining gap is operational detail (result limits/pagination), which matters less for a simple lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single string parameter, so the description must compensate, and it does: it clarifies the term matches committee names OR subject areas and supplies examples ('Treasury', 'Health', 'Defence'). That materially reduces ambiguity about what to pass.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for parliamentary committees') plus the searchable dimensions (name, subject area). It names sibling tools via 'See also', but does not explain how search_committees differs in intent from get_committee_by_id or get_committee_summary, so an agent must infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete when-to-use contexts: finding which committee covers a policy area, and researching committee work. The 'See also' list points at alternatives but stops short of stating which condition selects each one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
member_idNo
start_dateNo
search_termNo
division_numberNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that results are divisions with vote counts and documents pagination bounds ('default 25, max 100'), which is useful. It does not state permission requirements, whether results are cached/live, or how vote counts are structured, leaving meaningful gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The summary is front-loaded and the Args block is well organized one-parameter-per-line. The opening line repeats the same idea three ways ('Commons divisions | House of Commons votes, Commons voting records, how MPs voted'), which is mild keyword padding rather than added information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 optional parameters, no annotations, and an output schema present, the definition covers what to search, how to filter, pagination limits, and the return shape at a summary level. The remaining gap is operational context (auth, rate limits) that a no-annotation mutation-adjacent tool would ideally state, but the read-only search nature makes this minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate entirely, and it does: every one of the 8 parameters is explained with meaning, format, and in several cases examples ('brexit', 'climate', 'NHS'), date format (YYYY-MM-DD), and default/max values for take. This adds substantial meaning beyond the bare schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search Commons divisions'), then immediately qualifies it with 'House of Commons votes, Commons voting records, how MPs voted', which cleanly separates it from the Lords counterpart. An agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage trigger ('Use to find how MPs voted on bills, amendments or issues') and names three related tools (search_lords_divisions, get_commons_division_by_id, compare_member_votes). It stops short of stating when to prefer each alternative over this one, so routing is implied rather than fully resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
order_byNo
statusesNo
is_prayerNo
member_idNo
search_termNo
tabled_end_dateNo
tabled_start_dateNo
include_sponsored_by_memberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses pagination defaults ('take' default 25, max 100), filterable statuses, and return contents (sponsors and signature counts), but does not explicitly state read-only safety, authentication requirements, or rate limits. For a search tool this is adequate but leaves some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and structured into purpose, usage, Args, and Returns sections. It is appropriately sized for 10 parameters, though there is minor redundancy: return contents are mentioned in the opening line and again in the Returns section.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters, no annotations, and an output schema, the description covers all inputs thoroughly and need not explain return values. However, with no annotations it could do more to state safety or authentication context, and it does not clarify what happens when no filters are supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fully compensates by documenting all 10 parameters. It supplies formats (YYYY-MM-DD), allowed values (statuses, order_by), default behavior for take/skip, and clarifies member_id vs include_sponsored_by_member.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search EDMs by topic'), then expands the domain with concrete EDM types (backbench motions, MP opinions, prayers against SIs). The 'See also' line names the closest sibling tools, so an agent can distinguish this search tool from get_early_day_motion, edms_for_member_id, and get_recently_tabled_edms without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage contexts: finding motions on specific issues, by member, or withdrawn motions. It also names alternatives in the 'See also' line, but does not specify the conditions under which each alternative should be preferred over this tool, and gives no explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden; 'Search' implies a safe read, but that is inferred rather than stated. It discloses the return type (matching paragraphs), and an output schema exists so return format need not be explained, but nothing is said about result count, ranking, or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence and the whole body is short. The sentence 'Erskine May is the authoritative guide to parliamentary procedure' is mildly redundant with the purpose statement, costing a point but not much.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter search tool with an output schema (so return values are covered) and no annotations, the description supplies purpose, usage context, examples, and related tools. Only result-volume/pagination behavior is missing, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter, so the description must compensate. It does add value with examples ('Speaker', 'amendment', 'division') that clarify the search term is a parliamentary-procedure concept, but gives no syntax, matching, or wildcard behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (Erskine May, the parliamentary procedure manual), and explains what Erskine May is. It names several sibling tools in a 'See also' line, but does not differentiate what this search returns versus search_erskine_may_sections or search_erskine_may_index, so the sibling distinction is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need to understand parliamentary rules, procedures, or precedents' gives an implied usage context, which is more than nothing. However, the 'See also' list names four alternatives without any condition for choosing between them, so the agent gets no routing criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses pagination via skip/take with defaults (added context). But it doesn't say what an 'index term' result contains beyond the output schema, and there's no info on matching behavior (substring, fuzzy, exact) which matters for a keyword search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description crams the same idea twice: the opening 'Search the Erskine May index for terms | index search, find topics' is a fragment/piping artifact that adds no information, and it's not front-loaded cleanly. The Args/Returns framing is boilerplate for a 3-param tool. Efficiency is poor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 params (1 required) and an output schema present, the tool is simple, so an agent has enough to invoke it. The only real gap is lack of routing guidance versus the many Erskine May / search siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema titles alone (search_term, skip, take) do almost nothing. The description's Args section documents all three params including the pagination defaults, which is meaningful compensation. Still thin on search_term semantics (substring match? whole word?).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: search the Erskine May index for terms. Distinguishable from sibling search_erskine_may (full-text) and browse_erskine_may_index (browse vs. keyword). Naming the specific index context is a plus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use to find index entries by keyword' implies its use case, and 'index search, find topics' gives some framing. But it never names the alternative sibling (search_erskine_may_sections, browse_erskine_may_index, get_erskine_may_index_term), so an agent has no explicit routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does disclose pagination semantics (skip/take with defaults) and the return shape ('sections with matching titles'), which is genuinely useful, but it says nothing about read-only nature, result caps, ordering, or matching behavior (exact vs partial). Adequate but incomplete for an annotation-free tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core one-line statement is front-loaded and clear. The Args/Returns block partially duplicates the input schema and the output schema, but it is short and keeps the pagination defaults visible in one place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, and it correctly stops at 'sections with matching titles'. Pagination is covered; the remaining gap is search matching semantics, which is minor for a three-parameter search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document all three parameters: search_term as the title search term, skip as pagination offset with default 0, and take as result count with default 30. It adds the purpose of skip/take beyond the bare defaults, though it gives no format or matching details for search_term.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search Erskine May section titles') and immediately scopes it to titles rather than full content, which distinguishes it from the sibling content search tool search_erskine_may. An agent can tell what it returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find sections by title rather than content' gives a clear selection condition against the title-vs-content axis, which is the relevant alternative in this sibling set. It stops short of naming the alternative tool (search_erskine_may) or stating exclusions, so it is strong but not fully explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
location_idNo
search_termNo
committee_idNo
event_type_idNo
start_date_toNo
start_date_fromNo
show_on_website_onlyNo
committee_business_idNo
include_activity_attendeesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It does disclose useful constraints not in the schema (search_term min 2 chars, take max 100, date format, defaults for show_on_website_only and include_activity_attendees), but says nothing about read-only semantics, permission requirements, or pagination behavior beyond skip/take.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, which is good, but the pipe-separated keyword list reads as padding and the closing 'Returns event activities matching the specified criteria' merely restates the opening. The Args block is long but earns most of its space given zero schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter search with no annotations but a present output schema, the definition covers every parameter and adds formats and limits, so an agent can invoke it correctly. The remaining gap is the absence of any behavioral/safety context that annotations would normally supply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document all 12 parameters, and it largely does: it supplies date format, the house enum values (1/'Commons', 2/'Lords'), the min-length rule for search_term, and defaults for the two booleans. A few entries (location_id, event_type_id) are near-tautological, but coverage is strong overall.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Search committee event activities') and elaborates the domain ('event agenda items, meeting activities, committee sessions'). This distinguishes it from the retrieval siblings like get_event_activities or get_committee_events, though it never names them explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find activities across committee events with flexible filtering' gives the intended context but offers no when-not guidance and never references the sibling tools (get_event_activities, get_committee_events) that could also be selected. Usage is implied rather than delineated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseYes
end_dateYes
member_idNo
start_dateYes
search_termYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It conveys the pagination knobs (skip default 0, take default 20, 'max varies by endpoint') and a loose return statement, but never explicitly states this is a non-destructive read or describes rate/result limits, so behavioral disclosure is only partially complete for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, then Args, then Returns โ€“ a logical structure that scans well. It is slightly long with some redundancy (the house encoding is stated twice), but every block earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be re-explained, and the description adequately covers purpose, usage context, and every parameter. The only gap is the absence of explicit read-only/safety behavior for a mutation-free search tool, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and does: it documents every parameter with meaning beyond the schema, including the house encoding ('1 or Commons, 2 or Lords'), the YYYY-MM-DD date format, what search_term matches, and the optional member_id filter, plus pagination defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search Hansard (official parliamentary record) for speeches and debates'), and immediately disambiguates from siblings with 'See also: search_hansard_full, search_hansard_contributions, search_parliament'. An agent can identify the tool's scope without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use clause ('Use when researching what was said in Parliament on specific topics, by specific members, or in specific time periods') and names related alternatives. However, the 'See also' list does not explain the condition under which each alternative is preferred over this one, so routing remains partly inferential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
end_dateNo
start_dateNo
search_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses pagination behavior (skip default 0, take default 20) and that results are committee matches, but says nothing about read-only safety, result limits/caps, authentication, or ordering of results. Adequate but leaves real gaps for a query tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The docstring layout (Args/Returns) is scannable and front-loaded, but there is real waste: a redundant SEO-style keyword line and the return sentence stated twice (in the header and under Returns). Trimming those would cost no information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and all parameters are documented. What is missing is the context an agent needs to choose this tool over the crowded set of sibling committee/Hansard search tools, plus any note on result caps or default ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description documents all six parameters, including the non-obvious mapping house: 1/'Commons', 2/'Lords' and the YYYY-MM-DD date format that the schema does not convey. It does not explain how search_term matches (name vs keyword) or how skip/take interact with total results, so it falls short of fully compensating.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Search committees that appear in Hansard") that an agent can act on. However, the pipe-delimited second segment ("Hansard, committee search, parliamentary committees") is keyword stuffing that adds no meaning, and the description never distinguishes this tool from close siblings such as search_committees or search_committee_debates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to find committees by name or keyword in Hansard records" gives implied usage, which is adequate but shallow. There is no when-not guidance and no mention of the many alternative committee-search tools available (search_committees, get_committee_summary, search_committee_debates), leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
end_dateNo
member_idNo
start_dateNo
search_termNo
contribution_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It does communicate that this is a read-style search returning contributions of a given type and exposes pagination defaults (skip=0, take=20), but it says nothing about result ordering, total counts, or permission/rate constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose with a clean Args/Returns structure. Minor waste in the pipe-separated keyword list ("Hansard, spoken, written, interventions") and the Returns line restating the purpose, but overall tight and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is unnecessary, and all eight inputs are documented. The remaining gap is navigational: the description does not fully disambiguate this tool from the crowded set of other Hansard search endpoints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the Args block documents all eight parameters: the contribution_type value set ('Spoken', 'Written', 'Intervention', 'Question', 'Answer'), house encoding (1/'Commons', 2/'Lords'), YYYY-MM-DD date format, and skip/take defaults. This fully compensates for the empty schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) plus resource (Hansard) and the discriminating dimension (contribution type), which is enough for an agent to understand the tool. It names two relatives (get_member_contribution_summary, get_debate_by_id), but does not differentiate itself from the many other search_hansard_* siblings (search_hansard, search_hansard_full, search_committee_debates), so differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to find specific types of parliamentary contributions" implies a context, and two alternatives are named via "See also". But there is no explicit when-to-use/when-not guidance relative to the close siblings (e.g. search_hansard vs search_hansard_full), leaving the agent to infer routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
end_dateNo
member_idNo
start_dateNo
search_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It documents pagination via the skip/take args but never states that this is a read-only operation, nor mentions auth, rate limits, result ordering, or default behavior when no filters are given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args block is useful and front-loaded, but the pipe-separated tag line ('Hansard, divisions, votes') is keyword noise, and the return value is stated twice ('Returns divisions matching the search criteria' appears in both the body and the Returns section).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no elaboration, and the description covers purpose, alternatives, and all seven parameters. It is nearly complete for a search tool, with only behavioral context (read-only nature, ordering) missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides only titles. The description compensates well: it explains house accepts 1/'Commons' or 2/'Lords', gives the YYYY-MM-DD date format, and clarifies member_id as a result filter and skip/take as pagination with defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search for divisions (votes) in Hansard') and names two relevant siblings, search_commons_divisions and search_lords_divisions. It does not explain how it differs from those siblings (e.g. whether it spans both houses), so it falls just short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find recorded votes in Parliament' gives implied context, and the 'See also' line points at alternatives. However, it never states when to choose this tool over search_commons_divisions or search_lords_divisions, leaving the routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
end_dateNo
member_idNo
start_dateNo
search_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that results are mixed across all content types and documents the skip/take pagination defaults, but says nothing about result limits, rate limits, ordering of mixed results, or the cost of broad queries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The 'Args:'/'Returns:' block is well organized and front-loads the purpose, but the leading tag strip ('Hansard, comprehensive search |') is redundant filler, and the Returns section restates what the existing output schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, zero-required search tool the description covers every parameter plus usage context, and the output schema handles return values (making the Returns line redundant rather than necessary). The remaining gap is the absence of any guidance on how broad unfiltered calls behave or how this tool relates precisely to its two named alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and largely does: it documents all seven parameters, including the 1/'Commons' and 2/'Lords' house encoding, the YYYY-MM-DD date format, and skip/take defaults. It does not clarify interactions between filters (e.g. house vs member_id) or the default behavior when no filters are supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Full search across all Hansard content types') and distinguishes itself from narrower siblings by scoping to debates, statements, questions, and petitions. It names two alternatives ('See also: search_hansard, search_parliament') but never says how its scope differs from theirs, so the differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use for broad searches across debates, statements, questions, and petitions' gives a clear positive condition for choosing this tool over the narrower Hansard search siblings. There is no explicit when-not guidance or statement of what search_hansard/search_parliament should be used for instead, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
search_termYes
include_formerNo
include_currentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that results are members matching the term and documents the inclusion defaults (include_former/include_current true) and pagination inputs, but says nothing about result ordering, limits, or rate/auth behavior. Adequate for a simple read-only search, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns structure is front-loaded and each line is useful, especially given the zero schema coverage. The opening pipe-delimited keyword line ("Hansard, member search, speakers") is filler that adds little beyond the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no elaboration, and the description still supplies a Returns note. With 6 params (1 required) at 0% schema coverage, the per-argument documentation makes it complete enough to call correctly, missing only sibling-routing guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and largely does: it explains search_term accepts partial names and that house takes 1/'Commons' or 2/'Lords' โ€” the enum-like values are the key information absent from the schema. It documents all six parameters, though a couple of entries merely restate schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ("Search") and a scoped resource ("members who appear in Hansard", i.e. those who have spoken in Parliament), which meaningfully narrows it against generic siblings like search_members. However, it never explicitly contrasts itself with the many member-search siblings (search_members, search_historical_members, get_member_by_name), so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to find members who have spoken in Parliament by name" implies the usage context but offers no when-not conditions and names no alternatives, despite a crowded sibling space of member and Hansard search tools. The agent must infer when this is preferable to search_members or search_hansard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
end_dateNo
start_dateNo
search_termNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only search and mentions pagination via skip/take defaults, but says nothing about auth requirements, rate limits, result ordering, or how house/date filters interact. For a zero-annotation tool this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args block is well-structured, but the header repeats itself ('Returns petitions matching the search criteria' appears both in the first line and the Returns section) and the keyword-style tag list 'Hansard, petitions, parliamentary petitions' is redundant filler rather than information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 optional params and an output schema present, return values needn't be explained, and the Args section covers all parameters. The gap is the absence of any differentiation from the many sibling petition/Hansard search tools, which is the main thing an agent needs to route correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents the house value mapping (1 or 'Commons', 2 or 'Lords'), the YYYY-MM-DD date format, and the skip/take defaults. This adds real meaning the bare schema lacks, though it doesn't explain filtering interaction or search_term matching semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Search petitions in Hansard') and clarifies scope as 'petitions presented in Parliament', so an agent knows what it returns. However, it does not distinguish itself from close siblings like search_bill_petitions or get_bill_petition_by_id, which an agent could easily confuse with this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find petitions presented in Parliament' implies the usage context but gives no explicit when/when-not, no prerequisites, and no routing to alternative petition tools. The pipe-delimited keyword list adds no selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
skipNo
takeNo
date_to_search_forYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses that name and date_to_search_for are 'Required by the API' and documents the take default/max (20), but says nothing about permissions, result limits beyond take, or the pagination semantics of skip. Adequate but incomplete for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-separated keyword block in the first line is redundant filler, and the return statement is duplicated in both the intro and the 'Returns' section. Core content is front-loaded and readable, but it is not as tight as it could be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description covers required inputs, formats, and pagination defaults. Missing only auth/scope details that would round out an unannotated search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: name is a partial match, date uses YYYY-MM-DD format, skip is pagination offset, take defaults to 20 and maxes at 20. All four parameters gain meaning absent from the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (search historical members) and scopes it to Commons/Lords past MPs, distinguishing it from current-member tools. The keyword-style list ('past MPs, historic members, former members') adds some noise but reinforces the temporal distinction from siblings like get_member_by_name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('researching members from historical periods or who were active on a specific date') and names two alternatives via 'See also'. No explicit when-not guidance, but the temporal condition is a clear selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
houseNo
end_dateNo
start_dateNo
has_sitting_sectionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the result is a list of sitting days in a date range, which implies a safe read, but says nothing about pagination, result caps, ordering, or whether an empty range errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and searchable keywords, then structured Args/Returns. Slightly padded by the pipe-separated keyword block that partly restates the opening phrase, but nothing is genuinely wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the brief Returns line is adequate rather than redundant. For a 4-param, zero-required search tool with no annotations, the definition is complete enough to call correctly, with only pagination/ordering behavior left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all four params, gives the YYYY-MM-DD format for both dates, explains that house accepts 'Commons'/'Lords' or 1/2 (matching the anyOf integer/string schema), and clarifies what has_sitting_sections filters on.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Search historic sitting days') plus scope cues ('historical Hansard, past sessions, sitting history'). An agent can distinguish it from siblings like get_sitting_dates or get_historic_sitting_day (singular day) reasonably well, though it never names the nearest sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find which days Parliament sat historically' gives a clear use case, so usage is implied rather than left blank. But it names no alternatives and gives no when-not guidance, which matters given many calendar/sitting siblings such as get_non_sitting_days, get_sitting_dates, and search_calendar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
end_dateNo
member_idNo
start_dateNo
search_termNo
majority_valueNo
division_numberNo
total_votes_valueNo
majority_comparatorNo
total_votes_comparatorNo
include_when_member_was_tellerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose that results are 'matching divisions with vote counts' and documents pagination defaults ('default 25, max 100'), which is useful. But it says nothing about permissions, rate limits, or the read-only nature of the operation, which for a 12-parameter query tool is a moderate gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and routing sentence is front-loaded before the Args block, and each parameter line is terse. It is long overall, but the length is driven by the 12 parameters, each of which earns its place; there is little redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value detail is not required, yet the description still notes vote counts. All 12 parameters, their formats, enum values, and pagination limits are covered, and sibling alternatives are named. An agent has everything needed to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does thoroughly: every one of the 12 parameters is documented in the Args block, including date format (YYYY-MM-DD), the enumerated comparator values ('LessThan', 'LessThanOrEqualTo', etc.), how majority_value pairs with majority_comparator, and pagination defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Search Lords divisions'), clarifies the domain ('House of Lords votes, Lords voting records'), and explicitly distinguishes itself from sibling tools by naming search_commons_divisions, get_lords_division_by_id, and compare_member_votes. An agent can route correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states concrete use cases ('find how Lords voted on bills, amendments or issues or find close/contested votes') and the filtering dimensions available. It also names related tools. However, it does not say when to prefer get_lords_division_by_id or compare_member_votes over this one, so the alternative selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
skipNo
takeNo
houseNo
genderNo
locationNo
party_idNo
experienceNo
post_titleNo
is_eligibleNo
constituency_idNo
name_starts_withNo
is_current_memberNo
policy_interest_idNo
was_member_of_houseNo
membership_ended_sinceNo
was_member_on_or_afterNo
was_member_on_or_beforeNo
membership_started_sinceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose useful operational detail beyond the schemaโ€”filterable dimensions, date formats, and pagination bounds (default 20, max 100)โ€”but says nothing about authorization needs, rate limits, or result ordering, leaving behavioral traits only partially covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and when-to-use are front-loaded before the long Args block. The Args enumeration is long but justified given 0% schema coverage; the only mild redundancy is that filter dimensions are listed once in the usage sentence and again per-parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be detailed, and the brief Returns line suffices. With 19 optional parameters all documented and siblings referenced, the description gives everything needed to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: every one of the 19 parameters is annotated with meaning the schema lacks, including enum-like values for house ('1 or Commons, 2 or Lords'), gender ('M' or 'F'), date formats (YYYY-MM-DD), and pagination defaults/caps for take and skip.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (current MPs and Lords), and the word 'current' distinguishes it from search_historical_members. It also names relevant siblings (get_member_by_name, get_mp_profile), so an agent can tell it apart from adjacent tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you need to find members by name, location, party, constituency, gender, posts held, or policy interests' gives clear usage context. The 'See also' list points at alternatives but never states the condition that should route the agent to get_member_by_name or search_historical_members instead, so exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
question_statusNo
asking_member_idNo
answering_body_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. 'Search' and 'Returns list of oral questions' strongly imply a read-only query, but the description never confirms safety, permissions, or pagination behavior despite zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose before Args/Returns, and the structure is easy to scan. The pipe-delimited synonym list ('PQs, question time, oral PQs, minister questions') is slightly redundant but earns its place for keyword matching.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All five parameters are documented despite 0% schema coverage, siblings are referenced, and an output schema already covers return values. Nothing an agent needs to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet the description compensates fully: it documents all five parameters, explains the '0 for all' sentinel for both ID filters, and supplies concrete enum values ('ToBeAsked', 'Withdrawn', 'Unstarred', 'Transferred', 'Submitted') for question_status. This adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (oral parliamentary questions), and explicitly disambiguates from siblings: 'not EDMs' plus 'See also: search_oral_question_times, search_written_questions'. An agent can distinguish it from search_written_questions and EDM tools without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear negative exclusion ('not EDMs') and routes to alternatives via 'See also'. However, it does not state positive conditions for when to prefer this over search_oral_question_times or search_hansard, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
answering_date_endYes
answering_date_startYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says nothing about pagination, result volume, auth requirements, or whether the lookup is read-only, and only minimally describes the return ('Scheduled oral question times in the date range'). For a tool with zero annotation coverage this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, with Args/Returns docstring sections that are easy to scan. The 'See also' pointer is brief; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need not be explained, and both required params are covered with format. The main gap is the lack of differentiation from the very similarly named sibling search_oral_questions, which an agent needs to route correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does document both parameters plus the required YYYY-MM-DD format. It does not explain the semantics of the 'answering date' beyond the name (e.g. that it is the date the question is answered, not tabled), leaving some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get scheduled oral question times for ministers') and scopes it to Parliament. However, it only says 'See also: search_oral_questions' without explaining how this tool differs from that close sibling, so an agent can't fully disambiguate the two from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use cases ('when you want to know when specific departments will answer questions or when particular topics will be discussed'), which is clear context for selection. It stops short of explicit when-not guidance or an articulated distinction from search_oral_questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
takeNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does disclose meaningful traits: it is a fan-out aggregator over five sibling tools, and it returns 'the top matches and total counts for each kind of record, with the tool to call next for each.' It omits rate/cost implications of a cross-search and any pagination behavior, but the aggregation semantics are a genuine addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentences are front-loaded and useful, but the 'search everything, find anything, cross-search, where is this mentioned, general search' clause is keyword padding that adds discovery aliases at the cost of clarity. Still readable, but a sentence that does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a broad entry-point search tool, everything needed to invoke it correctly is present: scope, the record kinds covered, the composing siblings, the usage trigger, parameter meaning, and next-step routing. An output schema exists, so the description is not obliged to detail return shapes, and it still summarizes them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: 'query' is illustrated with four concrete examples ('Renters Rights', 'Starmer', 'Treasury', 'net zero') and 'take' is defined as 'Number of top matches per kind of record (default 5),' which clarifies the per-category semantics beyond the bare integer schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search across Parliament'), enumerates the five record kinds it spans, and explicitly names the sibling tools it combines (search_members, search_bills, search_committees, search_hansard_full, search_written_questions). An agent can distinguish this from the narrower per-domain search tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger condition: 'Use as a starting point when you don't know which kind of record holds the answer,' and routes to parliament_workflow for planning. It does not explicitly state when NOT to use it (e.g. use search_bills directly when the record type is already known), so it falls short of full when/when-not coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
member_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses a prerequisite ('get from member search first') and the return contents, but says nothing about permissions, pagination, read-only safety, or whether results are exhaustive versus filtered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The keyword-stuffed pipe-delimited block is noisy, and the returns statement is duplicated nearly verbatim between the summary line and the 'Returns:' section. Purpose and usage are front-loaded, but redundancy and keyword padding dilute the signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers purpose, prerequisite, and a See-also list. Since the output schema exists, repeating the return fields is unnecessary but harmless; overall it is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single member_id parameter, so the description must compensate. It adds meaningful context ('Parliament member ID. Required: get from member search first'), which aids sourcing, but gives no format or type detail beyond the schema's integer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search member's Register of Interests for financial and business declarations') and enumerates the content types covered. It is clearly distinct from generic member tools, though the See-also siblings (get_member_registered_interests, interests_categories) are named without explaining how they differ.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use contexts: 'investigating potential conflicts, researching member finances, or checking declared interests.' However, it offers no when-not guidance and does not clarify when to prefer it over the listed sibling tools like get_member_registered_interests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
skipNo
takeNo
houseNo
procedure_idNo
department_idNo
laying_body_idNo
recommended_for_procedure_changeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses pagination semantics (skip default 0, take default 20) and implies a read-only search, but says nothing about authenticated access, result-count caps, sort order, or how PNSI/sifting records are returned. Adequate but thin for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and usage are front-loaded, and the Args block is cleanly enumerated. The sentence 'SIs are used to implement or modify laws' is slightly expendable background, and the one-line Returns is redundant given an output schema exists, but overall the layout is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, all-optional search with an output schema present, the definition covers purpose, usage, every parameter, and ID provenance sources. The gaps are behavioral (auth, limits, ordering) rather than structural, and return values are legitimately delegated to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: all 8 parameters are explained, including accepted values for 'house' ('Commons' or 'Lords', or 1/2) and the provenance of opaque IDs ('procedure_id from get_si_procedures()', 'laying_body_id from get_laying_bodies()'). This is meaning well beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb ('Search') and resource ('Statutory Instruments'), then scopes it with a definition ('secondary legislation') and a special subset ('proposed negative SIs (PNSIs) under sifting'). The 'See also' list names the relevant siblings (get_statutory_instrument, get_si_business_items, get_annulment_date), so an agent can distinguish this from the single-item and business-item tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use trigger ('Use when researching government regulations, rules, or orders made under primary legislation') and routes to alternatives via 'See also'. It lacks an explicit when-NOT condition (e.g. use get_statutory_instrument when you already have an ID), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
search_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full behavioral burden. It discloses that the search covers titles and content and what a result contains, but says nothing about pagination, result limits, permissions, or whether results are exhaustive. Adequate but thin for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pipe-delimited keyword block is dense but the substantive text is front-loaded and short. However the return-value sentence appears twice โ€” once in the prose and again under 'Returns' โ€” which is redundant padding rather than added information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter search tool with an output schema present, the description covers purpose, domain, query style, and result content, so an agent has enough to invoke it. The only real gap is routing guidance versus search_treaties_advanced, which is a usage rather than a completeness issue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single search_text parameter โ€” and it does, with concrete query examples ('trade', 'EU', 'climate', 'Brexit') and the explicit note that it searches titles and content. That meaningfully exceeds the bare string type in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Search UK international treaties and agreements under parliamentary scrutiny'. The keyword list reinforces the domain. It names related siblings via 'See also' but does not explain how this differs from search_treaties_advanced, so the sibling boundary is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use for researching international relations, trade agreements, or diplomatic commitments' gives topical context for when this is relevant. However it never states when to prefer this over search_treaties_advanced or when to jump straight to get_treaty; the 'See also' list is a pointer, not a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
seriesNo
search_textNo
motions_tabledNo
debate_scheduledNo
parliamentary_processNo
committee_raised_concernsNo
government_organisation_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that filters are ANDed ('matching all specified filters') and that pagination is via skip/take, which is genuinely useful, but it never confirms the read-only nature, states permission/auth requirements, or notes rate limits for this search endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then Args, then Returns in a predictable order that an agent can parse. The pipe-delimited keyword header ('treaties, controversial treaties, committee concerns, scrutiny status') is somewhat redundant with the following 'Use to find' sentence, adding minor bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only filtered search with an output schema (so return format needn't be explained) and ten optional params fully documented, the description is close to complete. The only gap is that the read-only/mutation character is left implicit since no annotations exist to confirm it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the Args block documents all 10 parameters, including enum values absent from the schema ('CountrySeriesMembership'/'EuropeanUnionSeriesMembership'/'MiscellaneousSeriesMembership', 'NotConcluded'/'Concluded', 'Commons'/'Lords') and a cross-reference to get_treaty_government_organisations for obtaining IDs. This fully compensates for the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Advanced treaty search with full filtering') and enumerates the filterable dimensions (department, scrutiny status, parliamentary concerns). The 'advanced' qualifier implicitly distinguishes it from the sibling search_treaties, but the description never names that basic alternative, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a usable context sentence ('Use to find treaties by department, scrutiny status, or with parliamentary concerns'), which implies when to reach for it. However it offers no when-not guidance and never points to the sibling search_treaties or get_treaty for narrower lookups, so the agent must guess at boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
answeredNo
tabled_toNo
search_termNo
tabled_fromNo
asking_member_idNo
answering_body_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the return fields (asking member, answering body, dates, response status) and pagination controls, but says nothing about sorting order, maximum page size, permissions, or result caps. Adequate but with clear gaps for an unannotated search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and routing are front-loaded before the Args block, and the parameter documentation is dense and useful. The pipe-delimited keyword block ('written questions, PQs, parliamentary questions, questions to ministers, government accountability') is mildly redundant padding, but overall the text earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain returns, and it still summarizes them briefly. All nine parameters are covered and alternatives are named, so an agent has enough to invoke correctly; only minor operational details (sort order, page-size ceiling) are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and no enums exist, so the description must compensate entirely โ€” and it does. It documents all nine parameters with real meaning, including enum values for 'answered' (Any/Answered/Unanswered), accepted forms for 'house' ('Commons', 'Lords', 'Bicameral', or 1/2), the YYYY-MM-DD date format, and defaults for skip/take.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search written parliamentary questions with comprehensive filtering') and explicitly lists sibling tools (get_written_question, search_written_statements, get_answering_bodies) so the agent can distinguish a bulk search from a single-record lookup. The 'written questions, PQs, parliamentary questions' keyword block further disambiguates terminology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear use contexts ('researching MP activity, tracking government responses, analyzing ministerial accountability, or finding questions on specific topics') and routes to alternatives via 'See also'. It lacks an explicit when-not statement (e.g., use get_written_question for a single UIN), but the alternative naming covers most routing needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.
    
ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
houseNo
made_toNo
made_fromNo
member_idNo
search_termNo
answering_body_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral disclosure. It mentions pagination parameters and return fields, but does not state whether this is a read-only operation (though implied by 'Search'), any rate limits, or authentication requirements. For a search tool with no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with a clear purpose, Args, and Returns section. It is front-loaded with the main purpose and keywords, but the keyword list is somewhat redundant. Overall, it is appropriately sized and every part serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no required parameters, and an output schema, the description is moderately complete. It explains parameters and return values, but does not cover behavioral aspects like safety or error handling. The mention of 'See also' helps with sibling context, but more could be done to distinguish this from search_written_questions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema provides no parameter descriptions. The description does define each parameter in the Args section (e.g., 'search_term: Text to search for in statement content'), which compensates for the lack of schema details. However, it could add more specificity like search behavior or default explanations beyond the schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Search written ministerial statements' with a list of related keywords. It distinguishes the tool from siblings by mentioning 'See also: get_written_statement, search_written_questions', though it lacks explicit differentiation from search_written_questions beyond naming it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some implied usage: 'Use for tracking government announcements, researching policy statements, or finding ministerial communications on specific topics'. However, it does not specify when to use this versus alternatives like get_written_statement or search_written_questions, leaving the agent to infer.

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.

  1. 210 tool updatesv0.1.0
    • First observedbill_stages
    • First observedbill_types
    • First observedbrowse_erskine_may_index
    • First observedbrowse_locations
    • First observedcheck_mp_vote
    • First observedcompare_member_votes
    • First observededms_for_member_id
    • First observedget_act_of_parliament
    • First observedget_all_bills_rss
    • First observedget_amendment_by_id
    • First observedget_annulment_date
    • First observedget_annunciator_by_date
    • First observedget_answer_deadline
    • First observedget_answering_bodies
    • First observedget_archived_publication_links
    • First observedget_bill_by_id
    • First observedget_bill_committees
    • First observedget_bill_news_articles
    • First observedget_bill_overview
    • First observedget_bill_petition_by_id
    • First observedget_bill_publications
    • First observedget_bill_rss
    • First observedget_bill_stage_amendments
    • First observedget_bill_stage_details
    • First observedget_bill_stage_ping_pong_items
    • First observedget_bill_stage_publications
    • First observedget_bill_stages
    • First observedget_calendar_categories
    • First observedget_calendar_event
    • First observedget_calendar_locations
    • First observedget_calendar_tags
    • First observedget_calendar_types
    • First observedget_cli_reference
    • First observedget_committee_bills
    • First observedget_committee_business
    • First observedget_committee_business_by_id
    • First observedget_committee_business_publications_summary
    • First observedget_committee_business_types
    • First observedget_committee_by_id
    • First observedget_committee_events
    • First observedget_committee_meetings
    • First observedget_committee_members
    • First observedget_committee_publication_types
    • First observedget_committee_publications_summary
    • First observedget_committee_staff
    • First observedget_committee_summary
    • First observedget_committee_types
    • First observedget_committees_next_events
    • First observedget_commons_division_by_id
    • First observedget_commons_divisions_grouped_by_party
    • First observedget_commons_divisions_search_count
    • First observedget_commons_voting_record_for_member
    • First observedget_constituencies
    • First observedget_constituency_by_id
    • First observedget_constituency_election_result
    • First observedget_constituency_latest_election
    • First observedget_constituency_representations
    • First observedget_constituency_synopsis
    • First observedget_contributions
    • First observedget_daily_reports
    • First observedget_debate_by_column
    • First observedget_debate_by_external_id
    • First observedget_debate_by_id
    • First observedget_debate_by_title
    • First observedget_debate_divisions
    • First observedget_debate_speakers
    • First observedget_departments
    • First observedget_division_details
    • First observedget_early_day_motion
    • First observedget_election_results_for_constituency
    • First observedget_erskine_may_chapter
    • First observedget_erskine_may_index_term
    • First observedget_erskine_may_paragraph
    • First observedget_erskine_may_part
    • First observedget_erskine_may_parts
    • First observedget_erskine_may_section
    • First observedget_erskine_may_section_relative
    • First observedget_event_activities
    • First observedget_event_attendance
    • First observedget_event_by_id
    • First observedget_event_type_metadata
    • First observedget_events
    • First observedget_government_posts
    • First observedget_hansard_calendar
    • First observedget_hansard_currently_processing
    • First observedget_hansard_first_year
    • First observedget_hansard_last_sitting_date
    • First observedget_hansard_linked_dates
    • First observedget_hansard_pdfs_for_day
    • First observedget_hansard_section_trees
    • First observedget_hansard_sitting_day
    • First observedget_hansard_speakers_for_day
    • First observedget_hansard_timeline_stats
    • First observedget_historic_sitting_day
    • First observedget_interest_by_id
    • First observedget_interest_category
    • First observedget_last_sitting_date
    • First observedget_laying_bodies
    • First observedget_lords_by_type
    • First observedget_lords_division_by_id
    • First observedget_lords_divisions_grouped_by_party
    • First observedget_lords_divisions_search_count
    • First observedget_lords_interests_register
    • First observedget_lords_interests_staff
    • First observedget_lords_voting_record_for_member
    • First observedget_member_bills
    • First observedget_member_by_id
    • First observedget_member_by_name
    • First observedget_member_committee_memberships
    • First observedget_member_contribution_summary
    • First observedget_member_experience
    • First observedget_member_focus
    • First observedget_member_hansard_contributions
    • First observedget_member_latest_election_result
    • First observedget_member_portrait_url
    • First observedget_member_registered_interests
    • First observedget_member_staff
    • First observedget_member_synopsis
    • First observedget_member_thumbnail_url
    • First observedget_member_voting
    • First observedget_member_written_questions
    • First observedget_members_biography
    • First observedget_members_contact
    • First observedget_members_history
    • First observedget_mp_profile
    • First observedget_my_mp
    • First observedget_next_sitting_date
    • First observedget_non_sitting_days
    • First observedget_opposition_posts
    • First observedget_oral_evidence
    • First observedget_oral_evidence_by_id
    • First observedget_parliamentary_diary
    • First observedget_ping_pong_item_by_id
    • First observedget_policy_interests
    • First observedget_private_bills_rss
    • First observedget_public_bills_rss
    • First observedget_publication_by_id
    • First observedget_publication_document
    • First observedget_publication_types
    • First observedget_publications
    • First observedget_recently_tabled_edms
    • First observedget_recently_updated_bills
    • First observedget_register_by_id
    • First observedget_registers_of_interests
    • First observedget_session_by_id
    • First observedget_session_for_date
    • First observedget_sessions
    • First observedget_si_business_items
    • First observedget_si_procedure
    • First observedget_si_procedures
    • First observedget_si_timeline_business_items
    • First observedget_sitting_dates
    • First observedget_sittings
    • First observedget_speaker_and_deputies
    • First observedget_speaker_events
    • First observedget_spokespersons
    • First observedget_state_of_parties
    • First observedget_statutory_instrument
    • First observedget_submission_period
    • First observedget_tabling_deadline
    • First observedget_top_level_debate_id
    • First observedget_treaty
    • First observedget_treaty_business_items
    • First observedget_treaty_government_organisations
    • First observedget_treaty_series_memberships
    • First observedget_written_evidence
    • First observedget_written_evidence_by_id
    • First observedget_written_question
    • First observedget_written_question_by_uin
    • First observedget_written_statement
    • First observedget_written_statement_by_uin
    • First observedhappening_now_in_commons
    • First observedhappening_now_in_lords
    • First observedinterests_categories
    • First observedorder_order
    • First observedparliament_guide
    • First observedparliament_workflow
    • First observedparties_list_by_house
    • First observedsearch_acts_of_parliament
    • First observedsearch_bill_petitions
    • First observedsearch_bills
    • First observedsearch_calendar
    • First observedsearch_committee_debates
    • First observedsearch_committees
    • First observedsearch_commons_divisions
    • First observedsearch_early_day_motions
    • First observedsearch_erskine_may
    • First observedsearch_erskine_may_index
    • First observedsearch_erskine_may_sections
    • First observedsearch_event_activities
    • First observedsearch_hansard
    • First observedsearch_hansard_committees
    • First observedsearch_hansard_contributions
    • First observedsearch_hansard_divisions
    • First observedsearch_hansard_full
    • First observedsearch_hansard_members
    • First observedsearch_hansard_petitions
    • First observedsearch_historic_sitting_days
    • First observedsearch_historical_members
    • First observedsearch_lords_divisions
    • First observedsearch_members
    • First observedsearch_oral_question_times
    • First observedsearch_oral_questions
    • First observedsearch_parliament
    • First observedsearch_roi
    • First observedsearch_statutory_instruments
    • First observedsearch_treaties
    • First observedsearch_treaties_advanced
    • First observedsearch_written_questions
    • First observedsearch_written_statements

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

Related MCP Connectors

Related MCP Servers

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