FindBroadband
Server Details
Find cheap broadband deals
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct step: search_addresses resolves a property, find_broadband_deals returns the deal list, get_deal_details drills into one deal, and check_if_overpaying evaluates the user's existing/renewal price. The only mild overlap is that both find_broadband_deals and check_if_overpaying surface comparable deals and costs, but the descriptions make the distinction (market browse vs. verdict on the current bill) clear enough.
All four names use snake_case with a consistent verb_noun shape (check_if_overpaying, find_broadband_deals, get_deal_details, search_addresses). The verbs are chosen predictably for their action, so an agent can infer intent from the name alone.
Four tools is well-scoped for a focused broadband-comparison server: address resolution, deal discovery, single-deal detail, and an overpaying check each cover a distinct stage. No redundant or filler tools pad the surface.
The core lifecycle (find address -> list deals -> inspect one deal -> judge current offer) is fully covered with no obvious dead end. Minor gaps exist, such as side-by-side comparison of multiple deals or provider-level browsing, but these are workable within the given tools.
Available Tools
4 toolscheck_if_overpayingCheck if the user is overpaying for broadbandARead-onlyInspect
Use when the user asks whether their CURRENT broadband bill or plan, or a RENEWAL or retention offer their provider quoted, is expensive, competitive or worth switching from. Compares what they pay against comparable deals actually available at their address and returns a computed verdict with true 24-month savings. Present the verdict and figures verbatim rather than deriving your own. Each alternative's cost_24_months is its true cost over the 24-month comparison window; ask get_deal_details for a specific deal's whole-contract total. Set quote_type to 'renewal_offer' when evaluating a renewal quote.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | No | Property identifier from search_addresses. Pass it whenever the user has picked an address so results become address-precise instead of postcode-wide. Never show this number to the user. | |
| postcode | Yes | UK postcode, e.g. 'SS13 1HJ'. When asking, request the postcode and house number or name together in one question rather than two rounds. | |
| quote_type | No | 'renewal_offer' when the user is evaluating a renewal or retention price their provider quoted; 'current_bill' (default) when it is what they pay today. | |
| monthly_bill | Yes | What the user currently pays per month in GBP (or the renewal price quoted to them). | |
| address_label | No | The display_address the user picked from search_addresses, passed back verbatim. Carried into the switch link so the FindBroadband site greets the user with their address instead of asking again. | |
| current_provider | Yes | The user's current broadband provider, as they said it, e.g. 'Sky' or 'Virgin Media'. | |
| current_speed_mbps | Yes | The user's current download speed in Mbps. If they only know their package name, ask or estimate from the provider's naming (e.g. 'M125' is about 132). |
Output Schema
| Name | Required | Description |
|---|---|---|
| current | Yes | |
| verdict | Yes | |
| precision | Yes | |
| checked_at | Yes | |
| quote_type | Yes | |
| runners_up | Yes | |
| alternatives | Yes | |
| provider_note | No | |
| best_alternative | Yes | |
| speed_floor_used | Yes | |
| total_deals_at_address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious behavior: the verdict is computed server-side and must be presented verbatim, and each alternative's cost_24_months is the true cost over a 24-month window rather than a headline monthly price.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage trigger, then result-handling, then the one non-obvious parameter note. Dense but every sentence carries information; the quote_type sentence is mildly redundant with the schema enum description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be enumerated, and the description still clarifies the cost_24_months semantics and the verbatim-presentation requirement. With annotations covering safety and the schema covering inputs, the remaining gap is minimal; cross-references to get_deal_details and search_addresses are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including quote_type's enum and the uprn/address_label handoff from search_addresses) is already documented in the schema. The description's only parameter guidance, the 'renewal_offer' case for quote_type, largely restates the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it compares the user's current or quoted price against comparable deals available at their address and returns a computed verdict with 24-month savings. It also names the sibling get_deal_details and how it differs (whole-contract totals), 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use when the user asks whether their CURRENT broadband bill or plan, or a RENEWAL or retention offer...is expensive, competitive or worth switching from') and routes the adjacent case to get_deal_details. It also tells the agent how to act on the result ('present the verdict and figures verbatim rather than deriving your own').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_broadband_dealsFind broadband deals at an addressARead-onlyInspect
Use when the user wants broadband deals, offers or packages available where they live. If the user has not picked an address yet, call search_addresses first and offer the list; fall back to postcode-only search when they decline or no addresses are found (the precision field says which you got). Pass address_label alongside uprn once an address is picked. Translate the user's needs into the filter inputs. Present the returned picks and computed costs verbatim: never re-rank, re-filter or recalculate totals yourself. total_contract_cost and effective_monthly_cost already account for intro pricing, post-intro rises and setup fees. After presenting, ask one short follow-up about what matters to them (budget, speed needs, contract length, avoiding price rises) and refine with the filter inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | No | Property identifier from search_addresses. Pass it whenever the user has picked an address so results become address-precise instead of postcode-wide. Never show this number to the user. | |
| postcode | Yes | UK postcode, e.g. 'SS13 1HJ'. When asking, request the postcode and house number or name together in one question rather than two rounds. | |
| provider | No | Only show deals from this provider, when the user names one. | |
| address_label | No | The display_address the user picked from search_addresses, passed back verbatim. Carried into the switch link so the FindBroadband site greets the user with their address instead of asking again. | |
| min_speed_mbps | No | Minimum download speed in Mbps. Translate needs rather than inventing numbers: two people working from home plus gaming needs about 150, a heavy 4K household about 300, email and browsing about 35. | |
| max_monthly_price | No | Budget cap in GBP per month, from phrases like 'under £30'. | |
| max_contract_months | No | Longest contract the user will accept, e.g. 12 for 'no long contracts'. | |
| include_mobile_broadband | No | Include 4G/5G home broadband. Default false (fixed-line only). Set true only if the user asks for mobile or wireless broadband. | |
| exclude_mid_contract_rises | No | true when the user says they want no mid-contract price rises. |
Output Schema
| Name | Required | Description |
|---|---|---|
| uprn | No | |
| deals | Yes | |
| picks | Yes | |
| postcode | Yes | |
| precision | Yes | |
| checked_at | Yes | |
| filters_relaxed | No | |
| provider_filter_note | No | |
| total_matching_filters | Yes | |
| total_available_at_location | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds real behavior beyond that: the precision field indicates which search variant ran, totals already include intro pricing, post-intro rises and setup fees, and the output must be presented verbatim without re-ranking or recalculation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition, then workflow, then output rules, then follow-up — a sensible progression. It is long and slightly repetitive ('translate the user's needs into the filter inputs' and 'refine with the filter inputs' restate the same idea), but nearly every sentence carries an operational instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter open-world search with an output schema and annotations already in place, this description covers the full loop: prerequisite, fallback, parameter pairing, output handling constraints, and next-step refinement. Nothing an agent needs before or after the call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already carries the per-parameter meaning, including the speed-translation examples, so the baseline is 3. The description only marginally extends this with the uprn/address_label pairing instruction and the generic 'translate needs into filter inputs' directive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb (find), resource (broadband deals/offers/packages) and scope (available where they live), and it explicitly names the sibling search_addresses as the upstream step. An agent can distinguish this from check_if_overpaying and get_deal_details 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: call search_addresses first if no address is picked, fall back to postcode-only when the user declines or no addresses are found, pass address_label alongside uprn once picked. It also prescribes the post-presentation follow-up, so both entry and continuation conditions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deal_detailsGet full details for one dealARead-onlyInspect
Use when the user asks for more detail about ONE specific deal already returned by another tool: setup costs, price-rise terms, what happens after the intro period and availability at their address. Pass the deal_id from the earlier result, plus the user's postcode, uprn and address_label when known so availability is confirmed at their address. total_contract_cost here is the whole-contract figure over contract_months.
| Name | Required | Description | Default |
|---|---|---|---|
| uprn | No | Property identifier from search_addresses. Pass it whenever the user has picked an address so results become address-precise instead of postcode-wide. Never show this number to the user. | |
| deal_id | Yes | The deal_id from a previous find_broadband_deals or check_if_overpaying result. | |
| postcode | No | Pass the user's postcode when known so availability is checked at their address. | |
| address_label | No | The display_address the user picked from search_addresses, passed back verbatim. Carried into the switch link so the FindBroadband site greets the user with their address instead of asking again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| gift | No | Provider incentive shown on the deal card: a gift card / reward, or a switching credit. NOT included in any cost figure. A switching credit (e.g. 'up to £300') only offsets early-termination fees the user owes their CURRENT provider — worth £0 to someone out of contract, so explain it as conditional, never as a discount. Gift cards are real value but not bill money. |
| deal_id | Yes | |
| provider | Yes | |
| setup_fee | Yes | |
| checked_at | Yes | |
| switch_time | No | |
| upload_mbps | Yes | |
| availability | Yes | |
| continue_url | Yes | |
| intro_months | No | |
| package_name | Yes | |
| download_mbps | Yes | |
| monthly_price | Yes | |
| connection_type | No | |
| contract_months | Yes | |
| price_rise_terms | No | |
| mid_contract_rise | Yes | |
| price_after_intro | No | |
| switching_downtime | No | |
| total_contract_cost | Yes | |
| effective_monthly_cost | Yes | |
| estimated_speed_at_address_mbps | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint=false), so the bar is lower. The description adds useful behavioral context: results become 'address-precise instead of postcode-wide' when uprn is passed, and clarifies that total_contract_cost is the whole-contract figure over contract_months – a semantic clarification not in the schema. It doesn't discuss rate limits or error behavior, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the when-to-use trigger before the parameter guidance. It is dense but each clause carries information; the only slight redundancy is restating address_label's purpose already in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given read-only annotations and an existing output schema (so return shape needn't be explained), the description covers selection (which deal), upstream dependency (deal_id from other tools), parameter intent, and a key field semantic (total_contract_cost). Nothing material for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly (including the 'never show this number' note on uprn). The description reinforces intended usage (pass deal_id from earlier result; postcode/uprn/address_label when known; total_contract_cost semantics) but adds little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('full details for one deal') and explicitly scopes it as 'ONE specific deal already returned by another tool', distinguishing it from siblings find_broadband_deals and check_if_overpaying. It also names the concrete detail fields returned (setup costs, price-rise terms, post-intro behavior, availability).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('Use when the user asks for more detail about ONE specific deal already returned by another tool') and names the upstream tools that supply the deal_id. The distinction from breadth tools is clear via 'already returned by another tool'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_addressesFind addresses at a UK postcodeARead-onlyInspect
Use when you have a UK postcode and need the exact property (broadband availability differs per property). Ask for the postcode and house number or name in ONE question up front. If the user's message already identifies the property (e.g. '1 Fyfields, SS13 1HJ'), match it against the returned list yourself and proceed straight to the next tool, briefly saying which address you're checking. Only show the numbered list and ask them to pick when the match is ambiguous or they gave postcode only and want precision. Then pass the entry's uprn (never shown to the user) plus its display_address as address_label to the other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode, e.g. 'SS13 1HJ'. When asking, request the postcode and house number or name together in one question rather than two rounds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| count | Yes | |
| postcode | Yes | |
| addresses | Yes | |
| checked_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, openWorld, non-destructive). The description adds non-obvious behavioral contract: the response contains a list plus a hidden uprn and display_address, uprn must never be surfaced to the user, the agent must do the matching itself, and the values feed into the next tool. That is meaningful context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph, but it is front-loaded with the usage trigger and nearly every clause carries operational instruction (question phrasing, matching, list fallback, uprn handling). Slightly run-on, but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description still covers the full usage loop: collection, matching vs. disambiguation, and the handoff of uprn/display_address to downstream tools. An agent has everything needed to call and act on it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single postcode parameter, so the baseline is 3. The description nonetheless adds real semantics beyond the schema: house number/name is deliberately NOT a parameter and must be collected in the same question and matched client-side against the returned list, which clarifies how the one-parameter design is meant to be used.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('find the exact property' for a UK postcode) and clarifies the granularity rationale (broadband availability differs per property). It doesn't explicitly name or contrast the sibling tools (check_if_overpaying, find_broadband_deals, get_deal_details), so it stops short of top-tier sibling differentiation, but the tool's role as the address-lookup entry point is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states precisely when to use it (postcode in hand, exact property needed) and gives explicit branching: ask for postcode + house number in ONE question, self-match and proceed when the user already identifies the property, and only render the numbered list when the match is ambiguous or postcode-only. This is a full when/when-not/alternative specification.
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.
4 tool updates
- First observed
check_if_overpaying - First observed
find_broadband_deals - First observed
get_deal_details - First observed
search_addresses
Related MCP Connectors
Check which fibre and broadband deals are available at a UK postcode or address (fibrecompare.com).
Is my broadband down? Live UK provider status and the last 30 days of outages
Live Swedish price & service comparison (products, broadband, mobile, electricity, loans)
Compare products, prices and current offers across UK retailers to find the best deal.
Related MCP Servers
- AlicenseBqualityFmaintenanceSearching google, individual websites and scraping their content. Fast and cost-effective. ⚡️9241 npm24MIT
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.2438 npmMIT
- AlicenseAqualityCmaintenanceAI agent for Italian energy tariff comparison. Analyzes electricity and gas bills, compares 44+ offers from 13 providers, estimates savings with full ARERA regulated cost breakdown7MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to search and compare live UK product prices from marketplaces like eBay and Amazon, returning normalised JSON with direct buy links.-
Glama MCP Gateway
Add one secure layer between your agents and this server.