# SST Sales Tax Rate & Boundary Changes Feed

> SST Sales Tax Rate & Boundary Changes Feed is a paid API for AI agents from data.spencermcw.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-22).

Returns a paginated feed of quarterly sales-tax rate and boundary changes across Streamlined Sales Tax (SST) member states

## Facts

- Endpoint: GET https://data.spencermcw.com/v1/tax/changes?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/sst-sales-tax-rate-boundary-changes-feed-1c03dcac
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UneSH3OKv--6dkHdw-3Mu

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability sst-sales-tax-rate-boundary-changes-feed-1c03dcac
```

Example prompt: Show me all SST sales-tax rate changes that took effect on or after 2025-01-01 for Washington state, returning up to 50 records at a time.

## When to prefer this

Choose this endpoint when you need to detect or audit changes to SST sales-tax rates or boundaries over time — particularly for compliance pipelines, nightly diff jobs, or alerting systems that need to know what changed, when it changed, and what the old and new values were. Prefer this over the point-in-time rate lookup endpoint when your use case is change detection rather than current-rate retrieval.

## Known failure modes

- Invalid state code format (non-two-letter string) returns validation error
- Invalid since datetime format (not ISO 8601 with timezone) returns 400
- Cursor string not matching numeric pattern causes rejection
- Limit out of range (below 1 or above 100) returns 400
- Unknown entity enum value returns validation error
- Payment not provided or insufficient USDC triggers 402 Payment Required
- No changes matching filters returns empty records array with null cursor

## How this service works

Quarterly sales-tax rate and boundary changes in the Streamlined Sales Tax states

## Output

A paginated JSON response containing an array of change records (each with id, entity type, state, key, field name, old value, new value, effective date, detected_at timestamp, source SHA256 hashes for old and new source files, and method version), plus a next_cursor string for pagination (null when exhausted).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "limit": {
       "type": "integer",
       "maximum": 100,
       "minimum": 1
      },
      "since": {
       "type": "string",
       "format": "date-time",
       "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
      },
      "state": {
       "type": "string",
       "pattern": "^[A-Za-z]{2}$"
      },
      "cursor": {
       "type": "string",
       "pattern": "^\\d{1,12}$"
      },
      "entity": {
       "enum": [
        "rate",
        "zip4",
        "zip5",
        "address_records",
        "file"
       ],
       "type": "string"
      },
      "effective_from": {
       "type": "string",
       "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "data": {
       "type": "object",
       "required": [
        "records",
        "next_cursor"
       ],
       "properties": {
        "records": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "id",
           "entity",
           "state",
           "key",
           "field",
           "old",
           "new",
           "effective",
           "detected_at",
           "source_sha256_old",
           "source_sha256_new",
           "method_version"
          ],
          "properties": {
           "id": {
            "type": "string"
           },
           "key": {
            "type": "string"
           },
           "new": {
            "type": [
             "string",
             "null"
            ]
           },
           "old": {
            "type": [
             "string",
 
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/sst-sales-tax-rate-boundary-changes-feed-1c03dcac/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from data.spencermcw.com](https://www.zero.xyz/host/data.spencermcw.com/llms.txt)
