Free, certified Oklahoma records: property insurance, roofing, and permits (Norman, OKC).
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Free access needs no key -- a key only adds attribution and lifts the anonymous rate limit. Request one via https://oracle-api.skyline-roofing.workers.dev/llms.txt.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get one certified record by record_id, from either collection (ids are globally unique), e.g. "OK-PERMIT-2026-04835" (a permit) or "OK-ROOF-2026-0003" (an insurance/roofing fact). Includes sources and certification. To look a permit up by its permit number instead, use search_records with permit_number.
e.g. "OK-PERMIT-2026-04835" or "OK-ROOF-2026-0003"
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Get one certified record by record_id, from either collection (ids are globally unique), e.g. "OK-PERMIT-2026-04835" (a permit) or "OK-ROOF-2026-0003" (an insurance/roofing fact). Includes sources and certification. To look a permit up by its permit number instead, use search_records with permit_number.
| Argument | Type | Description |
|---|---|---|
| record_id* | string | e.g. "OK-PERMIT-2026-04835" or "OK-ROOF-2026-0003" |
{
"type": "object",
"required": [
"record_id"
],
"properties": {
"record_id": {
"type": "string",
"description": "e.g. \"OK-PERMIT-2026-04835\" or \"OK-ROOF-2026-0003\""
}
}
}Get the full revision lineage for a record -- every certified record it supersedes or was superseded by, oldest first. Use after get_record or search_records to see how a rule or permit record changed over time.
| Argument | Type | Description |
|---|---|---|
| record_id* | string | e.g. "OK-ROOF-2026-0003" |
{
"type": "object",
"required": [
"record_id"
],
"properties": {
"record_id": {
"type": "string",
"description": "e.g. \"OK-ROOF-2026-0003\""
}
}
}Poll for what changed since a date instead of re-pulling everything: newly certified records, superseded (old->new) pairs, and reconfirmed records. Example: {"since":"2026-10-01","collection":"ok_property_permits"} returns permits certified after that date (new weekly Oklahoma City reroofing permits). Sources are re-checked weekly (Sundays, 00:00 UTC). Omitting `collection` scopes to ok_roofing_insurance only. Free, no API key.
| Argument | Type | Description |
|---|---|---|
| city | string | ok_property_permits only: "Norman" or "Oklahoma City" (alias jurisdiction_city accepted). |
| since* | string | ISO 8601 date or datetime, e.g. "2026-10-01" |
| state | string | Two-letter state code, e.g. "OK". |
| topic | string | Exact topic / permit type, same values as search_records. |
| county | string | ok_property_permits only: "Cleveland" or "Oklahoma" (alias jurisdiction_county accepted). |
| subject | string | Exact category, same values as search_records. |
| collection | string | Which collection to poll; default ok_roofing_insurance. |
{
"type": "object",
"required": [
"since"
],
"properties": {
"city": {
"type": "string",
"description": "ok_property_permits only: \"Norman\" or \"Oklahoma City\" (alias jurisdiction_city accepted)."
},
"since": {
"type": "string",
"description": "ISO 8601 date or datetime, e.g. \"2026-10-01\""
},
"state": {
"type": "string",
"description": "Two-letter state code, e.g. \"OK\"."
},
"topic": {
"type": "string",
"description": "Exact topic / permit type, same values as search_records."
},
"county": {
"type": "string",
"description": "ok_property_permits only: \"Cleveland\" or \"Oklahoma\" (alias jurisdiction_county accepted)."
},
"subject": {
"type": "string",
"description": "Exact category, same values as search_records."
},
"collection": {
"enum": [
"ok_roofing_insurance",
"ok_property_permits"
],
"type": "string",
"description": "Which collection to poll; default ok_roofing_insurance."
}
}
}List Oracle's record collections with id, label, description, live record count, certification basis, jurisdiction scope and an example query. Call this FIRST: it shows that Oracle holds both Oklahoma insurance/roofing-regulation facts and 8,000+ Norman and Oklahoma City building/reroofing permit records. Free, no API key.
No arguments.
{
"type": "object",
"properties": {}
}Search certified Oklahoma records. Find reroofing and building permits (Norman 2015-present; Oklahoma City weekly residential reroofing), contractor activity, permits by address or street, a permit by number, plus Oklahoma insurance and roofing rules (contractor licensing, building code, carrier ratings, FORTIFIED roof grants). Examples: {"collection":"ok_property_permits","city":"Oklahoma City","q":"reroofing"}; {"collection":"ok_property_permits","q":"CAVINS ROOFING"}; {"collection":"ok_property_permits","permit_number":"ROOF-2026-04057"}; {"subject":"contractor_licensing","state":"OK"}. Free text goes in `q`; all other filters are exact-match, case-insensitive and combinable. Omitting `collection` searches ONLY ok_roofing_insurance (15 records) -- pass collection=ok_property_permits for permits (the response also points to it). Free, no API key. Call list_collections to see the roster.
| Argument | Type | Description |
|---|---|---|
| q | string | FREE-TEXT search (case-insensitive substring). Permits: matches permit category/type, address, contractor and permit number, e.g. "roofing", "CAVINS ROOFING", "W MAIN ST", "ROOF-2026-04057". Insurance: matches summary, detail and topic, e.g. "FORTIFIED", "Allstate", "continuing education". |
| tag | string | Exact tag. Insurance examples: "FORTIFIED", "contractor licensing", "agency M&A". Permit examples: "norman", "okc", "reroofing", "storm_shelter", "solar", "pool". |
| city | string | ok_property_permits only (CANONICAL name; `jurisdiction_city` is accepted as an alias). Exact city: "Norman" or "Oklahoma City". |
| limit | integer | Max records returned (default 50, max 200). |
| state | string |
| Two-letter state code. All records are "OK". |
| topic | string | Exact topic. Insurance: e.g. "fortified_roof_program_milestone", "roofing_contractor_annual_renewal_requirement". Permits: the permit type, e.g. "Residential Reroofing Permit". |
| county | string | ok_property_permits only (canonical; `jurisdiction_county` accepted as an alias). "Cleveland" (Norman) or "Oklahoma" (Oklahoma City). |
| offset | integer | Skip this many matches, for paging. |
| status | string | Insurance: record status, one of active, superseded, expired, proposed, rescinded (all current records are "active"). Permits: the permit status, e.g. "issued". |
| carrier | string | Insurance collection only. Exact carrier name, e.g. "Allstate Corp." or "Triangle Insurance Company". Most records have no carrier. |
| subject | string | Exact category. Insurance collection: underwriting, claims_handling, contractor_licensing, building_code, market_conduct, regulatory_filing, insurance_industry. Permits collection: the permit category, e.g. "Residential Reroofing" (Oklahoma City), "Residential", "Single Family", "Commercial Addition/Alteration", "Demolition" (Norman). `category` is accepted as an alias. |
| collection | string | Which collection to search. "ok_property_permits" = 8,484 Norman/Oklahoma City permit records (reroofing, construction, contractors, addresses). "ok_roofing_insurance" = 15 hand-certified insurance/roofing-regulation facts; this is the default when omitted. |
| permit_number | string | ok_property_permits only: exact permit number, e.g. "ROOF-2026-04057" (Oklahoma City) or "PRSF202305769" (Norman 2024+). Case-insensitive. Also shown as permit.permit_number on each record. |
| jurisdiction_city | string | Alias of `city`; prefer `city`. |
| jurisdiction_county | string | Alias of `county`; prefer `county`. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "FREE-TEXT search (case-insensitive substring). Permits: matches permit category/type, address, contractor and permit number, e.g. \"roofing\", \"CAVINS ROOFING\", \"W MAIN ST\", \"ROOF-2026-04057\". Insurance: matches summary, detail and topic, e.g. \"FORTIFIED\", \"Allstate\", \"continuing education\"."
},
"tag": {
"type": "string",
"description": "Exact tag. Insurance examples: \"FORTIFIED\", \"contractor licensing\", \"agency M&A\". Permit examples: \"norman\", \"okc\", \"reroofing\", \"storm_shelter\", \"solar\", \"pool\"."
},
"city": {
"type": "string",
"description": "ok_property_permits only (CANONICAL name; `jurisdiction_city` is accepted as an alias). Exact city: \"Norman\" or \"Oklahoma City\"."
},
"limit": {
"type": "integer",
"description": "Max records returned (default 50, max 200)."
},
"state": {
"type": "string",
"description": "Two-letter state code. All records are \"OK\"."
},
"topic": {
"type": "string",
"description": "Exact topic. Insurance: e.g. \"fortified_roof_program_milestone\", \"roofing_contractor_annual_renewal_requirement\". Permits: the permit type, e.g. \"Residential Reroofing Permit\"."
},
"county": {
"type": "string",
"description": "ok_property_permits only (canonical; `jurisdiction_county` accepted as an alias). \"Cleveland\" (Norman) or \"Oklahoma\" (Oklahoma City)."
},
"offset": {
"type": "integer",
"description": "Skip this many matches, for paging."
},
"status": {
"type": "string",
"description": "Insurance: record status, one of active, superseded, expired, proposed, rescinded (all current records are \"active\"). Permits: the permit status, e.g. \"issued\"."
},
"carrier": {
"type": "string",
"description": "Insurance collection only. Exact carrier name, e.g. \"Allstate Corp.\" or \"Triangle Insurance Company\". Most records have no carrier."
},
"subject": {
"type": "string",
"description": "Exact category. Insurance collection: underwriting, claims_handling, contractor_licensing, building_code, market_conduct, regulatory_filing, insurance_industry. Permits collection: the permit category, e.g. \"Residential Reroofing\" (Oklahoma City), \"Residential\", \"Single Family\", \"Commercial Addition/Alteration\", \"Demolition\" (Norman). `category` is accepted as an alias."
},
"collection": {
"enum": [
"ok_roofing_insurance",
"ok_property_permits"
],
"type": "string",
"description": "Which collection to search. \"ok_property_permits\" = 8,484 Norman/Oklahoma City permit records (reroofing, construction, contractors, addresses). \"ok_roofing_insurance\" = 15 hand-certified insurance/roofing-regulation facts; this is the default when omitted."
},
"permit_number": {
"type": "string",
"description": "ok_property_permits only: exact permit number, e.g. \"ROOF-2026-04057\" (Oklahoma City) or \"PRSF202305769\" (Norman 2024+). Case-insensitive. Also shown as permit.permit_number on each record."
},
"jurisdiction_city": {
"type": "string",
"description": "Alias of `city`; prefer `city`."
},
"jurisdiction_county": {
"type": "string",
"description": "Alias of `county`; prefer `county`."
}
}
}