revit-knowledge5 toolsLooks up the Revit API. It finds a member, compares Revit years and says which years have it.
The IcZ SuiteTools turn slow, error-prone MEP coordination work into one-click operations — twenty-one modeless tools on one shared library, and an MCP bridge an agent can drive. Every tool scans before it writes, and every write is one undoable transaction.
Built and used in-house by @MrGezz, BIM coordinator and Revit API developer · the implementation stays in a private repository; this page documents capabilities and architecture · Get in touch on GitHub
Every tool window further down is a live, clickable HTML mockup — hover, toggle and scroll inside the frames, or pop them out full size. Press ? for the keyboard.
| Tool | Panel | What it does | Touches the model | In → out | Since |
|---|---|---|---|---|---|
| Project Setup PSU | IcZ | Project-level housekeeping in one modeless workbench — twelve setup stations behind a read-only audit cover sheet, each scanning first and committing through the one footer button. | audit first, then commit per station | links, levels, templates, a register .xlsx, a BEP .docx → a set-up model and an eight-sheet compliance workbook | new |
| QAQC Suite AA | IcZ | Modeless model-maintenance and QA/QC workbench for MEP models — a phased parameter pipeline with a pre-scan review grid, health scoring and colour mapping. | scan → apply, stage by stage | the MEP model → health score, colour overrides, tags, an HTML certificate and an .xlsx of findings | new |
| Model Cleanup CD | Tools | Nine cleanup passes in one modeless workbench — ghosts, overkill lines, connections, the system layer, nested cases, orphans and duplicate families — armed individually, committed as one undoable act. | a preview rolls back; a run is one undoable group | a production model → a cleaned model, an .xlsx receipt and a run console | new |
| Ungroup UNG | Tools | Take the groups of a model apart, by type, in one undo step. Scan lists every group type with its instances, nested groups, members, pinned and borrowed instances; tick the types to open, filter them by name, and choose the scope. It asks first, writes one transaction, and Ctrl+Z undoes it. | Scan reads only; Ungroup is one transaction that asks first | the model, a selection or the active view → the groups opened, their elements released, emptied group types deleted on request | new 21 Oct |
| MEP Workbench FIT | IcZ | Modeless workbench for MEP cleanup, routing and parameter maintenance — thirteen pages on a grouped rail: Diagnose, Fabricate, Document. Its element-level edits are also on this pulldown as single buttons, so each can take a keyboard shortcut. | preview, then one named transaction per action | a selection or the model → fittings, flex, routes, parameters; findings to .xlsx | new |
| Framing Fix SFX | Structural | Structural Framing Fix — disallows framing joins while preserving the as-joined physical length; regrowth is compensated into Start/End Extension so faces stay put. | scan → apply → reverse | a framing selection → disallowed joins with lengths preserved, an .xlsx report | r116 |
| Interference Check ICX | Report | Find interferences between two sets of categories — and, unlike Revit's own Interference Check, against linked Revit models and linked Navisworks coordination models as well. Read-only: it opens no transaction. | read-only — no transaction is ever opened | two category sets, links and NWD / NWC / NWF → results, .xlsx, a batch for the Clash Importer | new |
| Clash Importer CIT | Report | Import a clash report — Navisworks XML or HTML, CSV, Excel, BCF — and place a marker family at every clash point on a verified coordinate basis. Each marker remembers its clash, so a re-import reconciles instead of duplicating. | refuses an unverified mapping; one undoable placement | Navisworks XML / HTML, CSV, XLSX, BCF → placed markers, .xlsx, BCF write-back | new |
| MEP Opening Tool WOT | Report | MEP penetration and opening tool across host and linked files: find every crossing, place and mark the openings, audit the ones already there, and see what changed since the last run. | scan, place, audit — each undoable | host and linked models → opening families, a live schedule, .xlsx / .xls | new |
| Section Box SB | Tools | Subject-aware section boxes for 3D views: the Create window, or the one-click Quick Box, Quick Section Box, Grow, Shrink and Toggle — each an individual pushbutton you can bind to a keyboard shortcut. | writes the view, never the model | a selection, rooms or levels → a 3D section box; five one-click commands | r116 |
| BOQ Lookup RO1 | Parameter | Bill-of-Quantities population for MEP and construction models: size → nominal width → BOQ designation and description, then a unit-aware bill and a native Revit schedule. | one undoable transaction | a catalogue JSON and model sizes → SPEC parameters, a native schedule, a bill in .xlsx | new |
| Pressure Loss PLR | Report | Pressure loss through a pipe or duct network from the pipework alone. No mechanical equipment has to be set up. Pick the start, give the pressure, the flow and the fluid, then Calculate. Read-only: it opens no transaction. | read-only, no transaction is opened | a start element, a pressure, a flow and a fluid → the critical path, the pressure at every outlet, a PDF, HTML or Excel report | new r169 |
| Piping Isometric ISO | Report | A piping isometric of one run, drawn from the model the way a shop isometric is: pick where the run starts and, optionally, where it ends. Cut-length dimensions, elevation callouts, flow arrows, P&ID symbols, elbow angles, joint tags and spool numbers, a key plan, and the notes, line data, bill of material and joint list under it. Create the sheets in the project's own title block or print them to PDF through Revit. | one undoable transaction for the sheets; the PDF writes a file | a start element and an optional end element → sheet previews, a bill of material, a joint list, a PDF or the sheets with their drafting views | new r170 · shop iso r187 |
| Schematic SCH | Report | A single-line flow schematic of one run, drawn from the model the way a flow diagram reads: the pipework laid out left to right, every pipe one step long, valves and accessories as P&ID symbols on the line, branches dropping to rows of their own, the machines at the ends as boxes with their tags and nozzles, a lettered bill of material and notes under it. | Draw reads only; Create View is one transaction that asks first | a start element and an optional end element → a sheet preview, a bill of material, a drafting view on a sheet or a PDF | new 22 Oct |
| Room Book RBK | Report | Which MEP sits in which room, counted and measured — a room book from the model, with the rooms taken from wherever they are: this model, its MEP spaces, or the linked architectural model. One row per room with a column per count and the metres of each kind of run. Read-only: it opens no transaction. | read-only — no transaction is opened; selecting is a UI change | rooms from any loaded source and MEP from this model and its links → a room book, a PDF with a plan per room, an HTML page, an Excel workbook | new r194 · 22 Oct |
| Sheet AutoDoc DOC | Tools | Data-driven sheet generation on the Universal Layout Engine: one detail sheet per staged element — plan, sections, 3D, tags, an optional schedule — docked to anchors defined in a profile, not in code. | one transaction per element, or one for the set | staged elements or rooms and a layout profile → sheets, views, tags, schedules | new |
| Text Search TS | Tools | Find text notes by what they say, in the whole model, the active view or any one view, and zoom to them. Type part of a note, such as a damper code, and the list follows the keyboard. Replace asks first. | searching reads only; Replace is one transaction that asks first | search text, a scope and a match mode → a result list grouped by view, the note opened and selected, new text after Replace | new r150–r168 |
| Transmit EXP | Tools | One transmittal, every format. DWG, PDF, Navisworks, IFC, images and Excel in a single run, with crisp embedded logos, clean schedule tables, consistent naming and a ready-to-send sheet index. | writes files, never the model | sheets, views, models, schedules → DWG, PDF, NWC, IFC, images, XLSX and a sheet index | new |
| Guideline GUIDE | QualityCheck | The project standards library inside Revit: browse, preview, annotate and edit reference documents — PDF, Excel, Word, Markdown, images — without leaving the model. | edits documents, never the model | PDF, Excel, Word, Markdown, images → previews, notes, edits | r116 |
| Family QC FQC | QualityCheck | Family-definition health check — seventeen checks on the family open in the editor, or eight across a whole folder of .rfa files without opening one. A health percentage, an A–F grade, and every finding. | read-only scan; rename writes on request | an open .rfa or a folder of them → a grade, an HTML report, .xlsx; renamed files | new |
| Script Reader SR | IcZ | Script library browser, editor and interactive IronPython console. Runs .py scripts from configurable library folders inside a valid Revit API context, modeless and external-event dispatched. | runs your scripts inside the API context | .py library folders → console output, saved logs | r116 |
"Touches the model" is the tool's own rule from its readme: a scan never writes; a commit is one named, undoable Revit transaction; the five read-only tools cannot change a model at all.
icz library of 122 modules. Hover a tool to trace the modules it consumes.revit_compatHover any tool to wire it to the modules it consumes · hover a module to see which tools rely on it · click to pin · the tour walks all twenty-one.
One read-only call answers whether Revit is up, whether the routes server is responding and on which port, and which bridge instances are live — each fact separating what the config says from what is on disk, because they fail independently.
Routes reads behind an allowlist, element and parameter queries, a view census that flags which views can be exported at all, and the same declarative element filter the suite's own tools scan with.
Parameter writes, deletes, selection and view changes all execute and roll back, returning what actually happened rather than a prediction of it.
Commit plus confirm for anything destructive; the result is one named, undoable transaction in the model's history.
Open a suite tool from the ribbon, click its pages by name, capture every rendered page, and review them against the approved design mockup through a parity manifest — or run a named smoke scenario end to end.
A session sees core (8 tools, the minimal attach surface), standard (33 with every gate: adds write, capture, ui and knowledge) or full (143 by default, 164 with every gate); a meta-tool lists and enables further groups at run time without a restart.
The full surface — 143 tools by channel, the three gates, the two transports, the Navisworks half and the harness numbers — is in the MCP layer reference, which also lists the other servers.
A Typicals page reads any library on hand: one open in this Revit, a folder copy, the local cache, Autodesk Docs or a pack. A typical lands at a point or onto an open end and is connected, one undo step each.
The evaluator was ported line by line from Autodesk’s engine and matched it on every check result. Findings are listed by type, one click selects the parts, and the report exports as HTML, Excel, SVG or XAML.
QAQC Suite isolates the elements of a warning, Transmit adds or removes a revision on ticked sheets, the MEP Workbench gains a Number page and a Supports page, and Family QC makes standard parameters shared.
The Standards station writes a snapshot from the open template, units, object styles, line and fill patterns and view filters, and audits another model against it by name and by rule body.
Joints and weld types, spool numbers, elbow angles with offset triangles, a key plan on the sheet, and five strips under the drawing: general notes, line data, abbreviations, bill of material and joint list.
A view census or a capture names the document, so a second open model is read without activating it. A capture takes a sheet number, a set of sheets or an element id, and writes PNG or PDF.
Draw a region to clean only part of the model. PREVIEW runs the cleanup, measures it and rolls it back, and the forecast counts the MEP systems a delete leaves empty.
One tool writes Navisworks’ report per clash test, as XML, HTML, tabular HTML or text, into a folder you name, with the document unchanged.
Link Paths lists every link type with its loaded state, cloud links included, and loads or unloads the checked rows for you alone or for everyone, each outcome measured after the write.
Scan lists every group type with what its instances hold. Tick the types, pick a scope, and one transaction opens them; pinned and borrowed groups are skipped and named, and Ctrl+Z undoes it all.
Rooms come from this model, its spaces or the linked architecture. One row per room with a column per count and the metres of each run; a PDF with a plan per room, an HTML book, an Excel workbook.
The sister of the Piping Isometric: the same picks, laid out left to right with P&ID symbols on the line, branches on rows of their own and the machines at the ends as boxes.
Link Paths drives Revit’s own Visibility/Graphics dialog to put checked links on Custom in the ticked views, which no API reaches. Link Worksets routes each link to its discipline’s workset from the folder tree.
acad-launch loads a bridge into a running AutoCAD and reads the Plant 3D data manager; fusion-launch runs code on Fusion’s main thread through an installed add-in. Both carry an API corpus read from the installed build.
IronPython 3.4 on Revit 2025 and later leaks stack on a jump out of an except handler. Every such jump in the suite, 356 in 85 files, was rewritten, and a census gate keeps them out.
The Insulate page bundles parallel pipes or ducts and builds one round or box jacket around each bundle, by thickness or by a fixed outer size, with the runs cut out and the volume checked.
Symbols corrected against a Plant 3D library, tag leaders square to the pipe, an elevation on every level leg, a set that starts at a given sheet number, the welding type read from the pipe type. Interference Check confirms a hit against a link by intersect volume.
Every route tool takes an instance by port or pid, busy and hold are kept per Revit, and desktop focus is verified by process before a key is sent.
A library module measures a sheet or a view on the paper in millimetres: overlaps, leader angles and shoulders, text sizes, titles and viewports. The bridge exposes it as a lint, and a skill pack carries the rules.
The fourteenth tool: five report formats read by content, a coordinate mapping proved by a round trip, markers that remember their clash so a re-import reconciles instead of duplicating.
The fifteenth tool finds interferences against this model, linked Revit models and the Navisworks coordination models the Revit API returns empty geometry for — and says on every row whether the finding is solid-exact or box-level.
Eight of the seventeen checks now run across a whole folder of families without opening one, and a rename overlay previews every collision before a file or a loaded family is touched.
A run ledger per document: every penetration comes back New, Unchanged, Moved, Resized or Gone, and a Gone row navigates to the opening an update left behind.
Every expected file must exist, be non-empty and be written by this run, or the transmittal finishes with warnings; a saved IFC setup from Revit's own exporter dialog can drive the IFC export.
Project Setup gains a drawing-register sheet diff, a grid audit against a linked model and a Visibility/Graphics transfer; Model Cleanup gains the Families station for duplicate loaded families.
Tag Audit and Dim Coverage take a scope — the view, the sheets, or every view — and Tag selected places the missing tags; Model Health lists every warning type with a Select button.
One click hands a result set over in the model's own feet; an importer open on the same document reloads in place, one on another document refuses, and rows without a status stop being dropped.
When Revit rolls back an Apply, the window now lists the elements that failed. It retries once with those elements set aside.
blender-launch starts or attaches to a Blender, runs code in it, builds and sculpts a model and takes pictures of it.
The new catalogue holds 855 positions from two workbooks. The manufacturer now decides the chapter of a flange.
icz-senses offers ten tools in three lanes: pictures with local text reading, audio transcription, and web search and fetch.
Pick a start, give a pressure, a flow and a fluid. The result names the critical path and the pressure left at every outlet.
A run becomes an isometric with cut lengths, riser elevations, flow arrows, valve symbols and a bill of material. It exports as a PDF or a drafting view.
A background watch names such runs the moment they are created. It can also give them a configured fallback type in one undo step.
icz-reverse offers 36 reverse-engineering tools over three engines. icz-learn offers five tools that read Microsoft documentation.
Each item reports the angle the flow turns through. Pipe Iso now splits a large network into numbered sections.
Phase 5b writes the host kind into two comment parameters. Insulation is also sized and counted through its host.
System type names tell a gas line from a water line. The window adds a Gas fluid and says how far off the result is.
Library check reads a library model laid out on a board. Declare from library adds the proposed markers to the editor in one step.
A model is worth coordinating only once its links, levels, worksets and parameters are governed and its geometry is clean. These six run in that order: Project Setup audits and commits the set-up, QAQC Suite scores and repairs the MEP data, Model Cleanup removes what should not be there, Ungroup takes the groups apart so every element can be edited on its own, the MEP Workbench fixes what should, and Framing Fix settles the structural joins.
Route every linked model — Revit, CAD and Navisworks — to its discipline’s workset, read from the folder tree, with configurable pattern rules; existing discipline worksets are kept and only the missing ones are created.
Audit and synchronize project metadata against your IFD compliance requirements. Federated JSON Sync is available for firm-wide standards alignment.
Consolidate and rehost elements across levels with automated offset compensation. Optionally delete redundant levels — views are safely rehosted before removal.
Audit every link, separating broken links — repath proposed by filename search under configured roots — from stale links reloaded in place. Load or unload the checked links for you or for everyone, set their display to Custom in the ticked views, and acquire shared coordinates from a named survey link.
Apply pattern-to-template rules with a check-list preview, transfer templates from other open documents, and report or enforce controlled parameters.
Audit bound shared parameters against the firm registry, batch-bind from a shared-parameter file, and apply only the unit / object-style mismatches you leave checked; line and fill patterns and view filters are audited too, a snapshot of the open template becomes the standard another model is audited against, and the station builds the standardised Navisworks coordination view with its appearance filters.
Pair MEP spaces against rooms from the architectural model, classify number and name drift, and dry-run one rolled-back sample write before committing the batch sync.
Parse tables straight out of a BEP .docx, map columns, preview the rules, then import them into the link-routing config — or export them to JSON.
Diffs the xlsx drawing register against the model's sheets: MISSING rows create sheets with the chosen title block, RENAME rows update names, EXTRA sheets are reported and never deleted — one undoable transaction.
Pairs host grids with a chosen linked model by name and reports MATCH, MOVED, DIRECTION, MISSING (tick to create), EXTRA, RENAME CANDIDATE and ARC — so the setting-out disagreement is found before the walls are.
Captures a view or template's complete Visibility/Graphics state — category overrides, filter list, per-filter overrides — to a portable JSON, then applies it to any set of views or templates in this or another project.
Rules are edited per station and persisted to psu_config.json; a bundled psu_profiles.json standards profile marks required stations and loads calibration presets in one click.
spec_mappings.json), edited in-window on the Settings page — no raw JSON. No typing, no transcription errors.# Scan and Apply share one resolver — preview can never disagree with the run.
for stage in stages: # Cleanup · CMMN · SPEC · Flags · Classification · Worksets
with revit.Transaction(stage.name, doc): # each stage, one guarded tx
stage.apply(doc, approved_elements) # only what the review grid approved
health.score(results) # live Model Health — no TaskDialog
Illustrative — the workflow shape, not the internal phase logic.
The original macro ("BOM SPEC Extended Parameters Update") did the whole job, but as one monolith driven by a chain of blocking dialogs. Rebuilding it as a modeless tool kept the logic and made it safe, reviewable and reusable across projects.
spec_mappings.jsonicz modules; Revit 2022–26 safeReconnects open MEP connectors within 20 mm, removes coincident duplicate elements (structural only — MEP duplicates are Model Cleanup's Ghost Purge) and zero-length ducts, and snaps over-slope runs back to vertical — run first so the network is continuous for the SPEC phases.
Parses the model file name against your naming convention and writes the CMMN status, building and TOOL_ID parameters. Set the tokens in Settings, then Apply.
Assigns SPEC_SYSTEM (with chemical-box and clamp inheritance), then SPEC_SIZE, SPEC_QUANTITY and the bilingual SPEC_ARTICLE classes — the procurement backbone, driven by editable prefix/route tables.
Sets IFX_INSULATION on insulated runs and IFX_POC_Element once POC tagging is final — the flags that drive insulation schedules and downstream filters.
Writes the IFC entity/type parameters from the classification table so the model exports with correct IFC typing.
Distributes every element to its target workset, derived from the SPEC_SYSTEM value written back in Phase 4a.
Elements with no tag or more than one, per category, over the active view, the views on sheets or every graphical view — deduplicated across views. Tick the untagged categories and Tag selected places them as undoable transactions.
Scores the model against your Autodesk Model Checker LOI ruleset — read straight from the .xml, no add-in needed — with an evaluator ported from the engine itself, so it agrees with the Model Checker on every check result. Findings are listed by type, one click selects the parts, and the report exports as HTML, Excel, SVG or XAML.
Counts hygiene indicators — warnings, unpinned links, imported DWGs, in-place families, unused templates — into a weighted 0–100 score. Every warning type is listed with a Select button, and the elements of a warning can be isolated in the view.
Decodes every view filter's rules into plain data and flags the ones applied to no view or template.
Undimensioned elements per category over the same three scopes, summed per view — report-only, with click-to-zoom.
Colours the active view's elements by a parameter (e.g. SPEC_SYSTEM) with a legend and one-click reset — spatial QA the piecharts can't give.
A scan draws its findings on a plan of the model: an 8 × 6 grid of cells over the model’s own grid lines, one mark for each finding it can place. A mark’s shape names the pass and its colour the consequence — a delete, a delete that takes a tag or a dimension with it, a repair, or held. The five busiest cells light up as hot zones.
Drag a region on the plan, or click a hot zone, and a run touches only what lies inside it. The forecast gives the model after the run: the deletes, their own parts, the MEP systems they leave empty and the real dependents. PREVIEW runs every armed pass inside a transaction group, measures what changed, then rolls it back.
Detects overlapping duplicate elements (MEP + structural), keeps the connected copy and deletes the floating ghost — grouping by category/type first so it stays O(n) per group, not O(n²). Cleans massive models in seconds.
Seals open MEP connector pairs within a 20 mm tolerance via spatial-grid bucketing, isolating each attempt in its own SubTransaction. Runs after Ghost Purge, on the already-reduced model.
Finds hosts with intersecting same-type nested sub-components — a hidden duplicate Ghost Purge can't see because it lives inside one host. Where a per-family rule applies it clears the redundant one's visibility; with no rule it reports only, and any repair that doesn't clear the clash is rolled back.
Three stations repair the MEP system layer: empty systems (report-only where deleting would orphan a run), duplicate system names renamed free, and Undefined pipe/duct system types repaired from the connected healthy neighbour, with configurable fallback types.
Overkill Lines merges collinear detail/model/separation lines that overlap or touch onto one survivor and deletes the rest. Orphan Purge removes empty elevation markers and orphaned tags, with configurable extras — scope boxes, view filters, rooms/spaces, CAD imports.
The ninth station finds loaded families that share a category and a normalised name — trailing digits, “– Copy”, case — proposes a survivor (most instances, then the un-suffixed name), re-points every matched instance to the survivor's type and deletes the now-empty loser. Losers with types the survivor lacks are held by default and shown with the reason.
# Each repair is isolated; a rule that doesn't clear the clash is undone.
with SubTransaction(doc) as st:
st.Start()
apply_fix(candidate)
doc.Regenerate()
st.Commit() if clash_cleared(candidate) else st.RollBack()
Illustrative — the guard pattern shared across the repair stations.
SCAN MODEL reads every pass in one read-only sweep (the same button cancels it). The Layers rail lists the passes with their counts; tick one to show it on the plan and arm it, pick one to read its rows in the catch below the plan. Findings and actions are counted apart, and a held row says why.
Drag on the plan or click a hot zone to set a region: the scope switches to it and the region card names the cells. The off-plan passes have no position, so a region run leaves them out and their cards say so.
The run pane forecasts Will delete, Dependent cascade, Will change, Held · report only and Model after. PREVIEW runs the armed passes, fills the result card from what it measured and rolls everything back; a change to the scope, the arms or the ticks takes that card down.
RUN CLEANUP commits every armed pass as one undoable group. The catch becomes a run receipt, the footer names what changed — the MEP systems Revit removed with their last member included — and UNDO LAST CLEANUP or Ctrl+Z reverts the whole run.
A drawer over the right of the window holds the overlap buckets, the connect tolerance, excluded categories, per-family nested rules, fallback system types and purge extras. Its Sieve plots the open connector gaps the scan found, so the tolerance can be set by eye. Saved to cd_config.json.
Pick the scope — every group in the model, the selection, or the active view — and press SCAN or F5. Every group type is listed with its counts.
Narrow the list with part of a type name, then tick or untick types. All and None act on the types shown; only those can open.
Model groups, detail groups, nested groups too, skip pinned groups, delete emptied group types, select the released elements.
The dialog shows the counts first. One transaction opens the groups in passes, top level first; afterwards the window reads the model again.
The scope and the six switches. It collapses with the burger button.
Five tiles: Group types, Groups in scope, Will open, Elements released and Skipped, which shows the split on hover.
One row per group type with its tick, name and kind, the counts and the badges. Click the text or the arrow to select the type’s instances in Revit.
F5, or Enter in the filter box, reads the model again and plans. Esc closes.
IcZ Ungroup that asks before it commits. It does not open groups inside linked models or a family document, and it never saves.Seven rules against editable configuration, each with its own Scan and a clickable findings grid: A routing-preference fittings, B accessory pairing, C placed fittings carrying the markers of the runs they actually join, D maintenance clearance, E headroom (with a write-to-parameter), F duplicate families grouped by how safely they merge, and G placed fittings no routing preference sanctions. An adaptor is treated as the edge of a material domain — the walk stops there rather than hanging the far side's materials on a part that never touches them. Rules live in fitting_config.json; its pairing editor answers from both ends — Coverage from model proposes the rule that would clear a finding, Dead rule keys reports rules that clear nothing — and Save takes effect on the next scan.
Stamps X/Y (optional Z) into shared parameters in three modes — Absolute, Grid-relative, Shared-site — after an editable offset, with an overwrite guard so existing values stay put. Missing firm-standard shared parameters are auto-bound to the selection's categories.
Rebuilds rigid runs as flex — Replace (swap with reconnect) or Containment (lay alongside). Vertex count (2–9), sag, smoothing, diameter and workset overrides are tunable, with six operations: convert, audit, simplify, split, riser and parallel lanes — five of them on the compiled core.
Copies IFLS / AKS / Prozessmedium from linked source fittings onto host targets, matched by MEP system name and gated by horizontal / vertical distance caps. Keyword and triple-map config in paramsync_config.json.
Re-type a fitting from a findings row, or the whole held set from the jaw, keeping instance parameters. Where Revit refuses because the new family would break the joint, the fitting is detached, re-typed and every joint rebuilt — the neighbouring run trimmed along its own axis to meet the new ports — and if any joint cannot be rebuilt the whole run rolls back. Consolidate re-points every instance of a duplicate victim type onto its keeper and deletes the victim; every re-type is verified by reading the type back before it is counted.
Route generation reads the NWD / NWC / NWF coordination models the document links and adds their geometry to the obstacle set — the Revit API returns empty geometry for them, so a route that avoided everything Revit could see used to go straight through a slab that existed only in the structural NWD. The compiled core's headless Navisworks reader supplies the boxes; each file's frame is measured from this model's own elements inside the routing envelope, never assumed.
Riser turns a flex that crosses the slab into a rigid riser of the size of the duct below its adaptor — one inclined leg between two 45° elbows into a clear corridor, never a 90/90 jog. Split cuts a flex on its centreline directly under the click, in whatever view you click in, and re-joins both halves to whatever the original touched.
Places a typical connection from a piping library into the project. The page lists every library on hand, best source first: one open in this Revit, a copy in the library folder (opened detached, so the central is never touched), the local cache, Autodesk Docs by cloud id, or a pack of its own. A typical lands at a picked point or onto an open end, facing it and connected when domain, shape and size agree, mirrored on request — one undoable transaction each, and Preview makes the same copy and rolls it back.
Places a support family along the held pipes and ducts: the first and last at an inset from each end, the rest spread so no gap exceeds the maximum spacing, risers left out. A hanger placed at a point lands on the centreline or the underside of the run, so one offset seats a trapeze on every size; a work-plane clamp is centred by its measured ring, given the type made for the run’s nominal size, and removed again when its ring cannot hold the run.
Insulate bundles parallel pipes or ducts that lie alongside each other within a gap and builds one insulation solid around each bundle, where Revit insulates one pipe at a time: round on the exact smallest enclosing circle, or a box on their rectangle, sized by thickness or by a fixed outer size. The runs are cut out, the volume as built is checked against the geometry, and Preview plans every jacket without building one.
Writes a sequence into a text parameter on the held set: prefix, level, room or space number, then a zero-padded counter. Rooms are looked up in this model and every loaded link, zones sort in natural order, and inside a zone the order is reading order, clockwise from north, or along an axis. Preview shows the first and last value and names any value the plan would give twice; every value is read back after it is written.
cfg = load_json("fitting_config.json") # offset + param names are DATA
x, y = world_xy(elem, cfg["offset_mm"]) # editable per project, not baked in
if is_empty(elem, cfg["param_x"]): # overwrite guard: keep existing values
write(elem, cfg["param_x"], meters(x))
Illustrative — every FIT page reads its defaults from JSON like this.
Two separate one-off scripts became two pages of one navigated workbench — sharing its shell, theme, MEP engine and JSON config instead of each carrying its own copy.
icz.mep engineValidates pipe/duct fittings and accessories against editable compliance rules — seven rules, A to G; GENERATE AUDIT MATRIX runs A–D in one pass while headroom, duplicate-family consolidation and the sanction check stay separate actions — each a clickable review matrix with zoom and isolate.
Stamps plan position into shared parameters in Absolute, Grid-relative or Shared-site mode, with optional Z, after an editable offset. An overwrite guard skips already-filled elements; missing shared parameters are auto-bound.
Converts rigid runs to flex topology — Replace swaps and reconnects; Containment preserves the originals and draws alongside, with branch handling under Advanced.
Synchronizes IFLS / AKS / Prozessmedium from linked source fittings onto host targets, matched by MEP system name and gated by distance tolerances.
Segments selected pipes or ducts into stock-length pieces and places couplings at each joint, aligning the model with prefabrication reality.
Pick a start and a target element: a deterministic orthogonal trunk (default) or an A* search around walls, floors and services plans the run, then draws the pipes or ducts with fittings at every corner — accelerated by the compiled core, which also reads the linked coordination models so their steel and slabs are obstacles too.
Opens on a read-only element census — KPI tiles plus an element-mix bar — and a one-click scan runs five compliance rules through one shared cache feeding the donut, the review grids and the nav badges.
Read-only connector-graph walk of the whole model: open End connectors, disconnected islands, orphan fittings and off-network elements — per-system bars, a donut, and every hit as a clickable review row.
Element-level edits as named transactions — cap or connect open ends, join two, disconnect, split a joint, make parallel, rotate — each also a single pulldown button so it can take a keyboard shortcut.
Place a support family along the held runs at a maximum spacing and an end inset, from the centreline or the underside, the type picked for each run’s nominal size, a clamp centred by its measured ring — one undo step.
One insulation jacket around two or more parallel runs, round or box, by thickness or by a fixed outer size, the runs cut out, the volume checked. Preview plans every jacket without building one.
Read a library — open here, a folder copy, the cache, Autodesk Docs or a pack — and place a typical at a point or onto an open end, connected and mirrored on request; Preview copies and rolls back.
Write a sequence into a text parameter: prefix, level, room or space, counter; restart per zone or per level; Preview names any duplicate the plan would give. Every value is read back after it is written.
Selection, active view or whole model — linear framing only, filtered through quick collectors.
Counts joined ends, residual nodes, copes and drift candidates with no writes — no auto-scan on open.
Disallow + compensate per element; one grid row per element, worst status wins, click any ID to zoom and load its end deltas into the End-Condition Inspector canvas.
Reverses the operation — extensions zeroed, joins restored — with the same review-first workflow.
Coordination is a loop: find the interferences, place them as markers everyone can see, open the holes the services need, re-run and see what changed. The Interference Check hands its results to the Clash Importer in one click, the Importer and the Opening Tool share one placement engine, and Section Box frames the spot you are looking at.
ElementIntersectsElementFilter; against a Revit link, each element's solids go through the inverse link transform into the link — still Revit's own intersection, narrowed by a box taken from the tested solids and confirmed by intersect volume, after the filter alone had reported exact rows with no common volume. Against a coordination model the geometry is read through the Navisworks API out of process (the Navisworks API is .NET Framework 4.8 and cannot load inside Revit), bounded to the envelope of everything in scope plus the clearance, and cached per envelope — the first run of a file is slow, the next is not. A result the coordinator can reproduce in Revit's own dialog is worth more than a cleverer one they cannot.Pick a preset or tick categories for Set A and Set B — each shows how many instances this model actually has, so a thin result is explained before it happens. Say where Set B lives: this model, linked Revit models, coordination models, or any combination.
Every readable NWD / NWC / NWF is listed with its own checkbox; an unticked file is never opened. Models… narrows a published NWD to its discipline groups, or a multi-model file to the models inside it, with its own cache key.
Hard clash or Clearance, a merge distance for the duplicate results one physical crossing produces (default 150 mm), and a live footer — NWD i/n · model j/m · items visited · hits · elapsed — with Stop always a click away.
A KPI strip split by source and by how many are solid-exact; filter by This model / Revit links / Coordination / New / Gone; click a row to select and zoom; Export writes the filtered set to .xlsx with the exact-or-approximate column.
Hand the rows to the Clash Importer as one batch — identity mapping, no coordinate step — and place a marker family at every clash point. Unavailable while the Gone filter is active, because those rows have no live element to mark.
Named presets, a result cap and a time budget, the size limit for uncached files and the frame-measurement switch. Last picks are remembered per user and per project; the git-tracked config holds only the shared defaults and presets, and no run ever writes it.
GetProjectPosition and the mapping is inverted from those three answers, so no assumption about the rotation's sign or order can be wrong. It is then proved: a probe point round-trips through the mapping and the tool refuses to place anything if it does not return where it started. A mapping that is slightly wrong puts markers inside the building in the wrong place, which reads exactly like success — refusing is the only honest answer.Comments by default, alongside whatever was already written there — naming the clash it came from and whether it is done. Stored on the element, it travels with the model and survives a workshared round trip. A re-import reconciles to New / Placed / Completed / Ignored / Not in report; for a BCF source the completed topics can be written back to a new archive. Import on Monday, fix sixty during the week, re-run on Friday and see only what is still outstanding.Browse to the report — the format is detected and named — set the units if it declares none, choose Shared / survey, Project internal or Manual offset, and the duplicate-collapse distance (default 150 mm). READ REPORT parses, establishes and verifies the mapping, and shows the base-point figures it used.
A KPI strip — to place, mapped, collapsed, clash tests, with a size — filters by clash test and status, and one row per clash with its grid location, the two clashing items and the internal point it mapped to. Click a row to zoom there; Export writes the filtered set to .xlsx with both coordinate systems.
Pick the family and type — the page says up front whether it can be placed at all — optionally write a size, and place through the same icz.openings engine as the MEP Opening Tool: nearest-level placement, OneLevelBased families only, refused before any transaction opens. The suite ships its own marker family, loaded in one undoable click when the model lacks it, and the family you chose last is remembered per project. "Only clashes that have no marker yet" is on by default, so a re-imported report tops up rather than duplicates. Everything placed lands in a review grid grouped by clash test.
The report joined to the markers already in the model. Tick rows and Mark completed, Reopen or Delete markers; export the whole reconciliation to .xlsx, or write completed topics back to a new BCF.
The Mark prefix (CLH-, kept apart from the Opening Tool's WOT-), the state parameter, the size-parameter name lists shared with the Opening Tool, and the report attribute keys sizes are read from — persisted to cit_config.json.
A run console carrying every warning, every skipped clash and every reason. It ships collapsed; routine progress never forces it open, but a warning, a refusal or a failed mapping does — the report's clash count and the tool's marker count are always reconcilable.
Set host scope (walls — basic / stacked / curtain — plus floors, roofs and framing, incl. linked files), filters, buffer and the MEP element tree, then Run Analysis to detect every crossing.
Triage the intersection grid — one row per host with an openings-count impact bar; click any row, linked-file hit or logged element ID to select and zoom.
Places your chosen opening family at every crossing, auto-rotated to the host with depth set to host thickness and sequential WOT-n marks, writing Width / Height / Diameter into the first writable parameter.
Pick what counts as a reservation, Run Audit, and read the verdict KPIs — reservations, occupied, free, ambiguous — with every opening as a click-to-zoom row and optional verdict colouring in the active view.
Set the fallback parameter names tried for Width / Height / Diameter — first writable match wins, and "Radius" is halved automatically.
Run again after the model moves on: status pills — NEW 3 / MOVED 1 / GONE 2 — filter every row family, the Status column joins the .xlsx export, and a ledger that could not be saved is flagged on the page rather than silently forgotten.
The main button opens a modeless window that fits a subject-aware box to the selection, interactive picks (host or linked model), or pasted element IDs — into the active or a named 3D view, sized by total cube or padding in millimetres, with an optional view template.
Quick Box wraps the current selection silently using the saved defaults — no window. Quick Section Box does the same through a small View / Size / Template dialog (see it live). Defaults — view name, pad, size, grow/shrink step — persist from the window's Settings page.
One-click siblings: grow or shrink the active view's box by a saved step, or toggle it off and on — Revit keeps the box while off, so toggling back restores the exact same extents. Each is its own pushbutton, bindable to a keyboard shortcut.
Once the model is right it has to leave the building. BOQ Lookup writes the designations a bill is built from. Pressure Loss checks a pipe or duct network from the pipework alone. The Piping Isometric draws a run as a shop isometric and the Schematic draws it as a flow diagram. Room Book counts and measures the MEP in every room. Sheet AutoDoc turns staged elements into sheets. Text Search finds text notes and corrects them in one transaction. Transmit issues everything in every format in one run that checks its own output.
SPEC_DESIGNATION (atomic BOQ number) and SPEC_DESCRIPTION across 17 MEP categories. Eliminates hours of manual referencing and instantly produces accurate Bills of Quantities.1 1/2") and resolves them to metric Nominal Widths, with a fallback to Revit's native calculated size. Handles the real-world mess in supplier data..bak of the last good file. A Units table (v2) makes the bill unit-aware; a Rates table (v3) adds Rate, Total and a currency grand total; and each project remembers its own catalogue and BOM library. The standard lives in data the project owns, not in the tool.BOQ – Bill ViewSchedule grouped by designation and filtered to classified elements — a second click updates it, appending fields the bill now carries and never removing yours. A catalogue that carries a Rates table adds Rate and Total columns and a cost grand total. On Reconcile, Apply Library Values writes the library's value back to ticked rows in one undoable transaction, and a write that Revit silently drops is reported as failed, never counted. The bill lands in Revit's own schedule, and the audit can fix what it finds.Scan the model with no writes: will-classify / via-library / needs-mapping KPIs plus coverage per material system.
Per-element results grouped by reason, clickable IDs to select and zoom, per-row exclusion from the next run.
Writes SPEC_DESIGNATION and SPEC_DESCRIPTION in one undoable transaction, binding the shared params if missing; authored values are preserved unless you opt into overwrite (optional DN100 duct fallback).
Unit-aware takeoff rolled up by BOQ code — m codes total length, St count pieces, m² total insulation area — with Revit-style Schedule Properties and XLSX export.
Audit of filled SPEC parameters against the project BOM library — divergences listed with clickable IDs; tick rows and Apply Library Values to correct them in one undoable transaction, with owned and type-bound parameters skipped and reported.
Browse the project's BOM library and search every catalogue mapping table by material, fitting name or BOQ number.
Swap the project catalogue or BOM library, edit mapping tables in-app with validation and crash-safe saves — remembered per project, no reload.
Pick in Revit, or use the current selection. Then tick the ports of the start that the flow leaves through.
Give the pressure at the start. Give the flow as a total, or as the same flow or velocity at every outlet. Fluids: From the model, Water, Air, Gas at the start pressure or Custom.
The calculation walks every run, fitting and accessory downstream. A vacuum line is calculated by conductance instead of Darcy and K.
A report exports as PDF, HTML or Excel, with a network sketch, a pressure profile and an isometric. A user guide opens from the question mark button.
Checks come first, then recommendations with element ids. The network is drawn as a tree with the critical path in the accent colour.
Every end of the network, highest loss first, with bends and total turn. A click selects the outlet in Revit. A double-click opens its path.
Every item on the way to one outlet, the turn at each, a running total and a pressure profile.
Stretches with one flow and one size, in the shape of Revit’s own report.
Fittings and accessories grouped by kind, size and coefficient, with the source of each coefficient.
The coefficient table as a form, in six groups, from fittings by equivalent length to the gas-system name list. Buttons: Save, Revert and Built-in figures.
plr_config.json.Pick the start element, and optionally the end element. Tick the ports of the start to follow once a start is picked.
The sheet list shows the project’s title block types first, then A1 to A4. Four view rotations, the drawing switches, the spool box, the key plan view and the line data block.
Draw reads the model and shows the first sheet, the bill of material and the joint list. Clicking a symbol or a pipe shows it in Revit.
Create View asks first, then adds the sheets and their drafting views in one undoable transaction. Export PDF prints the sheets through Revit.
Start of the run, End of the run, Follow through, Sheet, the drawing switches, Spools, Key plan, Line data and Notes. Follow through appears once a start is picked.
Five tiles: Scale, Pipes, Length, Fittings / Accessories and Elements read.
A drawing of the first sheet with its strips. Click a symbol or a pipe to show it in Revit.
Pipes by type and size, and parts by name, with the lettered boxes the sheet uses; every joint with its type, size, spool and location.
DRAW, CREATE VIEW and EXPORT PDF. Both open-after options are on by default.
Pick in Revit, or use the selection, where the run starts: a pump, the first pipe, any fitting. Optionally pick where it ends, and untick the ports the walk should not follow.
The sheet appears in the preview as it will print and the bill of material fills on the right. Click a piece in the preview or a row of the bill to show it in Revit.
The project’s own title blocks first, then plain papers; a sheet number prefix and a title. Seven switches decide arrows, sizes, symbols, part letters, branches, equipment boxes and the strip.
Export PDF prints through Revit in the title block on a temporary sheet that is rolled back, or writes a plain page. Create View asks, then makes the drafting view and its sheet in one transaction.
Start of the run, End of the run, Follow through, Sheet, the seven switches, Notes, and the open-after options.
Five tiles: Elements read, Pipes, Length, Fittings / Accessories and Rows.
The diagram as it will print, with the heading and the strip. Click a symbol or a pipe to show it in Revit.
Pipes by type and size in metres, fittings and accessories counted, each machine with its tag, lettered as the drawing refers to them; FROM, TO and SERVICE under it.
DRAW, CREATE VIEW and EXPORT PDF.
Switch on where the rooms are and whose MEP is counted, the levels, the system key the take-off groups by, the scope, how a crossing run is counted and the columns.
SCAN or F5 reads the model. The footer says how many elements landed in how many rooms and how many no room holds; the ELEMENTS tile explains what was read and how long each stage took.
A room row selects its elements in Revit and zooms to them. The chevron opens the room’s take-off, one line per system, family and type and size, and a line selects its elements.
PDF REPORT, HTML or XLSX, for every room or only the rooms switched on, with Revit’s own plans on request and one file per level on request.
Rooms from, Phase, MEP from, Levels, System, Scope, Runs, Sample every, Count, Supports, Sizes and the list switches. Every two-state option is a pill switch.
Four tiles: Rooms, Elements, In a room and Outside any room.
Number, name, level, the biggest columns as chips, the total and a select glyph; the chevron opens the take-off. The rows of what no room holds come last, by the room they sit near.
The model chip, the status line, the sources, PDF REPORT, HTML, XLSX and SCAN.
icz.doclayout). Stage any number of elements — current selection or multi-pick — and generate one detail sheet per element: plan, longitudinal + cross sections, a 3D isometric with section box, auto tags and an optional BOQ schedule, all docked to anchor points defined in sheet_profiles.json so BIM standards live in a profile, not in code. A read-only pre-flight dry-runs the batch first — each sheet number checked against the live project register and remapped on collision, blockers grouped in a clickable review grid — then one Transaction per element: a bad element rolls back alone, the batch continues.Generates plans, longitudinal + cross sections and an isometric 3D per element, with the view range solved on a strict top ≥ cut ≥ bottom hierarchy so nothing gets clipped by a fixed height.
Places dimensions and element tags automatically on the generated views, with None-guards so a missing family or level never aborts the batch.
Five cards for sheets that already exist: align viewports, duplicate sheets, crop from the sheet shape, a read-only schedule overlap check (schedule vs schedule, schedule outside the title block, schedule over a viewport) and pack leftovers — every view and schedule placed on no sheet, planned as a dry run and then laid onto numbered index sheets. Rooms and MEP spaces stage from a level-grouped list, and interior elevations come as all four faces from one spec.
Drops the finished views onto sheets as viewports, guarding against models with no generic level or no titleblock so it degrades gracefully.
Tokenized sheet number/name patterns from the profile (DT-{seq}, DETAIL - {cat}) name every view and sheet it creates — coordinated, predictable output without manual renaming.
icz.doclayout engine and runs on the shared master theme (icz.theme via ShellWindow) with version-safe element Ids (icz.revit_compat), so it looks and behaves like the rest of the suite across Revit 2022–2026. Group mode (all staged elements scale-tiled onto one grouped shop-drawing sheet) and full profile CRUD — duplicate, rename, delete, atomic save with an unsaved-edits guard — now ship, with drag-to-position layout editing on a live sheet-preview canvas.Pick a layout profile, stage the elements, and Generate — the engine builds every sheet with its views docked per the profile.
Data-driven profiles (sheet_profiles.json) define which views each sheet carries plus their anchor, margin, scale and template — edited in-UI.
One sheet per element (doors, equipment) or all staged on one grouped shop drawing (pipe/duct systems) — from the current selection or a pick.
Apply plan / section / 3D view templates and auto-tag where the profile allows.
Optional per-view dimensioning: per-run segments, named family references, one running string, or grid/level datums.
Align viewports across sheets to a main sheet, batch-duplicate sheets with granular copy options, crop a view to a drawn polygon — and pack every unplaced view onto auto-numbered index sheets from a dry-run packing plan.
* and ?) and regular expressions. Match case is off by default. At most 500 result rows are drawn, while the counts, F3 and Replace still cover every match.Type in the search box. The scope is All views, the active view, one view from the list, or a typed part of a view name.
Choose Contains, Whole word, Exact text, Wildcards or Regular expression, and tick Match case if it matters.
Click a result, or press F3 and Shift+F3. The note’s view opens, zooms in and selects the note.
Replace shows a row for the new text. Empty text deletes the matches. REPLACE ALL counts first, asks, then writes in one transaction.
Four sections: Scope, Match, Zoom and Keys.
Four tiles: Matches, Views, Text notes read and Current.
Matches grouped by the view that holds them, with the matched part highlighted.
Replace with, and REPLACE ALL. Enter in the replace box replaces all, after asking.
Enter reads the model again and searches. F3 and Shift+F3 step. Down and Up in the search box do the same. Esc closes.
IcZ Text Search replace, after a confirmation that shows the counts and sample pairs..xlsx in a clean banded table style — via Excel when it's installed, or a built-in pure-Python OOXML writer (no COM, no install) that produces the same styling. Runs on any machine and protects values like Ø, 100×200 and DN.exportcfg, xlsxlite, perftracker, failures and lastused modules.Step one of the four-step pipeline (Destination → Contents → Formats → Issue): choose where the files go and tick the formats you need — Transmit Now stays one click away on every step, and every ticked format exports in one run.
Choose the sheets/views to export, filter Sheets vs Views, search, and set a per-row output filename. Sheet sets fill the picks on Revit 2026 as before, and a revision can be added to or removed from the ticked sheets in one transaction.
Select 3D views for NWC/IFC and schedules for styled Excel export — live count badges per sub-view, no Excel install needed (built-in writer).
DWG, PDF (combined or separate, with an optional issue stamp composited onto the run's PDFs), NWC, IFC, images (PNG/JPEG/TIFF/BMP/TARGA), schedules (XLSX) and a Drawing Register / Sheet Index — each with its own options.
Every master export is logged (project, profile, formats, sheets, errors, elapsed); write any record out as a formatted transmittal sheet.
Render the first ticked drawing to PDF inline before you issue.
Named export profiles stored machine-side and restored automatically per project, plus per-format subfolders and machine-local settings — per-format options and the token filename builder live under Formats.
The three that keep an office honest: the standards library inside Revit, a health check for the families that feed every model, and a console for the scripts the suite does not yet cover.
IcZ.PdfView (PDFium rendering, zero external dependencies): continuous scroll, full-document search, text selection, highlight / text-box / freehand markup, page rotate-reorder-insert-delete-extract-merge, print, and save with annotations burned in. No Acrobat, no locked-down-machine failures.Search the standards scanned from your configured folders by name — or press Enter for a full-text sweep of every document, opening hits straight to the highlighted match.
Inline preview for PDF, Word, Excel, Markdown, text and images — PDFs open in a native annotate / rotate / reorder viewer.
For Markdown, text and code, switch to the Edit tab and save straight back to the file (a crash-safe .bak is kept).
Attach a plain-text notes sidecar next to any document — the original PDF / Word / image is never modified.
Configure the scanned folders, the file extensions to index, and one-off pinned files.
.rfa files without opening one — and reports a per-check pass/warn/fail breakdown, an A–F grade and an overall health number.famqa scoring engine over the open family and draws a Health Radar & Report Card — a six-axis radar (Name, References, File, Plan View, Parameters, Structure) with clickable axis filters, an A–F grade badge, and a searchable findings list pivotable by group or severity. One glance tells you if the family is delivery-ready.%APPDATA% overlay) edited through a schema-generated settings form — no raw JSON editing. Retarget the standard by picking a profile, not touching code.reporthtml module for review outside Revit. Circulate the result without a Revit seat..rfa and its type catalogue on disk (batch mode, with an undo map written first and a rollback on failure) and the loaded family in the model, one checked transaction each. Nothing is renamed until the preview has been shown for exactly this plan.With a family open in the family editor, Scan runs the health check through an ExternalEvent against its definition.
Get an overall health % with an A–F grade (banded Perfect / Healthy / Needs attention / Failing), Pass / Warn / Fail counts, a weakest-dimension callout, and a top-offenders panel that jumps straight to each finding.
Save a themed HTML scorecard through a file dialog (last directory remembered) — it auto-opens for review, ready to circulate outside Revit.
Pick the firm profile and edit its checks in a schema-generated form (no raw JSON); saves to %APPDATA%, never the bundled default.
Pick a profile, click Scan folder, tick Recursive if the library nests; the footer counts through the files and Cancel keeps what has been collected. One collapsible card per family in the findings.
One row per family × check — name, profile, grade, score, group, severity and details on every row, plus Category and Type Count in batch mode — built to filter and pivot across a whole library.
The fix for the Standard Parameters check: binds the profile’s parameters as shared parameters on the open family or across a folder of families, converting an ordinary family parameter in place with its values and formulas kept, with a backup first and a version guard.
.py scripts from configurable library folders inside a valid Revit API context — every execution and completion external-event dispatched, with the engine mined from RevitPythonShell (MIT).doc/uidoc are re-injected at every execution — never stale. Debug against the live model interactively.icz.modeless.ExternalCall — never from a raw UI event — matching the suite's modeless contract. Console convenience without threading crashes.Filter the indexed library folders, open scripts as editor tabs — per-tab dirty state, a + for a fresh buffer, Ctrl+O for any .py on disk — and save with an unsaved-edit guard.
Execute in the shared session scope with doc/uidoc/selection() pre-loaded; output streams to the console.
Type Python directly — Ctrl+Space or a dot pops completions, ↑/↓ walks history, and results print inline, all inside a valid API context.
Library folders, fresh-scope flag, init script, extra search paths and font size — persisted to scriptreader_config.json.
The prerequisite in seven parts: datums, shell, components, rooms, drawings — with six exercises the software marks for you and real Revit 2027 screenshots taken while each one was carried out.
Why: scripts vs graphs, what AI changes, the honest limits, a real in-house extension, and the four-week plan.
One node per slide with its Code Block twin; 107 node chains drawn complete and indexed like a book; every shipping node — 1,836 of them — as an index volume; then the six-part course from first graph to leaving Dynamo for C#.
A graph you run vs a button the whole team gets, kept as a separate deck on purpose, plus the DesignScript reference as Code Block → Watch pairs.
Federating models, the Clash Detective, and automating the clash loop from a text file — five parts, the first two with no code at all. The clash-report XML tag by tag, five recipes and five exercises on a report that ships with it.
Seven exercises on a real MEP hook-up model with expected answers and an “if it does not look like that” block for each. A library of 29 prompts to paste into any AI: 21 for Dynamo and Python, 8 for coordination.
Pick a chain of Dynamo nodes, watch the data travel along the wires, and copy the code that replaces the graph.
107 chains · 14 sections · 595 nodes drawn
Fill the blanks of a ready prompt in place, check it against the six-part recipe, and copy the finished text.
29 prompts · 6 groups · 6 recipe ingredients
Pick an exercise, read what the software should show you, and check your own answer against the expected one.
18 exercises · 3 tracks
Learn the four words Revit is built from, test each myth against the facts, and run the Friday check.
8 myths · 4 words
Read a clash report tag by tag, copy a recipe that parses it, and check your result against the sample file.
16 XML tags · 5 recipes · 5 exercises
Twenty-one tools wired to the modules they consume, in six domains — hover, pin, or take the tour.
The 122 modules every tool imports instead of reimplementing, carded and filterable.
18 servers by lane, the gates and profiles of the Revit bridge, and the harness numbers behind the agent story.
Every page is generated from the same scripts that build the PowerPoint decks, so a slide cannot drift from its web page. The site is handed out by link rather than found by search — this page is one of the places the link lives.
Every pyRevit tool in the suite once re-solved the same problems: the Revit 2024 ElementId breaking change, modeless-window threading, theme duplication, worksharing guards, MEP connector hashing, and batch-export plumbing. The icz package pulls all of it into one dependency-free library, so each tool imports instead of reimplementing.
The ElementId 32-bit ⇄ 64-bit shim for Revit 2024+. The one change every other module is built to survive.
Feet ⇄ millimetre conversion factor and the shared MEP tolerance constant — the bare essentials, deliberately kept small.
The IronPython 2.7 ⇄ 3 seam — import to_text, text_type, iteritems and friends here instead of touching removed builtins (unicode, xrange, basestring). The prerequisite that unblocked the ipy3 flip.
Thin IronPython caller over the compiled core's LicenseGate — machine fingerprint, signed entitlement activation and per-feature checks, so protected engines stay gated inside the DLL and the UI degrades gracefully.
The host-application seam — one place the suite reaches the active document, transactions and bundle files, delegating to pyRevit when present and falling back to the native handle when not. The single step toward dropping the pyRevit dependency later. Also the canonical IcZ.Core.dll path resolver.
Launch-time document guards — a tool clicked with no project open aborts with a clear notice instead of a NoneType crash. Wired into every document-dependent tool (Family QC is intentionally exempt — it runs open-first in the family editor).
A single Light/Dark palette pushed into WPF {DynamicResource} keys — one source of truth for every tool's colors.
The ShellWindow base: traffic-light dots, collapsible nav-rail, title-bar drag and a deferred theme apply that dodges a WindowChrome re-entrancy crash.
Wraps IExternalEventHandler into a reusable ExternalCall so WPF clicks mutate the model inside a valid API context — never off-thread.
Shared loader for IcZ.PdfView.dll — the suite's native WPF PDF viewer/editor (PDFium render, PdfSharpCore edit): scroll, search, ink/text/highlight markup, page rotate-reorder-insert-delete-extract-merge, and annotation burn-in.
One hybrid-safe file/folder picker wrapping the .NET dialogs directly, so pickers work under IronPython 2.7 / 3 and CPython-in-Revit with no pyRevit forms dependency.
Builds the shared review rows (check · ID · Family & Type · badge) with click-to-isolate hooks, so every pre-scan review looks and behaves the same.
Reusable WPF ValidationRule subclasses for settings pages — inline red-outline feedback on empty or non-numeric input, wired straight from XAML.
A hierarchical tri-state selection tree (bool? parent semantics): a parent node toggles all its leaves and reads back as indeterminate when only some are checked — "everything except one" in a couple of clicks. First consumer: WOT's MEP element scope.
The suite's MEP connector engine: unused-connector detection, string-domain matching, an O(n) spatial-grid pair finder, and safe auto-connecting.
True-geometry (solid-level) intersection primitives — catches the cases axis-aligned bbox tests miss: rotated elbows, L-shaped fittings and insulation shells whose boxes overlap while the solids never touch.
Generative A* routing behind one call — IcZ.Core.dll's fast voxel pathfinder when the binary is present, an identical-semantics pure-IronPython fallback (lower node cap) when it isn't. One netstandard2.0 binary serves Revit 2022–2026.
Generic tag-audit engine — one pass parameterized by (element category, tag category) finds untagged (missing) and over-tagged (duplicate) elements per view, replacing seven single-purpose buttons.
Safe family / type name resolution — the first non-empty type label across a list, handling the FamilyInstance ambiguities that trip up naïve lookups.
Parameter read/write primitives with one shared fill-empty / overwrite policy and one instance-then-type lookup chain across the whole suite. Its describe() returns per-parameter metadata (storage type, read-only, modifiable) so a UI can validate at edit-time — first used by WOT to write opening dimensions only into a genuinely writable parameter.
One hardened JSON config store the whole suite delegates to — load, deep-merge and atomic write behind export profiles, guideline folders, AA mapping tables and the param registry. No more per-tool copies of the same dance.
Managed-parameter registry — reads param_registry.json so AA's SPEC/CMMN handling comes off hardcoded name literals; retarget a firm by swapping the JSON, no code change.
A generic scored test-table framework — named tests each returning a 0..1 score + comment, aggregated per group and overall with score→label banding. Scores anything, not just families.
Turns the firm's Autodesk Model Checker ruleset (the ~709-rule LOI parameters check) into a report-only score AA runs against the open model — no external Model Checker install, no separate run.
Profile-driven family health-check engine — a firm-agnostic test/scoring core reading famqa_profiles, generalized from a single-vendor content standard into a reusable QA pass. Surfaced by the Family QC tool.
Colour a view's elements by a parameter's value — bucket by value, assign each bucket a distinct colour (deterministic HSV or ordered gradient), paint via reversible view overrides, and reset. The spatial QA mode the report-side piecharts can't give: colour by SPEC_SYSTEM to see system coverage. Surfaced by AA's Colorize by Value audit page.
JSON-safe deep-clone and the single atomic .tmp→.bak→rename writer. Now adopted suite-wide (diff-harnessed): with configstore it is the one canonical JSON persistence path — every tool's config load/save routes through the pair, and configstore.read_json covers the bundled-seed read side (best-effort or fail-loud).
Read an element's workset, test whether its partition is writable, move it to a target, and find-or-create a workset by name — the pieces AA Phase 8 and PSU both need.
Worksharing checkout / editability guards, so every write tool skips elements owned by other users and reports the owner identically.
The shared profiles.json handler (schema v2) for the export tools — reusable export profiles read and written through one contract.
The AutoDoc Universal Layout Engine — a JSON profile says which views a sheet carries and where they dock (anchor + margin); this does the matrix math, view creation, place-and-shift viewport docking, schedule placement and tagging. Transaction-free.
A minimal pure-Python .xlsx writer — real OOXML (zip + XML), no COM and no third-party packages — the Excel-free fallback for schedule and register exports — and, since the cyan preset became the default, the one writer behind every tool's .xlsx.
A lightweight per-format performance tracker that gives users an actionable count / elapsed / warn / error summary at the end of a batch run.
Shared warning/failure suppression via IFailuresPreprocessor, so batch operations dismiss Revit's mid-run popups instead of stalling on them — and, where an operation would only succeed by deleting elements, refuse instead.
Persistent per-purpose folder/file memory with slots (profile, template, output…), so each picker seeds from the right place instead of the last path used anywhere.
Copies elements from one document into another without a dialog. Revit asks what to do about a type name the copy brings along; the handler here keeps the destination’s own definition for every name it already has, so the copy completes and the project’s definitions win.
Places one typical from a library board into the project: its middle on the picked point turned by the angle, or one of its open ends onto a picked pipe end and connected, its height kept above the chosen level, mirrored on request — one undo step.
Where a library comes from when it is not open: a folder copy opened detached so the central is never bound, the local Revit cache, Autodesk Docs by cloud id, or a pack of its own — opened in the background, never activated, saved or synchronised.
Rules that pick a row by words in a name. A word stands in a name as whole parts of it, and the first rule whose word stands wins — the one matcher behind Pressure Loss’s fluids and the MEP Workbench’s system map.
Puts a profile’s standard parameters into families as shared parameters, in the open family or across a folder: a missing name is added from the shared parameter file, an ordinary family parameter of that name is converted in place with its values kept, and a name the file does not define is reported, never invented.
What turns a piping isometric into a fabrication sheet: joints and their weld types, spools cut to a transport box, the line data block, the abbreviations a sheet uses and its general notes. Plain data in and out, no Revit and no drawing.
The LOI Scorecard report in every format the page saves: an HTML report, a workbook, a one-page SVG summary and a WPF FlowDocument — all four written from one payload, so they agree with each other and with the page.
The annotate-and-gate helpers of Sheet AutoDoc: each takes a live document and a sheet and returns what it did, skipped and could not do, with ids and short strings only. Transaction-free; the caller owns the transaction.
Sheet composition helpers collected from shop-drawing work: tagging, viewport title placement, grid and level dimensions, crop manipulation, section and isometric geometry, spot elevations, notes legends. Transaction-free and pyRevit-free, consumed by the library’s own sheet modules.
The drafting-standard gate: measures a view or a sheet on the paper in millimetres — annotation on annotation, leaders crossing or through text or at an odd angle, text sizes off the project list, titles on their view, viewports overlapping or outside the title block. Imports nothing from Revit, so the same code runs inside Revit through the bridge’s lint tool and under CPython in its harness.
Selection / isolation UI helpers and dynamic shared-parameter binding routines — the small conveniences several tools reach for.
Point placement of opening / sleeve / marker families: nearest-level creation with the level-relative-Z correction, the batched offset take-up and its post-regeneration verification, the OneLevelBased refusal and the dimension-write gate. Promoted from the Opening Tool when the Clash Importer became its second consumer.
One door onto every clash-report format — detects by content and normalises the result so nothing above it branches per format. Behind it sit five dependency-free readers (clashxml, clashhtml, clashtable, bcf) over the namespace-tolerant xmlwalk helpers; none of them touch the Revit API, so all are harness-tested offline against synthetic fixtures and real exports.
The clash ⇄ marker link: encodes a short state token into a text parameter on the marker, scans the model for stamped markers, and reconciles a re-imported report into New / Placed / Completed / Ignored / Not in report. The pure half is harness-tested.
The family-library authority: joins the firm's on-disk family library with its content-catalogue export — complementary sources, neither complete alone — so a tool asks the library what a family is called instead of inferring it from a name suffix.
Edits inside a family document — re-typing nested components one document further in than the project — and reads the TransactionStatus every commit returns, so a refused write reports as refused instead of as success.
Deletion-dependency safety: a read-only dependent preview without a transaction, a rolled-back dry delete for the exact cascade set, type consolidation, and a verified re-type that reads the type back before counting a change. Promoted on its third consumer.
System-layer doctor working on MEPSystem objects rather than elements: empty systems, duplicate system names and Undefined system types — scan and apply, in a fixed order. The three Systems stations of Model Cleanup.
Revit-bound shim over the compiled flex toolkit: flex point read/write, collection, diameter, audit, simplify, split, create, plus offset / lane-packing / sweep / spine geometry. Geometry calls fail loudly without the core; the plain Revit-bound helpers still work.
Disallow structural framing joins while preserving the as-joined physical length through the start/end extension parameters; node grouping, butt-scheme resolution, opt-in location realignment and rejoin. Node clustering runs in the compiled core.
Subject-aware section-box and 3D-view primitives: subject bounding boxes, box apply / remove / restore / toggle, grow, isolate, zoom, and the section-box config store — the one engine behind all six Section Box commands.
The wall-opening intersection pre-filter math — rotation, spatial-hash cells, AABB overlap, transformed AABB — as a drop-in over IcZ.Core. Fails loudly when the assembly is absent; there is no Python fallback.
Draws staged opening boxes into the active view before anything is placed — the in-model half of the Opening Tool's preview, toggled from the Configure page.
The suite's one data-viz vocabulary: KPI stat tiles, status donut, legend, labelled stat bars and separators — so a KPI strip in one tool reads exactly like the next tool's.
Themed modal ask_yes_no / ask_choice / notice — the sanctioned replacements for an untheme dialog, so the one genuine Yes/No a tool needs matches the window it came from.
Loader for the native IcZ.Reader assembly — the multi-format routing host and the PDF pane, plus stamping, signing, certificate listing, OCR, image cleanup and text extraction. pdfview is now a back-compat shim over it.
The IronPython script-execution engine behind Script Reader: scope construction, completions, syntax check, run, auto-indent, and script file listing / read / write.
The suite logger: one shared, size-rotated log under %APPDATA%, flushed on every write, with levelled output, tables, key/value blocks, timers, and runtime probes for x:Name and resource-key contracts. Armed automatically for every ShellWindow, so all twenty-one tools reach it through the shell. FIT also calls it directly.
The read side of the spreadsheet pair — a dependency-free .xlsx / .xlsm reader (zip + regex) used by the reader pane, the guideline preview and the Excel clash-report reader.
The coordination-model obstacle source: resolves which NWD / NWC / NWF files a document links, enumerates the models inside one, and runs the headless Navisworks reader out of process to return leaf bounding boxes — cached per envelope. The Revit API returns nothing for these files; this is how the suite sees them.
A pure-data uniform spatial index over axis-aligned obstacle boxes: register once, then each query touches only the cells the probe covers. Turns hundreds of millions of box tests into a handful of cell visits before any solid is intersected.
The Interference Check → Clash Importer seam: serialises result rows to a one-shot file in the user state directory and reads them back as importer rows already in the document's internal feet. Revit-free and harness-tested.
Run-to-run delta for the Interference Check: classifies each result as NEW, UNCHANGED or not comparable, keyed by a run signature so only like-for-like runs are compared, over a bounded history of compact digests.
Penetration-delta classification for the MEP Opening Tool: compares the current run against the stored ledger and returns NEW, UNCHANGED, MOVED (with distance), RESIZED (old → new) or GONE, on a key quantised to a half-foot grid so it survives a save and a link re-export.
The flex-duct riser design engine behind the Riser operation: from one flex that crosses the slab, computes the complete rigid riser — 45° jog legs, elbow take-offs, rigid stop height above slab top — as plain geometry the page then draws.
The one declarative element scan the suite shares: builds and runs a FilteredElementCollector from a spec — categories, class, family name, bounding box — and answers a bounding-box-scoped nearest-curve query. The same spec the agent bridge's element filter answers.
FilterProfile — a named, JSON-serialisable scope + category + parameter filter, so every “gather the elements matching X” loop shares one shape and one serialisation.
A named-preset store inside a tool's existing config file: built-in and user presets under one sub-key, so a page can save the current picks under a name without inventing its own file.
A tool's LAST-USED picks, per user and per project, kept out of the git-tracked bundle config: one state file per tool under the user state directory, bounded to the most recent projects.
The shared findings-row workbook writer: rows and headers in, a dated .xlsx beside the document out, with one output-path resolver — so every tool's Export button writes the same shape of workbook.
Sheet schedule overlap pre-flight — exactly three checks: schedule vs schedule, schedule outside the title-block boundary, schedule over a viewport — in paper-space feet with a small inward margin so adjacent schedules do not trigger it.
Tag leader geometry for Sheet AutoDoc: computes the tag head position from view-space bounds and an offset, and the orthogonal elbow so a leader drops vertically then crosses horizontally — conventional MEP drafting. Reached through the layout engine rather than imported by the tool.
Visibility/Graphics capture and apply between views or projects: serialises a view's category overrides, filter list and per-filter overrides to portable JSON and applies that state to any set of views or templates.
Cross-document Space ⇄ Room pairing and parameter transfer between the MEP model and the linked architectural model — the engine behind Project Setup's Space ⇄ Room QA station.
Design-option and phase awareness helpers, API-confirmed identical from Revit 2022 to 2027: which option set and option an element belongs to, and whether that option is primary — so a cleanup never deletes the primary's twin.
Batch family health-check from the Part Atom XML export — eight of the seventeen checks, run against a whole folder of .rfa files without opening any of them.
Family rename planner and executor: derives proposed names from find / replace / prefix / suffix rules, checks collisions on disk, in the model and within the plan, and applies the disk and model halves with an undo map written first.
Canvas-based multi-axis radar visual, theme-brush driven — the health radar in Family QC and the scorecards in the QA/QC workbenches, drawn from a scored test table.
The pure geometry core for pie and donut slices, formatted twice — WPF Path data and SVG path — plus the promoted rounded-rectangle canvas helper the opening-shape and pack-plan previews draw with.
A themed combo-shaped multi-select: a summary box that opens a popup of checkboxes, for flat “pick many” filters — worksets, phases, host types.
A rendering-agnostic source-code tokenizer: one line in, (kind, text) spans out, with no state — the syntax colouring behind Script Reader's editor and the Guideline's code previews.
The dependency-free reader for Navisworks Clash Detective XML — clash points, statuses, grid locations, per-side objects — and the one name for a clash that carries no status, shared by the filter chip and the rows so nothing is dropped between them.
Promoted BIM-standard reference data — colour codes, the LOD/LOI matrix, the shared-parameter registry, naming masks and classification — read from data rather than baked into any tool.
Client for the persistent out-of-process CPython worker used by the compiled Native tier: one worker per session, reused, so a per-element lookup costs a pipe round-trip rather than a process launch.
The shared prettify seam for every display channel: thousands grouping, zero-guarded percentages, lengths and counts formatted the same way in a KPI tile, a grid row and a log line.
Title-block paper extents from the family symbol, and title-block PNG rendering — what the Sheet AutoDoc layout preview is drawn on.
Builds a piping isometric from a network dict: projection, dimensions, arrows, elevations, bill of material and render primitives. It needs no Revit.
Writes the isometric as plain PDF pages through pdflite, for a model with no title block or for plain paper.
Chooses the symbol for a fitting, accessory or equipment piece on the isometric. It returns plain line, polygon, circle and text primitives.
Reads a library model laid out on a board, with its frames, labels and placed content, as plain data. A tool can then ask the library what belongs together.
Reads a pipe or duct network out of Revit as plain data in SI units. It walks the connector graph from a start element and is read-only.
A dependency-free PDF 1.4 writer: text, lines, polygons, headings and tables that break across pages. It runs under IronPython and CPython.
Builds the tick-list of the ports of a start element, headed “flow leaves through”. The Pressure Loss, Piping Isometric and Schematic windows share it.
The background watch on new pipes and ducts that have no system type. It can notify or repair, it survives a reload, and startup.py attaches it.
from icz import theme
from icz.shell import ShellWindow # shared window chrome
from icz.modeless import ExternalCall # ExternalEvent-safe model writes
from icz.revit_compat import eid # Revit 2024+ ElementId shim
class ToolWindow(ShellWindow): # inherit dots, nav-rail, theme
...
commit = ExternalCall(handler) # call .raise_with(fn) from any click
key = eid(element.Id) # int, on any Revit version
Only the public call surface is shown here — internal logic stays in the private repository.
The distribution builder. It makes a source-protected copy of a pyRevit extension that still runs. The suite can then go to a colleague without plain Python source. It works in four tiers.
.py file and masks it behind a small loader..pyd files..dll and .exe.The pyRevit directives and tooltips stay in clear text. A failed tier fails the build with a named reason, and a leak audit checks the output.
The model-workflow policy, packaged so that one command installs the same setup on any desktop. Worker agents run on pinned tiers: mechanical, drafting and review.
An omitted tier or a bare alias is refused. A gate hook checks every worker launch, and each worker definition forbids fanning out further.
The repository holds eight pinned agents, six skills, the gate hook, a managed instruction block and one installer with self-tests. The skills are a prose humanizer, a mod-stability method, an agent forge, a construction-data method, the worker playbook every worker follows and a method for finishing a session that stopped.
excel-knowledgeA standalone server with 66 tools in five sets. A knowledge API serves course workbooks, a Power Query, Power Pivot and DAX guidebook, and researched Microsoft documentation.
Formula tools explain a formula or measure argument by argument, catch classic mistakes and audit whole workbook files with no Excel needed. Control tools drive Excel through COM, or edit the file directly and calculate with LibreOffice.
Power BI tools open a project, describe its model, refresh it and run DAX queries. Primavera P6 tools read the P6 EPPM API reference, offline or online, and drive P6 Professional: projects, activities, a schedule check, Excel in and out.
icz-learnA standalone server with 5 tools. They are status, documentation search, code-sample search, page fetch and a direct call of any tool of Microsoft’s public documentation endpoint.
Text comes back as a JSON header line, a separator line and the text. A cache serves stale pages when the endpoint is down. The project installs nothing and ships a skill pack.
icz-reverseA standalone server with 36 tools that start with re_. They sit over three engines. The source of each engine is kept and built in the repository. Ghidra handles native code, ILSpy handles .NET and de4dot handles obfuscated .NET.
The Node front reads file headers and routes a file to the native lane, the managed lane or both. One tool names the native DLLs that a managed assembly calls. Scripting and dynamic cleaning stay off unless a gate variable is set.
The companion site: free decks and five interactive pages on Dynamo, Revit, Navisworks coordination and working with an AI assistant. The suite on this page is the real in-house extension that the guide describes.
A repository marked private has no link here on purpose. Each card says what the project does, so the page stays honest about code a visitor cannot open.
18 servers · 506 tools
The total is the count at default gates, and it is 544 with every gate on. The comfy-mcp catalogue is third-party, so it is not in the total. Every server speaks JSON-RPC 2.0 over stdio. Every count comes from one live tool listing of all 18 servers with every gate on, taken on 2026-11-03; the default-gate figure of a server subtracts the tools its own readme names as gated. Zero dependency means no npm or Python packages to install.
revit-knowledge5 toolsLooks up the Revit API. It finds a member, compares Revit years and says which years have it.
pyrevit-knowledge5 toolsAnswers what the pyRevit library accepts and does, from a corpus mined once from the published reference.
ironpython-knowledge6 toolsServes three stores: the hosted IronPython API, engine semantics with provenance, and the engine assembly signatures.
revit-launch143 tools164 with every gateAttaches to a running Revit, or to a second one by port or pid. It reads the model, dry-runs and commits writes, drives the ribbon, captures windows and prints sheets to PDF.
navisworks-launch24 tools31 with every gateDrives Navisworks Manage or Simulate the way revit-launch drives Revit: documents, clash tests and their own Clash Detective reports, C# execution, captures and dialogs.
icz-memory42 toolsThe in-house memory engine. Notes are the truth and the SQLite index can be rebuilt. Episode, code-graph and session tools sit beside it.
icz-docs3 toolsRetrieval over local documents. It indexes Word, PowerPoint, Excel, PDF, Markdown and XML and returns ranked passages with locators.
icz-skills4 toolsServes agent skill packs to a language model and never runs them.
icz-senses10 toolsGives a language model pictures of screens, windows and document pages. It adds local text reading, audio transcription and web search.
scrapling16 toolsFronts a web-fetching package. It offers HTTP and browser sessions, page extraction, browser actions and network capture.
blender-launch28 tools32 with every gateStarts or attaches to a Blender and runs code in it. It builds and sculpts models, uses add-ons and takes pictures.
mod-organizer46 toolsReads a Mod Organizer 2 mod list. Behind dry-run and confirm gates it also changes the list. A live lane drives a plugin inside the application.
acad-launch36 tools39 with every gateDrives AutoCAD and its Plant 3D toolset. A bridge add-in is loaded into a running AutoCAD at run time; it draws, modifies, runs C# and command lines, and reads the Plant 3D data manager.
fusion-launch31 tools34 with every gateDrives Autodesk Fusion through an add-in installed into the user’s add-ins folder. It runs Python on Fusion’s main thread, reads parameters, bodies and the timeline, exports and captures.
comfy-mcp8 toolslean proxy; not in the totalA third-party ComfyUI server. An optional lean proxy in this workspace narrows its catalogue to eight tools.
excel-knowledge66 toolsExcel knowledge, formula and workbook audit, Excel control with or without Excel, Power BI Desktop control, and the Primavera P6 API reference with P6 Professional control.
icz-learn5 toolsOfficial Microsoft documentation and code samples, through the public documentation endpoint. A cache serves stale pages during an outage.
icz-reverse36 toolsA reverse-engineering workbench over three engines: Ghidra for native code, ILSpy for .NET and de4dot for obfuscated .NET.
undo.reverted as a measured true or false. The full cascade is visible before anything is destroyed.Transaction, so Ctrl+Z reverses it; destructive operations need an explicit confirmation on top of the commit flag. No route calls Save, Save As or Synchronize, and the code channel refuses a payload that does — the scan strips comments and requires an actual call, so a docstring mentioning it never false-refuses. The worst case a mistake reaches is an unsaved, undoable in-session change — what lands on disk stays your decision.revit_cmd_* name — 64 execute in the first-party IcZ.Bridge add-in over a named pipe per process, which needs no pyRevit at all and serves several Revits at once; 26 run inside the pyRevit session over the discovered routes port. The two sets are disjoint and the harness asserts it in both directions, so the shared prefix can never let one channel silently shadow the other. Liveness is the pipe, never the pid — Windows recycles pids, and a bridge that had exited two days earlier once read alive because Office had been handed its number. A capability is advertised exactly where it works, and nowhere else.revit_smoke, which turns the sequences a human used to click through into named, repeatable scenarios with their side effects declared up front. "Does it actually look right" stops being a screenshot request and becomes a check the agent runs itself.revit-launch, 143 tools in the default configuration, by channelrevit_statusrevit_routes_getrevit_file_inforevit_write_paramsrevit_write_selectionrevit_write_viewrevit_write_deleterevit_execrevit_clashrevit_cmd_* over two transports — 64 in the IcZ.Bridge add-in, 27 in the pyRevit session, the drafting lint among them — plus 4 revit_data_* for the local project store. Each one dry-runnable.revit_cmd_get_current_view_elementsrevit_cmd_ai_element_filterrevit_cmd_analyze_model_statisticsrevit_cmd_create_point_based_elementrevit_cmd_create_levelrevit_cmd_create_gridrevit_cmd_create_dimensionsrevit_cmd_tag_all_roomsrevit_cmd_drafting_lintrevit_cmd_operate_elementrevit_cmd_delete_element… 80 morerevit_data_queryrevit_data_store_projectrevit_data_store_roomsrevit_ribbonrevit_tool_openrevit_tool_closerevit_pyrevit_reloadrevit_dialog_watchrevit_smokerevit_view_listrevit_capture_viewrevit_capture_windowrevit_capture_pagesrevit_ui_invokerevit_toolsrevit_holdrevit_screenrevit_computerrevit_ui_controlsrevit_ui_controlrevit_dynamo_* knowledge ×7revit_dynamo_graph_readrevit_dynamo_graph_editrevit_knowledge_* ×5revit_iczbridge_statusrevit_iczbridge_callrevit_d23d_* ×5revit_parity_reviewrevit_launchrevit_restartrevit_force_restartrevit_dismiss_unsavedrevit_clear_dialogsrevit_licensing_statusrevit_job_statusrevit_dynamo_* live ×14Counts are the ones the server's own harness asserts exactly — a vanished tool is a failure, not a shrug — re-read on 2026-11-03 by a live tool listing with every gate on, less the 21 the readme names as gated. The channel split above is by role; the harness counts by gate.
navisworks-launch, 24 tools by default and 31 with the lifecycle gatenavis_statusnavis_doc_infonavis_treenavis_itemnavis_searchnavis_selectionnavis_setsnavis_viewpointsnavis_clash_testsnavis_clash_resultsnavis_clash_reportnavis_attachnavis_opennavis_savenavis_clearnavis_clash_runnavis_execnavis_pluginsnavis_capture_viewnavis_capture_windownavis_dialogsnavis_launchnavis_closenavis_restartnavis_job_statusnavis_batchnavis_syncacc_statusnavis_syncacc_comparenavis_syncacc_buildnavis_syncacc_runnavis_syncacc_cliNothing is installed into Navisworks: the bridge add-in is injected at run time through the Automation API from a shadow copy, so the build stays rebuildable while a session is open. Only one session can be bridged, a startup dialog is reported and never answered, and a close is proven from a process handle opened first — with crashed:true and the status code when Navisworks fell over on the way out.
navisworks-launch drives Navisworks the way revit-launch drives Revit.blender-launch starts or attaches to a Blender and runs code in it, with the same dry-run habits.acad-launch and fusion-launch bring AutoCAD, Plant 3D and Fusion into the same pattern, each with an API corpus read from the installed build.revit-launch (on Windows with real PowerShell stubs and on Linux with Node stubs; measured 2026-11-01) and 122 checks for navisworks-launch (measured 2026-10-25). A mutant run on a scratch copy of revit-launch caught 77 of 77 deliberately planted defects, each run in its own section (measured 2026-10-29). The guard suites assert that every destructive refusal happens before anything spawns and that refused calls never reach the wire at all. Key assertions are proven red against deliberately broken inputs before their green is trusted.