Developer Platform · Model Context Protocol (MCP) v1.0

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.

Step 1 · 60-Second Setup

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.

claude_desktop_config.jsonMCP stdio JSON-RPC
{
  "mcpServers": {
    "measuremint": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/measuremint-ai/apps/desktop/mcp/server.js"],
      "env": {
        "MEASUREMINT_LOG_LEVEL": "info"
      }
    }
  }
}
Example Agent Prompt in Claude:

"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."

Step 2 · API Reference

17+ AEC Blueprint MCP Tools Reference

Tool NameCategoryDescription & SignatureOutput / Receipt
diff_sheetsAddenda & 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_qualityAddenda & 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_planAddenda & 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_graphSpatial 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_calloutsSpatial 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_bookmarksSpatial 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_symbolsSpatial 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_calibrationScale 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_scaleScale 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_scaledScale 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_measurementTakeoff & 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_countTakeoff & 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_markupTakeoff & 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_pdfTakeoff & 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_csvTakeoff & ISO 32000
Exports itemized CSV quantity schedules mapped to standard CSI MasterFormat divisions.
export_csv({ path })
{ ok: true, rowsCount }
Step 3 · Node.js SDK

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}`)
Step 4 · Human-in-the-Loop Canvas

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>
  )
}
Join The Developer Cohort

Ready to build autonomous AEC agents?

Get immediate priority access to our stdio MCP server, npm tokens, sample drawings, and private Discord.

Join Developer Waitlist →