Skip to main content
Glama

SOS.city public record

Search the records themselves

search_records
Read-only

The records SOS.city reads from agencies' open data, one row each: building permits, code-enforcement cases, inspections, certificates of occupancy, new business registrations, grants, weather alerts, earthquakes, US wildfires (NIFC), SCE power shutoffs, satellite fire detections (NASA FIRMS), bank branch openings, closings and mergers (FDIC), current drug shortages (openFDA) and county night-light drops that estimate power outages (NASA Black Marble). Filter by place, kind, ZIP or street address. Each row links to the agency's original. History depends on the plan (Free: 30 days, 100 rows). full_history=true (1 credit) and limit over 100 (1 credit per extra 100 rows, up to 1,000) are paid from the API key's credits; see get_store.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_records"
  }
}

Input Schema

NameRequiredDescriptionDefault
zipNoFive-digit ZIP.
kindNo
limitNoOver 100 is paid (1 credit per extra 100 rows).
placeNoPlace id, e.g. 'us-ca-los-angeles'.
sinceNoYYYY-MM-DD.
addressNoStreet address, e.g. '200 N Spring St'. Matches by house number and street name.
full_historyNoPast the plan's history window (1 credit).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "permit",
      -  "code_case",
      -  "inspection",
      -  "cofo",
      -  "business",
      -  "grant",
      -  "weather_alert",
      -  "earthquake",
      -  "wildfire",
      -  "power_shutoff"
      -]New value: +[
      +  "permit",
      +  "code_case",
      +  "inspection",
      +  "cofo",
      +  "business",
      +  "grant",
      +  "weather_alert",
      +  "earthquake",
      +  "wildfire",
      +  "power_shutoff",
      +  "fire_detection",
      +  "bank_branch",
      +  "drug_shortage",
      +  "lights_drop"
      +]
  2. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations only cover read-only safety; the description adds substantial behavior the schema does not: history windows depend on plan (Free: 30 days, 100 rows), full_history and limit>100 consume credits charged to the API key, and each row links back to the agency's original source. It still omits sorting, pagination, and what happens when limit exceeds the plan cap.

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 the resource definition, then filtering, then pricing/history caveats — a sensible order. The long enumeration of data sources is verbose but does double duty mapping to the kind enum; the limit-credit sentence slightly duplicates the schema's own limit description.

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

Completeness3/5

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

With no output schema, the description covers row shape only loosely ('one row each', 'links to the agency's original') and says nothing about ordering, paging through results, or truncation behavior. For a 7-parameter search tool supporting a 1,000-row ceiling, pagination guidance is the notable missing piece.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 86% and the schema already documents zip, place, address matching, since format, limit pricing, and full_history cost. The description's 'filter by place, kind, ZIP or street address' and credit notes restate rather than extend those semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete resource — agency open-data records, one row each — and enumerates the record kinds (permits, code cases, earthquakes, drug shortages, etc.), so an agent knows exactly what comes back. The title's 'the records themselves' implicitly contrasts with search_library, but no sibling is named in the description, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains how to narrow results ('Filter by place, kind, ZIP or street address') and discloses plan-based history limits plus credit costs, which helps an agent decide whether to call it. However, it never says when to prefer this over search_library or request_record, nor when-not to use it beyond the soft cost signal.

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