Zoning envelope and massing study from an NYC address

install bim-cli · windows · per-user · no admin
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'iwr -useb https://bimcli.com/install.ps1 -OutFile $env:TEMP\bim-install.ps1; powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMP\bim-install.ps1'

Give your agent a New York City street address. It looks up the lot and its zoning, works out the largest building the district allows, fits a massing that uses the permitted floor area, checks it against the rules, and builds the study in Revit with the neighbourhood around it. You get an 8-sheet PDF, stamped as a feasibility study, with the data attached.

This is an early zoning envelope study, not a design and not a zoning determination. The example below is one real run on bim 0.34.0 with Claude Code and Revit 2026.

All eight sheets of the 3616 Surf Avenue feasibility set tiled in a grid in the pdfv viewer: cover, zoning, flood, site plan, massing, sun and shadow, urban elevations and views
The finished set for 3616 Surf Avenue, Coney Island, opened with bim pdfv open --view grid.

Ask your agent

Copy this prompt into your AI coding tool. The site and zoning steps run anywhere bim does; the model and sheets need Revit open on the same PC.

paste into your AI coding tool
Make a zoning envelope and massing feasibility study for <NYC street address>.

Step 1 - install bim-cli if it is not already installed: powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'iwr -useb https://bimcli.com/install.ps1 -OutFile $env:TEMP\bim-install.ps1; powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMP\bim-install.ps1'

Step 2 - refresh PATH: pwsh: $env:Path += ";$env:LOCALAPPDATA\bim-cli"

Step 3 - look up the site and save each result: bim site parcel.lookup --address "<address>" --geometry then, with the lot's lat/lon: bim site zoning.lookup, flood.lookup, elevation.lookup --timeout 30s, e-designation.lookup, hurricane-zone.lookup, stormwater-flood.lookup and seismic.lookup, and bim site satellite.map --outline --out satellite.png

Step 4 - from the district's bulk rules in the NYC Zoning Resolution, work out the maximum zoning envelope for the lot and a massing that uses the permitted floor area. If the lot is in a FEMA flood zone, raise the first floor to the design flood elevation. Write the rules you applied as a ruleset, check the massing with bim rules check, and cite the section for every number.

Step 5 - in Revit, use bim revit exec to build the envelope tiers (transparent), the massing storey by storey and the neighbouring buildings from NYC Open Data footprints. Add sun and shadow, view, elevation and section studies, lay out the sheets, then bim revit export-sheets.

Step 6 - stamp the PDF "FEASIBILITY - NOT FOR CONSTRUCTION", attach the data with bim pdf package and open the result in the grid view of bim pdfv open.

Say what you assumed (street widths, shoreline, waterfront status) and what a professional still has to check. Do not present this as a zoning determination.

bim gives the agent the parts: public site data, a rules checker, Revit and the PDF tools. There is no single feasibility command. The zoning arithmetic and the Revit scripts are the agent's own work, written for the district and the lot in front of it, so read its numbers and citations the way you would read a junior colleague's.

1. Look up the site

The parcel lookup returns the lot, its tax block and lot number and, with --geometry, the lot polygon. Every other lookup takes the lot's latitude and longitude.

bim site parcel.lookup --address "3616 Surf Avenue, Brooklyn, NY" --geometry
bim site zoning.lookup --lat 40.5727 --lon -74.0018
bim site flood.lookup --lat 40.5727 --lon -74.0018
bim site elevation.lookup --lat 40.5727 --lon -74.0018 --timeout 30s
bim site e-designation.lookup --lat 40.5727 --lon -74.0018
bim site hurricane-zone.lookup --lat 40.5727 --lon -74.0018
bim site stormwater-flood.lookup --lat 40.5727 --lon -74.0018
bim site seismic.lookup --lat 40.5727 --lon -74.0018
bim site satellite.map --lat 40.5727 --lon -74.0018 --outline --out satellite.png

For 3616 Surf Avenue the lookups returned district R7-3 with a C2-4 overlay, a 27,588 sf lot, FEMA zone AE with a base flood elevation of 10 ft, and ground at about 9.1 ft (USGS). The elevation service can be slow, hence the longer timeout. The FEMA flood zone lookup and the site analysis report explain these layers in more detail.

2. Work out the envelope and the massing

From the district's bulk rules the agent works out the largest building the zoning allows (the envelope) and a massing that fits inside it. In the example the lot sits on a waterfront block, so the heights, tiers and tower limits come from ZR 62-343 rather than the ordinary district tables. The envelope rises in tiers to 375 ft. The massing is a 21-storey tower on a base, 137,938 sf, which is a floor area ratio of 5.00, the district maximum. The first floor is raised to the design flood elevation of 12 ft (base flood elevation plus 2 ft).

The agent writes the rules it applied as a ruleset, with a citation for each, and checks the massing against it:

bim rules check --facts facts.lp --ruleset zr-ruleset
{"message": "Compliant: no violations, and every rule had the inputs it needed."}

The same massing with its first floor at grade fails one rule, the lowest-floor requirement in Appendix G of the NYC Building Code:

bim rules check --facts facts-atgrade.lp --ruleset zr-ruleset
{"message": "1 violation(s). Also 0 at-risk, 0 pre-existing, 0 provisional pass(es) and 0 input(s) not supplied."}

3. Model it in Revit

bim revit exec runs C# against the open Revit model, one script per step, with its inputs passed as JSON (--args-json @file.json). In the example the agent built the envelope tiers as transparent solids, the massing storey by storey, and 273 neighbouring buildings from NYC Open Data footprints, then the sun and shadow studies, the view analysis, the urban elevations and the site sections. The example sheets use a bim-cli title block; ask the agent to use your office's sheet template instead.

bim revit exec --file envelope.cs --args-json @envelope.json
bim revit exec --file floor.cs --args-json @storeys-4-7.json
bim revit export-sheets --sheets G-001,Z-101,F-101,A-001,A-101,A-301,A-302,A-303 --output pdf --timeout 300

Revit exports the sheets sorted by number, so the agent puts the cover first again with bim pdf page.collect. Running Revit from a terminal is covered in headless Revit; exporting and splitting sheet sets in Revit PDF export. To write the flood zone into a model's parameters instead, see flood zone into Revit.

4. Stamp, package and review

bim pdf page.collect pdf/export-sheets.pdf --pages 7,8,6,1,2,3,4,5 --out sheets.pdf
bim pdf stamp.add --file sheets.pdf --text "FEASIBILITY - NOT FOR CONSTRUCTION" --out stamped.pdf
bim pdf package --file stamped.pdf --metadata scheme.json --metadata envelope.json --metadata rules-check.json --out 3616-surf-ave-feasibility.pdf
bim pdfv open --file 3616-surf-ave-feasibility.pdf --view grid

bim pdf package attaches the massing, the envelope and the rules result to the PDF, so whoever receives it can read the numbers as data, not only as drawings. The grid view of bim pdfv open tiles every page so you can check the whole set at a glance.

5. Share it (optional)

With bim's Google driver signed in, the agent can upload the package, add a row to a tracking sheet and leave an email draft for you to read and send yourself:

bim google drive upload --input 3616-surf-ave-feasibility.pdf --parent <folder id>
bim google sheets append --spreadsheet <sheet id> --sheet Sites < row.json
bim google gmail drafts create --to <client address> --subject "3616 Surf Avenue - feasibility" --body-file note.txt

The draft is not sent.

The sheet set

Sheet G-001, cover: the transparent zoning envelope with the solid massing among grey neighbouring buildings, a satellite image with the lot outlined, the sheet index and a summary of the study
G-001 cover and sheet index
Sheet Z-101, zoning: the envelope tiers labelled with their heights and Zoning Resolution sections, and a table of each rule with its citation, limit, scheme value and result
Z-101 zoning envelope and rules check
Sheet F-101, flood: a section through the raised first floor with grade, base flood elevation and design flood elevation lines, and flood, hurricane and stormwater notes
F-101 flood section
Sheet A-001, site plan: the lot with tier outlines, rear yard and setback dimensions and the tower footprint
A-001 site plan
Sheet A-101, massing: the tower in its neighbourhood and a floor area table by storey with floor elevations
A-101 massing and floor area
Sheet A-301, sun and shadow: nine shadow plans for the solstices and equinox and a sun path diagram
A-301 sun and shadow
Sheet A-302: two urban elevations and two site sections with the tower among its neighbours, and a key plan
A-302 urban elevations and sections
Sheet A-303, views: a view fan from the tower showing which directions see water, and a 3D view of the context
A-303 view analysis

What you need

Limits

For a quicker first look at a US address, start with the site analysis report or the flood zone lookup.

related

Site Analysis Report from an Address

FEMA Flood Zone Lookup by Address

FEMA Flood Zone into Revit Parameters from the CLI

Headless Revit — Run Revit Unattended from the CLI

Export Revit Sheets to PDF from the Command Line

install bim-cli · windows · per-user · no admin
powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'iwr -useb https://bimcli.com/install.ps1 -OutFile $env:TEMP\bim-install.ps1; powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMP\bim-install.ps1'

Then ask your assistant to run bim describe --json. See what the installer does.