Developers
MCP endpoint: https://davisstirling.org/mcp
Public and read-only. No account, sign-in or API key.
Connect
- Claude. Go to Customize → Connectors, click + Add, then Add custom connector. Enter the URL and, under Authentication, choose “No sign in.” To use it in a chat, open the + menu, choose Connectors and switch it on.
- Claude Code.
claude mcp add --transport http davisstirling https://davisstirling.org/mcp - ChatGPT. In developer mode, add the URL as a connector with no authentication.
- Other clients. Point any Streamable HTTP MCP client at the URL.
Menus change; these steps were checked in October 2026. The server is also listed in the MCP Registry as org.davisstirling/davisstirling.
How the server works
- Streamable HTTP, stateless. It speaks MCP protocol 2026-07-28 and also serves 2025-era clients.
- All 8 tools are read-only (
readOnlyHint: true,destructiveHint: false) and make no AI model calls. The same request always returns the same response for a givencorpus_version. searchandfetchfollow the standard shapes ChatGPT uses for deep research:searchreturns results withid,titleandurl, andfetchreturnsid,title,text,urlandmetadata.- Arguments are forgiving. A section can be “4920”, “§ 4920”, “Civ. Code § 4920(b)(2)” or the id
cal.civ.4920; a case can be a reporter citation (“8 Cal.4th 361”), a name or an id.
The 8 tools
search: find statute sections and court decisions for a question. Each result has an id, title, url, citation and a verbatim snippet.fetch: the full document for an id returned bysearch.get_statute_section: a section’s official text, or one subdivision, with its amendment history, cross-references, defined terms and the cases that cite it.get_court_case: a decision’s court, date and citations, the sections it cites with the court’s own sentence, a labeled DavisStirling summary, and the opinion text in pages.find_interpreting_cases: the decisions in the library that cite a section, including those citing its pre-2014 number (former Civ. Code §§ 1350–1378) through the AB 805 recodification table.get_related_authorities: a section’s or case’s typed connections (cites and cited by, defined terms, procedural steps before and after, and cases), each with the verbatim text that creates it wherever the source has one.resolve_citation: check a citation: a current or former section number, a reporter citation or a case name.browse_topics: the 12 subject areas, with their sections and leading cases.
Provenance: what you can quote
Every quotable value carries a layer:
layer: "source"is verbatim statute or opinion text.quote.textis an exact substring of the compiled source (verified: true;spangives its position).layer: "davisstirling"is DavisStirling’s own material, never the law’s or a court’s words. It always carries amethod:derived: computed mechanically from the source text (cross-references, defined-term uses, which cases cite a section and how often).editorial.machine-reviewed: drafted and reviewed by AI models under an adversarial process, and checked against the opinions (case summaries, landmark classifications, notes on why a case matters to a section).editorial.machine-drafted: drafted with AI and not systematically reviewed by a person (section titles, topics, explainers, walkthroughs, notes on procedural order).editorial.sourced: taken from a cited external table (the AB 805 recodification table).editorial.humanandeditorial.human-reviewed: written or checked by a person. Not used yet.
Quote quote.text for what the law says, and link canonical_url when you cite it.
Citation object
Every authority comes back in this shape. Ids are stable and never reused: sections are cal.civ.<number> and cases are cal.case.<slug>. This is the citation get_statute_section returns for “Civ. Code § 4920(b)(2)”:
{
"authority_id": "cal.civ.4920",
"kind": "statute_section",
"pinpoint": "(b)(2)",
"cite": {
"california_style": "Civ. Code, § 4920, subd. (b)(2)",
"bluebook": "Cal. Civ. Code § 4920(b)(2)"
},
"title": "Notice of Board Meetings",
"title_layer": {
"layer": "davisstirling",
"method": "editorial.machine-drafted"
},
"quote": {
"text": "(2) If a nonemergency board meeting is held solely in executive session, the association shall give notice of the time and place of the meeting at least two days prior to the meeting.",
"layer": "source",
"verified": true,
"span": {
"start": 324,
"end": 507
}
},
"source": {
"publisher": "California Legislative Information",
"url": "https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CIV§ionNum=4920",
"retrieved": "2026-07-07",
"content_sha256": "85a59f1fc5444ccc36f53300104bfc2a8dcdcd580eb146711e198a1499dacd1e"
},
"currency": {
"last_amended": "2014-01-01",
"last_amended_by": "SB 745 (Stats. 2013, ch. 183)",
"status": "in_force",
"pending": [],
"corpus_as_of": "2026-07-11"
},
"canonical_url": "https://davisstirling.org/section/4920"
}
A case citation carries court, date_decided, docket, precedential_status and parallel_citations in place of currency. Every response also carries meta: the corpus_version, the coverage (what the corpus does not include) and a not-legal-advice notice.
Static data files
The same records are available as static JSON, readable from any origin (CORS). No MCP client is needed.
/data/v1/index.json: every section, case and topic, with titles, citations and links./data/v1/manifest.json: thecorpus_versionand, for each id, its content and record hashes. Compare them to detect changes./data/v1/section/cal.civ.4920.json: one section./data/v1/case/<id>.json: one case./data/v1/topic/<slug>.json: one topic./data/v1/schema/: JSON Schemas for the citation, section, case and topic records.
Raw text: statutes at /Davis-Stirling-Act/§4920.md and opinions at /Davis-Stirling-Act/case_law/<slug>.md.
Limits
- About 120 requests a minute per client (ChatGPT users are counted by OpenAI’s anonymous user id), under an overall ceiling. Over the limit, the server answers HTTP 429 with
Retry-After: 60. - Request bodies can be up to 64 KB.
- Responses are usually under 20,000 characters and never over 100,000. Opinion text comes in pages (
offset, andmax_charsup to 40,000).
Licenses and attribution
Statutes and opinions are public domain. DavisStirling material is licensed CC BY 4.0; credit “DavisStirling.org.” See the Terms of Use for details.
Privacy
Our records of MCP requests hold the date, the AI platform, the tool, the outcome and timing, the public ids returned and, for search only, a scrubbed and shortened search phrase. They never include IP addresses, conversations or responses. Cloudflare’s own request logs, kept up to 7 days for troubleshooting, can include IP addresses. Full details are on the Privacy page.
Support
Questions or problems with the MCP server or the data files: support@davisstirling.org.
Not legal advice.