Skip to main content
Glama

Get Legislation Section

legislation_get_section
Read-onlyIdempotent

USE THIS TOOL WHEN you have a known Act / SI and want the parsed text of a specific section, with extent and in-force metadata.

Returns full section text, territorial extent, in-force status, and prospective flag. Content capped per max_chars (default 10,000, ~2,500 tokens) — raise for unusually long definition sections; check content_truncated in the response.

ALWAYS check extent — a section may apply to England & Wales but not Scotland or Northern Ireland. Reciting a section without checking extent is a recurring legal-research error.

Alternative: call read_resource(uri="legislation://{type}/{year}/{number}/ section/{section}") for raw CLML XML; use this tool when you want the parsed structured response instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeYesLegislation type code: 'ukpga' (Acts), 'uksi' (SIs), 'asp' (Scottish Acts), 'nia' (NI Acts). Use the value from legislation_search results.
yearYesYear of enactment
numberYesChapter or SI number
sectionYesSection number, e.g. '47' or '12A'. Use the numeric part only — not 'section-47'. Schedules are not currently supported.
max_charsNoMaximum characters of section content to return. Default 10,000 (~2,500 tokens) covers almost every section. Raise to 50,000+ only for unusually long Finance Act definition sections. Check content_truncated in the response to see if it was cut.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYesSection title or heading
extentNoTerritorial extent: list of 'England', 'Wales', 'Scotland', 'Northern Ireland'. Empty list means unknown — do not assume full UK extent.
contentYesPlain text content of the section, possibly truncated per max_chars. Check content_truncated and original_length for full-text information.
in_forceNoFalse if the section is explicitly marked repealed in CLML. True only when an InForce element is present in the section body (rare). Null for most sections — the data.xml endpoint does not carry a per-section current in-force boolean; null does not mean repealed.
warningsNoNon-fatal retrieval or parsing warnings the caller should disclose where relevant.
prospectiveNoTrue if this section has not yet come into force; None if unknown
version_dateNoDate of the version retrieved
source_formatNoSource parsed for this response. html_fallback means CLML XML was unavailable and text was parsed from the public HTML page.xml
section_numberYesSection number, e.g. '47', '12A', 'Schedule 2'
original_lengthNoOriginal plain-text length in characters before any truncation
content_truncatedNoTrue if content was cut to fit max_chars

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed7 schema fields changed
    • addedInput schema / properties / max_chars
      Added value: +{
      +  "default": 10000,
      +  "description": "Maximum characters of section content to return. Default 10,000 (~2,500 tokens) covers almost every section. Raise to 50,000+ only for unusually long Finance Act definition sections. Check content_truncated in the response to see if it was cut.",
      +  "maximum": 200000,
      +  "minimum": 500,
      +  "type": "integer"
      +}
    • addedInput schema / properties / number
      Added value: +{
      +  "description": "Chapter or SI number",
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • removedInput schema / properties / params
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "LegislationGetSectionInput.",
      -  "properties": {
      -    "max_chars": {
      -      "default": 10000,
      -      "description": "Maximum characters of section content to return. Default 10,000 (~2,500 tokens) covers almost every section. Raise to 50,000+ only for unusually long Finance Act definition sections. Check content_truncated in the response to see if it was cut.",
      -      "maximum": 200000,
      -      "minimum": 500,
      -      "type": "integer"
      -    },
      -    "number": {
      -      "description": "Chapter or SI number",
      -      "minimum": 1,
      -      "type": "integer"
      -    },
      -    "section": {
      -      "description": "Section number, e.g. '47' or '12A'. Use the numeric part only — not 'section-47'. Schedules are not currently supported.",
      -      "maxLength": 50,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "type": {
      -      "description": "Legislation type code: 'ukpga' (Acts), 'uksi' (SIs), 'asp' (Scottish Acts), 'nia' (NI Acts). Use the value from legislation_search results.",
      -      "maxLength": 10,
      -      "minLength": 2,
      -      "type": "string"
      -    },
      -    "year": {
      -      "description": "Year of enactment",
      -      "maximum": 2100,
      -      "minimum": 1800,
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "type",
      -    "year",
      -    "number",
      -    "section"
      -  ],
      -  "type": "object"
      -}
    • addedInput schema / properties / section
      Added value: +{
      +  "description": "Section number, e.g. '47' or '12A'. Use the numeric part only — not 'section-47'. Schedules are not currently supported.",
      +  "maxLength": 50,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Legislation type code: 'ukpga' (Acts), 'uksi' (SIs), 'asp' (Scottish Acts), 'nia' (NI Acts). Use the value from legislation_search results.",
      +  "maxLength": 10,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / year
      Added value: +{
      +  "description": "Year of enactment",
      +  "maximum": 2100,
      +  "minimum": 1800,
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "params"
      -]New value: +[
      +  "type",
      +  "year",
      +  "number",
      +  "section"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / properties / in_force / description
      Previous value: -"Whether this section is currently in force; None if unknown"New value: +"False if the section is explicitly marked repealed in CLML. True only when an InForce element is present in the section body (rare). Null for most sections — the data.xml endpoint does not carry a per-section current in-force boolean; null does not mean repealed."
  3. Changed1 schema field changed
    • changedInput schema / properties / params / description
      Previous value: -"type, year, number, section identifier, optional max_chars."New value: +"LegislationGetSectionInput."
  4. Changed7 schema fields changed
    • changedOutput schema / properties / extent / description
      Previous value: -"Territorial extent: list of 'England', 'Wales', 'Scotland', 'Northern Ireland'"New value: +"Territorial extent: list of 'England', 'Wales', 'Scotland', 'Northern Ireland'. Empty list means unknown — do not assume full UK extent."
    • addedOutput schema / properties / prospective / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / prospective / default
      Previous value: -falseNew value: +null
    • changedOutput schema / properties / prospective / description
      Previous value: -"True if this section has not yet come into force"New value: +"True if this section has not yet come into force; None if unknown"
    • removedOutput schema / properties / prospective / type
      Removed value: -"boolean"
    • addedOutput schema / properties / source_format
      Added value: +{
      +  "default": "xml",
      +  "description": "Source parsed for this response. html_fallback means CLML XML was unavailable and text was parsed from the public HTML page.",
      +  "enum": [
      +    "xml",
      +    "html_fallback"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "description": "Non-fatal retrieval or parsing warnings the caller should disclose where relevant.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  5. Changed11 schema fields changed
    • removedInput schema / properties / date
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Optional point-in-time date YYYY-MM-DD for historical version"
      -}
    • removedInput schema / properties / number
      Removed value: -{
      -  "description": "Number, e.g. '46'",
      -  "maxLength": 10,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • addedInput schema / properties / params
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "type, year, number, section identifier, optional max_chars.",
      +  "properties": {
      +    "max_chars": {
      +      "default": 10000,
      +      "description": "Maximum characters of section content to return. Default 10,000 (~2,500 tokens) covers almost every section. Raise to 50,000+ only for unusually long Finance Act definition sections. Check content_truncated in the response to see if it was cut.",
      +      "maximum": 200000,
      +      "minimum": 500,
      +      "type": "integer"
      +    },
      +    "number": {
      +      "description": "Chapter or SI number",
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    "section": {
      +      "description": "Section number, e.g. '47' or '12A'. Use the numeric part only — not 'section-47'. Schedules are not currently supported.",
      +      "maxLength": 50,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "type": {
      +      "description": "Legislation type code: 'ukpga' (Acts), 'uksi' (SIs), 'asp' (Scottish Acts), 'nia' (NI Acts). Use the value from legislation_search results.",
      +      "maxLength": 10,
      +      "minLength": 2,
      +      "type": "string"
      +    },
      +    "year": {
      +      "description": "Year of enactment",
      +      "maximum": 2100,
      +      "minimum": 1800,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "type",
      +    "year",
      +    "number",
      +    "section"
      +  ],
      +  "type": "object"
      +}
    • removedInput schema / properties / section
      Removed value: -{
      -  "description": "Section number or ID, e.g. '172' or 'section-172'",
      -  "maxLength": 50,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / type
      Removed value: -{
      -  "description": "Legislation type, e.g. 'ukpga', 'uksi'",
      -  "maxLength": 20,
      -  "minLength": 3,
      -  "type": "string"
      -}
    • removedInput schema / properties / year
      Removed value: -{
      -  "description": "Year, e.g. '2006'",
      -  "maxLength": 4,
      -  "minLength": 4,
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "type",
      -  "year",
      -  "number",
      -  "section"
      -]New value: +[
      +  "params"
      +]
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / description
      Added value: +"A single section of an Act or SI, with full metadata."
    • addedOutput schema / properties
      Added value: +{
      +  "content": {
      +    "description": "Plain text content of the section, possibly truncated per max_chars. Check content_truncated and original_length for full-text information.",
      +    "type": "string"
      +  },
      +  "content_truncated": {
      +    "default": false,
      +    "description": "True if content was cut to fit max_chars",
      +    "type": "boolean"
      +  },
      +  "extent": {
      +    "description": "Territorial extent: list of 'England', 'Wales', 'Scotland', 'Northern Ireland'",
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "in_force": {
      +    "anyOf": [
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Whether this section is currently in force; None if unknown"
      +  },
      +  "original_length": {
      +    "default": 0,
      +    "description": "Original plain-text length in characters before any truncation",
      +    "type": "integer"
      +  },
      +  "prospective": {
      +    "default": false,
      +    "description": "True if this section has not yet come into force",
      +    "type": "boolean"
      +  },
      +  "section_number": {
      +    "description": "Section number, e.g. '47', '12A', 'Schedule 2'",
      +    "type": "string"
      +  },
      +  "title": {
      +    "description": "Section title or heading",
      +    "type": "string"
      +  },
      +  "version_date": {
      +    "anyOf": [
      +      {
      +        "format": "date",
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Date of the version retrieved"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "title",
      +  "section_number",
      +  "content"
      +]
  6. Changed11 schema fields changed
    • addedInput schema / properties / date
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional point-in-time date YYYY-MM-DD for historical version"
      +}
    • addedInput schema / properties / number
      Added value: +{
      +  "description": "Number, e.g. '46'",
      +  "maxLength": 10,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • removedInput schema / properties / params
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "type, year, number, section identifier, optional max_chars.",
      -  "properties": {
      -    "max_chars": {
      -      "default": 10000,
      -      "description": "Maximum characters of section content to return. Default 10,000 (~2,500 tokens) covers almost every section. Raise to 50,000+ only for unusually long Finance Act definition sections. Check content_truncated in the response to see if it was cut.",
      -      "maximum": 200000,
      -      "minimum": 500,
      -      "type": "integer"
      -    },
      -    "number": {
      -      "description": "Chapter or SI number",
      -      "minimum": 1,
      -      "type": "integer"
      -    },
      -    "section": {
      -      "description": "Section number, e.g. '47' or '12A'. Use the numeric part only — not 'section-47'. Schedules are not currently supported.",
      -      "maxLength": 50,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "type": {
      -      "description": "Legislation type code: 'ukpga' (Acts), 'uksi' (SIs), 'asp' (Scottish Acts), 'nia' (NI Acts). Use the value from legislation_search results.",
      -      "maxLength": 10,
      -      "minLength": 2,
      -      "type": "string"
      -    },
      -    "year": {
      -      "description": "Year of enactment",
      -      "maximum": 2100,
      -      "minimum": 1800,
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "type",
      -    "year",
      -    "number",
      -    "section"
      -  ],
      -  "type": "object"
      -}
    • addedInput schema / properties / section
      Added value: +{
      +  "description": "Section number or ID, e.g. '172' or 'section-172'",
      +  "maxLength": 50,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Legislation type, e.g. 'ukpga', 'uksi'",
      +  "maxLength": 20,
      +  "minLength": 3,
      +  "type": "string"
      +}
    • addedInput schema / properties / year
      Added value: +{
      +  "description": "Year, e.g. '2006'",
      +  "maxLength": 4,
      +  "minLength": 4,
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "params"
      -]New value: +[
      +  "type",
      +  "year",
      +  "number",
      +  "section"
      +]
    • addedOutput schema / additionalProperties
      Added value: +true
    • removedOutput schema / description
      Removed value: -"A single section of an Act or SI, with full metadata."
    • removedOutput schema / properties
      Removed value: -{
      -  "content": {
      -    "description": "Plain text content of the section, possibly truncated per max_chars. Check content_truncated and original_length for full-text information.",
      -    "type": "string"
      -  },
      -  "content_truncated": {
      -    "default": false,
      -    "description": "True if content was cut to fit max_chars",
      -    "type": "boolean"
      -  },
      -  "extent": {
      -    "description": "Territorial extent: list of 'England', 'Wales', 'Scotland', 'Northern Ireland'",
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "in_force": {
      -    "anyOf": [
      -      {
      -        "type": "boolean"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "description": "Whether this section is currently in force; None if unknown"
      -  },
      -  "original_length": {
      -    "default": 0,
      -    "description": "Original plain-text length in characters before any truncation",
      -    "type": "integer"
      -  },
      -  "prospective": {
      -    "default": false,
      -    "description": "True if this section has not yet come into force",
      -    "type": "boolean"
      -  },
      -  "section_number": {
      -    "description": "Section number, e.g. '47', '12A', 'Schedule 2'",
      -    "type": "string"
      -  },
      -  "title": {
      -    "description": "Section title or heading",
      -    "type": "string"
      -  },
      -  "version_date": {
      -    "anyOf": [
      -      {
      -        "format": "date",
      -        "type": "string"
      -      },
      -      {
      -        "type": "null"
      -      }
      -    ],
      -    "default": null,
      -    "description": "Date of the version retrieved"
      -  }
      -}
    • removedOutput schema / required
      Removed value: -[
      -  "title",
      -  "section_number",
      -  "content"
      -]
  7. Changed1 schema field changed
    • addedInput schema / properties / params / description
      Added value: +"type, year, number, section identifier, optional max_chars."
  8. Changed14 schema fields changed
    • addedInput schema / properties / params / properties / max_chars
      Added value: +{
      +  "default": 10000,
      +  "description": "Maximum characters of section content to return. Default 10,000 (~2,500 tokens) covers almost every section. Raise to 50,000+ only for unusually long Finance Act definition sections. Check content_truncated in the response to see if it was cut.",
      +  "maximum": 200000,
      +  "minimum": 500,
      +  "type": "integer"
      +}
    • changedOutput schema / description
      Previous value: -"Generic wrapper for non-object return types."New value: +"A single section of an Act or SI, with full metadata."
    • addedOutput schema / properties / content
      Added value: +{
      +  "description": "Plain text content of the section, possibly truncated per max_chars. Check content_truncated and original_length for full-text information.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / content_truncated
      Added value: +{
      +  "default": false,
      +  "description": "True if content was cut to fit max_chars",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / extent
      Added value: +{
      +  "description": "Territorial extent: list of 'England', 'Wales', 'Scotland', 'Northern Ireland'",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / in_force
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Whether this section is currently in force; None if unknown"
      +}
    • addedOutput schema / properties / original_length
      Added value: +{
      +  "default": 0,
      +  "description": "Original plain-text length in characters before any truncation",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / prospective
      Added value: +{
      +  "default": false,
      +  "description": "True if this section has not yet come into force",
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / result
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / section_number
      Added value: +{
      +  "description": "Section number, e.g. '47', '12A', 'Schedule 2'",
      +  "type": "string"
      +}
    • addedOutput schema / properties / title
      Added value: +{
      +  "description": "Section title or heading",
      +  "type": "string"
      +}
    • addedOutput schema / properties / version_date
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Date of the version retrieved"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "result"
      -]New value: +[
      +  "title",
      +  "section_number",
      +  "content"
      +]
    • removedOutput schema / x-fastmcp-wrap-result
      Removed value: -true
  9. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds valuable behavioral context beyond annotations: content truncation via max_chars, the content_truncated response field, and the extent-check warning. It also mentions the 'prospective flag' as an output trait, so the agent knows what to expect.

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 a bolded 'USE THIS TOOL WHEN' and organized into clear paragraphs. It is somewhat wordier than necessary (e.g., repeating default token count), but every section serves a distinct purpose—purpose, return details, warning, alternative—making it efficient and well-structured.

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?

The description is complete for a read tool with an output schema: it covers the intended use case, key output fields (extent, in-force, prospective flag), truncation behavior, a critical legal-research caution, and an explicit alternative. It also tells the user to get type/year/number from legislation_search, which is helpful. Nothing essential 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 coverage is 100% with detailed descriptions for every parameter, including max_chars default and guidance to check content_truncated. The description adds minimal extra meaning beyond schema, mostly reiterating the max_chars behavior. Baseline 3 is appropriate when the schema does the heavy lifting.

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 clearly states the tool's function: 'USE THIS TOOL WHEN you have a known Act / SI and want the parsed text of a specific section, with extent and in-force metadata.' This specific verb+resource+outcome distinguishes it from siblings like legislation_get_toc and read_resource, and it explicitly contrasts with the raw XML alternative.

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?

The description provides explicit usage guidance: when to use the tool ('when you have a known Act / SI'), what to check ('ALWAYS check extent'), and names the alternative ('call read_resource(uri=...) for raw CLML XML'). This is a clear when/when-not with alternatives.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose, with detailed descriptions that prevent ambiguity. Tools covering similar domains (e.g., multiple parliament search tools) are carefully differentiated by their search approach and input requirements.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (e.g., bills_get_bill, case_law_search, citations_resolve). Even generic tools adhere to this style. No mixing of conventions.

Tool Count4/5

With 35 tools, the count is on the higher side but appropriate for the wide-ranging domain of UK legal research. Each tool contributes to specific sub-domains (bills, case law, citations, committees, HMRC, legislation, parliament, votes) without unnecessary duplication.

Completeness5/5

The tool surface covers nearly all essential aspects of UK legal research: searching and retrieving bills, case law, and legislation; parsing and resolving citations; exploring committee evidence; accessing Hansard debates and member interests; and checking HMRC guidance and VAT rates. Gaps like full judgment text retrieval are mitigated by paragraph-level access and indexing.