{
 "protocolVersion": "0.3.0",
 "name": "NYC Ticket Facts",
 "description": "New York City parking-ticket hearing outcomes from the city's own decided-hearing records: dismissal and reduction rates for every violation type and borough, the defences and evidence that appear in dismissals, and the deadlines. Free JSON with signed receipts; the whole corpus priced.",
 "version": "2026.09.22",
 "url": "https://nycticketfacts.com/a2a",
 "preferredTransport": "JSONRPC",
 "supportedInterfaces": [
  {
   "url": "https://nycticketfacts.com/a2a",
   "protocolBinding": "JSONRPC",
   "transport": "JSONRPC",
   "protocolVersion": "0.3"
  }
 ],
 "provider": {
  "organization": "Axion Labs",
  "url": "https://getaxionlabs.com"
 },
 "documentationUrl": "https://nycticketfacts.com/for-agents",
 "capabilities": {
  "streaming": false,
  "pushNotifications": false,
  "stateTransitionHistory": false,
  "extensions": []
 },
 "securitySchemes": {
  "bearer": {
   "type": "http",
   "scheme": "bearer",
   "description": "Optional. An API key from https://nycticketfacts.com/agent/identity or https://nycticketfacts.com/api/key/free; every skill also answers without one."
  },
  "oauth2": {
   "type": "oauth2",
   "flows": {
    "clientCredentials": {
     "tokenUrl": "https://nycticketfacts.com/oauth/token",
     "scopes": {
      "read": "every free endpoint (they answer without a token too)",
      "bulk": "/api/bulk, the whole corpus in one pull",
      "changes": "/api/changes, records whose rates changed since a date"
     }
    }
   }
  }
 },
 "security": [],
 "defaultInputModes": [
  "application/json",
  "text/plain"
 ],
 "defaultOutputModes": [
  "application/json",
  "text/plain"
 ],
 "skills": [
  {
   "id": "violation",
   "name": "One violation type",
   "description": "One violation type by slug: its guide content, fine, dismissal and reduction rates, the defences and the evidence list. Slugs are the ones /api/violations and the site's /violations/{slug} pages use.",
   "tags": [
    "parking-ticket",
    "dismissal-rate",
    "defence"
   ],
   "examples": [
    "slug=bus-lane-camera",
    "slug=red-light-camera"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "violations",
   "name": "All violation types",
   "description": "Every violation type with its dismissal and reduction rates and decided-hearing counts, signed with a receipt.",
   "tags": [
    "index",
    "rates"
   ],
   "examples": [
    "skill=violations"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  },
  {
   "id": "boroughs",
   "name": "Borough outcomes",
   "description": "Hearing outcomes for all five boroughs.",
   "tags": [
    "boroughs",
    "rates"
   ],
   "examples": [
    "skill=boroughs"
   ],
   "inputModes": [
    "application/json",
    "text/plain"
   ],
   "outputModes": [
    "application/json",
    "text/plain"
   ]
  }
 ],
 "signatures": [
  {
   "protected": "eyJhbGciOiJFZERTQSIsImprdSI6Imh0dHBzOi8vbnljdGlja2V0ZmFjdHMuY29tLy53ZWxsLWtub3duL2p3a3MuanNvbiIsImtpZCI6Im55Y3RpY2tldGZhY3RzLWFuc3dlci0yMDI2LTA5LTA2IiwidHlwIjoiSk9TRSJ9",
   "signature": "ojmiKw0b9vg4FPvJy28cXZC61dJpFopnaNNHKZ1OX8IH3a9Jqi7nd9o6FTf1rEXUSazFqV_AQprY1LDJwiyxBw"
  }
 ]
}
