Lexiara
REMOTE · LEXIARA.ORG · SCANNED OCT 4
Provenance-backed EU and UK legislation for AI agents, addressable to the individual provision.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS check failed: the endpoint is reachable over plaintext HTTP. See how to fix → View diagnostics → Fail
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability68
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6774 tokens (~218/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 31 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the Lexiara MCP server?
Lexiara is a hosted endpoint at https://lexiara.org/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · lexiara.org
claude mcp add --transport http org-lexiara-lexiara 'https://lexiara.org/mcp'
{
"mcpServers": {
"org-lexiara-lexiara": {
"url": "https://lexiara.org/mcp"
}
}
} {
"servers": {
"org-lexiara-lexiara": {
"type": "http",
"url": "https://lexiara.org/mcp"
}
}
} [mcp_servers.org-lexiara-lexiara] url = "https://lexiara.org/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"org-lexiara-lexiara": {
"type": "remote",
"url": "https://lexiara.org/mcp",
"enabled": true
}
}
} openclaw mcp add org-lexiara-lexiara --url 'https://lexiara.org/mcp' --transport streamable-http
mcp_servers:
org-lexiara-lexiara:
url: "https://lexiara.org/mcp" {
"McpServers": {
"org-lexiara-lexiara": {
"Transport": "http",
"Url": "https://lexiara.org/mcp"
}
}
} assistant mcp add org-lexiara-lexiara -t streamable-http -u 'https://lexiara.org/mcp'
{
"mcpServers": {
"org-lexiara-lexiara": {
"type": "http",
"url": "https://lexiara.org/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Oct 26 +1
- “explore_role_requirements” added an optional parameter “term” cosmetic
- “explore_role_requirements” added an optional parameter “work” cosmetic
2 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 3 Oct 26 0
- Tool “find_national_implementations” rewrote its description, which is the text the model reads security
- Schema quality: 5650 → 6722 ▼ functional
- New tool “concept_family” functional
- New tool “explore_role_requirements” functional
- New tool “get_saved_role_view” functional
- New tool “list_concepts” functional
- New tool “list_saved_role_views” functional
- New tool “list_work_versions” functional
- “lookup_provision” reworded the description of “expression” cosmetic
- 2 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 26 Sept 26 +55
- HTTPS: unverified → fail ▼ security
- Authorization: unverified → partial ▲ security
- Injection markers: unverified → pass ▲ security
- Transport: fail → pass ▲ security
- MCP protocol: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- Stability: unverified → 0.67 ▲ functional
- 25 Sept 26 −54
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 8 Oct 2026 · Probed https://lexiara.org/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=lexiara.org | CN=WE1,O=Google Trust Services,C=US | 25 Sept 2026 | 24 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | ec6763dac91de9e413dfef57c8cde4f3 |
| SANs: lexiara.org, www.lexiara.org, *.www.lexiara.org | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of lexiara.org. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| org. | present | 26974 | 8 | Verified |
| lexiara.org. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://lexiara.org/mcp | Verified | 200 | |
| http (plaintext) | http://lexiara.org/mcp | Served over HTTP | 200 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
concept_family Every meaning the corpus gives one defined term ~273
One defined term across the whole corpus: each distinct WORDING with the publisher's own text and the instruments that write it, every instrument that borrows it (with the chain of acts it passes through), the instruments that cite a defining provision, and the term's labels in the act's other authentic EU languages. Ask this when a term is defined differently in different instruments ('producer' under WEEE, the Batteries Regulation and the PPWR) and the answer depends on which. Each instrument carries `pivotWhy`: why the term matters in THAT act ('carries 38 duties · 6 other definitions build on it'). Meanings are separated on facts only: identical words are grouped, different words are listed apart, and a borrowing is attached to what the borrowing act names. Never state that two different wordings mean the same thing on the strength of this tool. A query by a borrower's own label (an alias) returns the family it borrows into. The definitions and defining instruments are free. The borrowing chains and citations are Lexiara Nexus data requiring an API key on a signed-in account; without one the arrays are empty and `gated` says how many were withheld.
| Name | Type | Req | Description |
|---|---|---|---|
| term | string | yes | The defined term, e.g. 'producer'. Matched exactly (case-insensitive). |
Structured output declared, but exposes no named fields.
No examples provided.
define_term Where the law defines a phrase ~221
The definition of a term of art, and the provision that gives it. Ask this BEFORE search_legislation whenever the question is what a phrase means ('durable medium', 'taxable person'): search returns provisions that USE a phrase, this returns the law that DEFINES it, verbatim. A term defined by several instruments returns several rows — the scope of each definition is the instrument carrying it, so check the work before applying one. The definition text is always free. Only the adoption resolution (`adopts`, which act a borrowed definition comes from) is Lexiara Nexus data requiring an API key on a signed-in account.
| Name | Type | Req | Description |
|---|---|---|---|
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| limit | number | – | Maximum definitions, default 8. |
| term | string | yes | The phrase, e.g. 'durable medium'. Matched exactly (case-insensitive). |
| work | string | – | ELI or official number of the borrowing/defining instrument; scopes the term to that instrument. |
Structured output declared, but exposes no named fields.
No examples provided.
explore_role_requirements Explore requirements by legal role ~275
Research source-bound EU role requirements with exact passages, act-specific definitions, conditions, unknown facts and EN/FR/DE/IT official source availability. Select multiple roles and an optional activity, product, Spain or France, and date. Country links carry their relationship type and review state. Informative national text appears only as a separate research lead, not verified country coverage. An absent link is a coverage gap, never proof that national law is absent. This is a bounded research aid, not a compliance verdict. Uses the ordinary signed-in Nexus allowance.
| Name | Type | Req | Description |
|---|---|---|---|
| activity | string | – | Activity from the response catalogue, e.g. selling-online. |
| asAt | string | – | YYYY-MM-DD; only source-supported dates are shown. |
| country | string | – | ES or FR for national connections. |
| product | string | – | Product from the response catalogue, e.g. consumer-goods. |
| roles | string | – | Comma-separated scoped role keys, e.g. crd:trader,gpsr:manufacturer. Omit to see all current candidates. |
| term | string | – | Optional actor label or exact phrase in a candidate quotation. Discovery only; shared labels do not equate legal definitions or establish applicability. |
| work | string | – | Optional legislation ELI; scope candidates and legal roles to this act. |
Structured output declared, but exposes no named fields.
No examples provided.
fetch Fetch a Lexiara provision ~88
Retrieve one search result by its opaque id, including provision text, canonical URL, authority status and source provenance. metadata.structure provides parent/child addresses; an empty container text does not mean the law is absent. Use child apiHref links or lookup_provision with sourceLang to traverse. Use ids returned by search without editing them.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Opaque identifier returned by the search tool. |
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| metadata | object | – | – |
| text | string | yes | – |
| title | string | yes | – |
| url | string | yes | Absolute canonical Lexiara URL. |
No examples provided.
find_national_implementations Article-level national implementations ~226
National provisions implementing one EU provision, with method and confidence per link. DERIVED data, not published by any authority: treat links not marked method='human' as leads to verify, and say so when citing. Check evidenceStatus: a current national consolidated reading aid may be informative rather than authoritative, and older links may be stale. Lexiara Nexus data requires an API key on a signed-in account. The free plan carries a monthly Nexus allowance; the legislative text itself is always free.
| Name | Type | Req | Description |
|---|---|---|---|
| eId | string | yes | Provision identifier: 'sec_4' (section 4), 'art_2__para_1' (article 2(1)), 'sch_9' (Schedule 9). Use search or history endpoints to discover eIds. |
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| minConfidence | number | – | Drop links below this confidence (0-1). |
| work | string | yes | ELI of the EU instrument, e.g. the VAT Directive. |
Structured output declared, but exposes no named fields.
No examples provided.
follow_updates Graded developments in the law you follow ~244
The digest: every change the corpus observed on followed law, each with a SIGNIFICANCE grade and the reasoning behind it — 'major' (a new consolidation whose version point advanced, a provision appearing, a provision now repealed), 'minor' (wording changed, or the stored text moved while the publisher's version point did not), 'housekeeping' (first ingest, bulk churn from a version substitution). The grade is LEXIARA'S ASSERTION, not the publisher's: treat 'major' as a prompt to read the instrument, never as a finding about it, and cite the instrument rather than the digest. `reach` says how a development arrived — 'direct', or 'via-transposition' when it is on the other side of a transposition edge from what was followed, in which case the link itself is unreviewed evidence like any other relationship in Lexiara Nexus.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum developments, default 100. |
| minSignificance | string | – | Floor for this call: major | minor | housekeeping. |
| since | string | – | ISO timestamp. Omit to use each follow's own last read. |
Structured output declared, but exposes no named fields.
No examples provided.
get_coverage What the corpus contains, and how fresh ~192
Per-source coverage and freshness. Call this first when unsure whether Lexiara holds the law you need — absence of coverage means 'not here', never 'does not exist'. Pass `work` to ask about ONE instrument. The answer then says which kind of absence it is: `metadata-only` (the instrument is known and no text is held), `language-not-held`, or `not-held`. Each carries `requestable` and a `request_hint` you pass to request_ingestion.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | Optional ISO 639-3 code, e.g. 'fra', to ask about one language version. |
| work | string | – | Optional: ask about ONE instrument by CELEX, ELI or official number. The answer then carries `requested.gap` — metadata-only, language-not-held or not-held — or `requested.held: true` when the corpus… |
Structured output declared, but exposes no named fields.
No examples provided.
get_ingestion_request How an ingestion request is going ~124
State, stage, reason code and the time to wait before asking again, for one request you made. States: already_available, queued, running, available, partial, needs_clarification, needs_source_approval, failed, confirmed_unavailable. A fetch that timed out is `failed` and will be retried; `confirmed_unavailable` is the publisher itself saying it does not hold that manifestation, which is a different fact. Readable only by the account that made the request.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | string | yes | The request_id request_ingestion returned. |
Structured output declared, but exposes no named fields.
No examples provided.
get_ingestion_result What an ingestion request produced ~161
The published handles — expression id, work ELI, the /v1/works/text and /v1/provisions addresses — plus the source manifest (publisher URL, content hash, bytes, retrieval time, parser version) and the expectation results. Repeat your original lookup with the handles. Pass `expressionId` as the exact `expression` query parameter to `/v1/works/text` or `/v1/provisions` to preserve the acquired expression and language. Cite the source URL in the manifest, not this tool. `coverage: complete_for_scope` means the DECLARED SCOPE was acquired and checked — never that all law applicable to a question has been found.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | string | yes | The request_id request_ingestion returned. |
Structured output declared, but exposes no named fields.
No examples provided.
get_saved_role_view Recheck a saved role research view ~69
Recheck current official passages and connections against a private saved view. The change list separates later publisher versions, parser corrections, newly acquired material and review status; inspect the cited current result before relying on a connection. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | UUID returned by list_saved_role_views. |
Structured output declared, but exposes no named fields.
No examples provided.
get_topic One topic: orientation, notes, anchored provisions, links ~107
Everything a topic page shows: the orientation paragraph (with its draft/published editorial status), per-jurisdiction legal-status notes (GB notes carry the assimilated-law caveat), anchored provisions with anchor provenance, article-level transposition links (method, confidence, review verdict — anything not method='human' is evidence, not a finding), and related instruments from Lexiara Nexus.
| Name | Type | Req | Description |
|---|---|---|---|
| conceptId | string | yes | Topic concept id, e.g. 'local:topic-pre-contract-information'. |
Structured output declared, but exposes no named fields.
No examples provided.
guidance_for_provision Guidance on one provision ~334
Sections of official GUIDANCE that discuss one provision — Commission notices and guidelines on the act, quoted verbatim with the section number the publisher prints, so an answer can cite '§2.8 of the UCPD Guidance' and be checked. EVERY ROW IS NON-BINDING (`binding: false`). This is the enforcing body's own reading, not law: only the instrument's text has legal force, and only a court settles what it means. Never present a guidance section as the rule; cite it as guidance, name the document, and keep it separate from the provision text `lookup_provision` returns. Lexiara Nexus data requires an API key on a signed-in account. The free plan carries a monthly Nexus allowance; the legislative text itself is always free.
| Name | Type | Req | Description |
|---|---|---|---|
| eId | string | yes | Provision identifier: 'sec_4' (section 4), 'art_2__para_1' (article 2(1)), 'sch_9' (Schedule 9). Use search or history endpoints to discover eIds. |
| includeActLevel | boolean | – | Also return sections that name the act but no article. Off by default: a notice's introduction cites the whole directive and would otherwise appear under every article of it. |
| work | string | yes | ELI URI of the instrument, e.g. 'http://www.legislation.gov.uk/id/ukpga/1994/23' (UK VAT Act 1994) or 'http://data.europa.eu/eli/dir/2006/112/oj' (EU VAT Directive). |
Structured output declared, but exposes no named fields.
No examples provided.
list_concepts The defined terms the corpus leans on most ~258
Terms of art ranked by how many instruments in this corpus DEFINE them, BORROW them from another act (followed through every intermediate act — an act that takes 'video-sharing platform' from the DSA, which takes it from the AVMSD, counts for the AVMSD's definition) or CITE a defining provision. Nothing in the list was chosen by hand. `tier` 'pivotal' means at least one act is written around the term — its duties are addressed to it, its other definitions build on it, its title and headings name it; 'shared' is a label many acts define, each for itself, that none turns on ('specified', 'prescribed'). Use it to find the anchoring concepts of an area — 'producer', 'economic operator', 'controller' — then call concept_family for one of them. Each count is its own population: `reachWorks` is their union by work, never their sum. Quote them under their own names.
| Name | Type | Req | Description |
|---|---|---|---|
| jurisdiction | string | – | Only concepts that reach this jurisdiction, e.g. 'EU', 'GB', 'ES'. |
| limit | number | – | Maximum concepts: 50, 100 (default), 200 or 500. |
Structured output declared, but exposes no named fields.
No examples provided.
list_follows The law this key follows ~106
The instruments, provisions, subjects, jurisdictions and verticals this API key follows. READ-ONLY: creating or removing a follow is an HTTP POST/DELETE to /v1/follows, and no tool here dispatches one. (The one tool in this catalogue that writes anything is request_ingestion, which asks for a law and touches no follow.) Requires the caller's OWN key — the shared demo key is refused, since a follow list under it would be shared with strangers.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_ingestion_requests Your ingestion request history ~69
List up to the latest 50 ingestion requests belonging to your account, newest first. Each row includes private status fields such as `intent`, `created_at` and `origin`; another account's requests are never returned. This is read-only and does not start, repeat or alter acquisition work.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_review_queue What is waiting for a human verdict ~337
The AUTO-GATED backlog from one place, newest first: unreviewed article-level transposition links with BOTH provision texts side by side and the stored reasoning, model/low-confidence concept tags, draft topic descriptions and jurisdiction notes, and recorded findings (gaps and divergences a round could not decide). Filter by kind, vertical and jurisdiction. EVERYTHING HERE IS UNREVIEWED EVIDENCE — cite none of it as a finding. This tool is READ-ONLY: verdicts are set only by a human with a 'reviewer' key, and no MCP tool can set one.
| Name | Type | Req | Description |
|---|---|---|---|
| chars | number | – | Characters of provision text per side. Omit for the WHOLE text, which is the default: a character budget once hid two parts of a French code article and produced two false absences. |
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| kind | string | – | Comma-separated kinds: transposition, tag, topic-description, jurisdiction-note, finding. Omit for all. |
| limit | number | – | Maximum items, default 20, max 100. |
| lowConfidence | number | – | Also list non-model classifier tags at or below this confidence. Omit for model tags only — the keyword baseline's weak tail is 24 000 rows and would bury the 157 links a verdict changes. |
| offset | number | – | Skip this many items — the queue is paged, not sampled. |
| vertical | string | – | Vertical id, e.g. 'eu-consumer', 'fr-consumer', 'es-consumer'. |
Structured output declared, but exposes no named fields.
No examples provided.
list_saved_role_views List your saved role research ~51
List private role and country research views belonging to the connected account. Each view is a snapshot for comparison, not a compliance verdict. Read-only; saving and deleting views require a person's own HTTP account access.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
list_topics Curated topics under a subject ~89
Curated obligation topics ('Pre-contract information') under a subject head, each with a one-paragraph orientation and per-jurisdiction anchor counts. Descriptions with editorialStatus='draft' are UNREVIEWED model drafts — say so if you quote one. Feed a result's conceptId to get_topic.
| Name | Type | Req | Description |
|---|---|---|---|
| subject | string | yes | Subject head concept id, e.g. 'local:consumer'. |
Structured output declared, but exposes no named fields.
No examples provided.
list_work_versions List held official EU text versions ~172
Find same-language publisher expressions for one EU act. Each entry has an exact expression ID, source hash and a consolidation marker or as-adopted label. These markers identify text; they do not prove when it applied. Pass a returned expression ID to lookup_provision to read that exact text. Use asAt only when the source carries an explicit validity window.
| Name | Type | Req | Description |
|---|---|---|---|
| sourceLang | string | – | Optional held three-letter EU source language, e.g. fra or ita. |
| work | string | yes | ELI URI of the instrument, e.g. 'http://www.legislation.gov.uk/id/ukpga/1994/23' (UK VAT Act 1994) or 'http://data.europa.eu/eli/dir/2006/112/oj' (EU VAT Directive). |
Structured output declared, but exposes no named fields.
No examples provided.
lookup_provision Look up a provision's text ~563
Authoritative text of one provision, with in-force window, repealed/prospective status, concept tags, transposition edges and full provenance. `stand` says what date the served text speaks as of (`consolidated` with a date, `as-adopted`, or `unknown`) and carries the one-line `sentence` to show a reader — answer questions about currency from it, not from `inForce`, which is when the version's validity starts. Use `asAt` (YYYY-MM-DD) for point-in-time law only where the held expression has an explicit validity window covering that date. Otherwise the tool returns the stable `date_not_covered` refusal; omit `asAt` to request current text. Machine translation is not exposed through this connector because generating a new rendering is not a read-only action. Use sourceLang to select a held source language (three-letter code), including with asAt; this never translates. structure carries immediate parent/child addresses in the selected expression. An empty container text is not missing law: follow children with the same sourceLang and asAt. Use term_languages for authentic multilingual terminology held by the corpus. `gated.citedByArticle` says HOW MANY provisions of other instruments name this article and names those instruments; the rows themselves — which provision, which citation — come from provision_context. The provision text is always free. Only the derived counts (`gated.citedByArticle`, `gated.nationalMandate`) and the analysis behind them require an API key on a signed-in account.
| Name | Type | Req | Description |
|---|---|---|---|
| asAt | string | – | Optional real calendar date YYYY-MM-DD. Text is returned only from a held expression whose explicit validity window covers that day; otherwise `date_not_covered` is returned. Omit for current text. |
| eId | string | yes | Provision identifier: 'sec_4' (section 4), 'art_2__para_1' (article 2(1)), 'sch_9' (Schedule 9). Use search or history endpoints to discover eIds. |
| expression | string | – | Optional exact expression UUID from list_work_versions or an ingestion result handle. Preserves the selected expression and language; use only a handle returned by Lexiara. |
| sourceLang | string | – | Stored three-letter source language, e.g. eng or fra. Selects held text, never generates translation. |
| work | string | yes | ELI URI of the instrument, e.g. 'http://www.legislation.gov.uk/id/ukpga/1994/23' (UK VAT Act 1994) or 'http://data.europa.eu/eli/dir/2006/112/oj' (EU VAT Directive). |
Structured output declared, but exposes no named fields.
No examples provided.
provision_context What a provision cites, and what changed it ~218
The cross-reference neighbourhood of a provision plus its amendment history. Use this when a provision's relevance is not on its face: a duty that says 'the information referred to in Article 6(1)' is silent about what that information now includes, and about which amending act put it there. Returns citations both ways and the amending acts marked on this provision and on the ones it cites. `citedByArticle` answers the inbound question at ARTICLE granularity — which provisions of other instruments name THIS article — split into `eu` and `national` by the citing instrument's jurisdiction, and distinct from `citedBy`, which is act-level and returns the same list on every provision of the act. Lexiara Nexus data requires an API key on a signed-in account. The free plan carries a monthly Nexus allowance; the legislative text itself is always free.
| Name | Type | Req | Description |
|---|---|---|---|
| eId | string | yes | Provision identifier, e.g. 'art_7__para_1'. |
| work | string | yes | ELI of the instrument. |
Structured output declared, but exposes no named fields.
No examples provided.
provision_history A provision's version history ~185
Prior and successor versions of one provision across consolidations — how the text got to its current form. Lexiara Nexus data requires an API key on a signed-in account. The free plan carries a monthly Nexus allowance; the legislative text itself is always free.
| Name | Type | Req | Description |
|---|---|---|---|
| eId | string | yes | Provision identifier: 'sec_4' (section 4), 'art_2__para_1' (article 2(1)), 'sch_9' (Schedule 9). Use search or history endpoints to discover eIds. |
| work | string | yes | ELI URI of the instrument, e.g. 'http://www.legislation.gov.uk/id/ukpga/1994/23' (UK VAT Act 1994) or 'http://data.europa.eu/eli/dir/2006/112/oj' (EU VAT Directive). |
Structured output declared, but exposes no named fields.
No examples provided.
provisions_by_concept Provisions tagged with a concept ~140
Cross-jurisdiction view of one legal concept: every provision tagged with the given EuroVoc concept, with tagging method and confidence. E.g. 'eurovoc:4585' (VAT), 'eurovoc:4392' (VAT rate). The language-neutral way to line up EU and national law on the same subject.
| Name | Type | Req | Description |
|---|---|---|---|
| conceptId | string | yes | Namespaced concept id, e.g. 'eurovoc:4585'. |
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| minConfidence | number | – | Drop tags below this confidence (0-1). |
Structured output declared, but exposes no named fields.
No examples provided.
recent_changes What changed in the corpus ~124
Change feed: provisions added or modified, filterable by jurisdiction, concept and date. `detectedAt` is when Lexiara observed the change — legal in-force dates come only from the provision itself.
| Name | Type | Req | Description |
|---|---|---|---|
| concept | string | – | Restrict to one concept id, e.g. 'eurovoc:4585'. |
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| limit | number | – | Maximum items, default 50. |
| since | string | – | ISO date: only changes detected after this. |
Structured output declared, but exposes no named fields.
No examples provided.
related_works Instrument-level relationships ~146
Edges between instruments: which national laws transpose a directive (direction 'in'), or what an instrument implements/amends (direction 'out'). Instrument-level; for article-level links use find_national_implementations.
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | 'in' = edges pointing at this work (default), 'out' = from it. |
| eli | string | yes | ELI URI of the instrument, e.g. 'http://www.legislation.gov.uk/id/ukpga/1994/23' (UK VAT Act 1994) or 'http://data.europa.eu/eli/dir/2006/112/oj' (EU VAT Directive). |
Structured output declared, but exposes no named fields.
No examples provided.
request_ingestion Ask Lexiara to acquire a missing law ~785
When a lookup returns `coverage` with `requestable: true`, ask for the missing instrument instead of stopping or guessing. Give the CELEX (or an EU ELI), the language and the version point; say WHY in one or two sentences; state any testable expectations. Lexiara validates the target, fetches the publisher's own bytes, reads them through the same parser and the same fail-closed checks every other act goes through, and returns handles you repeat your original lookup with. WHAT THIS TOOL IS NOT. It never fetches a URL you supply — the target must resolve to a publisher identifier this service derives itself, and `proposed_sources` is recorded as a note for a human and is never dereferenced. It states nothing about what the law means: acquiring an act makes the publisher's text addressable and does nothing else. EXPECTATIONS ARE HYPOTHESES, NOT INSTRUCTIONS. `has_article`, `has_annex`, `mentions` (three words or more), `min_provisions`, `language_is` are checked against the stored rows after publication and reported as matched, contradicted or not_verifiable. A contradicted expectation is reported and the publisher's text is left exactly as published — nothing is invented, translated or back-dated to satisfy one. Identical targets from different callers JOIN one acquisition; your rationale stays private to your account. Re-send the same `idempotency_key` to get the same request back rather than a second one. Jobs are asynchronous: read `retry_after`, then poll get_ingestion_request. This tool creates a request: an OAuth grant with only `read` cannot call it; reconnect and approve the explicit `ingestion:request` consent. Existing read grants remain read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| celex | string | – | CELEX id of the act, e.g. '32024L0825', or a dated consolidation '02005L0029-20220528'. |
| eli | string | – | An EU ELI on the Publications Office's own domain, if you have no CELEX. |
| evidence_path | array | – | The shortest path from held material to the missing target: each step a { from, relationship, to } you observed. Private, and evidence for a human, never an instruction. |
| expectations | array | – | Up to ten predicates, each naming exactly one of has_article, has_annex, mentions, min_provisions, language_is. |
| idempotency_key | string | – | Your own key for this request. The same key returns the same request. |
| intent | string | yes | What kind of gap this is. `derived_references` refreshes derived references for a held work; missing_component and repair against an act already held re-read THAT expression rather than creating a se… |
| language | string | – | ISO 639-3 language wanted, e.g. 'eng', 'fra'. Default 'eng'. |
| origin | object | – | Lexiara handles you started from (work, eId, expression id). Private. |
| proposed_sources | array | – | Official identifiers or locators you believe serve this act. RECORDED AS TEXT AND NEVER FETCHED. |
| rationale | string | – | One or two sentences: the question, and why this evidence is needed. Private to your account. |
| requested_bounds | object | – | maxBytes / maxSeconds you are willing to spend. May only NARROW the server's budget; a larger number is ignored. |
| role | string | – | 'law' (default) or 'guidance' for a Commission notice. |
| version | string | – | 'as-adopted' (default), the publisher's consolidation date as YYYY-MM-DD, or 'unresolved' when you genuinely do not know — which returns a question, not a job. |
Structured output declared, but exposes no named fields.
No examples provided.
search Search Lexiara legislation ~56
Search Lexiara's bounded EU and UK legislation corpus. Returns compact, citable results with opaque ids; pass an id unchanged to fetch for the provision text and provenance.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Natural-language or keyword search over legislation. |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | – |
No examples provided.
search_legislation Full-text search across the corpus ~117
Ranked full-text search over provision text. Results carry work, eId, status and provenance — feed a hit's work+eId to lookup_provision for the complete payload.
| Name | Type | Req | Description |
|---|---|---|---|
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| language | string | – | Restrict to a text language, e.g. 'eng'. |
| limit | number | – | Maximum hits, default 10. |
| query | string | yes | Search terms, e.g. 'zero-rating of food'. |
Structured output declared, but exposes no named fields.
No examples provided.
term_languages The same defined term in the act's other authentic languages ~277
How an act words one of its defined terms in each language version held. NOT a translation: an EU instrument is equally authentic in all 24 official languages (Regulation No 1/1958, article 4), so each wording is the law in that language. Use it to answer 'what do the German and French texts call this?' — e.g. 'commercial guarantee of durability' is 'gewerbliche Haltbarkeitsgarantie' and 'garantie commerciale de durabilité'. The term may be given in ANY language held, so the German words find the English definition just as well as the other way round. SCOPE: this is the EU act's own wording per language. It is NOT how a Member State's transposing legislation words it — a national implementation may lawfully choose different wording, and reaching it means following a transposition link that carries a method and a confidence (find_national_implementations). Nothing here is inferred.
| Name | Type | Req | Description |
|---|---|---|---|
| jurisdiction | string | – | ISO country filter, e.g. 'UK', 'FR', 'EU'. |
| limit | number | – | Maximum terms, default 8. |
| term | string | yes | The phrase, in any language held. Matched exactly (case-insensitive). |
| work | string | – | Scope to one instrument (ELI or official number). |
Structured output declared, but exposes no named fields.
No examples provided.
work_glossary Every term an instrument defines ~271
The act's glossary: every term it defines, alphabetical, with the publisher's own wording verbatim and the provision that defines each one. Use it to orient in an unfamiliar instrument, or to check what a term means IN THIS ACT rather than in the corpus at large — several instruments define 'consumer' differently and all are right within their own scope. AN EMPTY GLOSSARY IS ABOUT OUR READER, NOT THE ACT. Extraction reads the drafting constructions it has been taught and coverage is uneven across legal traditions; `provisions` is returned so a zero can be read against the size of the instrument. Do not report it as 'this act defines no terms'. A NULL definition means one of two things: `borrowed` true means the act takes the meaning from another instrument and states none of its own; otherwise the wording could not be delimited. `count` is three populations (`defines`, `adoptsCount`, `undelimited`) — never quote it as one. The definitions are free. Only the `adopts` resolution (which act a borrowed definition comes from) is Lexiara Nexus data requiring an API key on a signed-in account.
| Name | Type | Req | Description |
|---|---|---|---|
| work | string | yes | ELI or official number of the instrument, e.g. '32011L0083'. |
Structured output declared, but exposes no named fields.
No examples provided.
work_mentions Who names this act, provision by provision ~215
The act-level overview: every provision of every instrument in this corpus that names the given act, grouped by citing instrument, with the article of the act each citation resolved to (`targetEId`, null where the citation is act-level — which is most of them, and is not a defect). Each instrument also carries `adoptions`: definitions it BORROWS from this act rather than writing, which is a different claim and is counted apart, never summed with the citations. Use related_works for the same question at instrument level, which is public. A row asserts that the provision NAMES this act, and nothing about whether it implements or corresponds to it. Lexiara Nexus data requires an API key on a signed-in account. The free plan carries a monthly Nexus allowance; the legislative text itself is always free.
| Name | Type | Req | Description |
|---|---|---|---|
| eli | string | yes | ELI URI or official number of the instrument — a French code has only the latter. |
| limit | number | – | Maximum citing provisions, default 500, cap 2000. |
Structured output declared, but exposes no named fields.
No examples provided.
What is the Lexiara MCP server?
Lexiara is an MCP server listed in the public MCP registry as org.lexiara/lexiara. Provenance-backed EU and UK legislation for AI agents, addressable to the individual provision. This page covers its hosted endpoint (https://lexiara.org/mcp).
Is the Lexiara MCP server safe to use?
Lexiara scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Lexiara MCP server expose?
Lexiara exposes 31 tools: search, fetch, lookup_provision, list_work_versions, search_legislation, and 26 more. Their descriptions and schemas cost roughly 6,493 tokens of context every time the server is loaded.
Does the Lexiara MCP server require authentication?
No. We connected to Lexiara without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Lexiara MCP server still maintained?
Lexiara is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.