MCP App Store
by KeenEthics

Overview

BOLDR MAX is a web platform and mobile app, with MCP and API access, making it easy to integrate nearly any workflow into our field-optimized data collection tools. Advanced image processing makes it simple to collect, organize, and annotate anything captured in the field and share it with the office. • BOLDR Pro is REEKON Tools' jobsite data platform for construction teams: projects, jobs, and field measurements captured by REEKON measuring devices or entered manually, organized into forms with per-column tolerances. • This connector gives Claude full read and write access to your organization — governed by your existing BOLDR role and shares, so connecting never grants more than you already have in the apps. • Read & analyze: browse projects, jobs, and forms; list measurements in any unit; find out-of-tolerance values using BOLDR's own tolerance math; track progress and deviation trends; search files by name across the whole organization; export complete job tables as CSV. • Write: create projects, jobs, and forms; record measurements (plain-language values like 3' 4-1/2" work); bulk-create up to 50 rows at once or import a whole table from CSV-like data in one call; upload photos and PDFs (inline, direct upload up to 25 MB, or fetched from a public URL); annotate photos and plans with strokes, shapes, and live measurement tiles; save printable labels whose QR codes deep-link into the apps; import construction calculators pre-filled with your inputs; move jobs and folders between projects. • Destructive operations are clearly marked so Claude confirms before deleting. Read-only connections see only the read tools.

Tools

add_note

ChatGPT
Attach a text note to a group. Plain text; blank lines separate paragraphs.

apply_canvas_ops

ChatGPT
Apply a batch of annotation operations to a file's canvas atomically, using the same reducer the apps run. The operation set is closed and fully schematized in the ops union — these twelve and nothing else: addStroke / updateStroke / removeStroke (freehand strokes), addShape / updateShape / removeShape (rectangles, ellipses, text, and lines — an arrow is kind 'line' with style.cap 'arrow'; style.cap decorates the end and style.startCap the start, each 'arrow' | 'butt' | 'round' | 'square', and strokes take the same cap/startCap at their top level), addMeasurement / updateMeasurement / removeMeasurement (measurement tiles placed on the canvas), setLayers (replace the layer list), setTileScaleFactor and setTileDocSize (tile sizing). When asked to label a measurement, tile, or measurement annotation, ALWAYS set the measurement's own label with update_measurement (tiles render measurement.label first) — never labelOverride, which is a canvas-only caption that leaves the measurement unlabeled everywhere else; reserve it for an explicitly canvas-specific caption. For paged PDF documents (pdfCanvas files) pass page — each page has its own canvas in PDF-point coordinates (origin top-left; see get_canvas for the page size). The remove* ops and setLayers discard elements permanently.

convert_measurement

ChatGPT
Parse a measurement string and convert it between units using the exact math BOLDR uses (never compute conversions yourself). Accepts strings like "3' 4-1/2\"", "42.5 in", "130 cm", or a bare number with fromUnit. Results use BOLDR display rounding (the increments REEKON devices show, e.g. mm in 0.5 steps).

create_canvas

ChatGPT
Create a blank annotation canvas (sketch) in a group. Draw on it with apply_canvas_ops. Auto-named "Canvas N" when name is omitted.

create_folder

ChatGPT
Create a job folder in a project (folders don't nest). Assign jobs to it by setting their folderId.

create_formula

ChatGPT
Create a formula (math.js expression over measurement-column variables) in the org library, or in a template (pass templateId).

create_group

ChatGPT
Create a group in a job. 'form' groups are table rows and REQUIRE a sectionId (the section's columns are seeded empty); 'list' groups are standalone measurement lists and take NO sectionId. Group numbering is assigned by the server.

create_groups

ChatGPT
Create up to 50 form-group rows in one section atomically. Cells are keyed by column id; measurement/angle cells take a VALUE (number, measurement string like "3' 4-1/2\"", or {value, label, note}) and the measurement docs are created for you — never pass measurement ids here. Other column types take the same values as set_cell_value. Prefer this over repeated create_group/create_measurement calls.

create_job

ChatGPT
Create a job in a project. The server seeds progress tracking and the Default measurement group automatically.

create_label

ChatGPT
Create a printable label in the org label library, bound to a job (measurement cells resolve there). Max 4 rows × 2 cells. To make a QR cell open a BOLDR entity (e.g. the group/form the label belongs to), pass qrOptions.target — e.g. {type:'group',projectId,jobId,groupId} — instead of value: the server mints the share link the apps would.

create_measurement

ChatGPT
Record a measurement in a group. Length values accept a number in unit or a measurement string like "3' 4-1/2\"" (stored canonically in micrometers); angle values are signed degrees. Pass columnId to fill a form-group cell with the new measurement.

create_project

ChatGPT
Create a project in the organization. The project index (ordering) is assigned by the server.

create_section

ChatGPT
Create a section (a table definition) in a job. tableConfig defines the columns; form groups created from the section become its rows. Column types: text | number | measurement | angle | boolean | singleSelect | multiSelect | formula | conversionTable | instructions.

create_template

ChatGPT
Create a reusable job template (column + tolerance configuration) in the organization library. API-created templates are always org-private.

delete_file

ChatGPT
Permanently delete a file and its stored content (binary, thumbnail, annotations). Confirm with the user first.

delete_folder

ChatGPT
Delete a job folder. Jobs inside it are NOT deleted — they are moved out (folderId reset to '').

delete_formula

ChatGPT
Permanently delete a formula from the org library, or from a template (pass templateId). Confirm with the user first.

delete_group

ChatGPT
Permanently delete a group and (via the backend cascade) its measurements and files. The Default group cannot be deleted. Confirm with the user first.

delete_job

ChatGPT
Permanently delete a job AND everything under it (groups, measurements, files) via the backend cascade. This cannot be undone — confirm with the user first.

delete_label

ChatGPT
Permanently delete an org label (including its preview and cell images). Confirm with the user first.

delete_measurement

ChatGPT
Permanently delete a measurement. Any form cell referencing it is cleared to empty. Confirm with the user first.

delete_project

ChatGPT
Permanently delete a project AND everything under it (folders, jobs, groups, measurements, files) via the backend cascade. This cannot be undone — confirm with the user first.

delete_section

ChatGPT
Permanently delete a section AND all of its groups (their measurements and files cascade). This cannot be undone — confirm with the user first.

delete_template

ChatGPT
Permanently delete an org template with its files and formulas. Confirm with the user first.

edit_section_columns

ChatGPT
Add one column to a section's tableConfig (pass addColumn; new cells are seeded empty on every group) or remove one (pass removeColumnId; the column's cells, descriptions and tolerances are deleted from every group — this discards data). Pass exactly one of the two.

evaluate_calculator

ChatGPT
Run a calculator's equations against supplied input values and return the computed outputs. Keys of inputs are field ids (see get_calculator). Measurement fields accept a number in the field's unit or a measurement string like "3' 4-1/2\""; angle fields take degrees; select fields take an option string.

export_job_csv

ChatGPT
Produce the full CSV export of a job — the same file the BOLDR apps generate — with all cell values, computed formula columns, and measurements formatted in the requested unit.

finalize_upload

ChatGPT
Step 2 of a direct upload: after the bytes were PUT to the URL from get_upload_url, validates them and attaches the file to the group or template chosen in step 1 — photos become annotation canvases, PDFs become paged PDF documents, exactly like upload_file.

find_out_of_tolerance

ChatGPT
Scan every toleranced value in a job and return the ones outside their tolerance bounds, ranked by deviation severity. Deviation is a percentage of the allowed tolerance range (100% = at the bound).

get_calculator

ChatGPT
Fetch a calculator: its input and output fields (with units and options) and the equations linking them. Use it to learn what inputs evaluate_calculator needs. Set includeDiagram to also see the labeled diagram image.

get_canvas

ChatGPT
Read a file's Skia annotation canvas (strokes, shapes, placed measurements, layers) — group files or template files (templateId). Paged PDF documents (pdfCanvas files) keep one canvas per page: pass page (default 0); coordinates are PDF points, origin top-left. Edit with apply_canvas_ops.

get_deviation_trend

ChatGPT
How a job's toleranced measurements have tracked over time: per-day (or per-week) counts, out-of-tolerance counts, and average/worst deviation as a percentage of the allowed range. Useful for 'is accuracy improving?' questions.

get_file

ChatGPT
Fetch one file (group file, or template file via templateId): notes return their full text; photos and image files return the image inline (thumbnail by default) plus a 15-minute signed URL for the full-resolution original; other binaries (PDF, 3D) return the signed URL only.

get_job_details

ChatGPT
One-call snapshot of a job: metadata, sections (the column schemas), and groups with their filled-in cell values and measurement counts. Cell values are formatted in the requested unit. Formula-column values are computed by the apps and omitted here — use export_job_csv for fully computed rows.

get_job_progress

ChatGPT
Completion statistics for a job: overall progress, per-section cell fill counts, measurement counts, and how many toleranced values are in or out of tolerance.

get_project_progress

ChatGPT
Roll up completion across every job in a project: per-job progress (0–1, maintained by the backend) and project-level summary. Cheap — use get_job_progress for a per-section breakdown of one job.

get_template

ChatGPT
Fetch one template in full (tableConfig with options, tolerances) plus its files and formula count. Resolves org templates first, then the public/shared pool.

get_upload_url

ChatGPT
Step 1 of uploading a file whose original bytes are on disk (an attachment in a sandbox, a local file) or too big to inline (up to 25 MB; PNG/JPEG/PDF, SVG also for template files): returns a one-time URL. PUT the raw bytes to it from a shell — curl -X PUT --upload-file <path> "<putUrl>" — then call finalize_upload with the uploadId. The bytes go directly to BOLDR storage without passing through this conversation. The URL expires in 15 minutes and accepts exactly one PUT.

import_calculator

ChatGPT
Save a construction calculator from the library into a group as a calculator instance file — the same file the apps' run screen saves. The definition is frozen into the file (it keeps working if the source calculator changes) and the diagram with its thumbnail comes along. Pass inputs to pre-fill input fields (field id → value, parsed exactly like evaluate_calculator); computed outputs are never stored — the apps derive them live, and evaluate_calculator shows them here.

import_table

ChatGPT
Import a whole table (e.g. a CSV) in one call: creates a section from column definitions (column ids are generated server-side) and all rows with their measurements. Row cells are keyed by column NAME; measurement/angle cells take values exactly like create_groups. Max 50 rows per call — for more, follow up with create_groups using the returned column ids.

list_calculators

ChatGPT
Browse the construction-calculator library (stair, rafter, volume, conversion calculators and more). source: 'public' = the REEKON-curated library, 'shared' = calculators shared specifically with this organization.

list_files

ChatGPT
List files attached to a job's groups — photos and documents (type 'annotation'), notes, sketches ('canvas'), labels — or a template's files (pass templateId instead). Use get_file to read a note or view an image. With projectId+jobId only, sweeps the whole job (capped).

list_folders

ChatGPT
List a project's job folders. Jobs reference folders by folderId ('' = not in a folder).

list_formulas

ChatGPT
List the organization's formula library, or a template's (pass templateId). Pass formulaId to fetch one formula in full (including variableToColumnMap). Formulas compute derived values from measurement columns.

list_jobs

ChatGPT
List the jobs in a project. progress is a 0–1 completion fraction maintained by the backend. Note: nameContains filters within each page — keep paginating while nextPageToken is present.

list_labels

ChatGPT
List the org's printable-label library (or the public pool with source 'public'). Pass labelId to fetch one label in full with a 15-minute preview-image URL.

list_measurements

ChatGPT
List measurements for one group (paginated) or for the whole job (capped). Values are formatted in the requested unit; length values are stored internally in micrometers (valueRaw), angles in signed degrees. Rows include tolerance status where the group defines tolerances.

list_projects

ChatGPT
List the projects in the organization. Note: nameContains filters within each page, so a filtered page may be short — keep paginating while nextPageToken is present.

list_templates

ChatGPT
List reusable job templates (column and tolerance configurations). source: 'org' = this organization's private templates, 'public' = the public library, 'shared' = templates other orgs shared with this one.

move_folder

ChatGPT
Move a job folder and every job in it to another project (ids preserved, QR share links rewritten, sources deleted after the copy). Cross-project only — same-project folder changes go through update_folder/move_job. Confirm with the user first.

move_job

ChatGPT
Move a job to another project or folder. Same-project moves just re-folder; cross-project moves copy the job's entire subtree and files, rewrite its QR share links, then DELETE the source (ids are preserved, so nothing else changes). Confirm with the user before cross-project moves; large jobs can take a minute.

save_group_label

ChatGPT
Create (fileId omitted) or fully replace (fileId given) a printable label saved in a group. rows/rowSizes describe the whole grid — on replace the previous layout is discarded, never merged. Measurement cells bind live to group columns. To make a QR cell open a BOLDR entity in the apps (e.g. this group/form), pass qrOptions.target — e.g. {type:'group',projectId,jobId,groupId} — instead of value: the server mints the share link the apps would print. Never copy another label's internal QR value; it would open the ORIGINAL entity.

search_files

ChatGPT
Find files by name across every project, job and group you can view — one call instead of walking the tree. Case-insensitive substring match on the file name. Narrow with projectId (and jobId) on large organizations, or filter by fileType (PDF | image | 3D | document) or doc type (canvas, pdfCanvas, note, label, calculator, layoutGroup). Each match includes the full projectId/jobId/groupId address for get_file or list_files. Template files are not covered — use list_files with templateId.

set_cell_value

ChatGPT
Fill or clear one cell of a form group. Works for text, number, boolean, single/multi-select (option strings), and conversion-table (row label) columns; pass '' to clear. For measurement/angle columns use create_measurement with columnId instead.

set_column_unit_lock

ChatGPT
Lock a measurement column to a fixed display/entry unit (the apps' "Lock units"): every value in the column shows in that unit for all users, and bare-number inputs to create_measurement/create_groups for the column are read in it (measurement strings with an explicit unit still win). Pass unit: null to remove the lock.

update_file

ChatGPT
Rename a file (or set a group's default file).

update_folder

ChatGPT
Rename or star a job folder.

update_formula

ChatGPT
Update a formula in the org library, or in a template (pass templateId).

update_group

ChatGPT
Update a group's name, sortIndex, descriptions, tolerances, diagramFileId, or cell values (columns map; values are validated against the section's column types). The Default group cannot be renamed. For a single cell, set_cell_value is simpler.

update_job

ChatGPT
Update job fields (name, folderId, description, address, starred, toleranceConfig). Only the fields passed are changed.

update_label

ChatGPT
Update an org label (rows/rowSizes replace the whole grid together; rebinding projectId/jobId is validated). Public labels are read-only.

update_measurement

ChatGPT
Update a measurement's value, label, note, or completion flag. Length values accept a number in unit or a measurement string like "3' 4-1/2\"" (stored canonically in micrometers); angle values are signed degrees.

update_project

ChatGPT
Update project fields (name, description, address parts). Only the fields passed are changed.

update_section

ChatGPT
Rename a section or replace its tableConfig. Replacing tableConfig backfills new columns as empty cells on every group of the section. To add or remove a single column, prefer edit_section_columns.

update_template

ChatGPT
Update an org template. tolerances keys must be tableConfig column ids. Public/shared templates are read-only.

upload_file

ChatGPT
Upload a small photo or PDF inline (base64, max 4 MB decoded; PNG/JPEG/PDF — SVG also allowed for template files). Uploads create the same file shapes as the apps: photos become annotation canvases (annotate them with apply_canvas_ops), PDFs become paged PDF documents. For larger files (up to 25 MB), or whenever the original bytes live on disk rather than in context, use get_upload_url + finalize_upload instead. The file type is detected from the content itself.

upload_from_url

ChatGPT
Have the BOLDR server fetch a file from a public https:// URL (an S3 presigned URL, a public Google Drive share link, a direct image/PDF link) and attach it — photos become annotation canvases, PDFs become paged PDF documents, exactly like upload_file. Max 25 MB; the file type is detected from the bytes. Only allowlisted hosts are fetched — if a host is refused, download the file yourself and use get_upload_url + finalize_upload. Google Drive links work only for files shared "anyone with the link".

add_note

Claude

apply_canvas_ops

Claude

convert_measurement

Claude

create_canvas

Claude

create_folder

Claude

create_formula

Claude

create_group

Claude

create_groups

Claude

create_job

Claude

create_label

Claude

create_measurement

Claude

create_project

Claude

create_section

Claude

create_template

Claude

delete_file

Claude

delete_folder

Claude

delete_formula

Claude

delete_group

Claude

delete_job

Claude

delete_label

Claude

delete_measurement

Claude

delete_project

Claude

delete_section

Claude

delete_template

Claude

edit_section_columns

Claude

evaluate_calculator

Claude

export_job_csv

Claude

finalize_upload

Claude

find_out_of_tolerance

Claude

get_calculator

Claude

get_canvas

Claude

get_deviation_trend

Claude

get_file

Claude

get_job_details

Claude

get_job_progress

Claude

get_project_progress

Claude

get_template

Claude

get_upload_url

Claude

import_calculator

Claude

import_table

Claude

list_calculators

Claude

list_files

Claude

list_folders

Claude

list_formulas

Claude

list_jobs

Claude

list_labels

Claude

list_measurements

Claude

list_projects

Claude

list_templates

Claude

move_folder

Claude

move_job

Claude

save_group_label

Claude

search_files

Claude

set_cell_value

Claude

set_column_unit_lock

Claude

update_file

Claude

update_folder

Claude

update_formula

Claude

update_group

Claude

update_job

Claude

update_label

Claude

update_measurement

Claude

update_project

Claude

update_section

Claude

update_template

Claude

upload_file

Claude

upload_from_url

Claude

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps