AssetLab
Work orders, PM schedules, assets, capital plans and infrastructure in AssetLab CMMS/EAM.
Connector by assetlab.caOfficial · Domain verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/assetlab-ca-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://mcp.assetlab.caRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 198 read · 185 write · 98 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 481
Read from the source code; the running server may list different tools.
Read 198 · Look things up without changing anything.
get_assetget_asset_bettermentget_asset_commentget_asset_condition_assessmentget_asset_costget_asset_documentget_asset_lifecycle_eventget_asset_partget_asset_placementget_asset_replacement_planget_asset_risk_history_entryget_asset_status
Show 186 more tools
get_attachmentget_budgetget_change_orderget_compliance_itemget_compliance_pm_scheduleget_compliance_recordget_contract_documentget_criticality_modifierget_custom_field_definitionget_custom_field_valueget_dashboard_snapshotget_dashboard_summaryget_expenseget_floorplanget_floorplan_regionget_form_responseget_form_response_answerget_form_templateget_form_template_itemget_infrastructure_assetget_infrastructure_asset_commentget_infrastructure_asset_costget_infrastructure_asset_documentget_infrastructure_asset_inspectionget_infrastructure_asset_partget_infrastructure_asset_risk_history_entryget_infrastructure_feature_classget_infrastructure_lifecycle_eventget_infrastructure_los_targetget_infrastructure_networkget_infrastructure_zoneget_invoiceget_los_consequenceget_los_measureget_los_measurementget_los_proposed_targetget_los_status_snapshotget_los_targets_history_entryget_manufacturerget_organization_settingsget_partget_part_categoryget_pm_scheduleget_projectget_project_assetget_project_budget_itemget_project_buildingget_project_commentget_project_cost_snapshotget_project_documentget_project_document_folder_templateget_project_infrastructure_assetget_project_locationget_project_milestoneget_project_phaseget_project_riskget_project_siteget_project_systemget_project_system_classget_project_system_groupget_project_taskget_project_task_dependencyget_project_team_memberget_project_time_entryget_project_updateget_purchase_orderget_purchase_order_lineget_purchase_order_linkget_service_areaget_siteget_site_fci_history_entryget_system_los_targetget_userget_vendorget_vendor_site_assignmentget_work_orderget_work_order_commentget_work_order_scheduleget_work_requestlist_asset_bettermentslist_asset_commentslist_asset_condition_assessmentslist_asset_costslist_asset_documentslist_asset_lifecycle_eventslist_asset_partslist_asset_placementslist_asset_replacement_planslist_asset_risk_historylist_asset_statuseslist_asset_type_groupslist_asset_typeslist_assetslist_attachmentslist_budgetslist_building_typeslist_buildingslist_change_orderslist_compliance_itemslist_compliance_pm_scheduleslist_compliance_recordslist_contract_documentslist_contract_siteslist_contractslist_cost_categorieslist_criticality_modifierslist_custom_field_definitionslist_custom_field_valueslist_dashboard_snapshotslist_expenseslist_floorplan_regionslist_floorplanslist_form_response_answerslist_form_responseslist_form_template_itemslist_form_templateslist_infrastructure_asset_commentslist_infrastructure_asset_costslist_infrastructure_asset_documentslist_infrastructure_asset_inspectionslist_infrastructure_asset_partslist_infrastructure_asset_risk_historylist_infrastructure_assetslist_infrastructure_feature_classeslist_infrastructure_lifecycle_eventslist_infrastructure_los_targetslist_infrastructure_networkslist_infrastructure_zoneslist_invoiceslist_location_typeslist_locationslist_los_consequenceslist_los_measurementslist_los_measureslist_los_proposed_targetslist_los_status_snapshotslist_los_targets_historylist_manufacturerslist_part_categorieslist_partslist_pm_scheduleslist_pm_templateslist_project_assetslist_project_budget_itemslist_project_buildingslist_project_commentslist_project_cost_snapshotslist_project_document_folder_templateslist_project_documentslist_project_infrastructure_assetslist_project_locationslist_project_milestoneslist_project_phase_categorieslist_project_phaseslist_project_riskslist_project_siteslist_project_system_classeslist_project_system_groupslist_project_systemslist_project_task_dependencieslist_project_taskslist_project_team_memberslist_project_time_entrieslist_project_updateslist_projectslist_purchase_order_lineslist_purchase_order_linkslist_purchase_orderslist_service_area_siteslist_service_area_system_classeslist_service_areaslist_site_fci_historylist_siteslist_system_classeslist_system_groupslist_system_los_targetslist_systemslist_userslist_vendor_site_assignmentslist_vendorslist_work_categorieslist_work_order_commentslist_work_order_scheduleslist_work_orderslist_work_requestsshow_site_fci_trend
Write 185 · Create, change, send or run things.
bulk_createbulk_updatecreate_assetcreate_asset_bettermentcreate_asset_commentcreate_asset_condition_assessmentcreate_asset_costcreate_asset_documentcreate_asset_lifecycle_eventcreate_asset_partcreate_asset_placementcreate_asset_replacement_plan
Show 173 more tools
create_asset_statuscreate_asset_typecreate_asset_type_groupcreate_attachmentcreate_budgetcreate_buildingcreate_building_typecreate_change_ordercreate_compliance_itemcreate_compliance_pm_schedulecreate_compliance_recordcreate_contractcreate_contract_documentcreate_contract_sitecreate_cost_categorycreate_criticality_modifiercreate_custom_field_definitioncreate_custom_field_valuecreate_expensecreate_floorplancreate_floorplan_regioncreate_form_responsecreate_form_templatecreate_form_template_itemcreate_infrastructure_assetcreate_infrastructure_asset_commentcreate_infrastructure_asset_costcreate_infrastructure_asset_documentcreate_infrastructure_asset_inspectioncreate_infrastructure_asset_partcreate_infrastructure_feature_classcreate_infrastructure_lifecycle_eventcreate_infrastructure_los_targetcreate_infrastructure_networkcreate_infrastructure_zonecreate_invoicecreate_locationcreate_location_typecreate_los_consequencecreate_los_measurecreate_los_measurementcreate_los_proposed_targetcreate_manufacturercreate_partcreate_part_categorycreate_pm_schedulecreate_pm_templatecreate_projectcreate_project_assetcreate_project_budget_itemcreate_project_buildingcreate_project_commentcreate_project_cost_snapshotcreate_project_documentcreate_project_document_folder_templatecreate_project_infrastructure_assetcreate_project_locationcreate_project_milestonecreate_project_phasecreate_project_phase_categorycreate_project_riskcreate_project_sitecreate_project_systemcreate_project_system_classcreate_project_system_groupcreate_project_taskcreate_project_task_dependencycreate_project_team_membercreate_project_time_entrycreate_project_updatecreate_purchase_ordercreate_purchase_order_linecreate_purchase_order_linkcreate_service_areacreate_service_area_sitecreate_service_area_system_classcreate_sitecreate_systemcreate_system_classcreate_system_groupcreate_system_los_targetcreate_upload_urlcreate_vendorcreate_vendor_site_assignmentcreate_work_categorycreate_work_ordercreate_work_order_commentcreate_work_order_schedulecreate_work_requestupdate_assetupdate_asset_bettermentupdate_asset_commentupdate_asset_condition_assessmentupdate_asset_costupdate_asset_documentupdate_asset_lifecycle_eventupdate_asset_partupdate_asset_placementupdate_asset_replacement_planupdate_asset_statusupdate_asset_typeupdate_asset_type_groupupdate_attachmentupdate_budgetupdate_buildingupdate_building_typeupdate_change_orderupdate_compliance_itemupdate_compliance_pm_scheduleupdate_compliance_recordupdate_contractupdate_contract_documentupdate_cost_categoryupdate_criticality_modifierupdate_custom_field_definitionupdate_custom_field_valueupdate_expenseupdate_floorplanupdate_floorplan_regionupdate_form_templateupdate_form_template_itemupdate_infrastructure_assetupdate_infrastructure_asset_commentupdate_infrastructure_asset_costupdate_infrastructure_asset_documentupdate_infrastructure_asset_inspectionupdate_infrastructure_asset_partupdate_infrastructure_feature_classupdate_infrastructure_lifecycle_eventupdate_infrastructure_los_targetupdate_infrastructure_networkupdate_infrastructure_zoneupdate_invoiceupdate_locationupdate_location_typeupdate_los_consequenceupdate_los_measureupdate_los_measurementupdate_los_proposed_targetupdate_manufacturerupdate_partupdate_part_categoryupdate_pm_scheduleupdate_pm_templateupdate_projectupdate_project_budget_itemupdate_project_commentupdate_project_documentupdate_project_document_folder_templateupdate_project_infrastructure_assetupdate_project_milestoneupdate_project_phaseupdate_project_phase_categoryupdate_project_riskupdate_project_taskupdate_project_team_memberupdate_project_time_entryupdate_project_updateupdate_purchase_orderupdate_purchase_order_lineupdate_service_areaupdate_siteupdate_systemupdate_system_classupdate_system_groupupdate_system_los_targetupdate_vendorupdate_work_categoryupdate_work_orderupdate_work_order_commentupdate_work_order_scheduleupdate_work_requestupload_file
Delete 98 · Delete, drop, revoke or wipe things.
delete_assetdelete_asset_bettermentdelete_asset_commentdelete_asset_condition_assessmentdelete_asset_costdelete_asset_documentdelete_asset_lifecycle_eventdelete_asset_partdelete_asset_placementdelete_asset_replacement_plandelete_asset_statusdelete_asset_type
Show 86 more tools
delete_asset_type_groupdelete_attachmentdelete_budgetdelete_buildingdelete_building_typedelete_change_orderdelete_compliance_itemdelete_compliance_pm_scheduledelete_compliance_recorddelete_contractdelete_contract_documentdelete_contract_sitedelete_cost_categorydelete_criticality_modifierdelete_custom_field_definitiondelete_custom_field_valuedelete_expensedelete_floorplandelete_floorplan_regiondelete_form_responsedelete_form_templatedelete_form_template_itemdelete_infrastructure_assetdelete_infrastructure_asset_commentdelete_infrastructure_asset_costdelete_infrastructure_asset_documentdelete_infrastructure_asset_inspectiondelete_infrastructure_asset_partdelete_infrastructure_feature_classdelete_infrastructure_lifecycle_eventdelete_infrastructure_los_targetdelete_infrastructure_networkdelete_infrastructure_zonedelete_invoicedelete_locationdelete_location_typedelete_los_consequencedelete_los_measuredelete_los_measurementdelete_los_proposed_targetdelete_manufacturerdelete_partdelete_part_categorydelete_pm_scheduledelete_pm_templatedelete_projectdelete_project_assetdelete_project_budget_itemdelete_project_buildingdelete_project_commentdelete_project_cost_snapshotdelete_project_documentdelete_project_document_folder_templatedelete_project_infrastructure_assetdelete_project_locationdelete_project_milestonedelete_project_phasedelete_project_phase_categorydelete_project_riskdelete_project_sitedelete_project_systemdelete_project_system_classdelete_project_system_groupdelete_project_taskdelete_project_task_dependencydelete_project_team_memberdelete_project_time_entrydelete_project_updatedelete_purchase_orderdelete_purchase_order_linedelete_purchase_order_linkdelete_service_areadelete_service_area_sitedelete_service_area_system_classdelete_sitedelete_systemdelete_system_classdelete_system_groupdelete_system_los_targetdelete_vendordelete_vendor_site_assignmentdelete_work_categorydelete_work_orderdelete_work_order_commentdelete_work_order_scheduledelete_work_request
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
ASSETLAB_API_KEY
Other settings (environment variables or headers).
ASSETLAB_API_URL
Network hosts it talks to 1
mcp.assetlab.ca· found in remote endpoint, install command
Files it touches
- Any path the agent passes to its tools
Tools (481)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
bulk_createCreate multiple records of a resource type in one API call (max 100). Each item is processed independently - one failure does not affect others. Returns per-item results. Requires {resource}:write scope. Counts as 1 request for rate limiting.
bulk_updateUpdate multiple records of a resource type in one API call (max 100). Each item must include an "id" field (UUID). Each item is processed independently - one failure does not affect others. Returns per-item results. Requires {resource}:write scope. Counts as 1 request for rate limiting.
create_assetCreate a new asset. Requires assets:write scope. IMPORTANT - Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id. Provide all three IDs (site_id, building_id, location_id) explicitly. System hierarchy: similarly resolve via list_system_classes → list_system_groups → list_systems.
create_asset_bettermentRecord capital work that ALREADY extended a facility asset's life - an elevator modernization, a boiler retube, a major component replacement. Required: asset_id, occurred_on, and at least one of capitalized_amount or added_life_years (work that adds neither changes nothing and is rejected). The asset's net book value and remaining life re-base from occurred_on, and its purchase_date is NEVER changed - if a user asks to change an in-service date to reflect an overhaul, record this instead and say why. Use asset_lifecycle_events for work expected in future; use a condition assessment for what s…
create_asset_commentCreate a new comment on an asset. Requires asset_comments:write scope.
create_asset_condition_assessmentRecord a point-in-time condition assessment against an asset. Requires asset_condition_assessments:write scope. Call list_assets first to resolve asset_id.
create_asset_costCreate a new asset cost entry - the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.
create_asset_documentCreate an asset document record (after uploading the file via create_upload_url). Requires asset_documents:write scope.
create_asset_lifecycle_eventCreate a facility lifecycle strategy event. Events attach to an asset-type SCOPE - exactly ONE of asset_type_id or asset_type_group_id - never to individual assets; an asset resolves its type's own strategy first, else its type group's. Replacement is NOT an event (it stays the renewal forecast + replacement value) - model the interventions BEFORE replacement: roof recoats, boiler retubes, overhauls. Resolve type ids with list_asset_types / list_asset_type_groups, and list existing events first to reuse a scope. Requires asset_lifecycle_events:write scope.
create_asset_partLink a part to an asset (creates an asset-part association). Requires asset_parts:write scope.
create_asset_placementPlace an asset on a floorplan at the given (x, y) coordinate (normalized 0-1, origin top-left). UPSERTS by asset_id - an asset can have at most ONE placement globally, so calling this again just moves the pin. Use bulk_create with resource="asset-placements" to place many assets at once. Requires asset_placements:write scope.
create_asset_replacement_planCreate a new asset replacement plan. Requires asset_replacement_plans:write scope.
create_asset_statusCreate a new asset status (lifecycle state for assets). Requires asset_statuses:write scope.
create_asset_typeCreate a new asset type. Requires asset_types:write scope.
create_asset_type_groupCreate a new asset type group. Groups organize asset types into logical categories. Requires asset_type_groups:write scope.
Show 466 more tools
create_attachmentCreate an attachment record linked to a work order, work request, PM schedule, or PM template. Exactly one parent ID must be provided. Requires attachments:write scope.
create_budgetSet an annual funding budget, as the dashboard Budget tab does. Requires budgets:write scope. The tab holds one figure per year, per funding source ('O&M' or 'Capital'), per workspace (module: facilities, infrastructure, or omitted for organization-wide). Send one row per year and funding source - do not split a year across sites or buildings; the tab does not read site_id or building_id and a second row for the same slot is refused with 409. Required: year, funding_source, budgeted_amount.
create_buildingCreate a new building. Requires buildings:write scope. latitude and longitude place the building on the map and must be sent together - one without the other is rejected.
create_building_typeCreate a new building type. Requires building_types:write scope.
create_change_orderCreate a new change order. Requires change_orders:write scope.
create_compliance_itemCreate a new compliance item (regulatory requirement). Requires compliance:write scope.
create_compliance_pm_scheduleLink a PM schedule to a compliance item, so completing the schedule keeps the item compliant. Requires compliance:write scope. Required: compliance_item_id, pm_schedule_id, required_frequency_days. Resolve both ids first with list_compliance_items and list_pm_schedules.
create_compliance_recordCreate a new compliance record (audit trail entry). Requires compliance_records:write scope.
create_contractCreate a new contract. Requires contracts:write scope.
create_contract_documentCreate a contract document record. Requires contract_documents:write scope.
create_contract_siteAssign a contract to a site. Requires contract_sites:write scope.
create_cost_categoryCreate a new cost category. Requires cost_categories:write scope.
create_criticality_modifierOverride the criticality modifier for one tier. Rows are overrides only: a tier with no row uses the built-in default (critical 0.6, high 0.8, medium 1.0, low 1.4). A modifier below 1 tightens every target held by facilities in that tier and one above 1 relaxes them. One override per tier; a duplicate returns 409, so call list_criticality_modifiers and update the existing row instead. Requires los_targets:write scope.
create_custom_field_definitionCreate a new custom field definition. Requires custom_fields:write scope.
create_custom_field_valueCreate (upsert) a custom field value for an entity. The table stores values in typed columns - prefer setting the one that matches the field definition's field_type: value_text (text/select; a select value must be one of the field's options), value_number (number), value_date (date, ISO YYYY-MM-DD), value_boolean (boolean). Alternatively pass a single `value` string and the server will dispatch it to the right column based on field_type. Writes upsert on (entity_id, field_definition_id) so replaying a batch is idempotent. Requires custom_fields:write scope.
create_expenseCreate a new expense. Requires expenses:write scope.
create_floorplanCreate a floorplan row. Provide EXACTLY ONE of building_id (per-building floor) or site_id (site-level / campus plan). Typically the web app calls this per page of an uploaded PDF; MCP clients rarely need to call this directly since they do not upload the PDF itself. Requires floorplans:write scope.
create_floorplan_regionCreate a region (labeled room or zone) on a floorplan. Polygon coordinates are normalized 0-1 with origin top-left. Optionally link the region to an existing Location via location_id. Requires floorplan_regions:write scope.
create_form_responseAttach a published form to one record so it can be filled in - the direct way to put an inspection or checklist on an existing work order. The form's questions are snapshotted at attach time, so later edits to the template never change a form already in progress. To put a form on every work order a PM schedule generates, set form_template_id on the schedule instead of calling this per work order. Answering and completing the form happen in the AssetLab app, not through this API. Requires form_responses:write scope.
create_form_templateCreate a form template - a reusable inspection, checklist, compliance, or survey definition. Step 1 of building a form: create it as a draft, then add questions with create_form_template_item (or bulk_create on form-template-items), then publish with update_form_template status=published (publishing is rejected if any question is malformed). Requires form_templates:write scope.
create_form_template_itemAdd one question (item) to a form template. Build a form by calling this once per question in order, or use bulk_create on form-template-items. Requires form_template_items:write scope.
create_infrastructure_assetCreate an infrastructure asset (feature - segment or node). Geometry must be GeoJSON Point (for nodes) or LineString (for segments) in EPSG:4326; coordinates are [longitude, latitude]. `length_m`, `slope_pct`, and `risk_score` are computed server-side. Requires infrastructure_assets:write scope.
create_infrastructure_asset_commentAdd a comment to an infrastructure feature. The author is attributed to the API key automatically; do not pass user_id. Requires infrastructure_asset_comments:write scope.
create_infrastructure_asset_costRecord a cost against an infrastructure feature. work_order_number is derived server-side from work_order_id; do not set it. Requires infrastructure_asset_costs:write scope.
create_infrastructure_asset_documentAttach document metadata to an infrastructure feature. Upload the file bytes first via create_upload_url, then pass the returned file_path here. Requires infrastructure_asset_documents:write scope.
create_infrastructure_asset_inspectionRecord an inspection against an infrastructure feature. Requires infrastructure_asset_inspections:write scope.
create_infrastructure_asset_partAssociate a part with an infrastructure feature. The (feature_id, part_id) pair must be unique - a duplicate returns 409. Requires infrastructure_asset_parts:write scope.
create_infrastructure_feature_classCreate a tenant-defined infrastructure feature class. Builtin classes are managed by AssetLab and cannot be created via API (is_builtin is always forced to false). Requires infrastructure_feature_classes:write scope.
create_infrastructure_lifecycle_eventCreate a lifecycle strategy event. Events attach to a SCOPE (feature_class code, material, optional diameter band) - never to individual features; every feature resolves the most specific matching scope, like replacement rates. Replacement is NOT an event (it is priced by the rates and scheduled by the renewal forecast) - model the interventions BEFORE replacement: crack sealing, relining, resurfacing. List existing events first to reuse a scope. Requires infrastructure_lifecycle_events:write scope.
create_infrastructure_los_targetSet the technical Level of Service target for one infrastructure feature class and metric. One base target per feature class and metric, set once for the organization; a duplicate returns 409, so update the existing row instead. Each network of that class is held to a version adjusted by the network's criticality (unrated counts as medium): a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical network, 58 at a Low one). Derived targets never leave the metric's scale. …
create_infrastructure_networkCreate an infrastructure network - a named grouping of features bound to one feature class. Requires infrastructure_networks:write scope.
create_infrastructure_zoneCreate an operational hydraulic boundary (pressure zone, DMA, sewershed, etc.). boundary is a GeoJSON Polygon, or a MultiPolygon when the area comes in separate pieces. (network_id, name) must be unique. Requires infrastructure_zones:write scope.
create_invoiceCreate a new invoice. Requires invoices:write scope.
create_locationCreate a new location within a building. Requires locations:write scope.
create_location_typeCreate a new location type. Requires location_types:write scope.
create_los_consequenceRecord what a missed technical Level of Service target means, in the organization's own words. Advisory only: the statement is shown on the Status screen when a matching target is breached, and no notification is sent to notify_roles or to anyone else. When several match a breach the most specific scope wins (a specific system or feature class over a criticality tier over global). severity is a floor; the severity shown scales with the size of the gap and the facility's criticality. Requires los_consequences:write scope.
create_los_measureCreate a new LoS measure within a service area. Requires los_measures:write scope. Resolve service_area_id first via list_service_areas.
create_los_measurementRecord a new LoS measurement value. Requires los_measurements:write scope. Resolve los_measure_id first via list_los_measures.
create_los_proposed_targetRecord the proposed level of service for a LoS measure in one future year (O. Reg. 588/17 s. 6(1)). One row per measure and year; a duplicate returns 409, so update the existing row instead. Use target_statement for a community measure and target_value for a technical one. Requires los_proposed_targets:write scope. Resolve los_measure_id first via list_los_measures.
create_manufacturerCreate a new manufacturer. Requires manufacturers:write scope.
create_partCreate a new part/inventory item. Requires parts:write scope.
create_part_categoryCreate a new part category. Requires part_categories:write scope.
create_pm_scheduleCreate a new preventive maintenance schedule. Requires pm_schedules:write scope. IMPORTANT - Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id. Provide all three IDs explicitly.
create_pm_templateCreate a new PM template. Templates are reusable PM definitions (not linked to a site/asset) that can seed new PM schedules. Requires pm_templates:write scope.
create_projectCreate a new project. Requires projects:write scope.
create_project_assetLink an asset to a project. Requires project_assets:write scope.
create_project_budget_itemCreate a new project budget item. Requires project_budget_items:write scope.
create_project_buildingLink a building to a project. Requires project_buildings:write scope.
create_project_commentCreate a new comment on a project. Requires project_comments:write scope.
create_project_cost_snapshotRecord a cost snapshot for a project at a point in time. Requires project_cost_snapshots:write scope.
create_project_documentCreate a project document record. Requires project_documents:write scope.
create_project_document_folder_templateCreate a project document folder template. Requires project_document_folder_templates:write scope.
create_project_infrastructure_assetLink a project to an infrastructure feature. The (project_id, feature_id) pair must be unique - a duplicate returns 409. Requires project_infrastructure_assets:write scope.
create_project_locationLink a location to a project. Requires project_locations:write scope.
create_project_milestoneCreate a new project milestone. Requires project_milestones:write scope.
create_project_phaseCreate a new project phase. Requires project_phases:write scope.
create_project_phase_categoryCreate a new project phase category. Requires project_phase_categories:write scope.
create_project_riskCreate a new project risk. Requires project_risks:write scope.
create_project_siteLink a site to a project. Requires project_sites:write scope.
create_project_systemLink a system to a project. Requires project_systems:write scope.
create_project_system_classLink a system class to a project. Requires project_system_classes:write scope.
create_project_system_groupLink a system group to a project. Requires project_system_groups:write scope.
create_project_taskCreate a new project task. Requires project_tasks:write scope.
create_project_task_dependencyCreate a dependency between two project tasks. Requires project_task_dependencies:write scope.
create_project_team_memberAdd a team member to a project. Requires project_team_members:write scope.
create_project_time_entryCreate a new project time entry. Requires project_time_entries:write scope.
create_project_updateCreate a periodic project status update. Requires project_updates:write scope.
create_purchase_orderCreate a new purchase order. Requires purchase_orders:write scope.
create_purchase_order_lineAdd a line item to a purchase order. Requires purchase_orders:write scope. The PO's amount becomes the sum of its lines. A line naming a part_id is counted in whole units, and its quantity_received is added to that part's stock. Required: purchase_order_id, description, quantity.
create_purchase_order_linkLink a purchase order to a work order, PM schedule or project for reference. Requires purchase_orders:write scope. Required: purchase_order_id and exactly one of work_order_id, pm_schedule_id, project_id. A link does not add to committed cost; to charge the cost, set project_id or work_order_id on the purchase order itself.
create_service_areaCreate a new service area for Level of Service tracking. Requires service_areas:write scope. After creating, link system classes via create_service_area_system_class and sites via create_service_area_site.
create_service_area_siteLink a site to a service area (optional scoping). Requires service_areas:write scope. Resolve IDs first: list_service_areas → service_area_id, list_sites → site_id.
create_service_area_system_classLink a system class to a service area. Requires service_areas:write scope. Resolve IDs first: list_service_areas → service_area_id, list_system_classes → system_class_id.
create_siteCreate a new site. Requires sites:write scope.
create_systemCreate a new system. Requires systems:write scope.
create_system_classCreate a new system class (top-level classification, e.g., "HVAC & Mechanical", "Material Handling"). Requires systems:write scope.
create_system_groupCreate a new system group (category under a system class, e.g., "Heating", "Cooling"). Requires systems:write scope.
create_system_los_targetSet the technical Level of Service target for one system and metric. One base target per system and metric, set once for the organization; a duplicate returns 409, so update the existing row instead. Each building is held to a version adjusted by its criticality: a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical facility, 58 at a Low one). Derived targets never leave the metric's scale. Direction is fixed by the metric and cannot be sent: asset_condition_avg is hi…
create_upload_urlGenerate a signed upload URL for uploading a file to AssetLab storage. Returns a signed_url to PUT the file to, and the storage path to store on the record. IMPORTANT - When a user wants to upload a file, always clarify the target. File upload paths: (1) Asset IMAGE: bucket "asset-images" → update_asset with image_url. (2) Asset DOCUMENT (O&M, warranty, spec): bucket "documents" → create_asset_document. (3) Work order IMAGE: bucket "attachments" → update_work_order with image_url. (4) Work order/request/PM ATTACHMENT: bucket "attachments" → create_attachment with the parent ID. (5) Project DOC…
create_vendorCreate a new vendor. Requires vendors:write scope.
create_vendor_site_assignmentAssign a vendor to a site. Requires vendor_site_assignments:write scope.
create_work_categoryCreate a new work category. Requires work_categories:write scope.
create_work_orderCreate a new work order. Requires work_orders:write scope. REQUIRED: title. STRONGLY RECOMMENDED: site_id, building_id and at least one target (asset_id, location_id, system_ids or infrastructure_asset_ids) - the AssetLab app always sets one, and a work order with no target is hard to find and to cost, so ask the user which applies before calling. The API accepts a work order without a target. Also recommended: work_category_id (look up via list_work_categories; omit only if no reasonable match exists). Location hierarchy: always resolve top-down by calling list_sites first, then list_building…
create_work_order_commentCreate a new comment on a work order. Requires work_order_comments:write scope.
create_work_order_scheduleSchedule a work order for a technician on a date (one entry of a day plan). stop_order gives the position in the technician's day; leave it unset for an unordered calendar entry. Requires work_order_schedules:write scope.
create_work_requestCreate a new work request. Requires work_requests:write scope. IMPORTANT - Location hierarchy: always resolve top-down by calling list_sites first, then list_buildings filtered by site_id, then list_locations filtered by building_id. Provide all three IDs (site_id, building_id, location_id) explicitly.
delete_assetPermanently delete an asset by ID, cascading to its history. Requires assets:write scope. For an asset taken out of service, archive it instead with update_asset (status_id = the Archived status), which keeps its work orders, costs and inspections.
delete_asset_bettermentDelete a betterment by ID. The asset's net book value and remaining life revert to what they were without it. Requires asset_betterments:write scope.
delete_asset_commentDelete an asset comment by ID. Requires asset_comments:write scope.
delete_asset_condition_assessmentSoft-delete an asset condition assessment by ID. Requires asset_condition_assessments:write scope.
delete_asset_costDelete an asset cost entry by ID. Requires asset_costs:write scope.
delete_asset_documentDelete an asset document by ID. Requires asset_documents:write scope.
delete_asset_lifecycle_eventDelete a facility lifecycle strategy event by ID. Projections recompute immediately; consider update with is_active=false to disable instead. Requires asset_lifecycle_events:write scope.
delete_asset_partRemove a part from an asset by association ID. Requires asset_parts:write scope.
delete_asset_placementRemove an asset placement. The asset itself is not affected - only the pin on the floorplan is removed. Requires asset_placements:write scope.
delete_asset_replacement_planDelete an asset replacement plan by ID. Requires asset_replacement_plans:write scope.
delete_asset_statusDelete an asset status by ID. Requires asset_statuses:write scope. The built-in Archived status (system_key archived) cannot be deleted.
delete_asset_typeDelete an asset type by ID. Requires asset_types:write scope.
delete_asset_type_groupDelete an asset type group by ID. Requires asset_type_groups:write scope.
delete_attachmentDelete an attachment by ID. Requires attachments:write scope.
delete_budgetDelete a budget by ID. Requires budgets:write scope.
delete_buildingDelete a building by ID. Requires buildings:write scope.
delete_building_typeDelete a building type by ID. Requires building_types:write scope.
delete_change_orderDelete a change order by ID. Requires change_orders:write scope.
delete_compliance_itemDelete a compliance item by ID. Requires compliance:write scope.
delete_compliance_pm_scheduleUnlink a PM schedule from a compliance item. The schedule and the item both stay. Requires compliance:write scope.
delete_compliance_recordDelete a compliance record by ID. Requires compliance_records:write scope.
delete_contractDelete a contract by ID. Requires contracts:write scope.
delete_contract_documentDelete a contract document by ID. Requires contract_documents:write scope.
delete_contract_siteRemove a contract from a site. Requires contract_sites:write scope. An assignment is identified by its contract and site; it has no id of its own.
delete_cost_categoryDelete a cost category by ID. Requires cost_categories:write scope.
delete_criticality_modifierDelete a criticality modifier override by ID, which restores the built-in default for that tier (critical 0.6, high 0.8, medium 1.0, low 1.4). Requires los_targets:write scope.
delete_custom_field_definitionDelete a custom field definition by ID. Requires custom_fields:write scope.
delete_custom_field_valueDelete a custom field value by ID. Requires custom_fields:write scope.
delete_expenseDelete an expense by ID. Requires expenses:write scope.
delete_floorplanDelete a floorplan. WARNING: cascades to all regions and asset placements on this floor. Does NOT delete the underlying PDF file from storage (do that separately if no other floors reference it). Requires floorplans:write scope.
delete_floorplan_regionDelete a region. Asset placements that referenced this region will have region_id set to null but remain on the floorplan. Requires floorplan_regions:write scope.
delete_form_responseRemove a form from the record it is attached to, along with any answers already given. Use this before attaching a different form, since a record holds at most one form. Requires form_responses:write scope.
delete_form_templateDelete a form template by ID. Requires form_templates:write scope.
delete_form_template_itemDelete a form template item by ID. Requires form_template_items:write scope.
delete_infrastructure_assetSoft-delete an infrastructure asset (feature) by ID (sets deleted_at). Requires infrastructure_assets:write scope.
delete_infrastructure_asset_commentDelete an infrastructure asset comment by ID. Requires infrastructure_asset_comments:write scope.
delete_infrastructure_asset_costDelete an infrastructure asset cost by ID. Requires infrastructure_asset_costs:write scope.
delete_infrastructure_asset_documentDelete an infrastructure asset document by ID. Requires infrastructure_asset_documents:write scope.
delete_infrastructure_asset_inspectionSoft-delete an infrastructure asset inspection by ID. Requires infrastructure_asset_inspections:write scope.
delete_infrastructure_asset_partDelete an infrastructure asset part association by ID. Requires infrastructure_asset_parts:write scope.
delete_infrastructure_feature_classDelete a tenant-defined infrastructure feature class by code. Builtin classes cannot be deleted. Classes referenced by any infrastructure network are protected by FK and cannot be deleted until those networks are reassigned. Requires infrastructure_feature_classes:write scope.
delete_infrastructure_lifecycle_eventDelete a lifecycle strategy event by ID. Projections recompute immediately; consider update with is_active=false to disable instead. Requires infrastructure_lifecycle_events:write scope.
delete_infrastructure_los_targetDelete an infrastructure LoS target by ID. Networks of that class stop being scored on the metric; past status snapshots are kept. Requires los_targets:write scope.
delete_infrastructure_networkDelete an infrastructure network by ID. Cascades to all features in the network - confirm with the user before deleting. Requires infrastructure_networks:write scope.
delete_infrastructure_zoneDelete an infrastructure zone by ID. Requires infrastructure_zones:write scope.
delete_invoiceDelete an invoice by ID. Requires invoices:write scope.
delete_locationDelete a location by ID. Requires locations:write scope.
delete_location_typeDelete a location type by ID. Requires location_types:write scope.
delete_los_consequenceDelete a LoS consequence by ID. Requires los_consequences:write scope.
delete_los_measureDelete a LoS measure by ID. WARNING: This also deletes all associated measurements and targets history. Requires los_measures:write scope.
delete_los_measurementDelete a LoS measurement by ID. Requires los_measurements:write scope.
delete_los_proposed_targetDelete a LoS proposed target by ID. Requires los_proposed_targets:write scope.
delete_manufacturerDelete a manufacturer by ID. Requires manufacturers:write scope.
delete_partDelete a part/inventory item by ID. Requires parts:write scope.
delete_part_categoryDelete a part category by ID. Requires part_categories:write scope.
delete_pm_scheduleDelete a PM schedule by ID. Requires pm_schedules:write scope.
delete_pm_templateDelete a PM template by ID. Requires pm_templates:write scope.
delete_projectDelete a project by ID. Requires projects:write scope.
delete_project_assetRemove an asset from a project by ID. Requires project_assets:write scope.
delete_project_budget_itemDelete a project budget item by ID. Requires project_budget_items:write scope.
delete_project_buildingRemove a building from a project by ID. Requires project_buildings:write scope.
delete_project_commentDelete a project comment by ID. Requires project_comments:write scope.
delete_project_cost_snapshotDelete a project cost snapshot by ID. Requires project_cost_snapshots:write scope.
delete_project_documentDelete a project document by ID. Requires project_documents:write scope.
delete_project_document_folder_templateDelete a project document folder template by ID. Requires project_document_folder_templates:write scope.
delete_project_infrastructure_assetDelete a project ↔ infrastructure feature link by ID. Requires project_infrastructure_assets:write scope.
delete_project_locationRemove a location from a project by ID. Requires project_locations:write scope.
delete_project_milestoneDelete a project milestone by ID. Requires project_milestones:write scope.
delete_project_phaseDelete a project phase by ID. Requires project_phases:write scope.
delete_project_phase_categoryDelete a project phase category by ID. Requires project_phase_categories:write scope.
delete_project_riskDelete a project risk by ID. Requires project_risks:write scope.
delete_project_siteRemove a site from a project by ID. Requires project_sites:write scope.
delete_project_systemRemove a system from a project by ID. Requires project_systems:write scope.
delete_project_system_classRemove a system class from a project by ID. Requires project_system_classes:write scope.
delete_project_system_groupRemove a system group from a project by ID. Requires project_system_groups:write scope.
delete_project_taskDelete a project task by ID. Requires project_tasks:write scope.
delete_project_task_dependencyDelete a task dependency by ID. Requires project_task_dependencies:write scope.
delete_project_team_memberRemove a team member from a project by ID. Requires project_team_members:write scope.
delete_project_time_entryDelete a project time entry by ID. Requires project_time_entries:write scope.
delete_project_updateDelete a project update by ID. Requires project_updates:write scope.
delete_purchase_orderDelete a purchase order by ID. Requires purchase_orders:write scope.
delete_purchase_order_lineDelete a purchase order line item. Requires purchase_orders:write scope. A line with stock received is refused until its quantity_received is set back to 0.
delete_purchase_order_linkRemove a purchase order link. Requires purchase_orders:write scope.
delete_service_areaDelete a service area by ID. WARNING: This also deletes all linked measures, measurements, and junction records. Requires service_areas:write scope.
delete_service_area_siteRemove a site link from a service area. Requires service_areas:write scope.
delete_service_area_system_classRemove a system class link from a service area. Requires service_areas:write scope.
delete_siteDelete a site by ID. Requires sites:write scope.
delete_systemDelete a system by ID. Requires systems:write scope.
delete_system_classDelete a system class by ID. Requires systems:write scope.
delete_system_groupDelete a system group by ID. Requires systems:write scope.
delete_system_los_targetDelete a system LoS target by ID. Buildings stop being scored on that system and metric; past status snapshots are kept. Requires los_targets:write scope.
delete_vendorDelete a vendor by ID. Requires vendors:write scope.
delete_vendor_site_assignmentRemove a vendor-site assignment by ID. Requires vendor_site_assignments:write scope.
delete_work_categoryDelete a work category by ID. Requires work_categories:write scope.
delete_work_orderDelete a work order by ID. Requires work_orders:write scope.
delete_work_order_commentDelete a work order comment by ID. Requires work_order_comments:write scope.
delete_work_order_scheduleDelete a work order schedule entry by ID (removes the stop from the technician's day). Requires work_order_schedules:write scope.
delete_work_requestDelete a work request by ID. Requires work_requests:write scope.
get_assetGet detailed information about a specific asset by its ID, archived or not; archived_at is set on an archived asset. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_asset_bettermentGet a single betterment by ID - one capital improvement on one asset, with its cost, the service life it bought, and its in-service date. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_asset_commentGet a single asset comment by ID.
get_asset_condition_assessmentGet a single asset condition assessment by ID. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_asset_costGet a single asset cost record by ID - the record type shown on the main AssetLab "Expenses" page. Returns amount, cost_date, category, description, invoice_number, po_number, and related asset, site, building, and work_order. Distinct from get_expense (project-scoped expenses without invoice/PO). Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_asset_documentGet a single asset document by ID.
get_asset_lifecycle_eventGet a single facility lifecycle strategy event by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_asset_partGet a single asset-part association by ID, including asset and part details.
get_asset_placementGet a single asset placement by ID.
get_asset_replacement_planGet a single asset replacement plan by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_asset_risk_history_entryGet a single asset risk history entry by ID.
get_asset_statusGet a single asset status by ID.
get_attachmentGet a single attachment by ID.
get_budgetGet a single annual funding budget by ID. Use list_sites/list_buildings to resolve site_id/building_id. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_change_orderGet a change order by ID, including amount, status, vendor, and linked project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_compliance_itemGet detailed compliance item including linked PM schedules and their required frequencies.
get_compliance_pm_scheduleGet one compliance item to PM schedule link by its ID.
get_compliance_recordGet a single compliance record by ID.
get_contract_documentGet a single contract document by ID.
get_criticality_modifierGet a single criticality modifier override by ID. A tier with no override uses the built-in default (critical 0.6, high 0.8, medium 1.0, low 1.4); a modifier below 1 tightens targets and one above 1 relaxes them.
get_custom_field_definitionGet a single custom field definition by ID.
get_custom_field_valueGet a single custom field value by ID.
get_dashboard_snapshotGet a single dashboard snapshot by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_dashboard_summaryGet aggregated dashboard statistics: total assets, work orders by status, overdue count, active PM schedules, sites, and buildings.
get_expenseGet a project-scoped expense (Project → Costs → Expenses tab) by ID, including amount, date, receipt, and linked project or work order. Does NOT include invoice_number or po_number - those live on asset_costs (the main AssetLab "Expenses" page). Use get_asset_cost for that record type. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_floorplanGet a single floorplan by ID. Returns floor metadata, PDF path, page number, and detection status.
get_floorplan_regionGet a single floorplan region by ID.
get_form_responseGet detailed information about a specific form response by its ID.
get_form_response_answerGet detailed information about a specific form response answer by its ID.
get_form_templateGet detailed information about a specific form template by its ID.
get_form_template_itemGet detailed information about a specific form template item by its ID.
get_infrastructure_assetGet a single infrastructure asset (feature) by ID. Returns full geometry as GeoJSON plus all attributes. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_infrastructure_asset_commentGet a single infrastructure asset comment by ID.
get_infrastructure_asset_costGet a single infrastructure asset cost by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_infrastructure_asset_documentGet a single infrastructure asset document by ID.
get_infrastructure_asset_inspectionGet a single infrastructure asset inspection by ID.
get_infrastructure_asset_partGet a single infrastructure asset part association by ID.
get_infrastructure_asset_risk_history_entryGet a single infrastructure asset risk history entry by ID. Read-only.
get_infrastructure_feature_classGet a single infrastructure feature class by its `code` (e.g. "water_main"). Note: addressed by code, not UUID.
get_infrastructure_lifecycle_eventGet a single lifecycle strategy event by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_infrastructure_los_targetGet a single infrastructure LoS target by ID. base_target is the base for that feature class and metric, not what any one network is held to (list_infrastructure_los_targets explains the criticality adjustment). All three metrics are 0-100; condition is higher-is-better, fci and asset_past_useful_life_pct lower-is-better. Not money.
get_infrastructure_networkGet a single infrastructure network by ID. criticality sets how strictly the network is held to its feature class's Level of Service targets; null is treated as medium.
get_infrastructure_zoneGet a single infrastructure zone by ID. Boundary is returned as a GeoJSON Polygon.
get_invoiceGet detailed invoice information including amounts, dates, linked vendor, project, and purchase order. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_los_consequenceGet a single LoS consequence by ID. Advisory only: no notification is sent. scope_ref holds a criticality tier, a system ID or a feature class code depending on scope_type, and is null for global.
get_los_measureGet a single LoS measure by ID, including all configuration (targets, data source, weights).
get_los_measurementGet a single LoS measurement by ID, including value, period, and source metadata.
get_los_proposed_targetGet a single LoS proposed target by ID: measure, year, and target_value (in the measure's own unit, not money) or target_statement.
get_los_status_snapshotGet a single monthly Level of Service reading by ID. actual is null when there was no data; derived_target is what that facility was held to then, after its criticality was applied. fci and asset_past_useful_life_pct are 0-100 percentages (not fractions), asset_condition_avg is 0-100 and risk_score_avg is 0-25. Not money.
get_los_targets_history_entryGet a single LoS targets history entry by ID: the target, minimum and stretch goal a measure was set to on effective_date, in the measure's own unit (not money). History exists from 2026-09-20 onward only.
get_manufacturerGet detailed manufacturer information including contact details and associated system classes.
get_organization_settingsGet this organization's display settings: currency_code (ISO 4217), timezone, date_format, company_name, org_category, and which optional modules are enabled (infrastructure, level of service; enable_floorplans is not enforced - floorplans are available on every plan). Call this before presenting any monetary amount - costs, budgets and replacement values returned by every other tool are bare numbers with no currency attached, so stating one without checking risks labelling a Canadian tenant's money as US dollars. Also the fastest way to tell an empty module from one this organization does not…
get_partGet detailed information about a specific part including location and stock levels. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_part_categoryGet a single part category by ID.
get_pm_scheduleGet detailed information about a specific PM schedule including tasks, resources, and linked assets. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_projectGet detailed project information including budget, progress, schedule variance, and linked sites. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_project_assetGet a single project asset assignment by ID.
get_project_budget_itemGet a single project budget item by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_project_buildingGet a single project building assignment by ID.
get_project_commentGet a single project comment by ID.
get_project_cost_snapshotGet a single project cost snapshot by ID. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_project_documentGet a single project document by ID.
get_project_document_folder_templateGet a project document folder template by ID, including its folder structure.
get_project_infrastructure_assetGet a single project ↔ infrastructure feature link by ID.
get_project_locationGet a single project location assignment by ID.
get_project_milestoneGet a single project milestone by ID.
get_project_phaseGet a single project phase by ID.
get_project_riskGet a single project risk by ID, including mitigation and contingency plans.
get_project_siteGet a single project site assignment by ID.
get_project_systemGet a single project system assignment by ID.
get_project_system_classGet a single project system class assignment by ID.
get_project_system_groupGet a single project system group assignment by ID.
get_project_taskGet a single project task by ID, including cost and hour tracking. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_project_task_dependencyGet a single project task dependency by ID.
get_project_team_memberGet a single project team member by ID.
get_project_time_entryGet a single project time entry by ID.
get_project_updateGet a single project update by ID.
get_purchase_orderGet detailed purchase order information including amount, status, vendor, and linked project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_purchase_order_lineGet one purchase order line item by ID. unit_cost is a bare number with no currency: call get_organization_settings for currency_code before stating one.
get_purchase_order_linkGet one purchase order link by ID.
get_service_areaGet a single service area by ID, including linked system classes and sites.
get_siteGet detailed information about a specific site including address and description. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_site_fci_history_entryGet a single site FCI history entry by ID.
get_system_los_targetGet a single system LoS target by ID. base_target is the organization-wide base for that system and metric, not what any one building is held to (list_system_los_targets explains the criticality adjustment). fci, asset_condition_avg and asset_past_useful_life_pct are 0-100 and risk_score_avg is 0-25; condition is higher-is-better, the others lower-is-better. Not money.
get_userGet a specific organization member by their user ID. Returns name, email, and role. Requires users:read scope.
get_vendorGet detailed vendor information including contact details, address, and website.
get_vendor_site_assignmentGet a single vendor site assignment by ID, including vendor and site names.
get_work_orderGet detailed information about a specific work order by its ID, including description, dates, costs, and completion details. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
get_work_order_commentGet a single work order comment by ID.
get_work_order_scheduleGet a single work order schedule entry by ID.
get_work_requestGet detailed work request information including description, attachments, and processing status.
list_asset_bettermentsList betterments - capital work that extended a facility asset's life, such as an elevator modernization or a boiler retube. Each records what the work cost (capitalized_amount), how much service life it bought (added_life_years), and when it went into service (occurred_on). A betterment re-bases the asset's depreciation from its own date and never changes the asset's original in-service date. Filter by asset_id, project_id or work_order_id. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_asset_commentsList comments on assets. Filter by asset_id to get comments for a specific asset.
list_asset_condition_assessmentsList point-in-time condition assessments recorded against assets. Filter by asset, assessor, method, condition score range, or assessment date range. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_asset_costsList asset cost records - this is what the AssetLab UI shows on the main "Expenses" page (top-level nav). Each record includes amount, cost_date, category (Repair, PM, Operation, Replacement, Decommission, Other), description, invoice_number, po_number, and links to asset/site/building/work_order. Distinct from list_expenses, which returns project-scoped expenses without invoice/PO fields. Filter by asset, site, category, or work order. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_asset_documentsList asset documents (O&M manuals, warranties, specs, etc.). Filter by asset_id or category.
list_asset_lifecycle_eventsList facility lifecycle strategy events - condition-triggered maintenance/rehabilitation events keyed on an asset-type scope (exactly one of asset_type_id or asset_type_group_id), never on individual assets. The events sharing one scope form that scope's strategy; an asset resolves its type's own strategy first, else its type group's. Filter by asset_type_id, asset_type_group_id, event_class, or is_active. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_asset_partsList parts associated with assets. Filter by asset_id to get all parts for one asset, or by part_id to see all assets using a specific part.
list_asset_placementsList asset pin placements on floorplans. Each asset has at most one placement globally. Filter by floorplan_id to see all pins on one floor, or by asset_id to find where a specific asset is placed.
list_asset_replacement_plansList asset replacement plans for lifecycle/capital planning. Filter by asset, status, priority, or planned year. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_asset_risk_historyList asset risk assessment history. Shows risk scores, condition scores, and trigger events over time. Condition scores are 0-100: 85+ Excellent, 70-84 Good, 55-69 Fair, 40-54 Poor, below 40 Critical.
list_asset_statusesList asset statuses for the organization. These define the lifecycle states an asset or infrastructure feature can be in. Each has a `module`: facilities (assets), infrastructure (features), or null (shared by both); pick one matching the record, or a shared one. The status with system_key archived is the built-in Archived status: assigning it to an asset archives the asset.
list_asset_type_groupsList asset type group classifications. Groups organize asset types into logical categories.
list_asset_typesList asset type classifications. Filter by group.
list_assetsList assets in your AssetLab account. Supports filtering by site, building, system class, system group, system, status, and text search. Archived assets (removed from service, kept for their history) are left out unless include_archived is true or status_id names a status. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_attachmentsList file attachments linked to work orders, work requests, PM schedules, or PM templates.
list_budgetsList annual funding budgets - one figure per year, funding source (O&M or Capital) and workspace (module), which is what the dashboard Budget tab shows. Filter by year, funding source, module, site or building. Includes allocated, budgeted, and remaining amounts. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_building_typesList building type classifications.
list_buildingsList buildings. Optionally filter by site to see all buildings at a specific location.
list_change_ordersList change orders. Filter by status, vendor_id, or project_id. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_compliance_itemsList compliance items (regulatory requirements tracked against PM schedules). Filter by status or system.
list_compliance_pm_schedulesList the PM schedules linked to a compliance item, or the compliance items a PM schedule counts toward. Pass compliance_item_id or pm_schedule_id (one is required). Each link carries required_frequency_days (how often the schedule must be completed for the item to stay compliant) and weight.
list_compliance_recordsList compliance records - audit trail of completed compliance checks linked to work orders and PM schedules.
list_contract_documentsList documents attached to contracts. Filter by contract_id.
list_contract_sitesList contract-to-site mappings showing which contracts cover which sites. No single-record lookup (composite key).
list_contractsList vendor contracts. Filter by category or search by title. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_cost_categoriesList cost categories used to classify expenses, invoices, and purchase orders. Supports hierarchical parent-child structure.
list_criticality_modifiersList the organization's criticality modifier overrides. Rows are overrides only: a tier with no row uses the built-in default (critical 0.6, high 0.8, medium 1.0, low 1.4), so an empty list means every tier is on its default. A modifier below 1 tightens the targets of facilities in that tier and one above 1 relaxes them; the allowed range is 0.1 to 1.9. Deleting a row restores the default. Filter by tier.
list_custom_field_definitionsList custom field definitions configured for this tenant. Filter by entity type (e.g. asset, work_order) or field type.
list_custom_field_valuesList custom field values. Filter by entity_id to get all custom fields for a specific record, or by field_definition_id.
list_dashboard_snapshotsList monthly dashboard snapshots with aggregate stats: asset counts, condition scores, work order metrics, and CRV totals. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_expensesList project-scoped expenses (the Project → Costs → Expenses tab). These records have description, amount, expense_date, receipt_url, and notes - they do NOT carry invoice_number or po_number. For the records shown on the main AssetLab "Expenses" page (which include invoice_number, po_number, category, and asset/site links), use list_asset_costs instead. Filter by project, work order, or cost category. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_floorplan_regionsList labeled rooms/zones on a floorplan. Each region has a polygon (normalized 0-1 coordinates), an optional location_id linking to the Locations hierarchy, and a "reviewed" flag for AI-detected regions.
list_floorplansList floorplans (PDF page-level floors or site-level sheets). Filter by building_id for a building's floors, or by site_id for site-level plans (campus maps, outdoor layouts). Each floorplan belongs to exactly one of building OR site. A multi-page PDF produces multiple floorplans sharing the same pdf_storage_path.
list_form_response_answersList the per-question answer values within form responses. Read-only.
list_form_responsesList form responses - completed or in-progress fill-outs of a form, attached to a work order or PM. Read-only.
list_form_template_itemsList the items (questions) within form templates. Returned in sort order. Filter by template_id.
list_form_templatesList form templates - reusable inspection, checklist, compliance, and survey definitions. Each has a `module`: facilities, infrastructure, or null (shared by both).
list_infrastructure_asset_commentsList comments on infrastructure features. Filter by feature.
list_infrastructure_asset_costsList cost rows for infrastructure features. Filter by feature, work order, category, or cost date range. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_infrastructure_asset_documentsList documents attached to infrastructure features. Filter by feature, category, or name search.
list_infrastructure_asset_inspectionsList inspections recorded against infrastructure assets. Filter by feature, inspector, method, condition score range, or inspection date range.
list_infrastructure_asset_partsList parts associated with infrastructure features. Filter by feature or part.
list_infrastructure_asset_risk_historyList the risk + condition history captured for infrastructure features (populated automatically when a feature's risk fields change). Read-only. Filter by feature, source, or capture date range.
list_infrastructure_assetsList infrastructure assets (features - segments or nodes). Geometry is returned as GeoJSON (Point for nodes, LineString for segments) in EPSG:4326. Filter by network, feature_type, site, status, asset type, condition score range, or risk score range. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_infrastructure_feature_classesList infrastructure feature classes (catalog of classes like water_main, sewer_gravity, pavement). Use the `code` field as the natural key when referencing a class from a network. Filter by category or is_builtin.
list_infrastructure_lifecycle_eventsList lifecycle strategy events - condition-triggered maintenance/rehabilitation events keyed on a scope (feature_class code, material, optional diameter band), never on individual features. The events sharing one scope form that scope's strategy; features resolve the most specific matching scope like replacement rates. Filter by feature_class, material, event_class, or is_active. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_infrastructure_los_targetsList technical Level of Service targets for infrastructure. One base target per feature class and metric, set once for the organization. Each network of that class is held to a version adjusted by the network's criticality (an unrated network counts as medium): a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical network, 58 at a Low one). Derived targets never leave the metric's scale. Metrics: fci (0-100 percent, lower is better), asset_condition_avg (0-100, higher…
list_infrastructure_networksList infrastructure networks (named groupings of features bound to one feature class). criticality (critical, high, medium, low) sets how strictly a network is held to its feature class's Level of Service targets; null is treated as medium. Filter by feature_class code or text search.
list_infrastructure_zonesList operational hydraulic boundaries (pressure zones, DMAs, sewersheds, etc.). Boundary is returned as a GeoJSON Polygon in EPSG:4326. Filter by network or kind.
list_invoicesList invoices. Filter by status (pending, approved, paid, voided), vendor, or project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_location_typesList location type classifications (e.g., room types, floor types).
list_locationsList locations (rooms, floors, areas within buildings). Optionally filter by building or location type.
list_los_consequencesList Level of Service consequences: what a missed technical target means, in the organization's own words. Advisory only: the statement is shown on the Status screen when a target is breached, and no notification is sent to notify_roles or to anyone else. When several match a breach the most specific scope wins (a specific system or feature class over a criticality tier over global). severity is a floor; the severity shown scales with the size of the gap and the facility's criticality. A null metric matches any metric. Filter by scope type, severity or active.
list_los_measurementsList LoS measurement values (time-series). Filter by measure, period type, date range, or auto/manual.
list_los_measuresList LoS measures. Filter by service area, category, type, data source, or active status.
list_los_proposed_targetsList proposed levels of service: one row per LoS measure and future year (O. Reg. 588/17 s. 6(1)). A community measure carries target_statement; a technical measure carries target_value, in the measure's own unit (not money). Filter by measure or year.
list_los_status_snapshotsList monthly technical Level of Service readings, newest first. Read-only. One reading per tracked pair (a system in a building, or an infrastructure network) and metric per month, recorded the first time anyone opens the Status screen in that month, so a month nobody opened it is missing rather than zero. actual is the measured value and is null when there was no data; base_target is the organization-wide target and derived_target is what that facility was held to at the time, after its criticality was applied; status is exceeding, meeting, below, failing or no_data. fci and asset_past_useful…
list_los_targets_historyList recorded changes to a LoS measure's target, minimum and stretch goal, newest first. Recording began on 2026-09-20: a change made before that date left no entry, so an empty list does not mean the target never changed. One entry per measure per day; a second change the same day overwrites that day's entry. Values are in the measure's own unit (not money). Filter by measure ID.
list_manufacturersList manufacturers of equipment and assets.
list_part_categoriesList part categories used to classify inventory parts. Each has a `module`: facilities, infrastructure, or null (shared by both); pick one matching the part's workspace, or a shared one.
list_partsList parts/inventory items. Filter by site or category. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_pm_schedulesList preventive maintenance schedules. Filter by status, frequency, or site. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_pm_templatesList preventive maintenance templates that can be used to create PM schedules. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_project_assetsList asset assignments for projects. Filter by project_id or asset_id.
list_project_budget_itemsList project budget line items (labor, materials, equipment, subcontractors, permits, contingency, other). Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_project_buildingsList building assignments for projects. Filter by project_id or building_id.
list_project_commentsList comments on projects. Supports threaded replies via parent_id.
list_project_cost_snapshotsList historical cost snapshots for projects. Filter by project_id to see cost trends over time. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_project_document_folder_templatesList project document folder templates for reusable folder structures.
list_project_documentsList documents attached to projects. Filter by project_id or folder_id.
list_project_infrastructure_assetsList links between projects and infrastructure features. Filter by project or feature.
list_project_locationsList location assignments for projects. Filter by project_id or location_id.
list_project_milestonesList project milestones. Filter by project or status (pending, completed, missed, at_risk).
list_project_phase_categoriesList project phase categories (e.g., Planning, Design, Execution). Sorted by sort_order.
list_project_phasesList project phases. Filter by project or status (pending, in_progress, completed, skipped).
list_project_risksList project risks (risk register). Filter by project, status, category, probability, or impact.
list_project_sitesList site assignments for projects. Filter by project_id or site_id.
list_project_system_classesList system class assignments for projects. Filter by project_id or system_class_id.
list_project_system_groupsList system group assignments for projects. Filter by project_id or system_group_id.
list_project_systemsList system assignments for projects. Filter by project_id or system_id.
list_project_task_dependenciesList task dependencies. Filter by task_id or depends_on_task_id to see dependency chains.
list_project_tasksList project tasks (work breakdown structure). Filter by project, phase, status, or priority. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_project_team_membersList project team members. Filter by project, user, or active status.
list_project_time_entriesList project time entries for labor tracking. Filter by project, task, or user.
list_project_updatesList periodic project updates (status reports). Filter by project, timeframe, or year.
list_projectsList capital projects. Filter by status or health status (on_track, at_risk, delayed, critical). Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_purchase_order_linesList purchase order line items: description, optional part, quantity, unit_cost and quantity_received. Filter by purchase_order_id or part_id. A PO with lines takes its amount from them. unit_cost is a bare number with no currency: call get_organization_settings for currency_code before stating one.
list_purchase_order_linksList the extra records a purchase order is linked to for reference: each row has exactly one of work_order_id, pm_schedule_id or project_id. Links never add to committed cost; the PO is charged only to its own project_id / work_order_id. Filter by any of those four IDs.
list_purchase_ordersList purchase orders. Filter by status (draft, issued, partially_received, received, closed, cancelled), vendor, or project. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_service_area_sitesList site links for service areas. Filter by service_area_id or site_id.
list_service_area_system_classesList system class links for service areas. Filter by service_area_id or system_class_id.
list_service_areasList service areas (Level of Service groupings). Filter by active status or search by name.
list_site_fci_historyList Facility Condition Index (FCI) history for sites. fci_value is deferred renewal cost divided by current replacement value, a fraction where LOWER is healthier: below 0.05 good, 0.05-0.10 fair, 0.10 and above poor. It is not a 0-100 condition score. To chart one site, use show_site_fci_trend.
list_sitesList all sites (physical locations/campuses) in your organization. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_system_classesList system classes (top-level classification, e.g., "HVAC", "Plumbing", "Electrical").
list_system_groupsList system groups (categories of systems, e.g., "Heating", "Cooling"). Optionally filter by system class.
list_system_los_targetsList technical Level of Service targets for building systems. One base target per system and metric, set once for the organization. Each building is held to a version adjusted by its criticality: a lower-is-better target is multiplied by the tier's modifier, a higher-is-better one keeps its distance from a perfect score multiplied by it (condition 70 becomes 82 at a Critical facility, 58 at a Low one). Derived targets never leave the metric's scale. Metrics: fci (0-100 percent, lower is better), asset_condition_avg (0-100, higher is better, read with the fixed condition bands), asset_past_usef…
list_systemsList systems (e.g., HVAC units, plumbing systems, electrical systems). Optionally filter by system group.
list_usersList organization members. Returns user IDs, names, emails, and roles. Requires users:read scope. Note: This exposes personal information - only use when the user explicitly requests member data.
list_vendor_site_assignmentsList vendor-to-site assignments showing which vendors serve which sites.
list_vendorsList vendors. Filter by status, category, or city.
list_work_categoriesList work categories used to classify work orders and requests. Each has a `module`: facilities, infrastructure, or null (shared by both). Pick a category whose module matches the work - infrastructure for work on a feature, facilities otherwise - or a shared one.
list_work_order_commentsList comments on work orders. Filter by work_order_id to get comments for a specific work order.
list_work_order_schedulesList work order schedules (technician day plans). Filter by technician_id + scheduled_date to get one technician's ordered day: rows are returned by date, then stop_order (the day-plan stop sequence; rows without stop_order sort last), then start time. travel_time_minutes is a straight-line estimate from the previous stop.
list_work_ordersList work orders. Filter by status (NEW, IN_PROGRESS, ON_HOLD, COMPLETED, CANCELLED), priority (LOW, MEDIUM, HIGH, URGENT), type (PM, REACTIVE), and site. Amounts are bare numbers with no currency: call get_organization_settings for currency_code before stating one.
list_work_requestsList work requests (submitted by requesters). Filter by status (PENDING_REVIEW, APPROVED, REJECTED) or priority.
show_site_fci_trendShow one site’s Facility Condition Index (FCI) history as a chart, in clients that render MCP Apps; other clients get the same summary as text. FCI is deferred renewal cost divided by current replacement value, a fraction where LOWER is healthier: good below 5%, fair 5-10%, poor 10% and above. It is not a 0-100 condition score. Resolve site_id with list_sites first.
update_assetUpdate an existing asset by ID. Requires assets:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs. Same for systems: list_system_classes → list_system_groups → list_systems.
update_asset_bettermentUpdate a betterment by ID. The asset it belongs to cannot be changed - delete and re-create to move one. The row must still add either capital or life after the update. Requires asset_betterments:write scope.
update_asset_commentUpdate an existing asset comment by ID. Requires asset_comments:write scope.
update_asset_condition_assessmentUpdate an existing asset condition assessment by ID. Requires asset_condition_assessments:write scope. Note: the purchase-cost writeback is create-only and cannot be triggered by an update.
update_asset_costUpdate an existing asset cost entry by ID - the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.
update_asset_documentUpdate an asset document by ID. Requires asset_documents:write scope.
update_asset_lifecycle_eventUpdate a facility lifecycle strategy event by ID. Editing re-confirms the cost (cost_reviewed_on is server-set). Set is_active false to disable an event without deleting it - projections recompute immediately. Requires asset_lifecycle_events:write scope.
update_asset_partUpdate the quantity of an asset-part association by ID. Requires asset_parts:write scope.
update_asset_placementMove an asset placement to new coordinates or a different floorplan. Requires asset_placements:write scope.
update_asset_replacement_planUpdate an existing asset replacement plan by ID. Requires asset_replacement_plans:write scope.
update_asset_statusUpdate an existing asset status by ID. Requires asset_statuses:write scope. On the built-in Archived status (system_key archived) only name and description can change.
update_asset_typeUpdate an existing asset type by ID. Requires asset_types:write scope.
update_asset_type_groupUpdate an existing asset type group by ID. Requires asset_type_groups:write scope.
update_attachmentUpdate an attachment by ID. Requires attachments:write scope.
update_budgetUpdate an existing budget by ID. Requires budgets:write scope.
update_buildingUpdate an existing building by ID. Requires buildings:write scope. latitude and longitude must be sent together; send both as null to clear the building position.
update_building_typeUpdate an existing building type by ID. Requires building_types:write scope.
update_change_orderUpdate an existing change order by ID. Requires change_orders:write scope.
update_compliance_itemUpdate an existing compliance item by ID. Requires compliance:write scope.
update_compliance_pm_scheduleChange the required frequency or weight of a compliance item to PM schedule link. Requires compliance:write scope. To point a link at a different item or schedule, delete it and create a new one.
update_compliance_recordUpdate an existing compliance record by ID. Requires compliance_records:write scope.
update_contractUpdate an existing contract by ID. Requires contracts:write scope.
update_contract_documentUpdate a contract document by ID. Requires contract_documents:write scope.
update_cost_categoryUpdate an existing cost category by ID. Requires cost_categories:write scope.
update_criticality_modifierUpdate a criticality modifier override by ID. Below 1 tightens the targets of facilities in that tier, above 1 relaxes them. Requires los_targets:write scope.
update_custom_field_definitionUpdate an existing custom field definition by ID. Requires custom_fields:write scope.
update_custom_field_valueUpdate an existing custom field value by ID. Set whichever typed column matches the definition's field_type (value_text / value_number / value_date / value_boolean), or pass a single `value` and the server will dispatch it. Requires custom_fields:write scope.
update_expenseUpdate an existing expense by ID. Requires expenses:write scope.
update_floorplanUpdate floorplan metadata (rename floor, reorder, set status). Requires floorplans:write scope.
update_floorplan_regionUpdate a floorplan region - rename, reshape polygon, link to a Location, or mark as reviewed. Requires floorplan_regions:write scope.
update_form_templateUpdate an existing form template by ID. Requires form_templates:write scope.
update_form_template_itemUpdate an existing form template item by ID. template_id and item_key are immutable and cannot be changed. Requires form_template_items:write scope.
update_infrastructure_assetUpdate an existing infrastructure asset (feature) by ID. To change geometry, provide a new GeoJSON Point/LineString matching the existing feature_type. Computed columns (length_m, slope_pct, risk_score) cannot be set. Requires infrastructure_assets:write scope.
update_infrastructure_asset_commentUpdate an infrastructure asset comment by ID. Requires infrastructure_asset_comments:write scope.
update_infrastructure_asset_costUpdate an infrastructure asset cost by ID. Requires infrastructure_asset_costs:write scope.
update_infrastructure_asset_documentUpdate infrastructure asset document metadata by ID. Requires infrastructure_asset_documents:write scope.
update_infrastructure_asset_inspectionUpdate an existing infrastructure asset inspection by ID. Requires infrastructure_asset_inspections:write scope.
update_infrastructure_asset_partUpdate an infrastructure asset part association by ID. Requires infrastructure_asset_parts:write scope.
update_infrastructure_feature_classUpdate a tenant-defined infrastructure feature class (addressed by code). The `code`, `category`, and `is_builtin` fields are immutable; attempts to change them on a builtin class return 409. Requires infrastructure_feature_classes:write scope.
update_infrastructure_lifecycle_eventUpdate a lifecycle strategy event by ID. Editing re-confirms the cost (cost_reviewed_on is server-set). Set is_active false to disable an event without deleting it - projections recompute immediately. Requires infrastructure_lifecycle_events:write scope.
update_infrastructure_los_targetUpdate an infrastructure LoS target by ID. base_target stays on 0-100. Requires los_targets:write scope.
update_infrastructure_networkUpdate an existing infrastructure network by ID. Requires infrastructure_networks:write scope.
update_infrastructure_zoneUpdate an infrastructure zone by ID. Pass boundary as a GeoJSON Polygon or MultiPolygon to replace the geometry. Requires infrastructure_zones:write scope.
update_invoiceUpdate an existing invoice by ID. Requires invoices:write scope.
update_locationUpdate an existing location by ID. Requires locations:write scope.
update_location_typeUpdate an existing location type by ID. Requires location_types:write scope.
update_los_consequenceUpdate a LoS consequence by ID. Changing scope_type to global clears scope_ref; changing it to anything else needs a scope_ref that fits the new type. Advisory only: no notification is sent. Requires los_consequences:write scope.
update_los_measureUpdate an existing LoS measure by ID. Requires los_measures:write scope.
update_los_measurementUpdate an existing LoS measurement by ID. Requires los_measurements:write scope.
update_los_proposed_targetUpdate an existing LoS proposed target by ID. Requires los_proposed_targets:write scope.
update_manufacturerUpdate an existing manufacturer by ID. Requires manufacturers:write scope.
update_partUpdate an existing part/inventory item by ID. Requires parts:write scope.
update_part_categoryUpdate an existing part category by ID. Requires part_categories:write scope.
update_pm_scheduleUpdate an existing PM schedule by ID. Requires pm_schedules:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs.
update_pm_templateUpdate an existing PM template by ID. Requires pm_templates:write scope.
update_projectUpdate an existing project by ID. Requires projects:write scope.
update_project_budget_itemUpdate an existing project budget item by ID. Requires project_budget_items:write scope.
update_project_commentUpdate an existing project comment by ID. Requires project_comments:write scope.
update_project_documentUpdate a project document by ID. Requires project_documents:write scope.
update_project_document_folder_templateUpdate a project document folder template by ID. Requires project_document_folder_templates:write scope.
update_project_infrastructure_assetUpdate a project ↔ infrastructure feature link by ID. Requires project_infrastructure_assets:write scope.
update_project_milestoneUpdate an existing project milestone by ID. Requires project_milestones:write scope.
update_project_phaseUpdate an existing project phase by ID. Requires project_phases:write scope.
update_project_phase_categoryUpdate an existing project phase category by ID. Requires project_phase_categories:write scope.
update_project_riskUpdate an existing project risk by ID. Requires project_risks:write scope.
update_project_taskUpdate an existing project task by ID. Requires project_tasks:write scope.
update_project_team_memberUpdate a project team member by ID. Requires project_team_members:write scope.
update_project_time_entryUpdate an existing project time entry by ID. Requires project_time_entries:write scope.
update_project_updateUpdate an existing project update by ID. Requires project_updates:write scope.
update_purchase_orderUpdate an existing purchase order by ID. Requires purchase_orders:write scope.
update_purchase_order_lineUpdate a purchase order line item. Requires purchase_orders:write scope. To receive goods, set quantity_received; for a line with a part, the change is added to (or taken from) that part's stock. A line with stock received cannot change its part.
update_service_areaUpdate an existing service area by ID. Requires service_areas:write scope.
update_siteUpdate an existing site by ID. Requires sites:write scope.
update_systemUpdate an existing system by ID. Requires systems:write scope.
update_system_classUpdate an existing system class by ID. Requires systems:write scope.
update_system_groupUpdate an existing system group by ID. Requires systems:write scope.
update_system_los_targetUpdate a system LoS target by ID. base_target must sit on the scale of the metric in force (0-100, or 0-25 for risk_score_avg), so send a new base_target when changing to a metric with a smaller scale. Direction follows the metric automatically. Requires los_targets:write scope.
update_vendorUpdate an existing vendor by ID. Requires vendors:write scope.
update_work_categoryUpdate an existing work category by ID. Requires work_categories:write scope.
update_work_orderUpdate an existing work order by ID. Requires work_orders:write scope. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs. To complete a work order, set status COMPLETED and say what was done in completion_notes; completed_at is stamped automatically.
update_work_order_commentUpdate an existing work order comment by ID. Requires work_order_comments:write scope.
update_work_order_scheduleUpdate a work order schedule entry by ID (date, times, stop_order, notes). work_order_id is immutable. Requires work_order_schedules:write scope.
update_work_requestUpdate an existing work request by ID. Requires work_requests:write scope. Setting status to APPROVED creates a new work order from the request (its title, location and asset carry over) - confirm with the user first, and look the work order up afterwards with list_work_orders; REJECTED creates nothing. When changing location, resolve top-down: list_sites → list_buildings (by site_id) → list_locations (by building_id). Provide all three IDs.
upload_fileUpload a file to AssetLab storage by sending its bytes inline (base64). The AssetLab backend performs the storage upload server-side - use this tool when the client cannot PUT directly to Supabase Storage (e.g. Claude integrations whose outbound network blocks arbitrary supabase.co hosts). Returns { path, bucket, file_size, content_type }. After uploading, pass path to the appropriate record tool (update_asset image_url, create_asset_document file_path, update_work_order image_url, create_attachment file_url, create_project_document file_path, create_contract_document file_path). Server limit …
Signals
- Weekly downloads
- 485
- Last release
- Oct 22, 2026 (6 days ago)
- Last package publish
- Oct 22, 2026 (6 days ago)
From the package registry.
Details
- Registry name
ca.assetlab/mcp-server- Version
- 3.3.0
- Auth
- Auth not stated, API key
- Packages
- npm @assetlab/mcp-server
- License
- License unknown
- Website
- assetlab.ca
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
- Source
- Official MCP Registry
Cite this page
AssetLab MCP server. Agent Mart. https://agentmart.dev/connectors/assetlab-ca-mcp-server (last updated 2026-10-25)