---
title: "Local property bill & ordinance brief (cited)"
method: POST
path: "/api/locus-local-policy-brief"
tags: ["data", "search", "real-estate", "property-research", "legal", "regulatory", "government", "citations", "property-policy", "real-estate-bills", "ordinance-analysis", "zoning", "housing-policy", "tax", "due-diligence", "x402", "category:policy"]
---

# Local property bill & ordinance brief (cited)

`POST /api/locus-local-policy-brief`

## Request

- Base URL: `https://api.locus.report`
- URL: `https://api.locus.report/api/locus-local-policy-brief`
- Auth: one of:
  - API key in header `PAYMENT-SIGNATURE`
  - API key in header `Authorization`

Property-policy brief with cited bills, agendas, ordinances, and zoning, tax, fee, bond, housing, or permit-change records for an address, ZIP, city, or county. Use this when you need the full matched set, bill-text provisions, status history and property-class mapping. Use locus_local_legislation instead when you only need one current headline bill for an address. Check the cited rule and date; no legal or political advice or forecast. npx @velinussage/locus-agent-skill add.

## Request body

- object: Flexible US place string (street address, ZIP, city, county, or city/state) plus a Locus intent. Resolves governing legal geographies before charge; cold geographies return a free diagnostic.
  - `place` string, required: Flexible US place string: street address, ZIP, city, county, or city/state. Locus resolves governing jurisdictions before searching property bills, ordinances, agendas, and code artifacts.
  - `intent` 'renter_due_diligence' | 'homebuyer_due_diligence' | 'small_business_siting' | 'community_organizer_journalist', required
  - `maxSignals` integer, required
  - `lookbackMonths` integer
  - `context` string
  - `followUp` string

## Response `200`

Successful paid artifact, or a free pre-charge diagnostic when the request is outside current coverage.

- union: A `kind`-discriminated union: `local_policy_brief` for paid cited policy context, or `policy_coverage_diagnostic` for a free pre-charge diagnostic.
  - object
    - `kind` 'local_policy_brief', required
    - `id` string, required
    - `generatedAt` string, required
    - `place` object, required
      - `input` string, required
      - `resolved` string
      - `jurisdictionIds` string[], required
      - `displayName` string
    - `intent` string, required
    - `policyRulesetVersion` string, required
    - `artifacts` object[], required
      - `artifactId` string, required
      - `jurisdictionId` string, required
      - `jurisdictionName` string, required
      - `level` 'state' | 'county' | 'city', required
      - `artifactType` 'bill' | 'session_law' | 'statute' | 'ordinance' | 'resolution' | 'agenda_item' | 'code_section', required
      - `officialId` string, required
      - `title` string, required
      - `summary` string
      - `status` 'introduced' | 'in_committee' | 'adopted' | 'enacted' | 'codified' | 'repealed' | 'failed' | 'not_published' | 'unknown', required
      - `introducedAt` string
      - `actionDate` string
      - `effectiveDate` string
      - `textVersions` unknown[], required
        - unknown
      - `actions` unknown[], required
        - unknown
      - `votes` unknown[], required
        - unknown
      - `affectedDomains` string[], required
      - `affectedGeographies` string[], required
      - `rateChanges` object[]
        - `kind` 'property_tax' | 'fee' | 'levy' | 'bond', required
        - `label` string, required
        - `unit` 'cents_per_100' | 'usd' | 'percent', required
        - `fromValue` number
        - `toValue` number, required
        - `deltaValue` number
        - `extractedFrom` 'title' | 'summary' | 'text', required
        - `sourceExcerpt` string, required
      - `excerpts` string[]
      - `citations` object[], required
        - `sourceName` string, required
        - `sourceUrl` string, uri, required
        - `fetchedAt` string, required
        - `recordId` string, required
        - `locator` string
      - `caveats` string[], required
    - `signals` object[], required
      - `signalId` string, required
      - `artifactId` string, required
      - `localityMatch` 'direct' | 'jurisdictional' | 'statewide' | 'weak', required
      - `relevance` string[], required
      - `boundedClaim` string, required
      - `whyRelevant` string, required
      - `whatItDoesNotProve` string, required
      - `confidence` 'low' | 'medium' | 'high', required
      - `rateChange` object
        - `kind` 'property_tax' | 'fee' | 'levy' | 'bond', required
        - `label` string, required
        - `unit` 'cents_per_100' | 'usd' | 'percent', required
        - `fromValue` number
        - `toValue` number, required
        - `deltaValue` number
        - `extractedFrom` 'title' | 'summary' | 'text', required
        - `sourceExcerpt` string, required
      - `operativeProvision` string
      - `citations` object[], required
        - `sourceName` string, required
        - `sourceUrl` string, uri, required
        - `fetchedAt` string, required
        - `recordId` string, required
        - `locator` string
    - `citations` object[], required
      - `sourceName` string, required
      - `sourceUrl` string, uri, required
      - `fetchedAt` string, required
      - `recordId` string, required
      - `locator` string
    - `caveats` string[], required
    - `refinement` object
      - `context` object
        - `input` string, required
        - `emphasizedDomains` string[], required
        - `rationale` string[], required
      - `followUp` object
        - `question` string, required
        - `status` 'answered' | 'gated' | 'unsupported', required
        - `answer` string[], required
        - `gatedReason` string
        - `gatedReasonCode` string
        - `citations` object[], required
          - `sourceName` string, required
          - `sourceUrl` string, uri, required
          - `fetchedAt` string, required
          - `recordId` string, required
          - `locator` string
        - `caveats` string[], required
  - object
    - `kind` 'policy_coverage_diagnostic', required
    - `place` object, required
      - `input` string, required
      - `resolved` string
      - `jurisdictionIds` string[]
      - `coverageStatus` 'unsupported' | 'no_policy_artifacts' | 'no_relevant_policy', required
    - `intent` string, required
    - `charged` false, required
    - `message` string, required
    - `candidateSources` object[], required
      - `level` 'state' | 'county' | 'city', required
      - `sourceName` string, required
      - `sourceUrl` string, uri, required
      - `artifactTypes` string[], required
    - `whatWeWouldNeed` string[], required
    - `requestCoverage` object
      - `tool` string, required
      - `endpoint` string, required
      - `note` string, required
    - `caveats` string[], required

## Other responses

- `400`: Invalid request body.
- `402`: Payment Required. For x402 v2, repeat the identical request with a valid PAYMENT-SIGNATURE header (legacy X-PAYMENT is accepted for compatibility), or use Authorization: Payment for MPP Tempo when advertised in x-payment-info.offers.

---

[API](https://skmtc.dev/locus/apis/locus-api.md) · [All operations](https://skmtc.dev/locus/apis/locus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/locus/apis/locus-api/revisions/ba7786b74adb?raw)
