Verified, cited US and Canadian employment and payroll rules, each value with its official source.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional: `Bearer jrs_live_…` with a Juriset API key (https://juriset.dev/account). Without it the keyless tier answers current rules at 60 requests an hour per IP.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get one rule type across jurisdictions in one call, each entry in the same shape as get_rule. Example: `{"rule_type": "minimum_wage", "jurisdictions": ["us-wa", "us-or", "us-ca"]}`. Without `jurisdictions`, every state and province (or the `level` you name) is returned: about 3 KB each, 50+ entries. Entries are never merged or ranked. Informational only, not legal advice. `as_of` needs an API key whose plan includes as-of queries.
Rule type slug from list_rule_types, e.g. `minimum_wage`.
A date, `YYYY-MM-DD`, instead of today.
Instead of `jurisdictions`: every jurisdiction at these levels, e.g. `["state", "province"]` (the default).
The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type.
Up to 100 jurisdiction slugs, any level, e.g. `["us-wa", "us-or", "us-ca"]`. Not with `level`.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http juriset https://mcp.juriset.dev/mcp
Headers
Authorization (optional, not in the config above): Optional: `Bearer jrs_live_…` with a Juriset API key (https://juriset.dev/account). Without it the keyless tier answers current rules at 60 requests an hour per IP.Get one rule type across jurisdictions in one call, each entry in the same shape as get_rule. Example: `{"rule_type": "minimum_wage", "jurisdictions": ["us-wa", "us-or", "us-ca"]}`. Without `jurisdictions`, every state and province (or the `level` you name) is returned: about 3 KB each, 50+ entries. Entries are never merged or ranked. Informational only, not legal advice. `as_of` needs an API key whose plan includes as-of queries.
| Argument | Type | Description |
|---|---|---|
| as_of | string | A date, `YYYY-MM-DD`, instead of today. |
| level | array | Instead of `jurisdictions`: every jurisdiction at these levels, e.g. `["state", "province"]` (the default). |
| domain | string | The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type. |
| rule_type* | string | Rule type slug from list_rule_types, e.g. `minimum_wage`. |
| jurisdictions | array | Up to 100 jurisdiction slugs, any level, e.g. `["us-wa", "us-or", "us-ca"]`. Not with `level`. |
{
"type": "object",
"required": [
"rule_type"
],
"properties": {
"as_of": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "A date, `YYYY-MM-DD`, instead of today."
},
"level": {
"type": "array",
"items": {
"enum": [
"country",
"state",
"province",
"county",
"city"
],
"type": "string"
},
"minItems": 1,
"description": "Instead of `jurisdictions`: every jurisdiction at these levels, e.g. `[\"state\", \"province\"]` (the default)."
},
"domain": {
"type": "string",
"maxLength": 64,
"description": "The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type."
},
"rule_type": {
"type": "string",
"maxLength": 64,
"description": "Rule type slug from list_rule_types, e.g. `minimum_wage`."
},
"jurisdictions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64
},
"maxItems": 100,
"minItems": 1,
"description": "Up to 100 jurisdiction slugs, any level, e.g. `[\"us-wa\", \"us-or\", \"us-ca\"]`. Not with `level`."
}
},
"additionalProperties": false
}Get the rule in force today for one rule type in one jurisdiction, with its citation: source URL, verbatim excerpt and the snapshot Juriset stored. Example: `{"rule_type": "minimum_wage", "jurisdiction": "us-wa"}`. The response is the API's: `data` holds the values (described by the JSON Schema at `schema_url`), `effective_from` and `verified_at` date them, `id` is the version id to record with any decision that relies on it (see resolve_version), and `verification` says which models extracted and checked it and whether a person reviewed it. Where levels stack (e.g. US federal and state overtime) every level comes back as its own entry in `layers`; Juriset never merges them. Informational only, not legal advice (`disclaimer`).
| Argument | Type | Description |
|---|---|---|
| domain | string | The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type. |
| rule_type* | string | Rule type slug from list_rule_types, e.g. `minimum_wage`, `overtime`. |
| jurisdiction* | string | Jurisdiction slug from list_jurisdictions, e.g. `us-wa` (Washington), `us` (US federal), `ca-ab` (Alberta). |
{
"type": "object",
"required": [
"rule_type",
"jurisdiction"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 64,
"description": "The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type."
},
"rule_type": {
"type": "string",
"maxLength": 64,
"description": "Rule type slug from list_rule_types, e.g. `minimum_wage`, `overtime`."
},
"jurisdiction": {
"type": "string",
"maxLength": 64,
"description": "Jurisdiction slug from list_jurisdictions, e.g. `us-wa` (Washington), `us` (US federal), `ca-ab` (Alberta)."
}
},
"additionalProperties": false
}Get the rule that was (or will be) in effect on a date, in the same shape as get_rule. Example: `{"rule_type": "minimum_wage", "jurisdiction": "us-wa", "as_of": "2025-06-30"}`. Use it to see what applied when a past decision was made. A date before Juriset's coverage of that jurisdiction is answered with an error that says where coverage starts. Informational only, not legal advice. If the API key's plan does not include as-of queries the error says so.
| Argument | Type | Description |
|---|---|---|
| as_of* | string | The date, `YYYY-MM-DD`, past or future. |
| domain | string | The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type. |
| rule_type* | string | Rule type slug from list_rule_types, e.g. `minimum_wage`, `overtime`. |
| jurisdiction* | string | Jurisdiction slug from list_jurisdictions, e.g. `us-wa` (Washington), `us` (US federal), `ca-ab` (Alberta). |
{
"type": "object",
"required": [
"rule_type",
"jurisdiction",
"as_of"
],
"properties": {
"as_of": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The date, `YYYY-MM-DD`, past or future."
},
"domain": {
"type": "string",
"maxLength": 64,
"description": "The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type."
},
"rule_type": {
"type": "string",
"maxLength": 64,
"description": "Rule type slug from list_rule_types, e.g. `minimum_wage`, `overtime`."
},
"jurisdiction": {
"type": "string",
"maxLength": 64,
"description": "Jurisdiction slug from list_jurisdictions, e.g. `us-wa` (Washington), `us` (US federal), `ca-ab` (Alberta)."
}
},
"additionalProperties": false
}List every version ever published of one jurisdiction's rule, with its effective dates, values, citation and whether it is current, superseded or withdrawn. Example: `{"rule_type": "minimum_wage", "jurisdiction": "us-wa"}`. Covers that jurisdiction's own rule only; other levels that apply (e.g. `us`) are separate calls. Each entry's `id` can be passed to resolve_version. Informational only, not legal advice.
| Argument | Type | Description |
|---|---|---|
| domain | string | The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type. |
| rule_type* | string | Rule type slug from list_rule_types, e.g. `minimum_wage`, `overtime`. |
| jurisdiction* | string | Jurisdiction slug from list_jurisdictions, e.g. `us-wa` (Washington), `us` (US federal), `ca-ab` (Alberta). |
{
"type": "object",
"required": [
"rule_type",
"jurisdiction"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 64,
"description": "The rule type's domain, e.g. `employment`. Optional: when omitted it is looked up from the rule type."
},
"rule_type": {
"type": "string",
"maxLength": 64,
"description": "Rule type slug from list_rule_types, e.g. `minimum_wage`, `overtime`."
},
"jurisdiction": {
"type": "string",
"maxLength": 64,
"description": "Jurisdiction slug from list_jurisdictions, e.g. `us-wa` (Washington), `us` (US federal), `ca-ab` (Alberta)."
}
},
"additionalProperties": false
}List changes to published rules, oldest first: new versions, amendments, corrections and repeals, each naming the rule, the versions moved from and to, the effective date and the version id to pass to resolve_version. Example: `{"since": "2026-10-01", "jurisdictions": ["us", "us-wa"]}`. Each jurisdiction matches its own rules only, so for everything that changes Washington's answer pass the federal level too. While `has_more` is true, call again with the response's `cursor`. Needs an API key whose plan includes the change feed; otherwise the error says so. Informational only, not legal advice.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Changes per call, 1 to 500. |
| since | string | Where to start: an ISO 8601 date or date-time, e.g. `2026-10-01` (midnight UTC). Give this or `cursor`. |
| cursor | string | The `cursor` of the previous response, to continue or to poll for new changes. |
| domain | string | Only this domain, e.g. `employment`. |
| rule_type | string | Only this rule type, e.g. `overtime`. |
| jurisdictions | array | Jurisdiction slugs, e.g. `["us", "us-wa"]`; each matches its own rules only. |
List the US and Canadian jurisdictions Juriset covers, or find one by name. The other Juriset tools take slugs, not names. Each entry has the slug, name, level (`country`, `state`, `province`, `county` or `city`) and parent. Examples: `Washington` or `WA` → `us-wa`; `Alberta` → `ca-ab`; the federal levels are `us` and `ca`. Omit `query` for all of them. Reads the registry; no rule lookup.
| Argument | Type | Description |
|---|---|---|
| query | string | A name, postal abbreviation or slug, any case: `Washington`, `WA`, `us-wa`. Omit to list every jurisdiction. |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 100,
"description": "A name, postal abbreviation or slug, any case: `Washington`, `WA`, `us-wa`. Omit to list every jurisdiction."
}
},
"additionalProperties": false
}List the kinds of rule Juriset publishes. Each entry has its slug (the `rule_type` argument of the other tools), domain, description, how jurisdiction levels combine (`override`, `max` or `stack`) and the JSON Schema of its `data`, with every field described. Examples: `minimum_wage` and `overtime` (domain `employment`). Optional `domain` filter. Reads the registry; no rule lookup.
| Argument | Type | Description |
|---|---|---|
| domain | string | Only this domain's rule types, e.g. `employment` or `payroll`. |
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"maxLength": 64,
"description": "Only this domain's rule types, e.g. `employment` or `payroll`."
}
},
"additionalProperties": false
}Get exactly the version a stored id names, forever, even after it was superseded or withdrawn: the values, effective dates, citation, verification record and its status today. Version ids (`rv_…`) come from the `id` of any rule response. Use it to re-check the value a decision relied on, or to show an auditor which rule applied. Example: `{"version_id": "rv_000000000000000000000000F2"}`. Informational only, not legal advice.
| Argument | Type | Description |
|---|---|---|
| version_id* | string | A version id from a rule response's `id`, e.g. `rv_000000000000000000000000F2`. |
{
"type": "object",
"required": [
"version_id"
],
"properties": {
"version_id": {
"type": "string",
"pattern": "^rv_",
"maxLength": 64,
"description": "A version id from a rule response's `id`, e.g. `rv_000000000000000000000000F2`."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Changes per call, 1 to 500."
},
"since": {
"type": "string",
"maxLength": 40,
"description": "Where to start: an ISO 8601 date or date-time, e.g. `2026-10-01` (midnight UTC). Give this or `cursor`."
},
"cursor": {
"type": "string",
"maxLength": 512,
"description": "The `cursor` of the previous response, to continue or to poll for new changes."
},
"domain": {
"type": "string",
"maxLength": 64,
"description": "Only this domain, e.g. `employment`."
},
"rule_type": {
"type": "string",
"maxLength": 64,
"description": "Only this rule type, e.g. `overtime`."
},
"jurisdictions": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64
},
"minItems": 1,
"description": "Jurisdiction slugs, e.g. `[\"us\", \"us-wa\"]`; each matches its own rules only."
}
},
"additionalProperties": false
}