Skip to main content
Glama

Resolve Single OSCOLA Citation

citations_resolve
Read-onlyIdempotent

USE THIS TOOL BEFORE constructing an OSCOLA citation string from known fields, OR to confirm a citation points at a real document.

Parses + resolves a single citation (neutral citation, SI, legislation section, retained EU law) and returns parsed fields plus resolved_url. For neutral citations, performs a live TNA HEAD check — non-200 sets confidence to 0.0 (document absent). Do NOT format or quote a confidence-0.0 citation.

If the TNA HEAD check fails (timeout, connection error), raises ToolError with {"error_category": "transient", "is_retryable": true}. One retry is attempted — retry this call or proceed without TNA verification.

Formatting a citation from "known" fields without prior resolution is the most common fabrication route. If this tool raises or returns no resolved_url, do NOT manufacture a citation — surface the failure and ask the user for the source URL.

Authoritative source for UK legal-citation resolution.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
citationYesA single OSCOLA citation to parse and resolve. E.g. '[2024] UKSC 12', 'SI 2018/1234', 's.47 Companies Act 2006'

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rawYesOriginal citation text as found in the source
pageNoStarting page in the law report
typeYesClassification of the citation type
yearNoYear component of the citation
courtNoCourt code: UKSC, UKPC, EWCA Civ, EWCA Crim, EWHC (KB), EWHC (Ch), EWHC (Comm), EWHC (Fam), EWHC (Pat), EWHC (IPEC), UKUT (IAC), UKUT (TCC), UKUT (AAC), UKUT (LC), EAT, UKFTT (TC), UKFTT (GRC)
numberNoJudgment number within the year
volumeNoReport volume number (for law reports)
sectionNoSection number referenced
si_yearNoSI year (for SI YYYY/NNN citations)
si_numberNoSI number
confidenceYesParse confidence 0.0–1.0. Citations below 0.7 are ambiguous and may have been sent for LLM disambiguation.
resolved_urlNoTNA Find Case Law or legislation.gov.uk URL if successfully resolved
report_seriesNoLaw report series abbreviation: WLR, AC, QB, KB, Ch, All ER, EWCA Civ, etc.
legislation_titleNoTitle of legislation (for s.NN Act YYYY citations)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / citation
      Added value: +{
      +  "description": "A single OSCOLA citation to parse and resolve. E.g. '[2024] UKSC 12', 'SI 2018/1234', 's.47 Companies Act 2006'",
      +  "maxLength": 500,
      +  "minLength": 3,
      +  "type": "string"
      +}
    • removedInput schema / properties / params
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "CitationsResolveInput.",
      -  "properties": {
      -    "citation": {
      -      "description": "A single OSCOLA citation to parse and resolve. E.g. '[2024] UKSC 12', 'SI 2018/1234', 's.47 Companies Act 2006'",
      -      "maxLength": 500,
      -      "minLength": 3,
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "citation"
      -  ],
      -  "type": "object"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "params"
      -]New value: +[
      +  "citation"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / params / description
      Previous value: -"CitationsResolveInput with a single citation string."New value: +"CitationsResolveInput."
  3. Changed1 schema field changed
    • addedInput schema / properties / params / description
      Added value: +"CitationsResolveInput with a single citation string."
  4. Changed18 schema fields changed
    • changedOutput schema / description
      Previous value: -"Generic wrapper for non-object return types."New value: +"A single parsed OSCOLA citation with optional resolution."
    • addedOutput schema / properties / confidence
      Added value: +{
      +  "description": "Parse confidence 0.0–1.0. Citations below 0.7 are ambiguous and may have been sent for LLM disambiguation.",
      +  "maximum": 1,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedOutput schema / properties / court
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Court code: UKSC, UKPC, EWCA Civ, EWCA Crim, EWHC (KB), EWHC (Ch), EWHC (Comm), EWHC (Fam), EWHC (Pat), EWHC (IPEC), UKUT (IAC), UKUT (TCC), UKUT (AAC), UKUT (LC), EAT, UKFTT (TC), UKFTT (GRC)"
      +}
    • addedOutput schema / properties / legislation_title
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Title of legislation (for s.NN Act YYYY citations)"
      +}
    • addedOutput schema / properties / number
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Judgment number within the year"
      +}
    • addedOutput schema / properties / page
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Starting page in the law report"
      +}
    • addedOutput schema / properties / raw
      Added value: +{
      +  "description": "Original citation text as found in the source",
      +  "type": "string"
      +}
    • addedOutput schema / properties / report_series
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Law report series abbreviation: WLR, AC, QB, KB, Ch, All ER, EWCA Civ, etc."
      +}
    • addedOutput schema / properties / resolved_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "TNA Find Case Law or legislation.gov.uk URL if successfully resolved"
      +}
    • removedOutput schema / properties / result
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / section
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Section number referenced"
      +}
    • addedOutput schema / properties / si_number
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "SI number"
      +}
    • addedOutput schema / properties / si_year
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "SI year (for SI YYYY/NNN citations)"
      +}
    • addedOutput schema / properties / type
      Added value: +{
      +  "description": "Classification of the citation type",
      +  "enum": [
      +    "neutral",
      +    "law_report",
      +    "legislation",
      +    "si",
      +    "eu_retained"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / volume
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Report volume number (for law reports)"
      +}
    • addedOutput schema / properties / year
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Year component of the citation"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "result"
      -]New value: +[
      +  "raw",
      +  "type",
      +  "confidence"
      +]
    • removedOutput schema / x-fastmcp-wrap-result
      Removed value: -true
  5. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description reveals live TNA HEAD-check behavior, confidence scores dropping to 0.0 on non-200 responses, and ToolError with retryable semantics. It also warns about quoting low-confidence results, which is important behavioral context for downstream use.

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 well-structured and front-loads the usage directive, but some safety warnings are repeated (e.g., not formatting or quoting unresolved citations). The redundancy is understandable for risk mitigation but prevents a perfect conciseness score.

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 covers input, output shape, error behavior, retry semantics, and downstream safety considerations. Given the presence of an output schema, the additional context about confidence and resolved_url is sufficient for an agent to use the tool correctly.

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

Parameters5/5

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

The schema fully describes the single required citation parameter with length constraints and concrete examples. The tool description additionally enumerates accepted citation types, making the parameter semantics clear and actionable.

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 that the tool parses and resolves a single OSCOLA citation, returning parsed fields and a resolved_url. It also distinguishes this from sibling tools like citations_parse and citations_format_oscola by emphasizing real-document resolution.

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 explicitly instructs agents to use this tool before constructing an OSCOLA citation string or confirming that a citation points to a real document. It also provides critical guidance about not manufacturing citations when resolution fails, which clearly defines when and how to use the tool.

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.