An AI agent running outside Revit triggers an export, receives structured data, and produces a deliverable — without a human sitting at the Revit workstation. This is what makes bim-pdf different from every other Revit tool.
Most Revit AI tools run inside Revit: a plugin, a dockable panel, a chat window. They're useful for interactive sessions. They require Revit to be open, a human present, and the interaction to happen inside the Revit UI.
The agent handoff pattern is different. The agent lives outside Revit — in Claude Code, a script, a CI pipeline, or a scheduled job. It calls bim-cli to do the Revit work, receives structured output, and continues without any GUI interaction.
The agent receives a task: "Prepare the A-series sheets for permit submission. Generate a submittal log with sheet list, door count, and egress notes."
Step 1 — export the drawing set with BIM data
bim revit export --sheet "A-101,A-102,A-201,A-202" --bim --output ./output/permit
output/permit/
A-101.pdf First Floor Plan
A-101.elements.json
A-101.rooms.json
A-101.properties.json
A-102.pdf Second Floor Plan
A-102.elements.json
...
Revit does not need to stay open after this command completes.
Step 2 — read the structured data
The agent reads elements.json for each sheet to count doors and check required parameters:
cat output/permit/A-101.elements.json | jq '[.[] | select(.category=="Doors")] | length'
# 14
cat output/permit/A-101.elements.json | jq '[.[] | select(.category=="Doors") | {mark, family, level}]'
[
{"mark": "D-01", "family": "Single-Flush", "level": "Level 1"},
{"mark": "D-02", "family": "Single-Flush", "level": "Level 1"},
...
]
Step 3 — read room data for egress
cat output/permit/A-101.rooms.json | jq '[.[] | select(.area_sf < 500) | {name, number, area_sf}]'
Step 4 — generate the submittal log
The agent writes submittal_log.md:
## Permit Submittal — A-Series
### Sheet List
| Sheet | Title | Pages |
|---|---|---|
| A-101 | First Floor Plan | 1 |
| A-102 | Second Floor Plan | 1 |
### Door Count
- Total doors: 27 (14 on A-101, 13 on A-102)
- All doors have Mark parameter set
### Rooms
- 12 rooms on First Floor Plan
- Average area: 342 sf
Step 5 — deliver
The agent has: the PDF set in output/permit/, a structured submittal log, and any flagged issues. No human sat at Revit during any of this.
Every Revit tool that exists today requires a human in the loop at the Revit step. ProSheets, pyRevit, Dynamo scripts — all require someone to click, configure, and wait.
bim-cli's export is a CLI call. That means:
The PDF is the escalator. The sidecars are the stairs. Both come out of one command.
The sidecars follow the bim-pdf format spec. Each sidecar has a defined schema. An agent reading elements.json on any bim-pdf export gets the same structure, regardless of model complexity.
The PDF itself opens normally in Acrobat, Bluebeam, or any viewer. The BIM data is a separate layer. Nothing is lost for recipients without bim tooling.
iwr -useb https://bimcli.com/install.ps1 | iex