# Juriset

> Verified, cited US and Canadian employment and payroll rules, each value with its official source.

- name: dev.juriset/juriset
- version: 0.1.3
- connection class: R0 (autonomous)
- trust: 99/100
- quality: 97/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.juriset%2Fjuriset
- tools: https://api.protogrid.dev/v1/servers/dev.juriset%2Fjuriset/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "juriset": {
      "type": "http",
      "url": "https://mcp.juriset.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${JURISET_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${JURISET_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 98
- freshness: 100
- provenance: 100
- drivers: +repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-94% +updated-0d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 97/100 (new)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 94 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,377 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 4 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know juriset-mcp@0.1.2, juriset-mcp@0.1.2

- tools: 8, about 2,377 tokens to load them all
- tool set hash: 58e7180413f431a8fcd6798d85c73846
- tools last changed: 2026-11-13T08:09:48.987Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.juriset/juriset.svg)](https://protogrid.dev/servers/dev.juriset/juriset)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `get_rule` changed (description)
  - before: 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`).
  - after: 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. `verified_at` is when the sources were last re-fetched and found unchanged, not the review date (`verification.reviewed_at`); it is null until a newly fetched source has been re-checked once. Read `data` with its schema: optional fields carry defaults there, e.g. a `minimum_wage` tier or exception without `per_unit` is per hour. 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`).

Full history: https://api.protogrid.dev/v1/servers/dev.juriset%2Fjuriset/changes

## Dependencies

- pypi juriset-mcp@0.1.3: pending
- npm juriset-mcp@0.1.3: pending

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://mcp.juriset.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.9411765)

## Packages

- pypi juriset-mcp@0.1.3 secrets: JURISET_API_KEY
- npm juriset-mcp@0.1.3 secrets: JURISET_API_KEY

## Tools (8)

- `compare_jurisdictions`: 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.
- `get_rule`: 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. `verified_at` is when the sources were last re-fetched and found unchanged, not the review date (`verification.reviewed_at`); it is null until a newly fetched source has been re-checked once. Read `data` with its schema: optional fields carry defaults there, e.g. a `minimum_wage` tier or exception without `per_unit` is per hour. 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`).
- `get_rule_as_of`: 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.
- `get_rule_history`: 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.
- `list_changes`: 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.
- `list_jurisdictions`: 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.
- `list_rule_types`: 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.
- `resolve_version`: 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.
