# Lawstronaut (remote · mcp.lawstronaut.com)

Connect AI to millions of laws and court cases with the Lawstronaut MCP.

- Trust score: 73/100 (medium)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.lawstronaut.com`: 73/100 (this document), [markdown](https://verifymcp.io/servers/com-lawstronaut-lawstronaut-mcp/mcp.md), [page](https://verifymcp.io/servers/com-lawstronaut-lawstronaut-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.lawstronaut.com`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.1`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 54/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 5028 tokens (~314/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-lawstronaut-lawstronaut-mcp https://mcp.lawstronaut.com/
```

### Codex

```toml
[mcp_servers.com-lawstronaut-lawstronaut-mcp]
url = "https://mcp.lawstronaut.com/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-lawstronaut-lawstronaut-mcp": {
      "type": "remote",
      "url": "https://mcp.lawstronaut.com/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-lawstronaut-lawstronaut-mcp --url https://mcp.lawstronaut.com/ --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-lawstronaut-lawstronaut-mcp:
    url: "https://mcp.lawstronaut.com/"
```

### Other

```json
{
  "mcpServers": {
    "com-lawstronaut-lawstronaut-mcp": {
      "type": "http",
      "url": "https://mcp.lawstronaut.com/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 72, +5)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 65, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (16)

### `list_jurisdictions` (~102 tokens)

List all jurisdictions (countries/states) available in the Lawstronaut legal corpus. Call this FIRST when answering legal questions so you know which "iso" codes are valid for the other tools. Result is cached for the MCP process lifetime
    
    Returns: {data: [{"name": "Belgium", "iso": "BE", "type": "country"}, ...]}
    - Full list of jurisdiction objects including names, iso, and type

### `list_domains` (~182 tokens)

Retrieves a list of domains for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user wants to find legal domains for a specific jurisdiction and optional filters
    - The user asks about available domains for a domain name
    - The user wants to filter with pagination

    Parameters:
    - domain (optional): Filter domains by name
    - limit: z.number().optional().describe("Number of results to return"),
    - offset: z.number().optional().describe("Number of results to skip")

    Returns:
    - List of domains with domain_id, domain, pagination: total_count, limit, offset
    - Only returns domains that have data

Input parameters:

- `domain` (string): Filter by domain name
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip

### `list_subdomains` (~225 tokens)

Retrieves a list of subdomains for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user wants to find legal subdomains for a specific jurisdiction and optional filters
    - The user asks about available subdomains for a domain id
    - The user wants to filter subdomains by name with pagination

    Parameters:
    - domain_id (required): Filter by Domain ID.
    - subdomain (optional): Filter subdomains by name
    - limit: z.number().optional().describe("Number of results to return"),
    - offset: z.number().optional().describe("Number of results to skip")

    Returns:
    - List of subdomains with subdomain_id, subdomain, domain_id, pagination: total_count, limit, offset
    - Only returns subdomains that have data

Input parameters:

- `domain_id` (string, required): Filter by Domain ID
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `subdomain` (string): Filter by subdomain name

### `list_categories` (~224 tokens)

Retrieves a list of categories for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user wants to find legal categories for a specific jurisdiction and optional filters
    - The user asks about available categories for a subdomain id
    - The user wants to filter categories by name with pagination

    Parameters:
    - subdomain_id (optional): Filter by Subdomain ID.
    - category_name (optional): Filter categories by name
    - limit: z.number().optional().describe("Number of results to return"),
    - offset: z.number().optional().describe("Number of results to skip")

    Returns:
    - List of categories with category_id, category_name, subdomain_id, domain_id, pagination: total_count, limit, offset
    - Only returns categories that have data

Input parameters:

- `category_name` (string): Filter by category name
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `subdomain_id` (string): Filter by Subdomain ID

### `list_subcategories` (~228 tokens)

Retrieves a list of subcategories for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user wants to find legal subcategories for a specific jurisdiction and optional filters
    - The user asks about available subcategories for a category id
    - The user wants to filter subcategories by name with pagination

    Parameters:
    - category_id (required): Filter by Category ID.
    - subcategory_name (optional): Filter subcategories by name
    - limit: z.number().optional().describe("Number of results to return"),
    - offset: z.number().optional().describe("Number of results to skip")

    Returns:
    - List of subcategories with subcategory_id, subcategory_name, category_id, pagination: total_count, limit, offset
    - Only returns subcategories that have data

Input parameters:

- `category_id` (string, required): Filter by Category ID
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `subcategory_name` (string): Filter by subcategory name

### `list_law_types` (~235 tokens)

Retrieves a list of law types for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user wants to find legal law types for a specific jurisdiction and optional filters
    - The user asks about available law types for a subcategory id
    - The user wants to filter law types by name with pagination

    Parameters:
    - subcategory_id (required): Filter by Subcategory ID.
    - law_type (optional): Filter law types by name
    - limit: z.number().optional().describe("Number of results to return"),
    - offset: z.number().optional().describe("Number of results to skip")

    Returns:
    - List of law types with law_type_id, law_type, subcategory_id, category_id, pagination: total_count, limit, offset
    - Only returns law types that have data

Input parameters:

- `law_type` (string): Filter by law type name
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `subcategory_id` (string, required): Filter by Subcategory ID

### `list_portals` (~228 tokens)

Retrieves a list of legal portals filtered by jurisdiction and optional criteria.
    Use this tool when:
    - The user wants to find legal portals, websites, or resources for a specific jurisdiction
    - The user asks about available portals in a country or state
    - The user wants to filter portals by name, language, or tag with total crawled links

    Parameters:
    - iso (required): Filter by Jurisdiction ISO code (e.g. "US").
    - name (optional): Filter portals by name or URL keyword
    - tag (optional): Filter portals by tag
    - lang (optional): Filter portals by language name

    Returns:
    - List of portals with name, URL, language, jurisdiction, tags, and total crawled links
    - Only returns portals that have crawled data

Input parameters:

- `iso` (string, required): Filter by Jurisdiction ISO code (e.g. 'US')
- `lang` (string): Filter by language
- `name` (string): Filter by portal name
- `tag` (string): Filter by portal tags

### `list_authority_types` (~242 tokens)

Retrieves a list of authority types.
    Use this tool when:
    - The user wants to find legal authority types for a specific jurisdiction and optional filters
    - The user asks about available authority types for a portal name, authority type
    - The user wants to filter with pagination

    Parameters:
    - iso (required): Filter by Jurisdiction ISO code (e.g. "US").
    - limit (optional): Number of results to return.
    - offset (optional): Number of results to skip.
    - portal_name (optional): Filter by portal name.
    - authority_type (optional): Filter by authority type.

    Returns:
    - List of authority types with iso, authority_type, portal_name, pagination: total_count, limit, offset
    - Only returns authority types that have data

Input parameters:

- `authority_type` (string): Filter by authority type
- `iso` (string, required): Filter by Jurisdiction ISO code (e.g. 'US')
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `portal_name` (string): Filter by portal name

### `list_issuing_authorities` (~254 tokens)

Retrieves a list of issuing authorities for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user wants to find legal issuing authorities for a specific jurisdiction and optional filters
    - The user asks about available issuing authorities for a portal name, issuing authority
    - The user wants to filter with pagination

    Parameters:
    - iso (required): Filter by Jurisdiction ISO code (e.g. "US").
    - limit (optional): Number of results to return.
    - offset (optional): Number of results to skip.
    - portal_name (optional): Filter by portal name.
    - issuing_authority (optional): Filter by issuing authority.

    Returns:
    - List of issuing authorities with iso, issuing_authority, portal_name, pagination: total_count, limit, offset
    - Only returns issuing authorities that have data

Input parameters:

- `iso` (string, required): Filter by Jurisdiction ISO code (e.g. 'US')
- `issuing_authority` (string): Filter by issuing authority
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `portal_name` (string): Filter by portal name

### `list_documents` (~848 tokens)

List documents in a jurisdiction with structured filters and pagination.
    Use this tool when:
    - The user wants to find legal content for a specific jurisdiction and optional filters
    - The user asks about available content for a portal name, title, section_title, url, status, repealed, publication_date and crawling_date
    - The user wants to filter content for type of authority, issuing authority, source identifier, source secondary identifier, tag
    Parameters:
    - iso (required): Filter by Jurisdiction ISO code (e.g. "US").
    - portal (optional): Filter by portal name.
    - limit (optional): Number of results to return.
    - offset (optional): Number of results to skip.
    - document_id (optional): Filter by document ID.
    - repealed (optional): Filter by repealed status.
    - title (optional): Filter by title.
    - section_title (optional): Filter by section title.
    - url (optional): Filter by URL.
    - status (optional): Filter by status.
    - crawling_date (optional): Filter by crawling date.
    - last_updated (optional): Filter by last updated date.
    - last_amendment (optional): Filter by last amendment date.
    - publication_date (optional): Filter by publication date.
    - expiration_date (optional): Filter by expiration date.
    - effective_date (optional): Filter by effective date.
    - date_of_enactment (optional): Filter by date of enactment.
    - date_of_decision (optional): Filter by date of decision.
    - file_data_only (optional): Return file data only.
    - issuing_authority (optional): Filter by issuing authority.
    - type_of_authority (optional): Filter by type of authority.
    - source_identifier (optional): Filter by source identifier.
    - source_secondary_identifier (optional): Filter by secondary source identifier.
    - tag (optional): Filter by tag.
    - lang (optional): Filter by language.
    Returns:
    - Contents list with title, section_title, publication_date, effective_date, expiration_…

Input parameters:

- `crawling_date` (string): Filter by crawling date
- `date_of_decision` (string): Filter by date of decision
- `date_of_enactment` (string): Filter by date of enactment
- `document_id` (string): Filter by document ID
- `effective_date` (string): Filter by effective date
- `expiration_date` (string): Filter by expiration date
- `file_data_only` (boolean): Return file data only
- `iso` (string, required): Filter by Jurisdiction ISO code (e.g. 'US')
- `issuing_authority` (string): Filter by issuing authority
- `lang` (string): Filter by language
- `last_amendment` (string): Filter by last amendment date
- `last_updated` (string): Filter by last updated date
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `portal` (string): Filter by portal name
- `publication_date` (string): Filter by publication date
- `repealed` (boolean): Filter by repealed status
- `section_title` (string): Filter by section title
- `source_identifier` (string): Filter by source identifier
- `source_secondary_identifier` (string): Filter by secondary source identifier
- `status` (string): Filter by status
- `tag` (string): Filter by tag
- `title` (string): Filter by title
- `type_of_authority` (string): Filter by type of authority
- `url` (string): Filter by URL
- `version` (string): Filter by version

### `get_document_text` (~745 tokens)

Retrieves full text for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user asks about available full text for a portal name, title, section_title, url, status, repealed, publication_date and crawling_date
    - The user wants to filter full text for type of authority, issuing authority, source identifier, source secondary identifier, tag
    Parameters:
    - iso (required): Filter by Jurisdiction ISO code (e.g. "US").
    - portal (optional): Filter by portal name.
    - limit (optional): Number of results to return.
    - offset (optional): Number of results to skip.
    - document_id (optional): Filter by document ID.
    - repealed (optional): Filter by repealed status.
    - title (optional): Filter by title.
    - section_title (optional): Filter by section title.
    - url (optional): Filter by URL.
    - status (optional): Filter by status.
    - crawling_date (optional): Filter by crawling date.
    - last_updated (optional): Filter by last updated date.
    - last_amendment (optional): Filter by last amendment date.
    - publication_date (optional): Filter by publication date.
    - expiration_date (optional): Filter by expiration date.
    - effective_date (optional): Filter by effective date.
    - date_of_enactment (optional): Filter by date of enactment.
    - date_of_decision (optional): Filter by date of decision.
    - file_data_only (optional): Return file data only.
    - issuing_authority (optional): Filter by issuing authority.
    - type_of_authority (optional): Filter by type of authority.
    - source_identifier (optional): Filter by source identifier.
    - source_secondary_identifier (optional): Filter by secondary source identifier.
    - tag (optional): Filter by tag.
    - lang (optional): Filter by language.
    Returns:
    - Content full text list with document_id, full_text

Input parameters:

- `crawling_date` (string): Filter by crawling date
- `date_of_decision` (string): Filter by date of decision
- `date_of_enactment` (string): Filter by date of enactment
- `document_id` (string): Filter by document ID
- `effective_date` (string): Filter by effective date
- `expiration_date` (string): Filter by expiration date
- `file_data_only` (boolean): Return file data only
- `iso` (string, required): Filter by Jurisdiction ISO code (e.g. 'US')
- `issuing_authority` (string): Filter by issuing authority
- `lang` (string): Filter by language
- `last_amendment` (string): Filter by last amendment date
- `last_updated` (string): Filter by last updated date
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `portal` (string): Filter by portal name
- `publication_date` (string): Filter by publication date
- `repealed` (boolean): Filter by repealed status
- `section_title` (string): Filter by section title
- `source_identifier` (string): Filter by source identifier
- `source_secondary_identifier` (string): Filter by secondary source identifier
- `status` (string): Filter by status
- `tag` (string): Filter by tag
- `title` (string): Filter by title
- `type_of_authority` (string): Filter by type of authority
- `url` (string): Filter by URL
- `version` (string): Filter by version

### `get_markdown` (~742 tokens)

Retrieves markdown for a specific jurisdiction and optional filters.
    Use this tool when:
    - The user asks about available markdown for a portal name, title, section_title, url, status, repealed, publication_date and crawling_date
    - The user wants to filter markdown for type of authority, issuing authority, source identifier, source secondary identifier, tag
    Parameters:
    - iso (required): Filter by Jurisdiction ISO code (e.g. "US").
    - portal (optional): Filter by portal name.
    - limit (optional): Number of results to return.
    - offset (optional): Number of results to skip.
    - document_id (optional): Filter by document ID.
    - repealed (optional): Filter by repealed status.
    - title (optional): Filter by title.
    - section_title (optional): Filter by section title.
    - url (optional): Filter by URL.
    - status (optional): Filter by status.
    - crawling_date (optional): Filter by crawling date.
    - last_updated (optional): Filter by last updated date.
    - last_amendment (optional): Filter by last amendment date.
    - publication_date (optional): Filter by publication date.
    - expiration_date (optional): Filter by expiration date.
    - effective_date (optional): Filter by effective date.
    - date_of_enactment (optional): Filter by date of enactment.
    - date_of_decision (optional): Filter by date of decision.
    - file_data_only (optional): Return file data only.
    - issuing_authority (optional): Filter by issuing authority.
    - type_of_authority (optional): Filter by type of authority.
    - source_identifier (optional): Filter by source identifier.
    - source_secondary_identifier (optional): Filter by secondary source identifier.
    - tag (optional): Filter by tag.
    - lang (optional): Filter by language.
    Returns:
    - Content markdown list with document_id, content_markdown

Input parameters:

- `crawling_date` (string): Filter by crawling date
- `date_of_decision` (string): Filter by date of decision
- `date_of_enactment` (string): Filter by date of enactment
- `document_id` (string): Filter by document ID
- `effective_date` (string): Filter by effective date
- `expiration_date` (string): Filter by expiration date
- `file_data_only` (boolean): Return file data only
- `iso` (string, required): Filter by Jurisdiction ISO code (e.g. 'US')
- `issuing_authority` (string): Filter by issuing authority
- `lang` (string): Filter by language
- `last_amendment` (string): Filter by last amendment date
- `last_updated` (string): Filter by last updated date
- `limit` (number): Number of results to return
- `offset` (number): Number of results to skip
- `portal` (string): Filter by portal name
- `publication_date` (string): Filter by publication date
- `repealed` (boolean): Filter by repealed status
- `section_title` (string): Filter by section title
- `source_identifier` (string): Filter by source identifier
- `source_secondary_identifier` (string): Filter by secondary source identifier
- `status` (string): Filter by status
- `tag` (string): Filter by tag
- `title` (string): Filter by title
- `type_of_authority` (string): Filter by type of authority
- `url` (string): Filter by URL
- `version` (string): Filter by version

### `get_source_url` (~100 tokens)

Get a time-limited signed URL to the original source file (PDF etc.).
    Use this tool when:
    - The user wants to find a pdf URL for a specific document
    - The user asks about presigned URL for a pdf
    Parameters:
    - document_id (required): Document ID.

    Returns:
    - PDF URL for a specific document with document_id and pdf_url

Input parameters:

- `document_id` (integer, required): Document ID

### `get_document_with_version` (~204 tokens)

Retrieves a specific document with a specific version.
    Use this tool when:
    - The user wants to find a specific document with a specific version
    - The user asks about available a specific document with a specific version

    Parameters:
    - document_id (required): Document ID.
    - version (required): Version.

    Returns:
    - Content with version with title, section_title, publication_date, effective_date, expiration_date, date_of_enactment, date_of_last_amendment, date_of_repealed, date_of_decision, status, version, source_identifier, source_secondary_identifier, issuing_authority, type_of_authority, language, legal_link, repealed, metadata, summary, tags, source_keywords, crawling_date, portal, portal_name, last_updated
    - Only returns content that has crawled data with the specific version

Input parameters:

- `document_id` (integer, required): Document ID
- `version` (integer, required): Version

### `horizon_scan` (~293 tokens)

Scans recent legal documents across jurisdictions.
    Use this when the user asks:
    - "What laws changed recently in Netherland?"
    - "Show me new regulations from last week"
    - "Any updates in NL law?"

Input parameters:

- `date_field` (string): Which date to window on. "crawling_date" (default) = when Lawstronaut crawled it. "publication_date" = when officially published. "last_updated" = when corpus record last changed.
- `include_repealed` (boolean): If false, drop documents where repealed=true
- `iso` (string, required): One ISO code e.g. "IE", "NL", "US", etc.
- `issuing_authority` (string|null): Optional filter on issuing authority
- `max_per_jurisdiction` (integer): Max docs to return per jurisdiction (1-100)
- `since` (string): Freshness window. "yesterday", "today", "Nd"/"Nh"/"Nw" (e.g. "7d"), or ISO date "YYYY-MM-DD"
- `status` (string|null): Optional filter on status field e.g. "new", "updated" String.
- `topic` (string|null): Optional filter (matches title) e.g. "employee monitoring" or "workplace surveillance"
- `type_of_authority` (string|null): Optional filter on type of authority

### `evidence_pull` (~176 tokens)

"Show me the source."
     For a specific document, return the full citation chain in one call:
    metadata (with all dates and identifiers), permanent legal_link, signed
    URL to the original source file (if available), and the full document
    body in markdown or plain text. Designed for auditability.

Input parameters:

- `document_id` (integer, required): Numeric document_id from any listing/search tool
- `include_source_url` (boolean): Fetch a temporary signed URL to the original file (PDF etc.) where available (default True).
- `include_text` (boolean): Fetch the full body (default True)
- `iso` (string, required): Document's jurisdiction ISO code, e.g. 'IE', 'NL', 'US', etc.
- `text_format` (string): 'markdown' (preserves structure) or 'plain'.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-lawstronaut-lawstronaut-mcp/mcp#diagnostics

## Score history

- 2026-08-03: 73
- 2026-08-02: 72
- 2026-08-01: 72
- 2026-07-31: 72
- 2026-07-30: 67
- 2026-07-29: 66
- 2026-07-28: 66
- 2026-07-27: 65
- 2026-07-26: 64

## Links

- Remote endpoint: https://mcp.lawstronaut.com/
- Repository: https://github.com/Lawstronaut-FZCO/lawstronaut-mcp
- Website: https://lawstronaut.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-lawstronaut-lawstronaut-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-lawstronaut-lawstronaut-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-lawstronaut-lawstronaut-mcp/mcp
