Data source: Finlex (opendata.finlex.fi)
https://context.gnist.ai/mcp/finlex/
AuthenticationAll requests require a Gnist-API-Key header (or api_key query parameter).
Free tier: 100 calls/day. Get your API key.
Tools (7)
list_statutesget_statutelist_government_proposalsget_government_proposallist_consolidated_statutesget_consolidated_statutereport_feedback
list_statutesList Finnish statutes from the Statute Book of Finland (Suomen Saadoskokoelma).
Browse recently published statutes or filter by year. Each statute is identified
by year and number (e.g. 2026/1). Use get_statute to retrieve full text.
Returns:
Dict with 'count', 'page', and 'statutes' list.
| Parameter | Type | Required | Description |
|---|---|---|---|
year | any | optional | Filter by year (e.g. 2025) |
language | string | optional | Language: 'fin' (Finnish, default), 'swe' (Swedish) (default: "fin") |
page | integer | optional | Page number (default 1) (default: 1) |
limit | integer | optional | Results per page (default 20, max 50) (default: 20) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "list_statutes",
"arguments": {}
}
}get_statuteRetrieve a specific Finnish statute with full text and article structure.
Returns the statute's metadata (title, dates, ELI identifier) and its articles
with section numbers, headings, and content parsed from Akoma Ntoso XML.
Returns:
Statute detail dict, or error if not found.
| Parameter | Type | Required | Description |
|---|---|---|---|
year | integer | required | Year of the statute (e.g. 2025) |
number | string | required | Statute number within the year (e.g. '1', '118') |
language | string | optional | Language: 'fin' (Finnish, default), 'swe' (Swedish) (default: "fin") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_statute",
"arguments": {
"year": 1,
"number": "123456789"
}
}
}list_government_proposalsList Finnish government proposals (hallituksen esitykset / HE).
Government proposals are bills submitted by the Finnish government to Parliament.
They contain the reasoning and draft legislation for proposed changes.
Returns:
Dict with 'count', 'page', and 'proposals' list.
| Parameter | Type | Required | Description |
|---|---|---|---|
year | any | optional | Filter by year (e.g. 2025) |
language | string | optional | Language: 'fin' (Finnish, default), 'swe' (Swedish) (default: "fin") |
page | integer | optional | Page number (default 1) (default: 1) |
limit | integer | optional | Results per page (default 20, max 50) (default: 20) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "list_government_proposals",
"arguments": {}
}
}get_government_proposalRetrieve a specific Finnish government proposal with metadata and content preview.
Returns the proposal's metadata (title, dates, ELI identifier) and a preview
of the content (first 10 paragraphs).
Returns:
Proposal detail dict, or error if not found.
| Parameter | Type | Required | Description |
|---|---|---|---|
year | integer | required | Year of the proposal (e.g. 2025) |
number | string | required | Proposal number within the year (e.g. '8') |
language | string | optional | Language: 'fin' (Finnish, default), 'swe' (Swedish) (default: "fin") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_government_proposal",
"arguments": {
"year": 1,
"number": "123456789"
}
}
}list_consolidated_statutesList consolidated (updated/amended) Finnish statutes.
Consolidated statutes reflect the current version of the law with all amendments
applied. Use this instead of list_statutes when you need the up-to-date text.
Returns:
Dict with 'count', 'page', and 'statutes' list.
| Parameter | Type | Required | Description |
|---|---|---|---|
year | any | optional | Filter by year (e.g. 2025) |
language | string | optional | Language: 'fin' (Finnish, default), 'swe' (Swedish) (default: "fin") |
page | integer | optional | Page number (default 1) (default: 1) |
limit | integer | optional | Results per page (default 20, max 50) (default: 20) |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "list_consolidated_statutes",
"arguments": {}
}
}get_consolidated_statuteRetrieve a specific consolidated Finnish statute with full amended text.
Returns the current version of the statute with all amendments applied,
including metadata and article structure.
Returns:
Statute detail dict, or error if not found.
| Parameter | Type | Required | Description |
|---|---|---|---|
year | integer | required | Year of the statute (e.g. 2024) |
number | string | required | Statute number within the year (e.g. '2') |
language | string | optional | Language: 'fin' (Finnish, default), 'swe' (Swedish) (default: "fin") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_consolidated_statute",
"arguments": {
"year": 1,
"number": "123456789"
}
}
}report_feedbackReport a bug, feature request, or general feedback for this data source.
Use this when something doesn't work as expected, when you'd like
a new feature, or when you have suggestions for improvement.
Args:
feedback: Describe the issue or suggestion.
feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: "general") |
{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "report_feedback",
"arguments": {
"feedback": "example"
}
}
}Quick Start
curl -X POST "https://context.gnist.ai/mcp/finlex/" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_statute", "arguments": {"year": 1, "number": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/finlex/",
headers={"Gnist-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "get_statute",
"arguments": {
"year": 1,
"number": "example"
}
}
},
)
print(resp.json())