Skip to main content
Glama

Oracle — Skyline Certified Records

search_records

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoFREE-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".
tagNoExact tag. Insurance examples: "FORTIFIED", "contractor licensing", "agency M&A". Permit examples: "norman", "okc", "reroofing", "storm_shelter", "solar", "pool".
cityNook_property_permits only (CANONICAL name; `jurisdiction_city` is accepted as an alias). Exact city: "Norman" or "Oklahoma City".
limitNoMax records returned (default 50, max 200).
stateNoTwo-letter state code. All records are "OK".
topicNoExact topic. Insurance: e.g. "fortified_roof_program_milestone", "roofing_contractor_annual_renewal_requirement". Permits: the permit type, e.g. "Residential Reroofing Permit".
countyNook_property_permits only (canonical; `jurisdiction_county` accepted as an alias). "Cleveland" (Norman) or "Oklahoma" (Oklahoma City).
offsetNoSkip this many matches, for paging.
statusNoInsurance: record status, one of active, superseded, expired, proposed, rescinded (all current records are "active"). Permits: the permit status, e.g. "issued".
carrierNoInsurance collection only. Exact carrier name, e.g. "Allstate Corp." or "Triangle Insurance Company". Most records have no carrier.
subjectNoExact 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.
collectionNoWhich 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_numberNook_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_cityNoAlias of `city`; prefer `city`.
jurisdiction_countyNoAlias of `county`; prefer `county`.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • addedInput schema / properties / carrier / description
      Added value: +"Insurance collection only. Exact carrier name, e.g. \"Allstate Corp.\" or \"Triangle Insurance Company\". Most records have no carrier."
    • changedInput schema / properties / city / description
      Previous value: -"Jurisdiction city — relevant to ok_property_permits (e.g. \"Norman\", \"Oklahoma City\")"New value: +"ok_property_permits only (CANONICAL name; `jurisdiction_city` is accepted as an alias). Exact city: \"Norman\" or \"Oklahoma City\"."
    • changedInput schema / properties / collection / description
      Previous value: -"Which collection to search, e.g. \"ok_roofing_insurance\" (default) or \"ok_property_permits\". See list_collections for the current roster."New value: +"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."
    • addedInput schema / properties / collection / enum
      Added value: +[
      +  "ok_roofing_insurance",
      +  "ok_property_permits"
      +]
    • changedInput schema / properties / county / description
      Previous value: -"Jurisdiction county — relevant to ok_property_permits"New value: +"ok_property_permits only (canonical; `jurisdiction_county` accepted as an alias). \"Cleveland\" (Norman) or \"Oklahoma\" (Oklahoma City)."
    • addedInput schema / properties / jurisdiction_city
      Added value: +{
      +  "description": "Alias of `city`; prefer `city`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / jurisdiction_county
      Added value: +{
      +  "description": "Alias of `county`; prefer `county`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / limit / description
      Added value: +"Max records returned (default 50, max 200)."
    • addedInput schema / properties / offset / description
      Added value: +"Skip this many matches, for paging."
    • addedInput schema / properties / permit_number
      Added value: +{
      +  "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.",
      +  "type": "string"
      +}
    • changedInput schema / properties / q / description
      Previous value: -"Free-text search over claim summary/detail, or over permit type/address/contractor"New value: +"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\"."
    • addedInput schema / properties / state / description
      Added value: +"Two-letter state code. All records are \"OK\"."
    • addedInput schema / properties / status / description
      Added value: +"Insurance: record status, one of active, superseded, expired, proposed, rescinded (all current records are \"active\"). Permits: the permit status, e.g. \"issued\"."
    • addedInput schema / properties / subject / description
      Added value: +"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."
    • addedInput schema / properties / tag / description
      Added value: +"Exact tag. Insurance examples: \"FORTIFIED\", \"contractor licensing\", \"agency M&A\". Permit examples: \"norman\", \"okc\", \"reroofing\", \"storm_shelter\", \"solar\", \"pool\"."
    • addedInput schema / properties / topic / description
      Added value: +"Exact topic. Insurance: e.g. \"fortified_roof_program_milestone\", \"roofing_contractor_annual_renewal_requirement\". Permits: the permit type, e.g. \"Residential Reroofing Permit\"."
  2. Changed4 schema fields changed
    • addedInput schema / properties / city
      Added value: +{
      +  "description": "Jurisdiction city — relevant to ok_property_permits (e.g. \"Norman\", \"Oklahoma City\")",
      +  "type": "string"
      +}
    • addedInput schema / properties / collection
      Added value: +{
      +  "description": "Which collection to search, e.g. \"ok_roofing_insurance\" (default) or \"ok_property_permits\". See list_collections for the current roster.",
      +  "type": "string"
      +}
    • addedInput schema / properties / county
      Added value: +{
      +  "description": "Jurisdiction county — relevant to ok_property_permits",
      +  "type": "string"
      +}
    • changedInput schema / properties / q / description
      Previous value: -"Free-text search over claim summary/detail"New value: +"Free-text search over claim summary/detail, or over permit type/address/contractor"
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does well: it discloses cost ("Free, no API key"), matching semantics (free text in `q`, other filters exact-match/case-insensitive/combinable), and default-collection behavior. It does not describe return shape or pagination interaction between limit/offset, but coverage is otherwise strong.

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?

Front-loaded with purpose, then scope, examples, and defaults. The four JSON examples are dense but each demonstrates a distinct query pattern (collection+city+q, contractor, permit_number, subject+state). Slightly long but nearly every clause earns its place.

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

Completeness4/5

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

For a 15-parameter, zero-required search tool with no output schema and no annotations, the description supplies the missing behavioral context: default collection, matching rules, and cost. Only return-format/pagination detail is left implicit, which the schema's limit/offset partially cover.

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% (baseline 3), and the description adds genuine meaning on top: the free-text-vs-exact-match split and filter combinability rules, plus the default collection when omitted. These clarify how to drive the 15 parameters beyond what the schema repeats.

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+resource ("Search certified Oklahoma records") and enumerates the concrete domains searched: permits, contractor activity, permit-by-number, and insurance/roofing rules. An agent can immediately distinguish this retrieval tool from the get_record/list_collections siblings.

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 explains the default behavior ("Omitting `collection` searches ONLY ok_roofing_insurance (15 records)") and the alternative ("pass collection=ok_property_permits for permits"), plus routes the agent to list_collections to see the roster. This is exactly the when/when-not/alternative guidance the dimension rewards.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources