Skip to content
Eden Engine

San Francisco Building Permits (DataSF)

datasfsocrata/sf-building-permits

Rows from the City and County of San Francisco's building permits dataset: permit number and type, block and lot, street address, description of the work, status and key dates, estimated and revised cost, existing and proposed use, units and stories, neighborhood and coordinates. Returns up to 50 rows per call; narrow them with a SoQL where clause on any column, for example block and lot or status. 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-building-permits" })

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

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "datasfsocrata/sf-building-permits", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "datasfsocrata/sf-building-permits", 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 filed_date DESC. Leave out for the portal's default order."
    },
    "where": {
      "type": "string",
      "maxLength": 500,
      "description": "Optional SoQL filter on any column, for example block = '3537' AND lot = '027'. 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": [
          "permit_number"
        ],
        "properties": {
          "adu": {
            "type": "string",
            "description": "Y when the permit involves an accessory dwelling unit."
          },
          "lot": {
            "type": "string",
            "description": "Assessor lot."
          },
          "block": {
            "type": "string",
            "description": "Assessor block."
          },
          "status": {
            "type": "string",
            "description": "Permit status, for example issued, expired or complete."
          },
          "zipcode": {
            "type": "string",
            "description": "ZIP code."
          },
          "location": {
            "type": "object",
            "description": "GeoJSON point, longitude then latitude.",
            "additionalProperties": true
          },
          "plansets": {
            "type": "string",
            "description": "Number of plan sets."
          },
          "record_id": {
            "type": "string",
            "description": "Record identifier."
          },
          "data_as_of": {
            "type": "string",
            "description": "When the source record was last changed."
          },
          "filed_date": {
            "type": "string",
            "description": "When the permit was filed."
          },
          "description": {
            "type": "string",
            "description": "Description of the proposed work."
          },
          "issued_date": {
            "type": "string",
            "description": "When the permit was issued."
          },
          "permit_type": {
            "type": "string",
            "description": "Permit type code."
          },
          "status_date": {
            "type": "string",
            "description": "When the status last changed."
          },
          "street_name": {
            "type": "string",
            "description": "Street name."
          },
          "existing_use": {
            "type": "string",
            "description": "Existing use."
          },
          "point_source": {
            "type": "string",
            "description": "Where the coordinates came from."
          },
          "proposed_use": {
            "type": "string",
            "description": "Proposed use."
          },
          "revised_cost": {
            "type": "string",
            "description": "Revised cost of the work as a string."
          },
          "approved_date": {
            "type": "string",
            "description": "When the permit was approved."
          },
          "permit_number": {
            "type": "string",
            "description": "Permit number."
          },
          "street_number": {
            "type": "string",
            "description": "Street number."
          },
          "street_suffix": {
            "type": "string",
            "description": "Street suffix, for example St."
          },
          "data_loaded_at": {
            "type": "string",
            "description": "When the row was loaded into the portal."
          },
          "estimated_cost": {
            "type": "string",
            "description": "Estimated cost of the work as a string."
          },
          "existing_units": {
            "type": "string",
            "description": "Existing dwelling units."
          },
          "proposed_units": {
            "type": "string",
            "description": "Proposed dwelling units."
          },
          "existing_occupancy": {
            "type": "string",
            "description": "Existing occupancy class."
          },
          "proposed_occupancy": {
            "type": "string",
            "description": "Proposed occupancy class."
          },
          "supervisor_district": {
            "type": "string",
            "description": "Supervisor district."
          },
          "permit_creation_date": {
            "type": "string",
            "description": "When the permit record was created."
          },
          "primary_address_flag": {
            "type": "string",
            "description": "Y for the permit's primary address."
          },
          "permit_type_definition": {
            "type": "string",
            "description": "Permit type in words, for example additions alterations or repairs."
          },
          "last_permit_activity_date": {
            "type": "string",
            "description": "Date of the latest activity on the permit."
          },
          "number_of_existing_stories": {
            "type": "string",
            "description": "Existing stories."
          },
          "number_of_proposed_stories": {
            "type": "string",
            "description": "Proposed stories."
          },
          "application_submission_method": {
            "type": "string",
            "description": "How the application was submitted."
          },
          "neighborhoods_analysis_boundaries": {
            "type": "string",
            "description": "Analysis neighborhood."
          },
          "existing_construction_type_description": {
            "type": "string",
            "description": "Existing construction type."
          },
          "proposed_construction_type_description": {
            "type": "string",
            "description": "Proposed construction type."
          }
        },
        "description": "One building permit. 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
}