# Oracle — Skyline Certified Records

> Free, certified Oklahoma records: property insurance, roofing, and permits (Norman, OKC).

- name: io.github.Skyline-Roofing/oracle-api
- version: 2.2.0
- connection class: R0 (autonomous)
- trust: 76/100 flags: no-repository
- quality: 63/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.Skyline-Roofing%2Foracle-api
- tools: https://api.protogrid.dev/v1/servers/io.github.Skyline-Roofing%2Foracle-api/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "oracle-api": {
      "type": "http",
      "url": "https://oracle-api.skyline-roofing.workers.dev/mcp",
      "headers": {
        "x-api-key": "${X_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`.

## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 35
- drivers: +reachable +uptime-94% +updated-23d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 63/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: search_records (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_record (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); list_changes_since (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,615 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- fail `stability.rug_pull`: 5 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 1,615 tokens to load them all
- tool set hash: 725b0d23b95acfa87ec11f8d7fd5c3dc
- tools last changed: 2026-10-02T15:23:49.067Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.Skyline-Roofing/oracle-api.svg)](https://protogrid.dev/servers/io.github.Skyline-Roofing/oracle-api)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-02 `list_changes_since` changed (description, inputSchema)
  - before: Poll for what's changed since a given date/time instead of re-pulling the whole dataset: newly certified records, superseded (old->new) pairs, and reconfirmed records. Underlying sources are re-checked weekly (Sundays, 00:00 UTC). Pass `collection` to scope to one domain; omitting it scopes to ok_roofing_insurance only.
  - after: 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.
- 2026-10-02 `get_record_history` changed (description, inputSchema)
  - before: Get the full revision lineage for a record — every certified record it supersedes or was superseded by, oldest first.
  - after: 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.
- 2026-10-02 `get_record` changed (description, inputSchema) **meaning changed**
  - before: Get a single certified record by its record_id (looks up across every collection — record ids are globally unique).
  - after: 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.
- 2026-10-02 `search_records` changed (description, inputSchema) **meaning changed**
  - before: Search Skyline's certified records across Oklahoma property insurance, roofing regulation, insurance-industry news, and property/construction permits. Free — no API key required. All params optional and combinable. Pass `collection` to scope to one domain (e.g. `ok_property_permits`); omitting it scopes to `ok_roofing_insurance` only — call list_collections first to see the current roster.
  - after: 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.
- 2026-10-02 `list_collections` changed (description) **meaning changed**
  - before: List Oracle's currently available record collections — id, label, description, record count, certification basis, and jurisdiction scope. Call this first if you don't already know what data Oracle serves, or to discover new collections beyond the one you already know about.
  - after: 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.
- 2026-09-27 `list_changes_since` changed (description, inputSchema)
  - before: Poll for what's changed since a given date/time instead of re-pulling the whole dataset: newly certified records, superseded (old->new) pairs, and reconfirmed records. Underlying sources are re-checked weekly (Sundays, 00:00 UTC).
  - after: Poll for what's changed since a given date/time instead of re-pulling the whole dataset: newly certified records, superseded (old->new) pairs, and reconfirmed records. Underlying sources are re-checked weekly (Sundays, 00:00 UTC). Pass `collection` to scope to one domain; omitting it scopes to ok_roofing_insurance only.
- 2026-09-27 `get_record` changed (description) **meaning changed**
  - before: Get a single certified record by its record_id.
  - after: Get a single certified record by its record_id (looks up across every collection — record ids are globally unique).
- 2026-09-27 `search_records` changed (description, inputSchema) **meaning changed**
  - before: Search Skyline's certified (human-reviewed) records on Oklahoma property insurance, roofing regulation, and insurance-industry news (carrier ratings, agency M&A). Free — no API key required. All params optional and combinable.
  - after: Search Skyline's certified records across Oklahoma property insurance, roofing regulation, insurance-industry news, and property/construction permits. Free — no API key required. All params optional and combinable. Pass `collection` to scope to one domain (e.g. `ok_property_permits`); omitting it scopes to `ok_roofing_insurance` only — call list_collections first to see the current roster.
- 2026-09-27 `list_collections` added
  - List Oracle's currently available record collections — id, label, description, record count, certification basis, and jurisdiction scope. Call this first if you don't already know what data Oracle serves, or to discover new collections beyond the one you already know about.

Full history: https://api.protogrid.dev/v1/servers/io.github.Skyline-Roofing%2Foracle-api/changes

## Remotes

- https://oracle-api.skyline-roofing.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 0.9433962)

## Packages

_none_

## Tools (5)

- `get_record`: 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.
- `get_record_history`: 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.
- `list_changes_since`: 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.
- `list_collections`: 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.
- `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.
