Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Legalize

REMOTE · LEGALIZE.DEV · SCANNED OCT 3

Official MCP connector for Legalize: read and search its whole open corpus, at any point in time.

Available components

0 this week 38 Trust /100
Trust breakdown (7 categories)

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. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
  • Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
  • Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified

Unverified: 6 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.

Install

How do I install the Legalize MCP server?

Legalize is a hosted endpoint at https://legalize.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · legalize.dev

# add to Claude Code
claude mcp add --transport http dev-legalize-legalize 'https://legalize.dev/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-legalize-legalize": {
      "url": "https://legalize.dev/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-legalize-legalize": {
      "type": "http",
      "url": "https://legalize.dev/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.dev-legalize-legalize]
url = "https://legalize.dev/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-legalize-legalize": {
      "type": "remote",
      "url": "https://legalize.dev/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-legalize-legalize --url 'https://legalize.dev/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-legalize-legalize:
    url: "https://legalize.dev/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-legalize-legalize": {
      "Transport": "http",
      "Url": "https://legalize.dev/mcp"
    }
  }
}
# add to Vellum
assistant mcp add dev-legalize-legalize -t streamable-http -u 'https://legalize.dev/mcp'
// mcp.json
{
  "mcpServers": {
    "dev-legalize-legalize": {
      "type": "http",
      "url": "https://legalize.dev/mcp"
    }
  }
}

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

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 30 Sept 26 0
    • Endpoint reachability: unreachable → behind authorisation ▼ security
    • Authorization: fail → pass ▲ security
    • Tool safety: Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools. security
    • Tool coverage: Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools. functional
    • Schema quality: Schema blocked by authentication: the endpoint requires auth we don't have to read it. functional
    • Capabilities: Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. functional
  • 29 Sept 26 0
    • Endpoint reachability: behind authorisation → unreachable ▼ security
    • Authorization: pass → fail ▼ security
    • Tool safety: Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list. security
    • Tool coverage: Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list. functional
    • Capabilities: Capabilities not yet verified: we couldn't read the endpoint's capabilities. functional
    • Schema quality: Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list. functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Aug 26 0
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Tool safety: pass → unverified ▼ security
    • Transport: pass → unverified ▼ security
    • Stability: 0.03 → unverified ▼ security
    • Authorization: The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
  • 29 Aug 26 0
    • Stability: unverified → 0.03 ▲ functional
    • This server's schema is too large to store in full, so we cannot compare its tools day to day functional
  • 28 Aug 26 0
    • Transport: unverified → pass ▲ security
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
    • MCP protocol: unverified → pass ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Destructive annotations: pass functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 100 functional
    • First check of Tool coverage: 100 functional
  • 26 Aug 26 0

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Oct 2026 · Probed https://legalize.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=legalize.dev CN=WR3,O=Google Trust Services,C=US 14 Sept 2026 13 Dec 2026 RSA 2048 SHA256-RSA 99c5a0052258451712b972e208f91361
SANs: legalize.dev, www.legalize.dev
CN=WR3,O=Google Trust Services,C=US (CA) CN=GTS Root R1,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 RSA 2048 SHA256-RSA 7ff005a91568d63abc22861684aa4b5a
CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 19 Jun 2020 28 Jan 2028 RSA 4096 SHA256-RSA 77bd0d6cdb36f91aea210fc4f058d30d
CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 1 Sept 1998 28 Jan 2028 RSA 2048 SHA1-RSA 40000000001154b5ac394

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of legalize.dev. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
legalize.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On connection
HTTP status 401

WWW-Authenticate challenge Bearer error="invalid_token", resource_metadata="https://legalize.dev/.well-known/oauth-protected-resource"

Bearer error="invalid_token", resource_metadata="https://legalize.dev/.well-known/oauth-protected-resource"
Header Value
strict-transport-security max-age=63072000; includeSubDomains
content-security-policy default-src 'self'; script-src 'self' 'nonce-Q1kaW924B2zIMpw7UQbZvQ==' https://cdn.jsdelivr.net https://www.googletagmanager.com; style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; font-src 'self'; img-src 'self' data: https://fastapi.tiangolo.com https://www.googletagmanager.com; connect-src 'self' https://*.google-analytics.com https://www.googletagmanager.com https://analytics.google.com https://login.legalize.dev https://*.stytch.com
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()
www-authenticate Bearer error="invalid_token", resource_metadata="https://legalize.dev/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://legalize.dev/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://legalize.dev/mcp
Authorisation server https://login.legalize.dev

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://legalize.dev/mcp Auth required 401
http (plaintext) http://legalize.dev/mcp HTTPS enforced 301 https://legalize.dev/mcp
MCP tools · 7 exposed · ~1,493 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
diff_law ~270

What changed in a norm between two dates. Returns a unified diff of the two versions and both SHAs, which is what makes the change citable rather than asserted. With `article=`, the diff of that one article; without it, on a law too large to diff whole, the list of headings that changed so you can ask again for the one that matters. Use it to answer 'has this been amended since?' with the text itself.

NameTypeReqDescription
article––One article instead of the whole body: either the anchor from the table of contents, or the literal heading ('Artículo 348 bis'). Omit for the whole law.
countrystringyesISO 3166-1 alpha-2 country code, lower case — 'es', 'fr', 'pt'. Call list_countries for the ones served.
date_astringyesThe earlier date, YYYY-MM-DD. The version in force then is the left side of the diff.
date_bstringyesThe later date, YYYY-MM-DD. The version in force then is the right side of the diff.
idstringyesThe law's identifier, as search_laws returns it in `id`. It is the official identifier the source uses, not a title or a slug.

Structured output declared, but exposes no named fields.

No examples provided.

get_law ~275

Read what a norm says today. Returns the full Markdown body, or one article of it with `article=` (either the anchor or the literal heading, e.g. 'Artículo 348 bis'). A law too large to send whole comes back as its table of contents instead of a truncated body: ask again for the article you need, or pass `full=true` to accept the whole thing. If the body is an act as published rather than a consolidated text, the answer says so and names the norms that amend it: do not quote that text as the law in force.

NameTypeReqDescription
article––One article instead of the whole body: either the anchor from the table of contents, or the literal heading ('Artículo 348 bis'). Omit for the whole law.
countrystringyesISO 3166-1 alpha-2 country code, lower case — 'es', 'fr', 'pt'. Call list_countries for the ones served.
fullboolean–Accept a body large enough that the answer would otherwise be its table of contents. Ask for the article you need first; this is the fallback.
idstringyesThe law's identifier, as search_laws returns it in `id`. It is the official identifier the source uses, not a title or a slug.

Structured output declared, but exposes no named fields.

No examples provided.

law_at_date ~252

What a norm said on a given day. This is the question a search engine cannot answer: not the current text, but the text that was on the books on that date. Resolves the date to the version published on or before it and returns that version with the git SHA behind it, so the quote is reproducible and the other side can check it. Use `article=` for one article of that version. Note the basis: publication date, not entry into force.

NameTypeReqDescription
article––One article instead of the whole body: either the anchor from the table of contents, or the literal heading ('Artículo 348 bis'). Omit for the whole law.
countrystringyesISO 3166-1 alpha-2 country code, lower case — 'es', 'fr', 'pt'. Call list_countries for the ones served.
datestringyesA calendar date written YYYY-MM-DD. Resolved to the version published on or before it — publication date, not entry into force.
idstringyesThe law's identifier, as search_laws returns it in `id`. It is the official identifier the source uses, not a title or a slug.

Structured output declared, but exposes no named fields.

No examples provided.

law_stats ~147

How large a country's corpus is and how much it moves: how many laws, how many recorded amendments, the span of publication dates, and the breakdown by type of norm. Use it to size an answer before drilling into it, or to say honestly how much of a jurisdiction Legalize actually holds.

NameTypeReqDescription
countrystringyesISO 3166-1 alpha-2 country code, lower case — 'es', 'fr', 'pt'. Call list_countries for the ones served.
jurisdiction––Size one jurisdiction instead of the whole country: a sub-national code for a region, or 'national' for the norms of the state itself. Omit for the country total.

Structured output declared, but exposes no named fields.

No examples provided.

list_countries ~23

List the countries Legalize covers and how many laws each one has.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultarrayyes–

No examples provided.

reform_history ~168

Which norms have amended this law, when, and what each one says it touched, newest first. Use it to answer 'is this still current?' and to find the dates worth feeding to law_at_date or diff_law. `since` narrows it to amendments from a date onwards.

NameTypeReqDescription
countrystringyesISO 3166-1 alpha-2 country code, lower case — 'es', 'fr', 'pt'. Call list_countries for the ones served.
idstringyesThe law's identifier, as search_laws returns it in `id`. It is the official identifier the source uses, not a title or a slug.
since––Only amendments from this date onwards, YYYY-MM-DD. Omit for the whole history, newest first.

Structured output declared, but exposes no named fields.

No examples provided.

search_laws ~358

Find a norm by words in its title, or by its official number (e.g. '2/2011'), inside one country's corpus. Use this first when you know roughly what a law is called but not its identifier: the `id` it returns is what every other tool here takes. Each result says whether its text is consolidated or the act as published, so you can tell before quoting whether amendments are folded into it.

NameTypeReqDescription
countrystringyesISO 3166-1 alpha-2 country code, lower case — 'es', 'fr', 'pt'. Call list_countries for the ones served.
jurisdiction––Narrow to one jurisdiction where a country's catalogue holds more than one: a sub-national code for a region (Spanish comunidades autónomas), or 'national' for the norms of the state itself. Omit to…
limitinteger–How many results to return, 1-50. Narrow with type, year or jurisdiction instead of raising this: every result costs context.
qstringyesWords from the law's title, or its official number ('2/2011'). Matched against the title and the subject headings the source assigns to the law, so a topic word can find it — but never the body of th…
type––Narrow to one kind of norm, in the source's own vocabulary ('Ley', 'Real Decreto', 'Decreto-Lei'). Values vary by country; the `type` of any result is a valid one.
year––Narrow to laws published in this year.

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the Legalize MCP server?

Legalize is an MCP server listed in the public MCP registry as dev.legalize/legalize. Official MCP connector for Legalize: read and search its whole open corpus, at any point in time. This page covers its hosted endpoint (https://legalize.dev/mcp).

Is the Legalize MCP server safe to use?

Legalize scores 38 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Legalize MCP server expose?

Legalize exposes 7 tools: list_countries, search_laws, get_law, law_at_date, diff_law, and 2 more. Their descriptions and schemas cost roughly 1,493 tokens of context every time the server is loaded.

Does the Legalize MCP server require authentication?

Yes. Legalize asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Legalize MCP server still maintained?

Legalize is still listed as active in the MCP registry. We last reached this channel on 3 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.