GOV.UK
Server Details
MCP server for GOV.UK — search, content retrieval, organisation lookup, and postcode resolution.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 7 tools
Each tool targets a distinct resource and action: page metadata/section index, organisation profile, single section content, in-page grep, organisation list, postcode lookup, and search. The descriptions explicitly cross-reference each other (e.g. use get_content before get_section), making boundaries clear.
All tools follow a consistent govuk_ prefix plus verb_noun pattern: get_content, get_organisation, get_section, grep_content, list_organisations, lookup_postcode, search. No mixed conventions or vague verbs.
Seven tools is well-scoped for a GOV.UK content and organisation browsing server. Each tool covers a distinct workflow (nav, read, search, lookup) without redundancy.
Covers the core read/search lifecycle for content, organisations, and location. Minor gaps: no tool for content history/versions, related links, or retrieving all sections at once, but agents can work around these for most questions.
Available Tools
7 toolsgovuk_get_contentGet GOV.UK PageARead-onlyIdempotentInspect
Get metadata and navigable section index for a GOV.UK page.
Returns the page title, document type, publication dates, and a list of sections with their anchor IDs and headings. Use govuk_get_section to read the body of a specific section, or govuk_grep_content to search within the page body.
| Name | Required | Description | Default |
|---|---|---|---|
| base_path | Yes | GOV.UK base_path, e.g. '/universal-credit' or 'universal-credit' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is known. The description adds valuable context beyond annotations by specifying exactly what is returned (title, document type, dates, section list) and what is not returned (body content), which helps manage expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the purpose, the second lists return values, and the third gives usage guidance. Every sentence earns its place with no redundant information.
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 only one parameter and an output schema present, the description provides sufficient context: it explains what the tool returns, what it does not return (body content), and directs users to alternative tools for other needs. This fully equips an agent to decide when and how to use the tool.
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?
The schema covers 100% of the parameter information, providing the name, type, and example format for base_path. The description does not add further parameter semantics, so a baseline score of 3 is appropriate since the schema already does the heavy lifting.
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 clearly states the tool retrieves metadata and a navigable section index for a GOV.UK page, specifying the resource and the exact data returned. It also differentiates from sibling tools by explicitly naming govuk_get_section and govuk_grep_content for body content, making its unique role clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: it says to use govuk_get_section to read a section's body and govuk_grep_content to search within the page body. This gives the agent clear decision criteria and directly addresses alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govuk_get_organisationGet GOV.UK OrganisationARead-onlyIdempotentInspect
Get the profile of a UK government organisation by its slug.
Returns name, acronym, type, status, web URL, and parent/child organisations. Use govuk_list_organisations to browse all organisations and discover slugs.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Organisation slug, e.g. 'hm-revenue-customs'. Find slugs via govuk_list_organisations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | Organisation slug, e.g. 'hm-revenue-customs'. Usable with govuk_search filters. |
| type | No | Organisation type, e.g. 'ministerial_department', 'executive_agency', 'non_ministerial_department', 'public_corporation'. |
| state | No | GOV.UK status, e.g. 'live', 'closed', 'transitioning'. |
| title | No | Full organisation title. |
| acronym | No | Organisation acronym, if set. |
| web_url | No | Absolute https://www.gov.uk URL for the organisation page. |
| contact_details | No | Contact details block from GOV.UK (phone, email, address) when available. |
| child_organisations | No | Titles of child organisations / agencies under this body. |
| parent_organisations | No | Titles of parent organisations this body reports into. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the return fields (name, acronym, type, status, web URL, parent/child organisations), which is useful context, but does not disclose error behavior, authentication needs, or rate limits. This is a modest addition beyond the annotations, consistent with a simple read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences, with the first stating purpose and the second summarizing return data and pointing to a sibling tool. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with rich annotations and an output schema, this description is complete. It explains what the tool does, what information is returned, and how to find the required parameter value. No critical information is missing for this low-complexity tool.
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?
The input schema provides 100% coverage of the single parameter 'slug', including a description with an example and guidance on finding slugs via govuk_list_organisations. The description's phrase 'by its slug' adds no new semantics beyond what the schema already documents, so the baseline of 3 is appropriate.
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 clearly states the tool's function with a specific verb ('Get') and resource ('profile of a UK government organisation'), and identifies the input method ('by its slug'). It distinguishes itself from sibling tools like govuk_list_organisations by focusing on fetching a single organisation's profile rather than browsing all organisations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by indicating this tool is used when you have a slug and need details, and explicitly points to govuk_list_organisations as the alternative for discovering slugs. It does not explicitly state when not to use this tool, but the guidance provided is sufficient for the tool's simple use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govuk_get_sectionGet GOV.UK Page SectionARead-onlyIdempotentInspect
Get the HTML content of one named section of a GOV.UK page.
Use govuk_get_content first to get the list of available section anchors, then call this with the anchor of the section you want to read.
| Name | Required | Description | Default |
|---|---|---|---|
| anchor | Yes | Section anchor ID from govuk_get_content sections list | |
| base_path | Yes | GOV.UK base_path, e.g. '/universal-credit' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, reducing the burden on the description. The description adds context beyond annotations by noting the dependency on govuk_get_content and clarifying that the tool returns HTML content. It does not cover error behavior or rate limits, but with strong annotations and an output schema, this level of additional context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, immediately stating the core function and then providing the workflow. It is front-loaded, contains no redundant phrases, and every clause contributes to understanding how to use the tool. This is a model of concise, structured documentation.
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 the tool's simplicity (2 required parameters), strong annotation coverage, and the presence of an output schema, the description is complete. It covers the purpose, the prerequisite call, and the source of the anchor parameter. There are no significant gaps that would leave an agent uncertain about how to invoke the tool 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?
The input schema provides 100% coverage with descriptions for both parameters: 'anchor' and 'base_path'. The description does not add further meaning beyond what the schema already states; it merely echoes the workflow. Therefore, the schema does the heavy lifting, and the description offers no additional parameter-level insight, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get the HTML content of one named section of a GOV.UK page,' which uses a specific verb ('Get'), a precise resource ('HTML content of one named section'), and clear scope ('one named section'). It distinguishes from sibling tools by tying the anchor to govuk_get_content, making the tool's niche unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Use govuk_get_content first to get the list of available section anchors, then call this with the anchor of the section you want to read.' This provides a clear workflow and prerequisite. It does not explicitly state when not to use this tool, but the phrase 'one named section' implies alternatives for whole-page content, so it is useful but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govuk_grep_contentSearch within a GOV.UK content bodyARead-onlyIdempotentInspect
Find body sections in a GOV.UK content item matching a pattern.
Returns a list of {anchor, heading, snippet, match} hits — small per-section
snippets centred on the match — so the LLM can decide which full sections to
read via govuk_get_section.
Use this when answering content-based questions ("what does this guide say about X?", "find the bit about eligibility") rather than navigating by section number.
Pattern is regex; if it doesn't compile, falls back to literal substring.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Regex or literal substring to search for within the page body, e.g. 'payment' or 'eligible.*income' | |
| max_hits | No | Maximum number of matching sections to return (1–100) | |
| base_path | Yes | GOV.UK base_path, e.g. '/guidance/register-for-vat' or '/universal-credit' | |
| case_insensitive | No | If true (default), match case-insensitively |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | Matching sections in document order |
| pattern | Yes | The pattern that was searched for |
| base_path | Yes | The content item that was searched |
| truncated | Yes | True if hit count reached max_hits and more matches may exist |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, so the description adds value by detailing the return structure (`{anchor, heading, snippet, match}`) and the fallback behavior: 'Pattern is regex; if it doesn't compile, falls back to literal substring.' This discloses edge-case behavior beyond the annotations.
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?
Four short paragraphs, each with a distinct purpose: purpose, return format, usage guidance, and pattern behavior. No redundant sentences; front-loaded with the core action.
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?
The description covers what the tool returns, when to use it, how it relates to sibling tools, and the regex fallback. Given the output schema exists, it doesn't need to enumerate return fields, but it does anyway for clarity. The tool's complexity is well handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds the fallback semantics for `pattern` and explains that hits are per-section snippets, giving extra meaning to `max_hits` and `pattern` beyond the schema. This additional nuance raises it to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource+scope: 'Find body sections in a GOV.UK content item matching a pattern.' It distinguishes itself from siblings by referencing govuk_get_section and contrasting with 'navigating by section number,' making its purpose unambiguous.
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 usage guidance is provided: 'Use this when answering content-based questions ... rather than navigating by section number.' It also prescribes a workflow: 'so the LLM can decide which full sections to read via govuk_get_section,' naming an alternative tool and the condition for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govuk_list_organisationsList GOV.UK OrganisationsARead-onlyIdempotentInspect
List all UK government organisations registered on GOV.UK.
Returns a paginated list of organisations including their slug, acronym, type, and status. Use this to browse the full government structure or discover slugs for use with govuk_get_organisation or govuk_search filters.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| per_page | No | Results per page (1–50) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | 1-based page number requested. |
| total | No | Total number of organisations across all pages, if reported by GOV.UK. |
| has_more | Yes | True if more organisations exist beyond this page. Re-call with page=page+1 to fetch the next page. |
| per_page | Yes | Max organisations requested per page. |
| returned | Yes | Number of organisations returned in this response. |
| total_pages | No | Total number of pages available, if reported by GOV.UK. |
| organisations | No | Organisations on this page, in the order returned by GOV.UK. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, establishing a safe read-only operation. The description adds behavioral context by noting the paginated nature of the response and listing included fields (slug, acronym, type, status). This goes beyond the annotations, though it doesn't cover every potential behavior like 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that front-load the main purpose, then efficiently explain return contents and usage. Every sentence provides useful information with no filler or redundancy.
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 the tool's simplicity (2 optional parameters, read-only, no side effects), the description covers what users need to know: what the tool lists, what fields are included, and how the result integrates with other tools. The output schema exists, so the description doesn't need to detail all return fields. Annotations cover the safety profile, making this complete.
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?
The schema provides 100% coverage for both parameters (page and per_page), including descriptions, defaults, and constraints. The description only refers to pagination generically and adds no syntax or format details beyond what the schema already documents. Therefore, it meets the baseline for schema-covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List all UK government organisations registered on GOV.UK.' It names the specific resource (organisations) and distinguishes it from siblings by noting that it can be used to 'discover slugs for use with govuk_get_organisation or govuk_search filters.' This makes the purpose unambiguous and differentiates it from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use the tool: 'Use this to browse the full government structure or discover slugs.' It also implies alternative tools (govuk_get_organisation, govuk_search) for other purposes. However, it doesn't explicitly state when not to use it, so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govuk_lookup_postcodeLook Up UK PostcodeARead-onlyIdempotentInspect
Look up a UK postcode to retrieve its local authority, region, constituency, and other administrative geography.
Useful for determining which council area, parliamentary constituency, or NHS region a postcode falls within. Commonly used to direct users to the correct local service on GOV.UK (e.g. council tax, planning, waste).
Uses the postcodes.io public API (no key required).
| Name | Required | Description | Default |
|---|---|---|---|
| postcode | Yes | UK postcode, e.g. 'SW1A 2AA' or 'NG1 1AA'. Spaces optional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| codes | No | GSS codes for all administrative geographies covering this postcode. |
| region | No | ONS region, e.g. 'East Midlands'. |
| country | No | Country, e.g. 'England', 'Scotland', 'Wales', 'Northern Ireland'. |
| latitude | No | Latitude in decimal degrees (WGS84). |
| postcode | No | Canonicalised postcode as returned by postcodes.io. |
| longitude | No | Longitude in decimal degrees (WGS84). |
| admin_county | No | Administrative county, where applicable (null in unitary areas). |
| local_authority | No | Local authority / council covering the postcode. |
| nhs_integrated_care_board | No | NHS Integrated Care Board, where available. |
| parliamentary_constituency | No | Parliamentary constituency (pre-2025 boundary). |
| parliamentary_constituency_2025 | No | Parliamentary constituency under the 2025 boundaries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive. The description adds valuable context that it uses the postcodes.io public API with no key required, but does not mention rate limits or invalid input handling. This is sufficient for a simple read-only lookup.
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 short, focused paragraphs with no redundancy. The first sentence gives the core operation, the second adds usage context, and the third provides a technical detail. Every sentence earns its place.
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 the tool's simplicity (one parameter, full schema coverage, output schema present), the description adequately covers what, when, and external API details. It could mention edge cases like invalid postcodes, but for a direct lookup this is sufficient.
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?
The schema provides 100% coverage of the single parameter, including format, length, and examples. The description adds little beyond what the schema already states, so the baseline of 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 the action 'Look up' and the resource 'UK postcode' with specific outputs like local authority, region, and constituency. This clearly distinguishes it from sibling tools focused on content, organisations, or search.
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 explicitly states when to use the tool ('Useful for determining which council area...') and gives practical examples like directing users to local services. However, it does not mention alternative tools or when-not-to-use, though no sibling tool offers postcode lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govuk_searchSearch GOV.UKARead-onlyIdempotentInspect
Search GOV.UK's 700k+ content items using the official Search API.
Returns a list of matching content items with title, description, link, format, owning organisation(s), and last updated timestamp.
Use filter_format to narrow to specific content types (e.g. 'transaction' for citizen-facing services, 'guide' for guidance, 'publication' for official documents). Use filter_organisations to restrict to a department.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of results to return (1–50) | |
| order | No | Sort order. Use '-public_timestamp' for newest-first (default relevance). | |
| query | Yes | Free-text search query, e.g. 'universal credit eligibility' or 'MOT check' | |
| start | No | Offset for pagination, e.g. 10 for the second page of 10 results | |
| filter_format | No | Filter by document format. Common values: 'guide', 'answer', 'transaction', 'publication', 'news_article', 'detailed_guide', 'hmrc_manual_section', 'travel_advice', 'organisation'. Leave blank to search all types. | |
| filter_organisations | No | Filter by organisation slug, e.g. 'hm-revenue-customs', 'department-for-work-pensions', 'driver-and-vehicle-standards-agency'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Max results requested for this page. |
| query | Yes | The free-text query that was searched. |
| start | Yes | Offset used for this page (zero-based). |
| total | Yes | Total matching results across all pages on GOV.UK. |
| results | No | Matching pages. Use the `link` field of any result as the `base_path` input to govuk_get_content for the full item. |
| has_more | Yes | True if more results exist beyond this page. Re-call with start=start+returned to fetch the next page. |
| returned | Yes | Number of results actually returned in this response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds useful behavioral context beyond annotations: it mentions the official Search API, the scale of 700k+ items, and the exact fields returned in the result list. This enriches the agent's understanding without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: opening sentence states purpose, second sentence summarizes return shape, final sentence gives filter usage. No filler or redundancy; every sentence contributes useful information.
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 a rich output schema, detailed annotations, and full schema parameter descriptions, the description covers the core search behavior and filter usage effectively. It lacks explicit guidance on pagination or when not to use this tool, but overall it is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes beyond schema by giving real-world meaning to filter_format ('transaction' for citizen-facing services, 'guide' for guidance) and explaining the purpose of filter_organisations ('restrict to a department'). This adds semantic value for correctly using these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search GOV.UK's 700k+ content items using the official Search API.' It clearly distinguishes from sibling tools like govuk_get_content by emphasizing broad search across all content, and it details what is returned (title, description, link, format, organisation, timestamp).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use filters ('Use filter_format... Use filter_organisations...'), but it does not explicitly say when to choose this tool over siblings such as govuk_get_content or govuk_grep_content. The search use case is implied but not contrasted with alternatives.
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.
17 tool updates
- Removed
get_doc - Removed
get_functions - Removed
get_prompt - Removed
get_section - Added
govuk_get_content - Added
govuk_get_organisation - Added
govuk_get_section - Added
govuk_grep_content - Added
govuk_list_organisations - Added
govuk_lookup_postcode - Added
govuk_search - Removed
list_docs - Removed
list_prompts - Removed
list_sections - Removed
resolve_topic - Removed
search_docs - Removed
validate_function
17 tool updates
- Added
get_doc - Added
get_functions - Added
get_prompt - Added
get_section - Removed
govuk_get_content - Removed
govuk_get_organisation - Removed
govuk_get_section - Removed
govuk_grep_content - Removed
govuk_list_organisations - Removed
govuk_lookup_postcode - Removed
govuk_search - Added
list_docs - Added
list_prompts - Added
list_sections - Added
resolve_topic - Added
search_docs - Added
validate_function
4 tool updates
- Changed
govuk_grep_content6 fields changed- added
Input schema / properties / base_pathAdded value: +{ + "description": "GOV.UK base_path, e.g. '/guidance/register-for-vat' or '/universal-credit'", + "maxLength": 500, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / case_insensitiveAdded value: +{ + "default": true, + "description": "If true (default), match case-insensitively", + "type": "boolean" +} - added
Input schema / properties / max_hitsAdded value: +{ + "default": 25, + "description": "Maximum number of matching sections to return (1–100)", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "additionalProperties": false, - "description": "Input schema for govuk_grep_content.", - "properties": { - "base_path": { - "description": "GOV.UK base_path of a content item, e.g. 'guidance/planning-guidance-letters-to-chief-planning-officers' (leading slash optional). Use govuk_search to discover base_paths.", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "case_insensitive": { - "default": true, - "description": "Default true.", - "type": "boolean" - }, - "max_hits": { - "default": 25, - "description": "Cap on returned hits.", - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - "pattern": { - "description": "Regex pattern (or plain substring) to search within the body. If the pattern doesn't compile as regex, falls back to literal substring match.", - "maxLength": 200, - "minLength": 2, - "type": "string" - } - }, - "required": [ - "base_path", - "pattern" - ], - "type": "object" -} - added
Input schema / properties / patternAdded value: +{ + "description": "Regex or literal substring to search for within the page body, e.g. 'payment' or 'eligible.*income'", + "maxLength": 200, + "minLength": 1, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "base_path", + "pattern" +]
- Changed
govuk_list_organisations4 fields changed- added
Input schema / properties / pageAdded value: +{ + "default": 1, + "description": "Page number (1-based)", + "minimum": 1, + "type": "integer" +} - removed
Input schema / properties / paramsRemoved value: -{ - "additionalProperties": false, - "description": "OrganisationsListInput with 1-based page and per_page (1–50).", - "properties": { - "page": { - "default": 1, - "description": "Page number (1-based)", - "minimum": 1, - "type": "integer" - }, - "per_page": { - "default": 20, - "description": "Results per page (1–50)", - "maximum": 50, - "minimum": 1, - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / per_pageAdded value: +{ + "default": 20, + "description": "Results per page (1–50)", + "maximum": 50, + "minimum": 1, + "type": "integer" +} - removed
Input schema / requiredRemoved value: -[ - "params" -]
- Changed
govuk_lookup_postcode3 fields changed- removed
Input schema / properties / paramsRemoved value: -{ - "additionalProperties": false, - "description": "PostcodeInput with a UK postcode (e.g. 'NG1 1AA', 'SW1A 2AA').", - "properties": { - "postcode": { - "description": "UK postcode, e.g. 'SW1A 2AA' or 'NG1 1AA'. Spaces optional.", - "maxLength": 8, - "minLength": 5, - "type": "string" - } - }, - "required": [ - "postcode" - ], - "type": "object" -} - added
Input schema / properties / postcodeAdded value: +{ + "description": "UK postcode, e.g. 'SW1A 2AA' or 'NG1 1AA'. Spaces optional.", + "maxLength": 8, + "minLength": 5, + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "postcode" +]
- Changed
govuk_search8 fields changed- added
Input schema / properties / countAdded value: +{ + "default": 10, + "description": "Number of results to return (1–50)", + "maximum": 50, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / filter_formatAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Filter by document format. Common values: 'guide', 'answer', 'transaction', 'publication', 'news_article', 'detailed_guide', 'hmrc_manual_section', 'travel_advice', 'organisation'. Leave blank to search all types." +} - added
Input schema / properties / filter_organisationsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Filter by organisation slug, e.g. 'hm-revenue-customs', 'department-for-work-pensions', 'driver-and-vehicle-standards-agency'." +} - added
Input schema / properties / orderAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Sort order. Use '-public_timestamp' for newest-first (default relevance)." +} - removed
Input schema / properties / paramsRemoved value: -{ - "additionalProperties": false, - "description": "SearchInput with query, count, start, optional format/org\nfilters, and optional sort order.", - "properties": { - "count": { - "default": 10, - "description": "Number of results to return (1–50)", - "maximum": 50, - "minimum": 1, - "type": "integer" - }, - "filter_format": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filter by document format. Common values: 'guide', 'answer', 'transaction', 'publication', 'news_article', 'detailed_guide', 'hmrc_manual_section', 'travel_advice', 'organisation'. Leave blank to search all types." - }, - "filter_organisations": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Filter by organisation slug, e.g. 'hm-revenue-customs', 'department-for-work-pensions', 'driver-and-vehicle-standards-agency'." - }, - "order": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Sort order. Use '-public_timestamp' for newest-first (default relevance)." - }, - "query": { - "description": "Free-text search query, e.g. 'universal credit eligibility' or 'MOT check'", - "maxLength": 500, - "minLength": 1, - "type": "string" - }, - "start": { - "default": 0, - "description": "Offset for pagination, e.g. 10 for the second page of 10 results", - "minimum": 0, - "type": "integer" - } - }, - "required": [ - "query" - ], - "type": "object" -} - added
Input schema / properties / queryAdded value: +{ + "description": "Free-text search query, e.g. 'universal credit eligibility' or 'MOT check'", + "maxLength": 500, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / startAdded value: +{ + "default": 0, + "description": "Offset for pagination, e.g. 10 for the second page of 10 results", + "minimum": 0, + "type": "integer" +} - changed
Input schema / requiredPrevious value: -[ - "params" -]New value: +[ + "query" +]
5 tool updates
- Added
govuk_get_content - Added
govuk_get_organisation - Added
govuk_get_section - Removed
list_resources - Removed
read_resource
6 tool updates
- First observed
govuk_grep_content - First observed
govuk_list_organisations - First observed
govuk_lookup_postcode - First observed
govuk_search - First observed
list_resources - First observed
read_resource
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT- AlicenseNot gradedqualityBmaintenanceAnalyze LinkedIn & email outreach campaigns, track pipeline performance, and review lead conversations for RevOps, Sales Managers, and SDR teams.Apache 2.0
- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.11291MIT