Skip to content
Eden Engine

San Francisco 311 Service Requests (DataSF)

datasfsocrata/sf-311-cases

Rows from the City and County of San Francisco's 311 cases dataset: each service request with its filing and closing time, status, responsible agency, service category, address, neighborhood, supervisor district and coordinates. Returns up to 50 rows per call; narrow them with a SoQL where clause on any column, for example status_description or analysis_neighborhood. Every value comes back as a string. City and County of San Francisco data (DataSF) as served by Eden Engine, not an official City product.

activeper callv1

Price

$0.0026 per call

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.

Data source

City and County of San Francisco (DataSF)

Data from the City and County of San Francisco, published on the DataSF open data portal (data.sf.gov) under the Open Data Commons Public Domain Dedication and License (PDDL 1.0), the licence each of these datasets declares in its portal metadata (read 2026-10-20). No credit is required; credit offered as a courtesy: City and County of San Francisco, DataSF. Served by Eden Engine; not an official City and County of San Francisco product.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "datasfsocrata/sf-311-cases" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "datasfsocrata/sf-311-cases" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "datasfsocrata/sf-311-cases", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "datasfsocrata/sf-311-cases", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0026
Updated
Oct 20, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "limit"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "How many rows to return, 1 to 50. Required."
    },
    "order": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional SoQL ordering, for example requested_datetime DESC. Leave out for the portal's default order."
    },
    "where": {
      "type": "string",
      "maxLength": 500,
      "description": "Optional SoQL filter on any column, for example status_description = 'Closed' AND analysis_neighborhood = 'Mission'. Column names are those of the returned rows. Leave out for no filter."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Rows to skip, for reading further pages in the order given by `order`. Leave out to start at the first row."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "results"
  ],
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "service_request_id",
          "requested_datetime"
        ],
        "properties": {
          "lat": {
            "type": "string",
            "description": "Latitude as a string."
          },
          "long": {
            "type": "string",
            "description": "Longitude as a string."
          },
          "point": {
            "type": "object",
            "description": "Location with latitude and longitude strings.",
            "additionalProperties": true
          },
          "source": {
            "type": "string",
            "description": "How the request was received, for example Mobile/Open311."
          },
          "street": {
            "type": "string",
            "description": "Street name."
          },
          "address": {
            "type": "string",
            "description": "Request address."
          },
          "media_url": {
            "type": "object",
            "description": "Link to attached photos, when any.",
            "additionalProperties": true
          },
          "data_as_of": {
            "type": "string",
            "description": "When the source record was last changed."
          },
          "point_geom": {
            "type": "object",
            "description": "GeoJSON point, longitude then latitude.",
            "additionalProperties": true
          },
          "closed_date": {
            "type": "string",
            "description": "When the case was closed. Absent while it is open."
          },
          "service_name": {
            "type": "string",
            "description": "Request category, for example Street and Sidewalk Cleaning."
          },
          "status_notes": {
            "type": "string",
            "description": "Status note."
          },
          "data_loaded_at": {
            "type": "string",
            "description": "When the row was loaded into the portal."
          },
          "police_district": {
            "type": "string",
            "description": "Police district."
          },
          "service_details": {
            "type": "string",
            "description": "Further detail on the request."
          },
          "service_subtype": {
            "type": "string",
            "description": "Request subtype."
          },
          "updated_datetime": {
            "type": "string",
            "description": "When the case was last updated."
          },
          "agency_responsible": {
            "type": "string",
            "description": "Agency queue handling the case."
          },
          "requested_datetime": {
            "type": "string",
            "description": "When the request was filed, local time, ISO 8601 without offset."
          },
          "service_request_id": {
            "type": "string",
            "description": "Case number."
          },
          "status_description": {
            "type": "string",
            "description": "Case status, for example Closed or Open."
          },
          "supervisor_district": {
            "type": "string",
            "description": "Supervisor district number, as a string such as 9.00000."
          },
          "analysis_neighborhood": {
            "type": "string",
            "description": "Analysis neighborhood."
          },
          "neighborhoods_sffind_boundaries": {
            "type": "string",
            "description": "Neighborhood by the SF Find boundaries."
          }
        },
        "description": "One 311 service request. Columns beyond those listed, including computed region columns, pass through unchanged.",
        "additionalProperties": true
      },
      "description": "One entry per row; empty when the filter matches nothing."
    }
  },
  "description": "The rows the portal returned, in the portal's order.",
  "additionalProperties": false
}