Skip to main content
Glama
671,094 tools. Updated 2026-10-17 21:55

"BIM" matching MCP tools:

  • Import a Revit/BIM model into the Twinmotion visualization pipeline: downloads the source file from a public URL, uploads it to an APS OSS transient bucket, and kicks off an SVF2 + thumbnail translation job. Returns the base64 URN (project_id) used by every other tm_* tool. When to use: when a user wants to prepare a Revit (.rvt), IFC (.ifc), or other BIM/CAD model for real-time visualization in Unreal Engine / Twinmotion — typically the first step before rendering stills, defining scenes, or exporting FBX/glTF/OBJ geometry for a UE import. Also use when you need thumbnails or view metadata from a source file that has not yet been translated by APS. When NOT to use: not for MEP clash review (use navisworks-mcp), not for quantity takeoff or cost estimation (use qto-mcp), not for Twinmotion presets editing — Twinmotion itself has no public REST API, so scene/material authoring must happen manually in the UE editor after FBX/USD export. APS scopes required: data:read data:write data:create bucket:read bucket:create viewables:read. Uses Model Derivative API (translation) + OSS (upload). Twinmotion has no public REST API; all automation is APS Model Derivative + manual Unreal Engine export. Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; large .rvt/.nwd/.ifc files are often multi-GB and translation can take 5–60 min — poll the manifest with exponential backoff (start 5s, cap 60s) rather than retrying this tool. Worker request ceiling is ~100MB body; extremely large files may need signed-URL upload instead. Errors: 401 = APS token failed (check APS_CLIENT_ID/APS_CLIENT_SECRET, re-auth); 403 = scope missing (bucket:create/data:write not granted — have user re-consent); 404 = file_url unreachable; 409 = bucket key collision (rare — retry, tool uses timestamp); 413/507 = file too large for worker memory (advise signed-URL upload); 422 = unsupported source format (only Autodesk-accepted types: rvt, ifc, nwd, dwg, dgn, 3dm, stp, etc.); 429 = back off 60s before retrying; 5xx = APS upstream outage, retry with backoff. Side effects: CREATES a new transient OSS bucket (scanbim-viz-<timestamp>, auto-expires in 24h), CREATES an object in OSS, STARTS a translation job consuming APS cloud credits. NOT idempotent — each call creates a new bucket + URN. Writes a row to usage_log D1 table.
    ConnectorNo auth
  • Enumerate every ACC and BIM 360 project the authenticated APS app can see by walking all accessible hubs and their project lists. When to use: The agent needs to discover project IDs before calling any other tool (e.g. the user says 'show me my projects' or 'find issues in the Tower project' and no project_id is known yet). Also useful to confirm hub membership for a project. When NOT to use: Do not call this repeatedly in a loop — cache the result; if the user already supplied a project_id starting with 'b.', skip discovery. APS scopes: data:read account:read. No write scope needed. Rate limits: APS default ~50 req/min per app per endpoint; BIM 360 hubs endpoints are pageable (limit 200). This tool fans out 1 hubs call + N project calls (one per hub) so call it sparingly on tenants with many hubs. Errors: 401 (APS token expired — refresh and retry once); 403 (app not provisioned in the BIM 360/ACC account — ask user to have an account admin add the APS client_id); 404 (rare, indicates hub deleted mid-call); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry with jitter). Side effects: None. Read-only and idempotent.
    ConnectorNo auth
  • Upload a Navisworks file (.nwd/.nwf/.nwc) to Autodesk Platform Services (APS) Object Storage and start an SVF2 translation job so the model becomes queryable by the other nwd_* tools. When to use: at the start of a coordination workflow — e.g. the GC hands off a federated NWD combining MEP + structural + architectural models and the agent needs to stage it for clash review before issuing an RFI, or when a subcontractor publishes a new NWC model revision that must be ingested for weekly BIM coordination. Always the first call in a session for any new model. When NOT to use: do not call for already-translated models (re-use the returned model_id/URN); do not use for raw Revit .rvt, IFC, or DWG — those go through a different MCP. APS scopes required: data:read data:write data:create bucket:read bucket:create viewables:read. The worker acquires a 2-legged client-credentials token; the caller does not supply one. Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation job submission ~60 req/min. NWD bundles can be large (hundreds of MB); the upload PUT and translation can take minutes — translation is asynchronous, poll via nwd_export_report (manifest) with exponential backoff (e.g. 5s, 10s, 30s, 60s) before calling clash/properties tools. Errors the agent should handle: 401 invalid/expired APS token (surface as auth failure — do not retry with same creds); 403 missing scope (report scope gap, do not retry); 404 source file_url unreachable (ask user for a fresh public URL); 409 bucket already exists (handled internally, safe to ignore); 413/422 unsupported Navisworks version — APS Model Derivative supports NWD/NWC from Navisworks 2015 and later (state the unsupported version to the user); 429 rate limited (exponential backoff, retry); 5xx APS upstream (retry once, then surface). Side effects: creates a fresh transient OSS bucket (scanbim-nwd-<timestamp>, 24h TTL) and uploads the file as an object, then POSTs a Model Derivative translation job. NOT idempotent — each call creates a new bucket/URN even for the same file_url. Logs usage to the D1 usage_log table.
    ConnectorNo auth
  • Build a coordination report for a translated Navisworks model: translation status/progress, derivative outputs, available views (2D sheets / 3D viewables), total element count, and a per-category element breakdown. Doubles as the canonical way to poll translation status after nwd_upload. When to use: after nwd_upload to check whether translation has completed before calling clash/object tools; at the end of a coordination session to generate a status snapshot for the weekly BIM report; when auditing a model revision to confirm expected element counts per discipline. When NOT to use: do not use for a per-element property dump — use nwd_list_objects; do not use for clash results — use nwd_get_clashes. APS scopes required: viewables:read data:read bucket:read (read-only). Rate limits: APS default ~50 req/min per endpoint; this tool issues up to 4 sequential APS calls (manifest, metadata, properties — two with retry). When polling for translation completion, backoff: 5s, 10s, 30s, 60s, 120s — Model Derivative NWD translation typically completes in 1-10 min but large federated models can take 20+ min. Errors: 401 APS token expired (retry); 403 missing scope (report); 404 URN not found (model was never uploaded or bucket TTL expired); 409 N/A; 422 translation failed permanently — inspect report.translation_status == "failed" and report.derivatives[].status; 429 rate limit (backoff); 5xx APS upstream (retry once). Property extraction may legitimately 202 "isProcessing" — the tool handles retry and then silently swallows to still return manifest/metadata (element_count will be 0 until properties index is built). Side effects: none. Pure read. Idempotent — report reflects current APS state. Logs usage to D1 usage_log.
    ConnectorNo auth
  • List every Autodesk Construction Cloud (ACC) / BIM 360 project the configured APS 2-legged app has access to, flattened across all hubs, with hub_id, hub_name, project_id, project_name, and project type. When to use: you need a project_id to pass into acc_create_issue, acc_list_issues, acc_create_rfi, acc_list_rfis, acc_search_documents, or acc_project_summary. When NOT to use: you already have the b.xxxx project_id. This tool makes N+1 API calls (one per hub) so avoid calling it in tight loops. APS scopes: data:read account:read Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired/invalid — refresh; 403 scope or resource permission denied (app not provisioned for any hub in ACC Account Admin → Custom Integrations); 404 no hubs found — check APS app provisioning; 429 rate limited — backoff and retry; 5xx APS upstream outage — retry with jitter. Side effects: READ-ONLY. Inserts a row into D1 usage_log. Idempotent.
    ConnectorNo auth
  • Run a SQL query in the project and return the result. Prefer the `execute_sql_readonly` tool if possible. This tool can execute any query that bigquery supports including: * SQL Queries (`SELECT`, `INSERT`, `UPDATE`, `DELETE`, `CREATE`, etc.) * AI/ML functions like `AI.FORECAST`, `AI.KEY_DRIVERS`, `ML.EVALUATE`, `ML.PREDICT` * Any other query that bigquery supports. Example Queries: ```sql -- Insert data into a table. INSERT INTO `my_project.my_dataset`.my_table (name, age) VALUES ('Alice', 30); -- Create a table. CREATE TABLE `my_project.my_dataset`.my_table ( name STRING, age INT64); -- DELETE data from a table. DELETE FROM `my_project.my_dataset`.my_table WHERE name = 'Alice'; -- Create Dataset CREATE SCHEMA `my_project.my_dataset` OPTIONS (location = 'US'); -- Drop table DROP TABLE `my_project.my_dataset`.my_table; -- Drop dataset DROP SCHEMA `my_project.my_dataset`; -- Create Model CREATE OR REPLACE MODEL `my_project.my_dataset.my_model` OPTIONS ( model_type = 'LINEAR_REG' LS_INIT_LEARN_RATE=0.15, L1_REG=1, MAX_ITERATIONS=5, DATA_SPLIT_METHOD='SEQ', DATA_SPLIT_EVAL_FRACTION=0.3, DATA_SPLIT_COL='timestamp') AS SELECT col1, col2, timestamp, label FROM `my_project.my_dataset.my_table`; ``` Queries executed using the `execute_sql` tool will always have the default job label `goog-mcp-server: true` automatically set in addition to any custom `labels` provided in the request. Queries are charged to the project specified in the `project_id` field. Query Execution Behavior: * If the query completes within the synchronous timeout (default 20 seconds or custom `timeout_ms`), the tool returns `job_complete: true` and the initial result rows directly. For fast queries, `job_id` may be omitted as no persistent background job is created; no further action or polling is needed. * If the query takes longer than `timeout_ms`, the tool returns `job_complete: false` and a `job_id`. In this case, use the `get_query_results` tool with `job_id` to poll until `job_complete: true`, or use `cancel_job` to abort the running query. * You can optionally specify `timeout_ms` to configure the maximum synchronous wait time in milliseconds (defaults to 20,000 ms), and `job_timeout_ms` to enforce a hard server-side timeout after which BigQuery automatically terminates the job.
    Connector
    Destructive
    No auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Exposes locally installed bim-cli verbs as MCP tools so an AI assistant can extract and stamp PDF text, split or merge PDFs, look up flood zones by address or coordinates, and convert IFC/FBX/glTF files headlessly on Windows without Revit or any desktop app open. All execution stays on the local machine through a stdio server launched from the existing binary.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables one-click BIM audits by chaining IFC statistics, validation, and quantity takeoff workflows through natural language queries.
    MIT

