Skip to main content
Glama

Server Details

California HOA law: Davis-Stirling Act text and 189 court decisions. Read-only, no auth.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 28 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.5/5.0

Scored across 8 tools

Disambiguation4/5

Tools are largely distinct, with explicit 'do not use' guidance in descriptions. Some overlap exists between the generic `fetch` (by id) and specific getters like `get_statute_section` and `get_court_case`, as well as between `find_interpreting_cases` and `get_related_authorities`, but the descriptions clarify intended use cases.

Naming Consistency4/5

All names use snake_case and start with a verb, but `fetch` and `search` are single verbs while the rest follow a verb_noun pattern. This is a minor deviation from full consistency.

Tool Count5/5

8 tools is well-scoped for a legal research server focused on the Davis-Stirling Act; each tool serves a distinct function in the research workflow.

Completeness5/5

The set covers the full research lifecycle: browsing topics, searching, retrieving statutes and cases, finding interpreting cases, exploring connections, and resolving citations. No obvious gaps for the stated domain.

Available Tools

8 tools
browse_topicsBrowse Davis-Stirling topicsA
Read-onlyIdempotent
Inspect

Use this when the user wants an overview of an area of HOA law (e.g. board meetings, elections, assessments and collections, records, architectural review, disputes) or asks what this source covers. Omit topic to list all subject areas; pass one to get its sections and leading cases. Do not use it to answer a specific legal question; use search.

NameRequiredDescriptionDefault
topicNoA topic slug or name, e.g. "meetings".

Output Schema

NameRequiredDescription
metaYes
topicNo
topicsNo
trailsNo
sectionsNo
leading_casesNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds useful behavioral context: the omission of the parameter returns the full subject-area list, and passing one yields its sections and leading cases. It does not discuss result size or pagination, but the output schema carries the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences, front-loaded with the use case, then the calling modes, then the exclusion. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter browse tool with full annotation coverage and an output schema, this is complete: intent, calling modes, exclusion, and a pointer to the alternative tool are all present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single optional parameter, so the baseline is 3, but the description goes beyond the schema by explaining the semantic difference between omitting topic (list all subject areas) and providing one (get its sections and leading cases). That is meaning the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: an overview of an area of HOA law, with concrete examples (board meetings, elections, assessments, records). It is immediately distinguishable from search-based siblings by naming the browsing/overview intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (user wants an overview or asks what the source covers) and when-not (do not use to answer a specific legal question; use search). It even explains the two calling modes: omit topic to list all areas, pass one to drill into sections and leading cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetchFetch a documentA
Read-onlyIdempotent
Inspect

Use this to read the full document for an id returned by search: a statute section’s official text, or a court decision’s DavisStirling summary followed by the start of the opinion, with source and currency information. Do not use it to search; use search first to get an id.

NameRequiredDescriptionDefault
idYesAn id from search, e.g. "cal.civ.4920" or "cal.case.nahrstedt-v-lakeside-village-1994".

Output Schema

NameRequiredDescription
idYes
urlYes
metaYes
textYes
titleYes
metadataYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: the shape of returned content per document type and the inclusion of source and currency metadata, which is what an agent needs to trust the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler; the purpose and returned content are front-loaded before the search exclusion. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema (so return values need not be spelled out) and full annotation coverage, the description says everything needed to select and invoke it correctly: what it returns, which id to pass, and which sibling to use instead when searching.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single id parameter is already documented with format examples and length bounds. The description adds the provenance of the id ('returned by search'), which is mildly useful but largely restates the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (full document) scoped by an id from search, and details exactly what content comes back for each document type (statute official text vs. court decision DavisStirling summary plus opinion start). This clearly separates it from the search/get_* siblings without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Do not use it to search; use search first to get an id.' Both the when-not condition and the required prerequisite/alternative are named, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_interpreting_casesFind cases citing a sectionA
Read-onlyIdempotent
Inspect

Use this when the user asks which court decisions interpret or apply a Davis-Stirling section. Includes decisions citing its pre-2014 number (former Civil Code §§1350–1378, via the verified AB 805 table), ranked by how central the section is to each opinion, each with the court’s own sentence. Do not use it as a complete citator: it covers only the decisions in this library.

NameRequiredDescriptionDefault
limitNoCases to return (default 10).
sectionYesA Davis-Stirling section: "4920", "§ 4920", "Civ. Code § 4920(b)(2)", or an id like "cal.civ.4920".
min_tierNoLowest tier to include (default "cited").
include_formerNoInclude citations of the former number (default true).

Output Schema

NameRequiredDescription
metaYes
casesYes
scopeYes
countsYes
sectionYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description adds value beyond them: it discloses that results include pre-2014 former numbers via the AB 805 table, that they are ranked by centrality, and that each carries the court's own sentence. The library-coverage limitation is a genuinely useful behavioral caveat.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the usage trigger before secondary detail about coverage and ranking. No filler; every clause carries information the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return shape, and it covers the remaining essentials: trigger, former-number inclusion, ranking, and coverage limits. Nothing needed for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description still adds meaning by explaining that former-number citations are included (directly illuminating the include_former parameter) and that results are centrality-ranked, which contextualizes min_tier. It does not document the section format or limit syntax, keeping it just above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('which court decisions interpret or apply a Davis-Stirling section'), which is clearly distinct from siblings like get_statute_section (returns the statute) and get_court_case (returns one case). The 'citator' framing sharpens the resource type without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use this when the user asks which court decisions interpret or apply a section') and adds a when-not boundary ('Do not use it as a complete citator: it covers only the decisions in this library'). Both the selecting condition and the scope exclusion are stated directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_court_caseGet a California HOA court decisionA
Read-onlyIdempotent
Inspect

Use this when the user names or cites a California HOA court decision (e.g. "Nahrstedt", "8 Cal.4th 361") or you need what a case held. Returns the court, date and citations, the Davis-Stirling sections the opinion cites (with the court’s own sentence), the cases it cites, a clearly labeled DavisStirling summary, and optionally pages of the opinion text. Do not use it for statutes or for decisions outside this library.

NameRequiredDescriptionDefault
caseYesA case name, reporter citation ("8 Cal.4th 361") or id.
offsetNoOpinion text offset (with opinion_text).
includeNoParts to return (default ["summary", "sections"]).
max_charsNoOpinion characters per page (default 15000).

Output Schema

