GoCodebook — California Building Codes
Server Details
Verbatim California Title 24 and local zoning code lookup by section number, with citations.
- Status
- Healthy
- Uptime
- 99.8% over 47 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
The three tools have clearly distinct purposes: list retrieves available documents/jurisdictions, lookup fetches verbatim text by section number, and search finds content by topic. The descriptions explicitly cross-reference each other (e.g. 'if the user already cites a section number, use lookup instead'), removing any overlap ambiguity between lookup and search.
All three tools follow a consistent verb_noun snake_case pattern (list_, lookup_, search_). The only minor deviation is noun phrasing—'california_code_documents'/'california_code_section' use singular 'code' while 'search_california_codes' pluralizes and reorders the noun.
Three tools is on the lean side but each covers a genuinely distinct entry point (browse, lookup-by-section, search-by-topic) for a read-only reference server. The count is well-scoped rather than padded or truncated.
For a read-only code-lookup domain, the surface covers the core workflows: discovering what's available, retrieving a known section, and topic search. Minor gaps like cross-reference traversal or edition comparison exist but are reasonable workarounds.
Available Tools
3 toolslist_california_code_documentsARead-onlyIdempotentInspect
List the California codes and local ordinances available for lookup, and what is not covered. Useful before concluding that a code is unavailable, and for finding the exact document or jurisdiction slug that a lookup takes.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | No | Optional. A California city or county slug — returns the documents held for that jurisdiction instead of the statewide list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | Coverage caveats. Read them before telling a user a code is unavailable. |
| scope | No | |
| groups | No | Documents grouped by collection. Statewide: Title 24 first. Jurisdiction: the place's own documents, then those of the jurisdiction that also governs it. |
| status | Yes | |
| message | No | |
| editions | No | |
| municipal | No | Statewide only: how many local ordinances are held. |
| browse_url | No | |
| jurisdiction | No | |
| applied_question_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-structured context by advertising that the list discloses what is NOT covered, which is important behavioral knowledge for an agent deciding whether a code is truly unavailable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the core purpose is front-loaded before the usage hints. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers both the coverage-gap angle and the jurisdiction-scoping angle. Minor gaps remain (list size or pagination behavior), but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single jurisdiction parameter is fully documented in the schema, so the baseline is 3. The description adds only mild extra value by noting the jurisdiction slug is the same slug a lookup consumes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('List the California codes and local ordinances available for lookup') and defines scope by adding what is not covered, which is more precise than a bare catalog description. It does not explicitly name the sibling tools (lookup_california_code_section, search_california_codes), so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use context: 'Useful before concluding that a code is unavailable, and for finding the exact document or jurisdiction slug that a lookup takes.' That tells the agent to consult this tool as a discovery step before the lookup/search siblings, but it names no tool explicitly and states no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_california_code_sectionARead-onlyIdempotentInspect
Look up the VERBATIM text of a California building, residential, fire, plumbing, mechanical, green (CALGreen), energy or existing-building code section, or a section of a California city or county zoning/municipal ordinance, by its section number. Use this whenever the user cites a section number ("CRC R602.10.2.3", "CBC 1004", "§ 17.60.090") or asks what a specific section says. Returns the official text with its citation, edition and a link to the full section. It returns code text only and does not determine whether a specific project complies.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Optional. The code the user named, so a number that exists in several codes returns the right one. An abbreviation or a name: "CBC", "CRC", "CFC", "CMC", "CPC", "CEC", "CEBC", "CALGreen", "CHBC", "California Fire Code". Omit when the user gave no code name. | |
| section | Yes | The section number exactly as cited, without the code name. Examples: "R602.10.2.3", "1004", "507.2", "17.60.090", "11B-206". | |
| code_edition | No | Optional. Which Title 24 cycle to read. California enforces the edition in force when the permit application was submitted, so a project filed in 2024 is enforced under "2022". Defaults to "current" (the 2025 cycle, in force since 2026-01-01). | |
| jurisdiction | No | Optional. A California city or county slug to scope the lookup to its own municipal code — "los-angeles", "san-jose", "marin-county". Omit for statewide Title 24 codes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | No | The date the codes were read as of (YYYY-MM-DD), or null for the current edition. |
| query | No | |
| status | Yes | found: at least one section matched. not_found: nothing matched — do NOT paraphrase a section that was not returned. error: the lookup could not run. |
| matches | No | |
| message | No | Guidance when status is not_found or error. |
| ambiguous | No | True when the number exists in more than one code. Pick by the code the user named and say which one you used; never merge them. |
| browse_url | No | |
| historical | No | True when this is NOT the current code. Say so to the user. |
| applied_question_url | No | Where to send a user whose real question is whether a specific project complies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine scope context beyond that: it returns verbatim official text with citation and edition, and explicitly does not render compliance judgments. The remaining behavioral gap (truncation/pagination of long sections) is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and resource, then the trigger condition, then the scope boundary. The long code-family enumeration costs some length but earns it by improving matching on user citations; no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-format detail is not required, and the description still summarizes it (text + citation + edition + link). Annotations cover safety, schema covers all four parameters, and the description covers trigger conditions and the compliance-limitation boundary. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented there, including the code abbreviations, edition enum semantics and jurisdiction slugs, so the baseline is 3. The description largely restates what the schema already says ('by its section number', naming code families) rather than adding new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (verbatim California code section) and enumerates the exact code families covered, including city/county ordinances. The 'by its section number' framing cleanly separates it from the sibling search_california_codes and list_california_code_documents without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('use this whenever the user cites a section number' with concrete citation examples) plus a scope exclusion ('does not determine whether a specific project complies'). It never names the sibling tools as alternatives for the non-section-number case, so routing to search/list is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_california_codesAInspect
Search California building codes (Title 24), state housing law and California city and county zoning/municipal codes by TOPIC, when the user does not already have a section number — e.g. "minimum attic access opening", "ADU setbacks in San Jose". Requires the user's GoCodebook account and uses 1 credit per search (also when nothing is found). If the user already cites a section number, use lookup_california_code_section instead — it is free. Returns ranked excerpts with citations and links. It does NOT decide whether a project complies.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to find, in plain words. Up to 300 characters. | |
| sources | No | Optional. Limit to federal law, state codes, or local ordinances. | |
| code_edition | No | Optional. Which Title 24 cycle to search; a permit filed in 2024 is enforced under "2022". Defaults to "current". | |
| jurisdiction | No | Optional. A California city or county slug ("san-jose", "marin-county") to search that place's own code together with the state codes. Omit for statewide. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | The search page's own notice about this query (a missing section, a zone code in the wrong city, a code the library does not hold, an address). Tell the user what it says. |
| as_of | No | |
| query | No | |
| status | Yes | found / no_results: the search ran and 1 credit was charged (a search with no results still costs a credit). signin_required: the user must connect their GoCodebook account. credits_required: the account has no search credits left; plans_url is an informational page about GoCodebook plans. rate_limited / error: nothing ran and nothing was charged. |
| message | No | |
| results | No | Ranked best-first. Each excerpt is a short passage, never the whole section. |
| plans_url | No | |
| historical | No | |
| section_ref | No | |
| credits_charged | No | |
| applied_question_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations leave the operational profile ambiguous (readOnlyHint=false, non-idempotent) but the description explains why: it consumes 1 credit per search, including fruitless searches, and requires a GoCodebook account. It also sets expectations on output (ranked excerpts with citations/links) and negates a capability users might assume (compliance decisions). That is substantive disclosure well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly four sentences, all load-bearing: scope, credit cost, alternative, return shape, and negative scope. The routing cue (no section number) and the sibling alternative are front-loaded, so nothing must be read twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, yet the description still characterizes them as ranked excerpts with citations. Account requirement, cost model, routing to the free sibling, and the compliance disclaimer cover everything an agent needs before invoking a credit-consuming search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, sources, code_edition, and jurisdiction are already documented in the schema; the baseline is 3. The description's example queries ('minimum attic access opening', 'ADU setbacks in San Jose') illustrate the topic-style phrasing expected for the query parameter, but add no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) plus the resource set (California building codes Title 24, state housing law, city/county municipal codes) and the topic-based input mode. It explicitly names the sibling used for the alternative case (lookup_california_code_section), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when the user does not already have a section number'), concrete query examples, and a named alternative with the condition that selects it ('If the user already cites a section number... it is free'). It also states the negative scope ('does NOT decide whether a project complies').
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.
3 tool updates
- Changed
list_california_code_documents1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "applied_question_url": { + "type": "string" + }, + "browse_url": { + "type": "string" + }, + "editions": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "in_force": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "id", + "label", + "in_force" + ], + "type": "object" + }, + "type": "array" + }, + "groups": { + "description": "Documents grouped by collection. Statewide: Title 24 first. Jurisdiction: the place's own documents, then those of the jurisdiction that also governs it.", + "items": { + "properties": { + "documents": { + "items": { + "properties": { + "edition": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "slug" + ], + "type": "object" + }, + "type": "array" + }, + "key": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "key", + "label", + "documents" + ], + "type": "object" + }, + "type": "array" + }, + "jurisdiction": { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name" + ], + "type": [ + "object", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "municipal": { + "description": "Statewide only: how many local ordinances are held.", + "properties": { + "document_count": { + "type": "integer" + }, + "jurisdiction_count": { + "type": "integer" + } + }, + "required": [ + "document_count", + "jurisdiction_count" + ], + "type": [ + "object", + "null" + ] + }, + "notes": { + "description": "Coverage caveats. Read them before telling a user a code is unavailable.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scope": { + "enum": [ + "statewide", + "jurisdiction" + ], + "type": "string" + }, + "status": { + "enum": [ + "ok", + "not_found", + "empty", + "error" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
- Changed
lookup_california_code_section2 fields changed- added
Input schema / properties / codeAdded value: +{ + "description": "Optional. The code the user named, so a number that exists in several codes returns the right one. An abbreviation or a name: \"CBC\", \"CRC\", \"CFC\", \"CMC\", \"CPC\", \"CEC\", \"CEBC\", \"CALGreen\", \"CHBC\", \"California Fire Code\". Omit when the user gave no code name.", + "type": "string" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ambiguous": { + "description": "True when the number exists in more than one code. Pick by the code the user named and say which one you used; never merge them.", + "type": "boolean" + }, + "applied_question_url": { + "description": "Where to send a user whose real question is whether a specific project complies.", + "type": "string" + }, + "as_of": { + "description": "The date the codes were read as of (YYYY-MM-DD), or null for the current edition.", + "type": [ + "string", + "null" + ] + }, + "browse_url": { + "type": "string" + }, + "historical": { + "description": "True when this is NOT the current code. Say so to the user.", + "type": "boolean" + }, + "matches": { + "items": { + "properties": { + "citation": { + "description": "Cite exactly this string.", + "type": "string" + }, + "document_slug": { + "type": [ + "string", + "null" + ] + }, + "document_title": { + "type": "string" + }, + "edition": { + "type": [ + "string", + "null" + ] + }, + "excerpt": { + "type": "string" + }, + "excerpt_truncated": { + "description": "True when the excerpt is cut short. It is never the whole section.", + "type": "boolean" + }, + "heading": { + "type": "string" + }, + "kind": { + "description": "text: an excerpt of the section's own words. subsection_list: the section has no text of its own and `excerpt` lists its subsections. empty: no text.", + "enum": [ + "text", + "subsection_list", + "empty" + ], + "type": "string" + }, + "section_number": { + "type": "string" + }, + "source_url": { + "description": "Link to the full section. Always show it to the user.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "document_title", + "section_number", + "heading", + "citation", + "source_url", + "kind", + "excerpt", + "excerpt_truncated" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "Guidance when status is not_found or error.", + "type": [ + "string", + "null" + ] + }, + "query": { + "properties": { + "code": { + "type": [ + "string", + "null" + ] + }, + "code_edition": { + "enum": [ + "current", + "2022", + "2019" + ], + "type": "string" + }, + "jurisdiction": { + "type": "string" + }, + "section": { + "type": "string" + } + }, + "required": [ + "section", + "jurisdiction", + "code_edition" + ], + "type": "object" + }, + "status": { + "description": "found: at least one section matched. not_found: nothing matched — do NOT paraphrase a section that was not returned. error: the lookup could not run.", + "enum": [ + "found", + "not_found", + "error" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
- Changed
search_california_codes1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "applied_question_url": { + "type": "string" + }, + "as_of": { + "type": [ + "string", + "null" + ] + }, + "credits_charged": { + "type": "integer" + }, + "hint": { + "description": "The search page's own notice about this query (a missing section, a zone code in the wrong city, a code the library does not hold, an address). Tell the user what it says.", + "type": [ + "object", + "null" + ] + }, + "historical": { + "type": "boolean" + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "plans_url": { + "type": [ + "string", + "null" + ] + }, + "query": { + "properties": { + "code_edition": { + "enum": [ + "current", + "2022", + "2019" + ], + "type": "string" + }, + "jurisdiction": { + "type": "string" + }, + "query": { + "type": "string" + }, + "sources": { + "items": { + "enum": [ + "federal", + "state", + "local" + ], + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "query", + "jurisdiction", + "code_edition" + ], + "type": "object" + }, + "results": { + "description": "Ranked best-first. Each excerpt is a short passage, never the whole section.", + "items": { + "properties": { + "citation": { + "description": "Cite exactly this string.", + "type": "string" + }, + "document_slug": { + "type": [ + "string", + "null" + ] + }, + "document_title": { + "type": "string" + }, + "edition": { + "type": [ + "string", + "null" + ] + }, + "excerpt": { + "type": "string" + }, + "excerpt_truncated": { + "type": "boolean" + }, + "heading": { + "type": "string" + }, + "section_number": { + "type": [ + "string", + "null" + ] + }, + "source_url": { + "description": "Link to the full section. Always show it.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "document_title", + "heading", + "citation", + "source_url", + "excerpt", + "excerpt_truncated" + ], + "type": "object" + }, + "type": "array" + }, + "section_ref": { + "type": [ + "object", + "null" + ] + }, + "status": { + "description": "found / no_results: the search ran and 1 credit was charged (a search with no results still costs a credit). signin_required: the user must connect their GoCodebook account. credits_required: the account has no search credits left; plans_url is an informational page about GoCodebook plans. rate_limited / error: nothing ran and nothing was charged.", + "enum": [ + "found", + "no_results", + "signin_required", + "credits_required", + "rate_limited", + "error" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
3 tool updates
- Changed
list_california_code_documents1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "applied_question_url": { - "type": "string" - }, - "browse_url": { - "type": "string" - }, - "editions": { - "items": { - "properties": { - "id": { - "type": "string" - }, - "in_force": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "id", - "label", - "in_force" - ], - "type": "object" - }, - "type": "array" - }, - "groups": { - "description": "Documents grouped by collection. Statewide: Title 24 first. Jurisdiction: the place's own documents, then those of the jurisdiction that also governs it.", - "items": { - "properties": { - "documents": { - "items": { - "properties": { - "edition": { - "type": [ - "string", - "null" - ] - }, - "slug": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "title", - "slug" - ], - "type": "object" - }, - "type": "array" - }, - "key": { - "type": "string" - }, - "label": { - "type": "string" - } - }, - "required": [ - "key", - "label", - "documents" - ], - "type": "object" - }, - "type": "array" - }, - "jurisdiction": { - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name" - ], - "type": [ - "object", - "null" - ] - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "municipal": { - "description": "Statewide only: how many local ordinances are held.", - "properties": { - "document_count": { - "type": "integer" - }, - "jurisdiction_count": { - "type": "integer" - } - }, - "required": [ - "document_count", - "jurisdiction_count" - ], - "type": [ - "object", - "null" - ] - }, - "notes": { - "description": "Coverage caveats. Read them before telling a user a code is unavailable.", - "items": { - "type": "string" - }, - "type": "array" - }, - "scope": { - "enum": [ - "statewide", - "jurisdiction" - ], - "type": "string" - }, - "status": { - "enum": [ - "ok", - "not_found", - "empty", - "error" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" -}New value: +null
- Changed
lookup_california_code_section1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "ambiguous": { - "description": "True when the number exists in more than one code. Pick by the code the user named and say which one you used; never merge them.", - "type": "boolean" - }, - "applied_question_url": { - "description": "Where to send a user whose real question is whether a specific project complies.", - "type": "string" - }, - "as_of": { - "description": "The date the codes were read as of (YYYY-MM-DD), or null for the current edition.", - "type": [ - "string", - "null" - ] - }, - "browse_url": { - "type": "string" - }, - "historical": { - "description": "True when this is NOT the current code. Say so to the user.", - "type": "boolean" - }, - "matches": { - "items": { - "properties": { - "citation": { - "description": "Cite exactly this string.", - "type": "string" - }, - "document_slug": { - "type": [ - "string", - "null" - ] - }, - "document_title": { - "type": "string" - }, - "edition": { - "type": [ - "string", - "null" - ] - }, - "excerpt": { - "type": "string" - }, - "excerpt_truncated": { - "description": "True when the excerpt is cut short. It is never the whole section.", - "type": "boolean" - }, - "heading": { - "type": "string" - }, - "kind": { - "description": "text: an excerpt of the section's own words. subsection_list: the section has no text of its own and `excerpt` lists its subsections. empty: no text.", - "enum": [ - "text", - "subsection_list", - "empty" - ], - "type": "string" - }, - "section_number": { - "type": "string" - }, - "source_url": { - "description": "Link to the full section. Always show it to the user.", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "document_title", - "section_number", - "heading", - "citation", - "source_url", - "kind", - "excerpt", - "excerpt_truncated" - ], - "type": "object" - }, - "type": "array" - }, - "message": { - "description": "Guidance when status is not_found or error.", - "type": [ - "string", - "null" - ] - }, - "query": { - "properties": { - "code_edition": { - "enum": [ - "current", - "2022", - "2019" - ], - "type": "string" - }, - "jurisdiction": { - "type": "string" - }, - "section": { - "type": "string" - } - }, - "required": [ - "section", - "jurisdiction", - "code_edition" - ], - "type": "object" - }, - "status": { - "description": "found: at least one section matched. not_found: nothing matched — do NOT paraphrase a section that was not returned. error: the lookup could not run.", - "enum": [ - "found", - "not_found", - "error" - ], - "type": "string" - } - }, - "required": [ - "status" - ], - "type": "object" -}New value: +null
- Changed
search_california_codes1 field changed- changed
Output schema / (root)Previous value: -{ - "properties": { - "applied_question_url": { - "type": "string" - }, - "as_of": { - "type": [ - "string", - "null" - ] - }, - "credits_charged": { - "type": "integer" - }, - "hint": { - "description": "The search page's own notice about this query (a missing section, a zone code in the wrong city, a code the library does not hold, an address). Tell the user what it says.", - "type": [ - "object", - "null" - ] - }, - "historical": { - "type": "boolean" - }, - "message": { - "type": [ - "string", - "null" - ] - }, - "query": { - "properties": { - "code_edition": { - "enum": [ - "current", - "2022", - "2019" - ], - "type": "string" - }, - "jurisdiction": { - "type": "string" - }, - "query": { - "type": "string" - }, - "sources": { - "items": { - "enum": [ - "federal", - "state", - "local" - ], - "type": "string" - }, - "type": "array" - } - }, - "required": [ - "query", - "jurisdiction", - "code_edition" - ], - "type": "object" - }, - "results": { - "description": "Ranked best-first. Each excerpt is a short passage, never the whole section.", - "items": { - "properties": { - "citation": { - "description": "Cite exactly this string.", - "type": "string" - }, - "document_slug": { - "type": [ - "string", - "null" - ] - }, - "document_title": { - "type": "string" - }, - "edition": { - "type": [ - "string", - "null" - ] - }, - "excerpt": { - "type": "string" - }, - "excerpt_truncated": { - "type": "boolean" - }, - "heading": { - "type": "string" - }, - "section_number": { - "type": [ - "string", - "null" - ] - }, - "source_url": { - "description": "Link to the full section. Always show it.", - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "document_title", - "heading", - "citation", - "source_url", - "excerpt", - "excerpt_truncated" - ], - "type": "object" - }, - "type": "array" - }, - "section_ref": { - "type": [ - "object", - "null" - ] - }, - "status": { - "description": "found / no_results: the search ran and 1 credit was charged (a search with no results still costs a credit). signin_required: the user must connect their GoCodebook account. credits_required: the account has no credits — send the user to upgrade_url. rate_limited / error: nothing ran and nothing was charged.", - "enum": [ - "found", - "no_results", - "signin_required", - "credits_required", - "rate_limited", - "error" - ], - "type": "string" - }, - "upgrade_url": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "status" - ], - "type": "object" -}New value: +null
3 tool updates
- Changed
list_california_code_documents1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "applied_question_url": { + "type": "string" + }, + "browse_url": { + "type": "string" + }, + "editions": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "in_force": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "id", + "label", + "in_force" + ], + "type": "object" + }, + "type": "array" + }, + "groups": { + "description": "Documents grouped by collection. Statewide: Title 24 first. Jurisdiction: the place's own documents, then those of the jurisdiction that also governs it.", + "items": { + "properties": { + "documents": { + "items": { + "properties": { + "edition": { + "type": [ + "string", + "null" + ] + }, + "slug": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "title", + "slug" + ], + "type": "object" + }, + "type": "array" + }, + "key": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "key", + "label", + "documents" + ], + "type": "object" + }, + "type": "array" + }, + "jurisdiction": { + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name" + ], + "type": [ + "object", + "null" + ] + }, + "message": { + "type": [ + "string", + "null" + ] + }, + "municipal": { + "description": "Statewide only: how many local ordinances are held.", + "properties": { + "document_count": { + "type": "integer" + }, + "jurisdiction_count": { + "type": "integer" + } + }, + "required": [ + "document_count", + "jurisdiction_count" + ], + "type": [ + "object", + "null" + ] + }, + "notes": { + "description": "Coverage caveats. Read them before telling a user a code is unavailable.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scope": { + "enum": [ + "statewide", + "jurisdiction" + ], + "type": "string" + }, + "status": { + "enum": [ + "ok", + "not_found", + "empty", + "error" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
- Changed
lookup_california_code_section1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ambiguous": { + "description": "True when the number exists in more than one code. Pick by the code the user named and say which one you used; never merge them.", + "type": "boolean" + }, + "applied_question_url": { + "description": "Where to send a user whose real question is whether a specific project complies.", + "type": "string" + }, + "as_of": { + "description": "The date the codes were read as of (YYYY-MM-DD), or null for the current edition.", + "type": [ + "string", + "null" + ] + }, + "browse_url": { + "type": "string" + }, + "historical": { + "description": "True when this is NOT the current code. Say so to the user.", + "type": "boolean" + }, + "matches": { + "items": { + "properties": { + "citation": { + "description": "Cite exactly this string.", + "type": "string" + }, + "document_slug": { + "type": [ + "string", + "null" + ] + }, + "document_title": { + "type": "string" + }, + "edition": { + "type": [ + "string", + "null" + ] + }, + "excerpt": { + "type": "string" + }, + "excerpt_truncated": { + "description": "True when the excerpt is cut short. It is never the whole section.", + "type": "boolean" + }, + "heading": { + "type": "string" + }, + "kind": { + "description": "text: an excerpt of the section's own words. subsection_list: the section has no text of its own and `excerpt` lists its subsections. empty: no text.", + "enum": [ + "text", + "subsection_list", + "empty" + ], + "type": "string" + }, + "section_number": { + "type": "string" + }, + "source_url": { + "description": "Link to the full section. Always show it to the user.", + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "document_title", + "section_number", + "heading", + "citation", + "source_url", + "kind", + "excerpt", + "excerpt_truncated" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "Guidance when status is not_found or error.", + "type": [ + "string", + "null" + ] + }, + "query": { + "properties": { + "code_edition": { + "enum": [ + "current", + "2022", + "2019" + ], + "type": "string" + }, + "jurisdiction": { + "type": "string" + }, + "section": { + "type": "string" + } + }, + "required": [ + "section", + "jurisdiction", + "code_edition" + ], + "type": "object" + }, + "status": { + "description": "found: at least one section matched. not_found: nothing matched — do NOT paraphrase a section that was not returned. error: the lookup could not run.", + "enum": [ + "found", + "not_found", + "error" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
- Added
search_california_codes
2 tool updates
- First observed
list_california_code_documents - First observed
lookup_california_code_section
Related MCP Connectors
Human-reviewed zoning answers with ordinance citations for covered US municipalities.
Source-cited, address-level answers on zoning, site constraints, permitting and what can be built.
California HOA law: Davis-Stirling Act text and 189 court decisions. Read-only, no auth.
Zoning, ADU eligibility, flood zone, setbacks, and buildability intelligence for U.S. parcels.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProfessional building code compliance assistant that interfaces with municipal building codes, helping contractors and builders navigate complex regulatory requirements with precision.1MIT
- AlicenseNot gradedqualityDmaintenanceProvides programmatic access to municipal codes, ordinances, and zoning regulations from thousands of US cities and counties through the Municode digital library, enabling search, navigation, and retrieval of local government legal documents.6MIT
- AlicenseCqualityBmaintenanceEnables Claude Code and Codex to retrieve building-code sections from your own licensed corpus via hybrid search, returning section-faithful citations with amendments and cross-references.6MIT
- AlicenseBqualityDmaintenanceEnables users to search and navigate over 22,500 indexed sections across 16 Canadian building codes and user guides. It supports keyword searches, hierarchy navigation, and optional full-text extraction from user-provided PDF documents.75MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.