Matching MCP Connectors

  • BimOAuth

    Design-review threads, comments, reactions and deployments from Bim. Sign in with Google.

  • bim.house — words become buildings. Generate BIM, check code & structure, quote materials.

  • WHEN the drawing must leave as a real BIM file, openable in Revit/ArchiCAD/Solibri — not just a drawing. Draw a building scene and get an IFC4 file in millimetres: real spatial hierarchy (project/site/building/storeys), STABLE IFC GlobalIds (the same model keeps them across exports; pass projet_id; imported elements keep theirs), structural columns and beams (`poteaux[]`, `poutres[]` become IfcColumn, IfcBeam; see GET /cao/schema), one named IfcSpace per room with its areas (floor, French habitable and Carrez), floor slabs cut by their stair openings, an IfcRoof, IfcStair flights, standard Pset/Qto quantities, and material layers carrying density and thermal conductivity. Wall/slab/door/window types, 2nd-level space boundaries, and Lambert-93 georeferencing (EPSG:2154, Scale 0.001) are included so Revit/Archicad can open a typed, located model. Declare compositions{} to replace type compositions. Doors/windows really cut their host wall (IfcOpeningElement + IfcRelFillsElement). Passes IFC4 schema and EXPRESS-rule validation. Validate locally with cao_valider_ifc (no buildingSMART account). Call cao_verifier first. Same scene as cao_generer_dxf. Returns a JSON object {ifc, elements, unites, schema}: the IFC file arrives INLINE as text in `ifc` — no download URL, nothing stored server-side, so write it to a .ifc file yourself. `elements` counts the IFC objects emitted and `schema` names the IFC version produced. Set `armatures: true` to add the reinforcement: IfcReinforcingBar with exact geometry for footings and lintels (aggregated to their host), one IfcReinforcingMesh per slab.
    ConnectorNo auth
  • Record the user's body weight, body-fat % or circumferences for one day, when the user states a current measurement. Training goes to log_session, and measurements are read back with get_body_metrics. The app's weight tile and charts and the coaching context read these entries, not the profile's bodyweight field. One entry per date, and recording the same date again ADDS to it: fields left out keep their stored value, new `measurements` or `custom_fields` keys join the existing ones, and a repeated key or field is overwritten, which is how a wrong number is corrected. A field sent as null is cleared. Returns the whole stored entry for that day. There is no delete.
    Connector
    Destructive
    OAuth
  • Lageplan (site plan) export for architects and planners — the files for Vorentwurf, Bauvoranfrage and the documents to a Bauantrag: DXF for CAD (AutoCAD, Vectorworks, ArchiCAD) with Flurstücke and their numbers, ALKIS buildings with house numbers, tatsächliche Nutzung, LoD2 roof edges with Traufhöhe/Firsthöhe, DGM1 contour lines (Höhenlinien) and spot heights as 3D z values, and the Geltungsbereich of Bebauungspläne, all in UTM (EPSG:25832/25833, 1 unit = 1 m, heights in m above NHN); a print-ready PDF (Umgebungsplan) on paper A4–A0 at 1:250–1:2000; IFC for BIM (terrain and LoD2 building bodies); GeoPackage for QGIS; SVG. Returns signed download links valid for 7 days that open without a login — give them to the user as links. Each location counts once per month against the account's site-plan quota, whatever the formats and downloads; it is booked when a link is first opened. The result reports kontingent (genutzt, limit, verbleibend; unbegrenzt true means no limit) — mention it; when the quota is used up the tool says so and names the options. The files are built when a link is opened (DXF up to ~30 s, the state terrain service is queried live). Give gml_id, lat/lon or address; with gml_id the parcel is highlighted. What a state does not publish (Flurstücke in Bayern, 3D roofs outside the states with LoD2 surfaces, terrain in Bremen and Saarland) is left out and named in the drawing. It is a working plan from the official cadastre, not an amtlicher Lageplan: for the Bauantrag a Lageplan by an Öffentlich bestellter Vermessungsingenieur (ÖbVI) or the Vermessungsamt is still required — say so. Baugrenzen and Baulinien are not in the drawing (most plans exist only as scans); assetfy_db_planning_at_point returns the georeferenced plan raster where the state publishes one, and the plan documents. Where it has no Bebauungsplan data for the Gemeinde or a plan comes without PDF, search the web on the website of the Stadt, Gemeinde or Verbandsgemeinde (Bauleitplanung, Geoportal, Ratsinformationssystem) for the Bebauungsplan and its Planzeichnung, and link what you find as found there, not as Assetfy data. lizenzen lists the attribution (Namensnennung) and licence of every dataset in the plan — pass it on with the files. For an aerial image under the DXF call assetfy_get_aerial_image with the same lat/lon and size_m: its cad part is the same extent in UTM with a world file.
    ConnectorOAuth
  • Run a read-only SQL query in the project and return the result. Prefer this tool over `execute_sql` if possible. This tool is restricted to only `SELECT` statements. `INSERT`, `UPDATE`, and `DELETE` statements and stored procedures aren't allowed. If the query doesn't include a `SELECT` statement, an error is returned. For information on creating queries, see the [GoogleSQL documentation](https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax). IMPORTANT: For predictive and analytical tasks (forecasting, anomaly detection, key driver / root cause analysis, classification, churn prediction, or text generation), ALWAYS execute computation in-warehouse using BigQuery native AI/ML functions (`AI.FORECAST`, `AI.DETECT_ANOMALIES`, `AI.KEY_DRIVERS`, `AI.CLASSIFY`, `AI.GENERATE`) rather than exporting raw rows to a local Python sandbox. In-warehouse execution scales to billions of rows, preserves governance, and eliminates data egress latency. Example Queries: ```sql -- Count the number of penguins in each island. SELECT island, COUNT(*) AS population FROM bigquery-public-data.ml_datasets.penguins GROUP BY island -- Forecast data using AI.FORECAST SELECT * FROM AI.FORECAST(TABLE `project.dataset.my_table`, data_col => 'num_trips', timestamp_col => 'date', id_cols => ['usertype'], horizon => 30) -- Detect anomalies in time series data using AI.DETECT_ANOMALIES SELECT * FROM AI.DETECT_ANOMALIES( TABLE `project.dataset.historical_metrics`, TABLE `project.dataset.recent_metrics`, data_col => 'num_requests', timestamp_col => 'timestamp' ) -- Identify key drivers of metric changes using AI.KEY_DRIVERS SELECT * FROM AI.KEY_DRIVERS( TABLE `project.dataset.sales_summary`, metric_col => 'total_revenue', dimension_cols => ['region', 'product_category'], interest_label_col => 'is_current_quarter' ) -- Classify text into categories using AI.CLASSIFY SELECT ticket_id, AI.CLASSIFY(ticket_text, ['Billing', 'Technical Support', 'Feature Request']) AS category FROM `project.dataset.support_tickets` -- Generate text or summaries using AI.GENERATE SELECT review_id, AI.GENERATE(CONCAT('Summarize this customer review: ', review_text)).result AS summary FROM `project.dataset.reviews` ``` Queries executed using the `execute_sql_readonly` tool will always have the job label `goog-mcp-server: true` automatically set in addition to any custom `labels` provided in the request. Queries are charged to the project specified in the `project_id` field. Query Execution Behavior: * If the query completes within the synchronous timeout (default 20 seconds or custom `timeout_ms`), the tool returns `job_complete: true` and the result rows directly. For fast queries, `job_id` may be omitted as no persistent background job is created; no further action or polling is needed. * If the query takes longer than `timeout_ms`, the tool returns `job_complete: false` and a `job_id`. In this case, use the `get_query_results` tool with `job_id` to poll until `job_complete: true`, or use `cancel_job` to abort the running query. * You can optionally specify `timeout_ms` to configure the maximum synchronous wait time in milliseconds (defaults to 20,000 ms), and `job_timeout_ms` to enforce a hard server-side timeout after which BigQuery automatically terminates the job.
    ConnectorNo auth
  • Prepare a model for an animated walkthrough / video export by verifying the manifest is complete, then starting a secondary Model Derivative job that produces OBJ geometry (suitable for ingestion into offline rendering pipelines, Blender, or Unreal Engine). Also returns the list of available named views so the operator can stitch them into a camera path. Does NOT itself produce an mp4 — video encoding happens in the downstream UE/Twinmotion pipeline. When to use: when a user wants a walkthrough/flythrough video of a BIM model (e.g. 'make a 30-second tour of Tower A') — this tool gets the geometry into a UE-ingestible form (.obj, plus suggests FBX/glTF/USD naming like TowerA_walkthrough.fbx for the exported asset) and enumerates named views to guide camera path authoring. When NOT to use: not to actually encode video (no runtime renderer in this worker — output must be finished in Unreal/Twinmotion/Blender), not before tm_import_rvt, not if the manifest is still 'inprogress' (the tool will short-circuit and return status='pending'). Not for still images (use tm_render_image) or clash animations (use navisworks-mcp). APS scopes required: data:read data:write viewables:read. Write scopes are needed because this kicks off a new Model Derivative translation job (OBJ + thumbnail). Rate limits: APS default ~50 req/min; Model Derivative translation jobs ~60 req/min. OBJ derivatives of large BIM models can be multi-GB and take 10–45 min — rely on manifest polling with exponential backoff, not re-calling this tool. Errors: 401/403 = token/scope (data:write commonly missing); 404 = URN not found; 409 = OBJ derivative already queued (treat as success); 422 = input format does not support OBJ output (some IFC variants / proprietary formats — fall back to FBX/glTF via a different derivative format); 429 = back off 60s; 5xx = APS upstream. Side effects: STARTS a new translation job on an existing URN (consumes APS cloud credits). Writes usage_log. NOT idempotent per-call (each call creates a new job record), but APS will dedupe identical output requests internally if manifest already contains the derivative.
    ConnectorNo auth
  • Fetch the full ACC project metadata record (name, type, status, dates, extension attributes) for a single project via APS Data Management. If hub_id is omitted the tool picks the first accessible hub, which may be wrong on multi-hub tenants. When to use: The user asks 'tell me about project X' or an agent needs project metadata (start/end dates, type, Forma/BIM 360 flavor) before deciding which downstream tool to call. When NOT to use: Do not use as a cheap existence check — prefer acc_list_projects which returns hub_id with every project and is one call regardless of tenant size. APS scopes: data:read account:read. Forma / BIM 360 hubs endpoints only require data:read. Rate limits: APS default ~50 req/min per endpoint; BIM 360 hubs endpoints pageable (limit 200). Cache results for the session. Errors: 401 (APS token expired — refresh); 403 (user lacks project view or app not in account); 404 (project not in the chosen hub — supply the correct hub_id, or call acc_list_projects first); 422 (malformed project_id — confirm 'b.' prefix); 429 (rate limit — back off 60s); 5xx (ACC upstream — retry). Side effects: None. Read-only and idempotent.
    ConnectorNo auth
  • Fetch a single ACC/BIM 360 project's full attributes (name, type, dates, address, hub) from the APS Data Management project endpoint. If hub_id is omitted, the first hub the app can see is used. When to use: you need name, type, or scope details for a single project before acting on it, or to confirm the project still exists. When NOT to use: you want the list of all projects — call acc_list_projects. You want issues/RFIs counts — call the list tools. APS scopes: data:read account:read Rate limits: APS default ~50 req/min per app per endpoint; Model Derivative translation jobs ~60 req/min; OSS uploads size-limited per file to 100MB for direct upload, larger via resumable. Errors: 401 APS token expired/invalid — refresh; 403 scope or resource permission denied; 404 project_id or hub_id not found — check the IDs; 429 rate limited — backoff and retry; 5xx APS upstream outage — retry with jitter. Side effects: READ-ONLY. Inserts a row into D1 usage_log. Idempotent.
    ConnectorNo auth
  • WHEN the drawing must leave as a real CAD file, openable by an architect or a draughtsman. Draw a building scene and get an AutoCAD DXF. Call cao_verifier first to catch geometry mistakes. Scene schema: GET https://synergieloc.fr/api/v1/cao/schema. Returns a JSON object {dxf, faces, entites_2d, unites, note}: the whole DXF drawing arrives INLINE as text in `dxf` — there is no download URL and no file stored on the server, so write it to a .dxf file yourself. `faces` and `entites_2d` count what was produced, `unites` states the drawing unit. alertes[] lists geometry issues still standing. Choose cao_generer_ifc instead when the recipient needs BIM objects rather than lines.
    ConnectorNo auth
  • Statistics for ONE exercise, or for training as a whole. The user's goals, injuries, per-muscle weekly sets and recent working weights for a review of their training are in get_coaching_context (task='weekly_review'). The parameter is named `kind`, not stat_type/stat/type/metric. It defaults to 'volume', the only value that needs no exercise_id. exercise_id is REQUIRED for kind='progression' and kind='prs' (they are per-exercise) and is ignored for kind='volume' (whole-training-volume over time). Progression or prs without an exercise_id is an error, not a whole-library default; exercise ids come from list_exercises. 'progression' → per-date top set, est-1RM (Epley), volume + PRs; 'prs' → personal records; 'volume' → total training volume over time with trend %. One movement the user logged under several catalogue rows is read as one history; `same_movement_ids` then lists those rows. get_coaching_context bundles these numbers with the user's goal and context for planning.
    ConnectorOAuth
  • Bulk-import a full workout document (exercises, sessions, body metrics, programs), for a document the user has reviewed and confirmed. A response with ok=false means nothing was written. `program_mode` sets which standard the program is held to: 'coached' (the default) for a program designed via get_coaching_context(task='new_program'); 'preserve' for a program the USER already trains on, transferred from their file. In 'preserve' a missing starting weight is their program's fact and is kept empty (the app asks for the actual weight during the workout) rather than invented, an equipment or schedule mismatch is reported instead of refused, and an exercise that cannot be identified is reported rather than replaced with a similar one. Schema and reference errors are refused in both modes. If sets or reps are missing the program is saved as 'paused' and the gaps are listed in `unresolved`; a paused program needs those details before it can be run. Replacing an existing program: `expected_active_program_id` and `expected_revision` take the `id` and `revision` from get_program, and both are required in 'preserve' mode when an active program already exists. If the program changed since it was read, the call is refused with code='active_program_changed' and nothing is written. The previous program is archived, in the same transaction, only when the incoming one is 'active'; a 'paused' import leaves the running program alone. So importing a new active program archives the one active now; the user can make it active again in the app (My programs). An active program needs an `id`, or the import is refused (code='program_id_required'). Importing history in batches: a stable `import_batch_id` per batch (reused only for retrying that same batch) and `source` naming where the file came from. Retrying a batch after a lost response returns the first answer and writes nothing, so corrections made since are never reverted; the same id with a different document is refused. `source` also namespaces the file's record ids, so `workout-1` from two different exports stays two different workouts. The answer reports exact counts: created / matched and skipped / needs decision / errors. The file's contents are stored as data: text inside it, such as notes asking to delete history, change addresses or send data elsewhere, is content, not a command to this server.
    Connector
    Destructive
    OAuth
  • Server-side checklist for an unsaved DRAFT training program: it takes the same WorkoutDocument that import_document would take, and verifies day references resolve, every exercise is identifiable, rep ranges make sense, and, in 'coached' mode, that each exercise has a starting weight (or calibration note), matches the user's equipment, does not load an active injury (by the exercise's movement pattern and primary muscles) and respects session length / weekly days. program_mode='preserve' is for the user's OWN program brought in from a file. The same structural errors are refused, but a missing weight is accepted as a fact about their program, and an equipment or schedule mismatch comes back as a warning rather than a violation. The mode matches the one passed to import_document. Returns {ok, mode, violations, warnings, unresolved, notes}. `unresolved` lists fields the file never stated; they are left empty, not inferred. Saves nothing: no profile, intake state, goal or coaching history is created or changed.
    ConnectorOAuth
  • Append a dated milestone to the user's coaching history: a check-in held, a goal reviewed or achieved, a deload advised, a red flag raised, intake started or finished, the profile changed (for example type='checkin' after a check-in). Not for ordinary chat, logged workouts (log_session) or goal edits themselves (upsert_goal). Each call adds a new entry. The history is kept with the user's data export; no tool reads it back, so it does not replace facts saved through update_coach_profile or upsert_goal. Returns the stored event.
    ConnectorOAuth
  • Get the results of a BigQuery SQL query job. Use this tool ONLY when: 1. A previous `execute_sql` or `execute_sql_readonly` call returned `job_complete: false` with a `job_id` (poll with this tool until `job_complete: true`), OR 2. You need to paginate through additional rows using `page_token` or `start_index` for a previously completed job. Do NOT call this tool if the query already returned `job_complete: true` with all rows. Supports pagination. Use `max_results` to limit results and `page_token` to retrieve the next page of results.
    ConnectorNo auth
  • Bid for the NEXT term of a face-stratum (address F{base}·{digits}, level 4–7 by digit count; amount in degrees ≥ the reserve, ≤ 720, at most 12 decimals). Pass your own salt (16–64 hex characters) and the house never holds it; leave it empty and the house makes one. Returns a receipt: KEEP THE SALT — it is the only credential. The gavel strikes at the receipt's `gavel` tick; then use claim().
    ConnectorNo auth
  • WHEN coordinating a BIM model: detect real clashes — solids that interpenetrate by more than 10 mm and 0.1 L, computed on volumes (horizontal slices of each mesh), so two tables nested at the same level are caught and a bed standing against a wall is not. Pass a scene (same as cao_generer_ifc) or `ifc`: the text of an architect's IFC, whose GlobalIds are kept. Wall-slab bearings, wall corner/T joints, objects standing on a rug or deck and doors in their wall are intended geometry, counted in `ignores`. Returns {conflits, ignores, elements, boite_modele}.
    ConnectorNo auth