Research
Search Research Sources
Search case law and legislation across several public sources in one call.
POST
Preview. This endpoint is available to organisations in the Wordsmith MCP pilot. Other organisations receive
403 mcp_not_enabled. See the preview overview.sources list in the response reports each source’s status and how many results it gave.
Results interleave the sources: each source’s best match, then each one’s second, and so on. Each source ranks its own matches. limit caps the whole list, not each source.
You search the sources your organisation’s Wordsmith chat can use. A source that is off for your organisation, or not set up, is skipped. If you name it in sources, it is listed with status: "unavailable". Sources that cover none of the requested jurisdictions are not searched and do not appear in sources.
Sources
date_from and date_to go to the source where it can filter by date. For uk_case_law, regulations_gov and eur_lex the results are filtered after the search, so fewer may come back. uk_legislation filters by year. nz_legislation results carry no date and are not filtered.
Authentication
Send an API key, or an OAuth access token with theresearch:read scope, as a bearer token in the Authorization header. A token without the scope gets 403 with "error": "insufficient_scope".
Body parameters
string
required
What to search for, in plain language or as a citation, such as
implied term of good faith in commercial contracts or [2015] UKSC 72. 1 to 1,000 characters.string[]
Lower-case ISO 3166-1 country codes, plus
eu, such as ["gb", "eu"]. Only sources that cover one of them are searched, and moonlit searches only these. Defaults to every jurisdiction the chosen sources cover.string
Only results dated on or after this ISO 8601 date, such as
"2015-01-01".string
Only results dated on or before this ISO 8601 date. Must not be before
date_from.integer
default:"20"
The most results to return in all, from
1 to 50.Response
The response is not paged. To see more, narrow the query, the sources or the date range.object[]
The matches.
object[]
One entry for each source searched, and for each named source you cannot use.