Parse OSCOLA Citations
citations_parseExtracts and classifies OSCOLA citations from free text, including cases, legislation, and statutory instruments. Optionally disambiguates ambiguous references using a connected model.
Instructions
USE THIS TOOL WHEN you have free text (a memo, an email, a clause) and want every OSCOLA-style citation it contains extracted and classified.
Identifies: neutral citations ([2024] UKSC 12), law reports ([2024] 1 WLR 100), legislation sections (s.47 Companies Act 2006), SIs (SI 2018/1234), retained EU law (Regulation (EU) 2016/679).
Parsing is pure regex by default. Ambiguous citations (e.g. bare [2024] EWHC without division) can OPTIONALLY be disambiguated by setting disambiguate=True, which asks the CONNECTED CLIENT's own model (not this server) to resolve the division via MCP sampling — off by default. Citations resolve to TNA / legislation.gov.uk URLs when possible.
AFTER calling, pass each citation through citations_resolve to verify it points at a real document before quoting or formatting it — the parser recognises the SHAPE of a citation but does not confirm the document exists.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Free text containing OSCOLA citations to extract. Supported: neutral citations ([2024] UKSC 12), law reports ([2024] 1 WLR 100), legislation sections (s.47 Companies Act 2006), SIs (SI 2018/1234), retained EU law (Regulation (EU) 2016/679). Max 50,000 chars. | |
| disambiguate | No | Default False — pure-regex parsing, no model in the loop. If True, ambiguous citations (e.g. bare EWHC without a division) are sent to the connected client's own LLM, via MCP sampling, to resolve the division. Opt in only when you want best-effort division resolution and accept that a model shapes the result. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| citations | Yes | All successfully parsed citations (confidence >= 0.7) | |
| ambiguous | Yes | Citations with confidence < 0.7; may have been partially disambiguated via sampling | |
| text_length | Yes | Character length of the input text | |
| parse_duration_ms | Yes | Time taken to parse, in milliseconds |