NameRequiredDescription
caseYes
metaYes
opinionNo
summaryNo
landmarkNo
sectionsNo
discussesNo
discussed_byNo
map_placementNo
former_citationsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and closed-world behavior, and the description adds real content: what the record contains (court, date, citations, the court's own sentence for cited sections, cases cited) and that the Davis-Stirling summary is 'clearly labeled,' which flags model-generated vs. source text. Pagination via optional opinion text pages is also disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the trigger condition before the return payload and the exclusion. The return-value sentence is long and dense, but every clause adds distinct information and none is redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is a bonus rather than a requirement, yet the description still characterizes the payload and the labeled summary. Combined with the explicit exclusion and trigger conditions, an agent has everything needed to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description goes further by mapping what include values yield ('the Davis-Stirling sections the opinion cites (with the court's own sentence)' and 'the cases it cites') and by noting opinion text is optional and paged. It does not mention the offset/max_chars mechanics, but those are documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a California HOA court decision') and immediately scopes it to case names, reporter citations, or ids. It also draws a boundary against sibling territory ('Do not use it for statutes or for decisions outside this library'), letting an agent separate it from get_statute_section and resolve_citation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use triggers are given ('when the user names or cites a California HOA court decision' or 'you need what a case held') plus a clear exclusion for statutes and out-of-library decisions. It stops short of naming the alternative tool to use instead, so routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statute_sectionGet a Davis-Stirling sectionA
Read-onlyIdempotent
Inspect

Use this when you need the official text of a Davis-Stirling Act section (California Civil Code) by number, optionally one subdivision, with its last amendment, cross-references, defined terms and the cases that cite it. Accepts "4920", "§ 4920(b)(2)" or "Civ. Code § 4920". Do not use it for other codes (Corporations, Government, Code of Civil Procedure) or for court cases.

NameRequiredDescriptionDefault
includeNoExtra parts to return (default ["text"]).
sectionYesA Davis-Stirling section: "4920", "§ 4920", "Civ. Code § 4920(b)(2)", or an id like "cal.civ.4920".
pinpointNoA subdivision, e.g. "(b)(2)". Also read from section.

Output Schema

NameRequiredDescription
metaYes
textYes
casesNo
titleYes
topicYes
definesNo
historyYes
sectionYes
cited_byNo
explainerNo
hierarchyYes
definitionsNo
former_numbersYes
cross_referencesNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety and determinism are covered. The description adds real behavioral value by enumerating the response payload (text, last amendment, cross-references, defined terms, citing cases) and the closed scope of the corpus, though it adds nothing about limits or error behavior for malformed section numbers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the trigger and payload, followed by the exclusion. Zero filler and every clause carries information an agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is optional, yet the description still previews the payload. Scope, input formats, optional subdivision behavior, and out-of-scope codes/cases are all covered, leaving no gap an agent would need to fill by guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the section and pinpoint formats are already documented in the schema, and the description's accepted-format examples ('4920', '§ 4920(b)(2)', 'Civ. Code § 4920') largely restate them. It adds only the nuance that a single subdivision is optional and read from either field, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (official text of a Davis-Stirling Act section) with explicit scope: by number, optionally one subdivision, plus amendment, cross-references, defined terms and citing cases. It clearly distinguishes itself from siblings that handle other codes or court cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit 'Use this when you need...' trigger and closes with a hard exclusion: 'Do not use it for other codes (Corporations, Government, Code of Civil Procedure) or for court cases', which routes agents to get_court_case and code-specific siblings. Both when-to-use and when-not-to-use are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_citationCheck a citationA
Read-onlyIdempotent
Inspect

Use this when you need to check a California HOA citation before relying on it: a Davis-Stirling section (current, or a former pre-2014 number like "Civ. Code 1363"), or a case by reporter citation or name. Returns the current authority and, for former numbers, where the provision lives now per the AB 805 recodification table. Do not use it for citations to other states or other California codes.

NameRequiredDescriptionDefault
citationYesThe citation as written, e.g. "Civ. Code § 1365.5" or "8 Cal.4th 361".

Output Schema

NameRequiredDescription
metaYes
inputYes
matchesYes
suggestionsYes
not_found_reasonYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new context: it returns the current authority and, for former numbers, where the provision now lives per the AB 805 recodification table. It stops short of describing latency or error/not-found behavior, keeping it just under top marks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the usage trigger, accepted inputs, return behavior, and exclusion are all front-loaded. The first sentence is dense with clauses, but every clause carries distinct information, so the density is justified rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single fully documented parameter, rich annotations, and an output schema covering return values, the description only needed to cover scope, input varieties, and exclusions — and it does all three. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, and the description earns above that by enumerating accepted input shapes beyond the schema's examples: former pre-2014 numbers like 'Civ. Code 1363' and cases identified by reporter citation or name. That materially expands what an agent knows it can pass.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check/resolve) and resource (California HOA citation) with precise scope: Davis-Stirling sections, former pre-2014 numbers, and cases by reporter citation or name. It clearly distinguishes itself from siblings like get_statute_section, get_court_case, and find_interpreting_cases by virtue of being a citation-resolution tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when you need to check a California HOA citation before relying on it') and an explicit exclusion ('Do not use it for citations to other states or other California codes'). This is exactly the when/when-not pattern that routes an agent correctly without opening a schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updates
    • Changedfetch1 field changed
      • changedOutput schema / properties / metadata / properties / citation / properties / title_layer / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "source",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfind_interpreting_cases3 fields changed
      • changedOutput schema / properties / cases / items / properties / method / enum
        Previous value: -[
        -  "derived",
        -  "editorial.human",
        -  "editorial.machine-reviewed",
        -  "editorial.human-reviewed",
        -  "editorial.sourced"
        -]New value: +[
        +  "derived",
        +  "editorial.human",
        +  "editorial.machine-drafted",
        +  "editorial.machine-reviewed",
        +  "editorial.human-reviewed",
        +  "editorial.sourced"
        +]
      • changedOutput schema / properties / cases / items / properties / why / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / section / properties / title_layer / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "source",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_court_case7 fields changed
      • changedOutput schema / properties / case / properties / title_layer / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "source",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / former_citations / items / properties / note / properties / method / enum
        Previous value: -[
        -  "derived",
        -  "editorial.human",
        -  "editorial.machine-reviewed",
        -  "editorial.human-reviewed",
        -  "editorial.sourced"
        -]New value: +[
        +  "derived",
        +  "editorial.human",
        +  "editorial.machine-drafted",
        +  "editorial.machine-reviewed",
        +  "editorial.human-reviewed",
        +  "editorial.sourced"
        +]
      • changedOutput schema / properties / landmark / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "label": {
        -        "type": "string"
        -      },
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "tier": {
        -        "enum": [
        -          "tier1",
        -          "tier2",
        -          "historical"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "tier",
        -      "label",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "label": {
        +        "type": "string"
        +      },
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "tier": {
        +        "enum": [
        +          "tier1",
        +          "tier2",
        +          "historical"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "tier",
        +      "label",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / map_placement / properties / note / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / sections / items / properties / method / enum
        Previous value: -[
        -  "derived",
        -  "editorial.human",
        -  "editorial.machine-reviewed",
        -  "editorial.human-reviewed",
        -  "editorial.sourced"
        -]New value: +[
        +  "derived",
        +  "editorial.human",
        +  "editorial.machine-drafted",
        +  "editorial.machine-reviewed",
        +  "editorial.human-reviewed",
        +  "editorial.sourced"
        +]
      • changedOutput schema / properties / sections / items / properties / why / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / summary / properties / method / enum
        Previous value: -[
        -  "derived",
        -  "editorial.human",
        -  "editorial.machine-reviewed",
        -  "editorial.human-reviewed",
        -  "editorial.sourced"
        -]New value: +[
        +  "derived",
        +  "editorial.human",
        +  "editorial.machine-drafted",
        +  "editorial.machine-reviewed",
        +  "editorial.human-reviewed",
        +  "editorial.sourced"
        +]
    • Changedget_related_authorities1 field changed
      • changedOutput schema / properties / connections / items / properties / why / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_statute_section5 fields changed
      • changedOutput schema / properties / cases / items / properties / method / enum
        Previous value: -[
        -  "derived",
        -  "editorial.human",
        -  "editorial.machine-reviewed",
        -  "editorial.human-reviewed",
        -  "editorial.sourced"
        -]New value: +[
        +  "derived",
        +  "editorial.human",
        +  "editorial.machine-drafted",
        +  "editorial.machine-reviewed",
        +  "editorial.human-reviewed",
        +  "editorial.sourced"
        +]
      • changedOutput schema / properties / cases / items / properties / why / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / explainer / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "plain": {
        -        "type": "string"
        -      },
        -      "takeaways": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "plain",
        -      "takeaways",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "plain": {
        +        "type": "string"
        +      },
        +      "takeaways": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "plain",
        +      "takeaways",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / section / properties / title_layer / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "source",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "layer"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "source",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "layer"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / title / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "davisstirling",
        -        "type": "string"
        -      },
        -      "method": {
        -        "enum": [
        -          "derived",
        -          "editorial.human",
        -          "editorial.machine-reviewed",
        -          "editorial.human-reviewed",
        -          "editorial.sourced"
        -        ],
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer",
        -      "method"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "layer": {
        -        "const": "source",
        -        "type": "string"
        -      },
        -      "value": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "value",
        -      "layer"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "davisstirling",
        +        "type": "string"
        +      },
        +      "method": {
        +        "enum": [
        +          "derived",
        +          "editorial.human",
        +          "editorial.machine-drafted",
        +          "editorial.machine-reviewed",
        +          "editorial.human-reviewed",
        +          "editorial.sourced"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer",
        +      "method"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "layer": {
        +        "const": "source",
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "layer"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch1 field changed
      • changedOutput schema / properties / results / items / properties / snippet / properties / method / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "derived",
        -      "editorial.human",
        -      "editorial.machine-reviewed",
        -      "editorial.human-reviewed",
        -      "editorial.sourced"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "derived",
        +      "editorial.human",
        +      "editorial.machine-drafted",
        +      "editorial.machine-reviewed",
        +      "editorial.human-reviewed",
        +      "editorial.sourced"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 4 tool updates
    • Changedfind_interpreting_cases4 fields changed
      • addedInput schema / properties / section / anyOf
        Added value: +[
        +  {
        +    "maxLength": 100,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  }
        +]
      • removedInput schema / properties / section / maxLength
        Removed value: -100
      • removedInput schema / properties / section / minLength
        Removed value: -1
      • removedInput schema / properties / section / type
        Removed value: -"string"
    • Changedget_related_authorities4 fields changed
      • addedInput schema / properties / authority / anyOf
        Added value: +[
        +  {
        +    "maxLength": 200,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  }
        +]
      • removedInput schema / properties / authority / maxLength
        Removed value: -200
      • removedInput schema / properties / authority / minLength
        Removed value: -1
      • removedInput schema / properties / authority / type
        Removed value: -"string"
    • Changedget_statute_section4 fields changed
      • addedInput schema / properties / section / anyOf
        Added value: +[
        +  {
        +    "maxLength": 100,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  }
        +]
      • removedInput schema / properties / section / maxLength
        Removed value: -100
      • removedInput schema / properties / section / minLength
        Removed value: -1
      • removedInput schema / properties / section / type
        Removed value: -"string"
    • Changedresolve_citation4 fields changed
      • addedInput schema / properties / citation / anyOf
        Added value: +[
        +  {
        +    "maxLength": 200,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "exclusiveMinimum": 0,
        +    "type": "number"
        +  }
        +]
      • removedInput schema / properties / citation / maxLength
        Removed value: -200
      • removedInput schema / properties / citation / minLength
        Removed value: -1
      • removedInput schema / properties / citation / type
        Removed value: -"string"
  3. 8 tool updates
    • First observedbrowse_topics
    • First observedfetch
    • First observedfind_interpreting_cases
    • First observedget_court_case
    • First observedget_related_authorities
    • First observedget_statute_section
    • First observedresolve_citation
    • First observedsearch

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for California statutes and legislation, enabling verification of current statutory text, tracking pending bills that would amend or repeal sections, and retrieving legislative history from 1993 onward using official legislative bulk data.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables lookup of official California civil (CACI) and criminal (CALCRIM) jury instructions and verdict forms by number or keyword, returning full adopted text, directions for use/bench notes, sources and authority, and revision history. Also surfaces current edition details and archived edition PDF links for both instruction sets.
    220 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an assistant to search French co-ownership law (the 1965 statute and 1967 decree) for the articles that answer a question, returning references, excerpts, Légifrance links, and an explicit refusal when the texts don't cover it, and to read an article's full official text with its entry-into-force and consolidation dates.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to search roughly 168,000 Iranian laws, regulations, court votes and legal opinions by title or full text, read a law or a single article, and trace amendments, article history and citing documents. Read-only, no authentication, with results returned as compact JSON from Claude, Cursor or Copilot.
    7
    211 PyPI
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources