MeasureMint AI Developer Documentation
The programmable blueprint infrastructure, deterministic scale math, and 17+ AEC blueprint MCP tools powering autonomous construction agents in Claude Desktop, Cursor, and LangGraph.
Connecting to Claude Desktop & Cursor via MCP
MeasureMint exposes a local stdio JSON-RPC server adhering to Anthropic's Model Context Protocol (MCP). Your AI agents can inspect architectural drawing sets, calibrate scales, and export takeoffs without clicking.
{
"mcpServers": {
"measuremint": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/measuremint-ai/apps/desktop/mcp/server.js"],
"env": {
"MEASUREMINT_LOG_LEVEL": "info"
}
}
}
}"Open Wendell-Drawings.pdf, calibrate page 1 to 1/4" = 1'-0", resolve all cross-sheet section callouts, measure the conference room area, and compare against Addendum 2 using diff_sheets."
17+ AEC Blueprint MCP Tools Reference
| Tool Name | Category | Description & Signature | Output / Receipt |
|---|---|---|---|
| diff_sheets | Addenda & Revision | Compare two blueprint sheets or addenda revisions to detect geometric deltas, modified markups, scale adjustments, and CSI quantity variances. diff_sheets({ documentIdA, pageIndexA, documentIdB, pageIndexB, tolerance }) | { deltaClassification, summary, netQuantityImpact, provenanceReceipt, deltaRegions } |
| analyze_page_quality | Addenda & Revision | Inspect vector vs. scanned raster quality, detect deskew angle, and assign scale confidence rating. Auto-flags scanned sheets for human verification. analyze_page_quality({ documentId, pageIndex }) | { pageType, confidence, requiresVerification, deskewAngleDeg } |
| reconcile_schedule_to_plan | Addenda & Revision | Reconcile schedule fixture tags (e.g. VAV-1, FD-2, Panel A) against canvas markups to detect omissions and scope gaps before bid day. reconcile_schedule_to_plan({ documentId, pageIndex, schedule: [...] }) | { totalItems, matches, underCount, overCount, reconciliation: [...] } |
| get_spatial_graph | Spatial Graph | Constructs a multi-sheet spatial knowledge graph mapping drawing disciplines (Arch, Struct, MEP), scales, and cross-sheet relationships. get_spatial_graph({ documentId }) | { totalSheets, disciplines, calloutEdges, hierarchy } |
| resolve_callouts | Spatial Graph | Scans architectural section bubbles (e.g. 1/A-301) and resolves target destination sheets with verified link navigation. resolve_callouts({ documentId, pageIndex }) | { callouts: [{ label, targetSheet, bounds, resolved }] } |
| auto_create_bookmarks | Spatial Graph | Extracts title block metadata, updates PDF page labels, and builds standard PDF navigation bookmarks. auto_create_bookmarks({ documentId }) | { bookmarks: [{ page, title, sheetNumber }] } |
| auto_count_symbols | Spatial Graph | Searches CAD vector entities across sheets to locate electrical, plumbing, or fire tags, generating instant point tally markups. auto_count_symbols({ documentId, query, pageIndex }) | { createdCount, subject, points, quantity } |
| set_calibration | Scale Math | Binds real-world architectural units ($1/4" = 1'-0"$, $1" = 20', metric) per PDF point. Supports localized scale detail insets. set_calibration({ documentId, pageIndex, scaleX, scaleY, unit, label }) | { calibration: { scaleX, scaleY, unit, label, confidence, provenance } } |
| get_scale | Scale Math | Resolves active architectural scale for a given coordinate, automatically falling back to scale region or page calibration. get_scale(documentId, pageIndex, point?) | { calibration, inRegion: boolean } |
| draw_scaled | Scale Math | Draws architectural geometry using real-world units (feet/inches) converted deterministically to PDF points. draw_scaled({ documentId, pageIndex, shape, width, height, origin }) | { markup: { id, type, width, height, area, points } } |
| create_measurement | Takeoff & ISO 32000 | Calculates length, multi-vertex shoelace polygon area, perimeter, volume, and angles with zero coordinate drift. create_measurement({ documentId, pageIndex, kind, points, subject }) | { markup: { id, quantity, unit, confidence, provenance: { formula } } } |
| create_count | Takeoff & ISO 32000 | Generates point tally markers with verifiable provenance receipts for fixture and equipment takeoff. create_count({ documentId, pageIndex, points, subject }) | { markup: { id, quantity, unit: "ea", points } } |
| offset_markup | Takeoff & ISO 32000 | Calculates equipment clearance envelopes and maintenance perimeters outward or inward from existing markups. offset_markup({ id, distance, unit, direction }) | { markup: { id, type, bounds, clearanceArea } } |
| export_pdf | Takeoff & ISO 32000 | Exports standard ISO 32000 PDF annotations with author, subject, measurements, and status native to Bluebeam Revu. export_pdf({ documentId, path }) | { ok: true, path } |
| export_csv | Takeoff & ISO 32000 | Exports itemized CSV quantity schedules mapped to standard CSI MasterFormat divisions. export_csv({ path }) | { ok: true, rowsCount } |
Programmatic Usage with @measuremint/core
For backend microservices and TypeScript pipelines, @measuremint/core provides deterministic document commands with exact architectural scale math.
import { DocumentCommandEngine } from '@measuremint/core'
import { openPdfPath, exportPdfPath, exportCsvPath } from '@measuremint/core/nodeIo'
// 1. Initialize deterministic engine
const engine = new DocumentCommandEngine()
engine.setAuthor('Autonomous Precon Agent')
// 2. Open architectural PDF drawing set
const { data: { documentId } } = await openPdfPath(engine, './drawings/A-101.pdf')
// 3. Set architectural scale calibration (1/4" = 1'-0" => 1 ft / 18 pt)
const scaleFtPerPt = 1 / 18
engine.setCalibration({
documentId,
pageIndex: 0,
scaleX: scaleFtPerPt,
scaleY: scaleFtPerPt,
unit: 'ft',
label: '1/4" = 1\'-0"'
})
// 4. Calculate shoelace polygon area with provenance receipt
const { data: { markup } } = engine.createMeasurement({
documentId,
pageIndex: 0,
kind: 'area',
points: [
{ x: 120.5, y: 140.0 },
{ x: 480.0, y: 140.0 },
{ x: 480.0, y: 390.5 },
{ x: 120.5, y: 390.5 }
],
subject: 'Level 1 Conference Room Flooring'
})
console.log(`Measured: ${markup.quantity.toFixed(2)} ${markup.unit}²`)
console.log(`Provenance: ${markup.provenance.formula} | Confidence: ${markup.confidence}`)Embeddable React Audit Canvas (@measuremint/viewer)
Eliminate the estimator trust barrier by embedding our interactive React blueprint audit canvas directly into your web application.
import React, { useState } from 'react'
import { BlueprintViewer } from '@measuremint/viewer'
export function BlueprintAuditModal({ document, markups, calibrations }) {
const [selectedId, setSelectedId] = useState(null)
return (
<div className="w-full h-[650px] border border-slate-700 rounded-xl overflow-hidden">
<BlueprintViewer
document={document}
pageIndex={0}
markups={markups}
calibrations={calibrations}
selectedMarkupId={selectedId}
onSelectMarkup={(id) => setSelectedId(id)}
onStatusChange={(id, status) => console.log(id, status)}
showInspector={true}
showToolbar={true}
/>
</div>
)
}Ready to build autonomous AEC agents?
Get immediate priority access to our stdio MCP server, npm tokens, sample drawings, and private Discord.
