Skip to content
Agentmart
Submit a tool

AssetLab

Work orders, PM schedules, assets, capital plans and infrastructure in AssetLab CMMS/EAM.

Connector by assetlab.caOfficial · Domain verified by the MCP Registry

IndexedLicense unknownLocal (stdio)Remote (HTTP)
Write a review

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.ca Remote (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.

We use your email only for this newsletter. Privacy

About

Work orders, PM schedules, assets, capital plans and infrastructure in AssetLab CMMS/EAM.

No 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_asset
  • get_asset_betterment
  • get_asset_comment
  • get_asset_condition_assessment
  • get_asset_cost
  • get_asset_document
  • get_asset_lifecycle_event
  • get_asset_part
  • get_asset_placement
  • get_asset_replacement_plan
  • get_asset_risk_history_entry
  • get_asset_status
Show 186 more tools
  • get_attachment
  • get_budget
  • get_change_order
  • get_compliance_item
  • get_compliance_pm_schedule
  • get_compliance_record
  • get_contract_document
  • get_criticality_modifier
  • get_custom_field_definition
  • get_custom_field_value
  • get_dashboard_snapshot
  • get_dashboard_summary
  • get_expense
  • get_floorplan
  • get_floorplan_region
  • get_form_response
  • get_form_response_answer
  • get_form_template
  • get_form_template_item
  • get_infrastructure_asset
  • get_infrastructure_asset_comment
  • get_infrastructure_asset_cost
  • get_infrastructure_asset_document
  • get_infrastructure_asset_inspection
  • get_infrastructure_asset_part
  • get_infrastructure_asset_risk_history_entry
  • get_infrastructure_feature_class
  • get_infrastructure_lifecycle_event
  • get_infrastructure_los_target
  • get_infrastructure_network
  • get_infrastructure_zone
  • get_invoice
  • get_los_consequence
  • get_los_measure
  • get_los_measurement
  • get_los_proposed_target
  • get_los_status_snapshot
  • get_los_targets_history_entry
  • get_manufacturer
  • get_organization_settings
  • get_part
  • get_part_category
  • get_pm_schedule
  • get_project
  • get_project_asset
  • get_project_budget_item
  • get_project_building
  • get_project_comment
  • get_project_cost_snapshot
  • get_project_document
  • get_project_document_folder_template
  • get_project_infrastructure_asset
  • get_project_location
  • get_project_milestone
  • get_project_phase
  • get_project_risk
  • get_project_site
  • get_project_system
  • get_project_system_class
  • get_project_system_group
  • get_project_task
  • get_project_task_dependency
  • get_project_team_member
  • get_project_time_entry
  • get_project_update
  • get_purchase_order
  • get_purchase_order_line
  • get_purchase_order_link
  • get_service_area
  • get_site
  • get_site_fci_history_entry
  • get_system_los_target
  • get_user
  • get_vendor
  • get_vendor_site_assignment
  • get_work_order
  • get_work_order_comment
  • get_work_order_schedule
  • get_work_request
  • list_asset_betterments
  • list_asset_comments
  • list_asset_condition_assessments
  • list_asset_costs
  • list_asset_documents
  • list_asset_lifecycle_events
  • list_asset_parts
  • list_asset_placements
  • list_asset_replacement_plans
  • list_asset_risk_history
  • list_asset_statuses
  • list_asset_type_groups
  • list_asset_types
  • list_assets
  • list_attachments
  • list_budgets
  • list_building_types
  • list_buildings
  • list_change_orders
  • list_compliance_items
  • list_compliance_pm_schedules
  • list_compliance_records
  • list_contract_documents
  • list_contract_sites
  • list_contracts
  • list_cost_categories
  • list_criticality_modifiers
  • list_custom_field_definitions
  • list_custom_field_values
  • list_dashboard_snapshots
  • list_expenses
  • list_floorplan_regions
  • list_floorplans
  • list_form_response_answers
  • list_form_responses
  • list_form_template_items
  • list_form_templates
  • list_infrastructure_asset_comments
  • list_infrastructure_asset_costs
  • list_infrastructure_asset_documents
  • list_infrastructure_asset_inspections
  • list_infrastructure_asset_parts
  • list_infrastructure_asset_risk_history
  • list_infrastructure_assets
  • list_infrastructure_feature_classes
  • list_infrastructure_lifecycle_events
  • list_infrastructure_los_targets
  • list_infrastructure_networks
  • list_infrastructure_zones
  • list_invoices
  • list_location_types
  • list_locations
  • list_los_consequences
  • list_los_measurements
  • list_los_measures
  • list_los_proposed_targets
  • list_los_status_snapshots
  • list_los_targets_history
  • list_manufacturers
  • list_part_categories
  • list_parts
  • list_pm_schedules
  • list_pm_templates
  • list_project_assets
  • list_project_budget_items
  • list_project_buildings
  • list_project_comments
  • list_project_cost_snapshots
  • list_project_document_folder_templates
  • list_project_documents
  • list_project_infrastructure_assets
  • list_project_locations
  • list_project_milestones
  • list_project_phase_categories
  • list_project_phases
  • list_project_risks
  • list_project_sites
  • list_project_system_classes
  • list_project_system_groups
  • list_project_systems
  • list_project_task_dependencies
  • list_project_tasks
  • list_project_team_members
  • list_project_time_entries
  • list_project_updates
  • list_projects
  • list_purchase_order_lines
  • list_purchase_order_links
  • list_purchase_orders
  • list_service_area_sites
  • list_service_area_system_classes
  • list_service_areas
  • list_site_fci_history
  • list_sites
  • list_system_classes
  • list_system_groups
  • list_system_los_targets
  • list_systems
  • list_users
  • list_vendor_site_assignments
  • list_vendors
  • list_work_categories
  • list_work_order_comments
  • list_work_order_schedules
  • list_work_orders
  • list_work_requests
  • show_site_fci_trend

Write 185 · Create, change, send or run things.

  • bulk_create
  • bulk_update
  • create_asset
  • create_asset_betterment
  • create_asset_comment
  • create_asset_condition_assessment
  • create_asset_cost
  • create_asset_document
  • create_asset_lifecycle_event
  • create_asset_part
  • create_asset_placement
  • create_asset_replacement_plan
Show 173 more tools
  • create_asset_status
  • create_asset_type
  • create_asset_type_group
  • create_attachment
  • create_budget
  • create_building
  • create_building_type
  • create_change_order
  • create_compliance_item
  • create_compliance_pm_schedule
  • create_compliance_record
  • create_contract
  • create_contract_document
  • create_contract_site
  • create_cost_category
  • create_criticality_modifier
  • create_custom_field_definition
  • create_custom_field_value
  • create_expense
  • create_floorplan
  • create_floorplan_region
  • create_form_response
  • create_form_template
  • create_form_template_item
  • create_infrastructure_asset
  • create_infrastructure_asset_comment
  • create_infrastructure_asset_cost
  • create_infrastructure_asset_document
  • create_infrastructure_asset_inspection
  • create_infrastructure_asset_part
  • create_infrastructure_feature_class
  • create_infrastructure_lifecycle_event
  • create_infrastructure_los_target
  • create_infrastructure_network
  • create_infrastructure_zone
  • create_invoice
  • create_location
  • create_location_type
  • create_los_consequence
  • create_los_measure
  • create_los_measurement
  • create_los_proposed_target
  • create_manufacturer
  • create_part
  • create_part_category
  • create_pm_schedule
  • create_pm_template
  • create_project
  • create_project_asset
  • create_project_budget_item
  • create_project_building
  • create_project_comment
  • create_project_cost_snapshot
  • create_project_document
  • create_project_document_folder_template
  • create_project_infrastructure_asset
  • create_project_location
  • create_project_milestone
  • create_project_phase
  • create_project_phase_category
  • create_project_risk
  • create_project_site
  • create_project_system
  • create_project_system_class
  • create_project_system_group
  • create_project_task
  • create_project_task_dependency
  • create_project_team_member
  • create_project_time_entry
  • create_project_update
  • create_purchase_order
  • create_purchase_order_line
  • create_purchase_order_link
  • create_service_area
  • create_service_area_site
  • create_service_area_system_class
  • create_site
  • create_system
  • create_system_class
  • create_system_group
  • create_system_los_target
  • create_upload_url
  • create_vendor
  • create_vendor_site_assignment
  • create_work_category
  • create_work_order
  • create_work_order_comment
  • create_work_order_schedule
  • create_work_request
  • update_asset
  • update_asset_betterment
  • update_asset_comment
  • update_asset_condition_assessment
  • update_asset_cost
  • update_asset_document
  • update_asset_lifecycle_event
  • update_asset_part
  • update_asset_placement
  • update_asset_replacement_plan
  • update_asset_status
  • update_asset_type
  • update_asset_type_group
  • update_attachment
  • update_budget
  • update_building
  • update_building_type
  • update_change_order
  • update_compliance_item
  • update_compliance_pm_schedule
  • update_compliance_record
  • update_contract
  • update_contract_document
  • update_cost_category
  • update_criticality_modifier
  • update_custom_field_definition
  • update_custom_field_value
  • update_expense
  • update_floorplan
  • update_floorplan_region
  • update_form_template
  • update_form_template_item
  • update_infrastructure_asset
  • update_infrastructure_asset_comment
  • update_infrastructure_asset_cost
  • update_infrastructure_asset_document
  • update_infrastructure_asset_inspection
  • update_infrastructure_asset_part
  • update_infrastructure_feature_class
  • update_infrastructure_lifecycle_event
  • update_infrastructure_los_target
  • update_infrastructure_network
  • update_infrastructure_zone
  • update_invoice
  • update_location
  • update_location_type
  • update_los_consequence
  • update_los_measure
  • update_los_measurement
  • update_los_proposed_target
  • update_manufacturer
  • update_part
  • update_part_category
  • update_pm_schedule
  • update_pm_template
  • update_project
  • update_project_budget_item
  • update_project_comment
  • update_project_document
  • update_project_document_folder_template
  • update_project_infrastructure_asset
  • update_project_milestone
  • update_project_phase
  • update_project_phase_category
  • update_project_risk
  • update_project_task
  • update_project_team_member
  • update_project_time_entry
  • update_project_update
  • update_purchase_order
  • update_purchase_order_line
  • update_service_area
  • update_site
  • update_system
  • update_system_class
  • update_system_group
  • update_system_los_target
  • update_vendor
  • update_work_category
  • update_work_order
  • update_work_order_comment
  • update_work_order_schedule
  • update_work_request
  • upload_file

Delete 98 · Delete, drop, revoke or wipe things.

  • delete_asset
  • delete_asset_betterment
  • delete_asset_comment
  • delete_asset_condition_assessment
  • delete_asset_cost
  • delete_asset_document
  • delete_asset_lifecycle_event
  • delete_asset_part
  • delete_asset_placement
  • delete_asset_replacement_plan
  • delete_asset_status
  • delete_asset_type
Show 86 more tools
  • delete_asset_type_group
  • delete_attachment
  • delete_budget
  • delete_building
  • delete_building_type
  • delete_change_order
  • delete_compliance_item
  • delete_compliance_pm_schedule
  • delete_compliance_record
  • delete_contract
  • delete_contract_document
  • delete_contract_site
  • delete_cost_category
  • delete_criticality_modifier
  • delete_custom_field_definition
  • delete_custom_field_value
  • delete_expense
  • delete_floorplan
  • delete_floorplan_region
  • delete_form_response
  • delete_form_template
  • delete_form_template_item
  • delete_infrastructure_asset
  • delete_infrastructure_asset_comment
  • delete_infrastructure_asset_cost
  • delete_infrastructure_asset_document
  • delete_infrastructure_asset_inspection
  • delete_infrastructure_asset_part
  • delete_infrastructure_feature_class
  • delete_infrastructure_lifecycle_event
  • delete_infrastructure_los_target
  • delete_infrastructure_network
  • delete_infrastructure_zone
  • delete_invoice
  • delete_location
  • delete_location_type
  • delete_los_consequence
  • delete_los_measure
  • delete_los_measurement
  • delete_los_proposed_target
  • delete_manufacturer
  • delete_part
  • delete_part_category
  • delete_pm_schedule
  • delete_pm_template
  • delete_project
  • delete_project_asset
  • delete_project_budget_item
  • delete_project_building
  • delete_project_comment
  • delete_project_cost_snapshot
  • delete_project_document
  • delete_project_document_folder_template
  • delete_project_infrastructure_asset
  • delete_project_location
  • delete_project_milestone
  • delete_project_phase
  • delete_project_phase_category
  • delete_project_risk
  • delete_project_site
  • delete_project_system
  • delete_project_system_class
  • delete_project_system_group
  • delete_project_task
  • delete_project_task_dependency
  • delete_project_team_member
  • delete_project_time_entry
  • delete_project_update
  • delete_purchase_order
  • delete_purchase_order_line
  • delete_purchase_order_link
  • delete_service_area
  • delete_service_area_site
  • delete_service_area_system_class
  • delete_site
  • delete_system
  • delete_system_class
  • delete_system_group
  • delete_system_los_target
  • delete_vendor
  • delete_vendor_site_assignment
  • delete_work_category
  • delete_work_order
  • delete_work_order_comment
  • delete_work_order_schedule
  • delete_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_create

    Create 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_update

    Update 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_asset

    Create 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_betterment

    Record 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_comment

    Create a new comment on an asset. Requires asset_comments:write scope.

  • create_asset_condition_assessment

    Record 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_cost

    Create a new asset cost entry - the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.

  • create_asset_document

    Create an asset document record (after uploading the file via create_upload_url). Requires asset_documents:write scope.

  • create_asset_lifecycle_event

    Create 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_part

    Link a part to an asset (creates an asset-part association). Requires asset_parts:write scope.

  • create_asset_placement

    Place 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_plan

    Create a new asset replacement plan. Requires asset_replacement_plans:write scope.

  • create_asset_status

    Create a new asset status (lifecycle state for assets). Requires asset_statuses:write scope.

  • create_asset_type

    Create a new asset type. Requires asset_types:write scope.

  • create_asset_type_group

    Create a new asset type group. Groups organize asset types into logical categories. Requires asset_type_groups:write scope.

Show 466 more tools
  • create_attachment

    Create 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_budget

    Set 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_building

    Create 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_type

    Create a new building type. Requires building_types:write scope.

  • create_change_order

    Create a new change order. Requires change_orders:write scope.

  • create_compliance_item

    Create a new compliance item (regulatory requirement). Requires compliance:write scope.

  • create_compliance_pm_schedule

    Link 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_record

    Create a new compliance record (audit trail entry). Requires compliance_records:write scope.

  • create_contract

    Create a new contract. Requires contracts:write scope.

  • create_contract_document

    Create a contract document record. Requires contract_documents:write scope.

  • create_contract_site

    Assign a contract to a site. Requires contract_sites:write scope.

  • create_cost_category

    Create a new cost category. Requires cost_categories:write scope.

  • create_criticality_modifier

    Override 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_definition

    Create a new custom field definition. Requires custom_fields:write scope.

  • create_custom_field_value

    Create (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_expense

    Create a new expense. Requires expenses:write scope.

  • create_floorplan

    Create 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_region

    Create 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_response

    Attach 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_template

    Create 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_item

    Add 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_asset

    Create 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_comment

    Add 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_cost

    Record 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_document

    Attach 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_inspection

    Record an inspection against an infrastructure feature. Requires infrastructure_asset_inspections:write scope.

  • create_infrastructure_asset_part

    Associate 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_class

    Create 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_event

    Create 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_target

    Set 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_network

    Create an infrastructure network - a named grouping of features bound to one feature class. Requires infrastructure_networks:write scope.

  • create_infrastructure_zone

    Create 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_invoice

    Create a new invoice. Requires invoices:write scope.

  • create_location

    Create a new location within a building. Requires locations:write scope.

  • create_location_type

    Create a new location type. Requires location_types:write scope.

  • create_los_consequence

    Record 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_measure

    Create a new LoS measure within a service area. Requires los_measures:write scope. Resolve service_area_id first via list_service_areas.

  • create_los_measurement

    Record a new LoS measurement value. Requires los_measurements:write scope. Resolve los_measure_id first via list_los_measures.

  • create_los_proposed_target

    Record 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_manufacturer

    Create a new manufacturer. Requires manufacturers:write scope.

  • create_part

    Create a new part/inventory item. Requires parts:write scope.

  • create_part_category

    Create a new part category. Requires part_categories:write scope.

  • create_pm_schedule

    Create 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_template

    Create 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_project

    Create a new project. Requires projects:write scope.

  • create_project_asset

    Link an asset to a project. Requires project_assets:write scope.

  • create_project_budget_item

    Create a new project budget item. Requires project_budget_items:write scope.

  • create_project_building

    Link a building to a project. Requires project_buildings:write scope.

  • create_project_comment

    Create a new comment on a project. Requires project_comments:write scope.

  • create_project_cost_snapshot

    Record a cost snapshot for a project at a point in time. Requires project_cost_snapshots:write scope.

  • create_project_document

    Create a project document record. Requires project_documents:write scope.

  • create_project_document_folder_template

    Create a project document folder template. Requires project_document_folder_templates:write scope.

  • create_project_infrastructure_asset

    Link 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_location

    Link a location to a project. Requires project_locations:write scope.

  • create_project_milestone

    Create a new project milestone. Requires project_milestones:write scope.

  • create_project_phase

    Create a new project phase. Requires project_phases:write scope.

  • create_project_phase_category

    Create a new project phase category. Requires project_phase_categories:write scope.

  • create_project_risk

    Create a new project risk. Requires project_risks:write scope.

  • create_project_site

    Link a site to a project. Requires project_sites:write scope.

  • create_project_system

    Link a system to a project. Requires project_systems:write scope.

  • create_project_system_class

    Link a system class to a project. Requires project_system_classes:write scope.

  • create_project_system_group

    Link a system group to a project. Requires project_system_groups:write scope.

  • create_project_task

    Create a new project task. Requires project_tasks:write scope.

  • create_project_task_dependency

    Create a dependency between two project tasks. Requires project_task_dependencies:write scope.

  • create_project_team_member

    Add a team member to a project. Requires project_team_members:write scope.

  • create_project_time_entry

    Create a new project time entry. Requires project_time_entries:write scope.

  • create_project_update

    Create a periodic project status update. Requires project_updates:write scope.

  • create_purchase_order

    Create a new purchase order. Requires purchase_orders:write scope.

  • create_purchase_order_line

    Add 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_link

    Link 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_area

    Create 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_site

    Link 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_class

    Link 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_site

    Create a new site. Requires sites:write scope.

  • create_system

    Create a new system. Requires systems:write scope.

  • create_system_class

    Create a new system class (top-level classification, e.g., "HVAC & Mechanical", "Material Handling"). Requires systems:write scope.

  • create_system_group

    Create a new system group (category under a system class, e.g., "Heating", "Cooling"). Requires systems:write scope.

  • create_system_los_target

    Set 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_url

    Generate 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_vendor

    Create a new vendor. Requires vendors:write scope.

  • create_vendor_site_assignment

    Assign a vendor to a site. Requires vendor_site_assignments:write scope.

  • create_work_category

    Create a new work category. Requires work_categories:write scope.

  • create_work_order

    Create 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_comment

    Create a new comment on a work order. Requires work_order_comments:write scope.

  • create_work_order_schedule

    Schedule 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_request

    Create 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_asset

    Permanently 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_betterment

    Delete 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_comment

    Delete an asset comment by ID. Requires asset_comments:write scope.

  • delete_asset_condition_assessment

    Soft-delete an asset condition assessment by ID. Requires asset_condition_assessments:write scope.

  • delete_asset_cost

    Delete an asset cost entry by ID. Requires asset_costs:write scope.

  • delete_asset_document

    Delete an asset document by ID. Requires asset_documents:write scope.

  • delete_asset_lifecycle_event

    Delete 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_part

    Remove a part from an asset by association ID. Requires asset_parts:write scope.

  • delete_asset_placement

    Remove 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_plan

    Delete an asset replacement plan by ID. Requires asset_replacement_plans:write scope.

  • delete_asset_status

    Delete an asset status by ID. Requires asset_statuses:write scope. The built-in Archived status (system_key archived) cannot be deleted.

  • delete_asset_type

    Delete an asset type by ID. Requires asset_types:write scope.

  • delete_asset_type_group

    Delete an asset type group by ID. Requires asset_type_groups:write scope.

  • delete_attachment

    Delete an attachment by ID. Requires attachments:write scope.

  • delete_budget

    Delete a budget by ID. Requires budgets:write scope.

  • delete_building

    Delete a building by ID. Requires buildings:write scope.

  • delete_building_type

    Delete a building type by ID. Requires building_types:write scope.

  • delete_change_order

    Delete a change order by ID. Requires change_orders:write scope.

  • delete_compliance_item

    Delete a compliance item by ID. Requires compliance:write scope.

  • delete_compliance_pm_schedule

    Unlink a PM schedule from a compliance item. The schedule and the item both stay. Requires compliance:write scope.

  • delete_compliance_record

    Delete a compliance record by ID. Requires compliance_records:write scope.

  • delete_contract

    Delete a contract by ID. Requires contracts:write scope.

  • delete_contract_document

    Delete a contract document by ID. Requires contract_documents:write scope.

  • delete_contract_site

    Remove 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_category

    Delete a cost category by ID. Requires cost_categories:write scope.

  • delete_criticality_modifier

    Delete 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_definition

    Delete a custom field definition by ID. Requires custom_fields:write scope.

  • delete_custom_field_value

    Delete a custom field value by ID. Requires custom_fields:write scope.

  • delete_expense

    Delete an expense by ID. Requires expenses:write scope.

  • delete_floorplan

    Delete 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_region

    Delete 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_response

    Remove 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_template

    Delete a form template by ID. Requires form_templates:write scope.

  • delete_form_template_item

    Delete a form template item by ID. Requires form_template_items:write scope.

  • delete_infrastructure_asset

    Soft-delete an infrastructure asset (feature) by ID (sets deleted_at). Requires infrastructure_assets:write scope.

  • delete_infrastructure_asset_comment

    Delete an infrastructure asset comment by ID. Requires infrastructure_asset_comments:write scope.

  • delete_infrastructure_asset_cost

    Delete an infrastructure asset cost by ID. Requires infrastructure_asset_costs:write scope.

  • delete_infrastructure_asset_document

    Delete an infrastructure asset document by ID. Requires infrastructure_asset_documents:write scope.

  • delete_infrastructure_asset_inspection

    Soft-delete an infrastructure asset inspection by ID. Requires infrastructure_asset_inspections:write scope.

  • delete_infrastructure_asset_part

    Delete an infrastructure asset part association by ID. Requires infrastructure_asset_parts:write scope.

  • delete_infrastructure_feature_class

    Delete 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_event

    Delete 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_target

    Delete 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_network

    Delete 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_zone

    Delete an infrastructure zone by ID. Requires infrastructure_zones:write scope.

  • delete_invoice

    Delete an invoice by ID. Requires invoices:write scope.

  • delete_location

    Delete a location by ID. Requires locations:write scope.

  • delete_location_type

    Delete a location type by ID. Requires location_types:write scope.

  • delete_los_consequence

    Delete a LoS consequence by ID. Requires los_consequences:write scope.

  • delete_los_measure

    Delete a LoS measure by ID. WARNING: This also deletes all associated measurements and targets history. Requires los_measures:write scope.

  • delete_los_measurement

    Delete a LoS measurement by ID. Requires los_measurements:write scope.

  • delete_los_proposed_target

    Delete a LoS proposed target by ID. Requires los_proposed_targets:write scope.

  • delete_manufacturer

    Delete a manufacturer by ID. Requires manufacturers:write scope.

  • delete_part

    Delete a part/inventory item by ID. Requires parts:write scope.

  • delete_part_category

    Delete a part category by ID. Requires part_categories:write scope.

  • delete_pm_schedule

    Delete a PM schedule by ID. Requires pm_schedules:write scope.

  • delete_pm_template

    Delete a PM template by ID. Requires pm_templates:write scope.

  • delete_project

    Delete a project by ID. Requires projects:write scope.

  • delete_project_asset

    Remove an asset from a project by ID. Requires project_assets:write scope.

  • delete_project_budget_item

    Delete a project budget item by ID. Requires project_budget_items:write scope.

  • delete_project_building

    Remove a building from a project by ID. Requires project_buildings:write scope.

  • delete_project_comment

    Delete a project comment by ID. Requires project_comments:write scope.

  • delete_project_cost_snapshot

    Delete a project cost snapshot by ID. Requires project_cost_snapshots:write scope.

  • delete_project_document

    Delete a project document by ID. Requires project_documents:write scope.

  • delete_project_document_folder_template

    Delete a project document folder template by ID. Requires project_document_folder_templates:write scope.

  • delete_project_infrastructure_asset

    Delete a project ↔ infrastructure feature link by ID. Requires project_infrastructure_assets:write scope.

  • delete_project_location

    Remove a location from a project by ID. Requires project_locations:write scope.

  • delete_project_milestone

    Delete a project milestone by ID. Requires project_milestones:write scope.

  • delete_project_phase

    Delete a project phase by ID. Requires project_phases:write scope.

  • delete_project_phase_category

    Delete a project phase category by ID. Requires project_phase_categories:write scope.

  • delete_project_risk

    Delete a project risk by ID. Requires project_risks:write scope.

  • delete_project_site

    Remove a site from a project by ID. Requires project_sites:write scope.

  • delete_project_system

    Remove a system from a project by ID. Requires project_systems:write scope.

  • delete_project_system_class

    Remove a system class from a project by ID. Requires project_system_classes:write scope.

  • delete_project_system_group

    Remove a system group from a project by ID. Requires project_system_groups:write scope.

  • delete_project_task

    Delete a project task by ID. Requires project_tasks:write scope.

  • delete_project_task_dependency

    Delete a task dependency by ID. Requires project_task_dependencies:write scope.

  • delete_project_team_member

    Remove a team member from a project by ID. Requires project_team_members:write scope.

  • delete_project_time_entry

    Delete a project time entry by ID. Requires project_time_entries:write scope.

  • delete_project_update

    Delete a project update by ID. Requires project_updates:write scope.

  • delete_purchase_order

    Delete a purchase order by ID. Requires purchase_orders:write scope.

  • delete_purchase_order_line

    Delete 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_link

    Remove a purchase order link. Requires purchase_orders:write scope.

  • delete_service_area

    Delete a service area by ID. WARNING: This also deletes all linked measures, measurements, and junction records. Requires service_areas:write scope.

  • delete_service_area_site

    Remove a site link from a service area. Requires service_areas:write scope.

  • delete_service_area_system_class

    Remove a system class link from a service area. Requires service_areas:write scope.

  • delete_site

    Delete a site by ID. Requires sites:write scope.

  • delete_system

    Delete a system by ID. Requires systems:write scope.

  • delete_system_class

    Delete a system class by ID. Requires systems:write scope.

  • delete_system_group

    Delete a system group by ID. Requires systems:write scope.

  • delete_system_los_target

    Delete 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_vendor

    Delete a vendor by ID. Requires vendors:write scope.

  • delete_vendor_site_assignment

    Remove a vendor-site assignment by ID. Requires vendor_site_assignments:write scope.

  • delete_work_category

    Delete a work category by ID. Requires work_categories:write scope.

  • delete_work_order

    Delete a work order by ID. Requires work_orders:write scope.

  • delete_work_order_comment

    Delete a work order comment by ID. Requires work_order_comments:write scope.

  • delete_work_order_schedule

    Delete a work order schedule entry by ID (removes the stop from the technician's day). Requires work_order_schedules:write scope.

  • delete_work_request

    Delete a work request by ID. Requires work_requests:write scope.

  • get_asset

    Get 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_betterment

    Get 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_comment

    Get a single asset comment by ID.

  • get_asset_condition_assessment

    Get 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_cost

    Get 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_document

    Get a single asset document by ID.

  • get_asset_lifecycle_event

    Get 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_part

    Get a single asset-part association by ID, including asset and part details.

  • get_asset_placement

    Get a single asset placement by ID.

  • get_asset_replacement_plan

    Get 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_entry

    Get a single asset risk history entry by ID.

  • get_asset_status

    Get a single asset status by ID.

  • get_attachment

    Get a single attachment by ID.

  • get_budget

    Get 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_order

    Get 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_item

    Get detailed compliance item including linked PM schedules and their required frequencies.

  • get_compliance_pm_schedule

    Get one compliance item to PM schedule link by its ID.

  • get_compliance_record

    Get a single compliance record by ID.

  • get_contract_document

    Get a single contract document by ID.

  • get_criticality_modifier

    Get 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_definition

    Get a single custom field definition by ID.

  • get_custom_field_value

    Get a single custom field value by ID.

  • get_dashboard_snapshot

    Get 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_summary

    Get aggregated dashboard statistics: total assets, work orders by status, overdue count, active PM schedules, sites, and buildings.

  • get_expense

    Get 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_floorplan

    Get a single floorplan by ID. Returns floor metadata, PDF path, page number, and detection status.

  • get_floorplan_region

    Get a single floorplan region by ID.

  • get_form_response

    Get detailed information about a specific form response by its ID.

  • get_form_response_answer

    Get detailed information about a specific form response answer by its ID.

  • get_form_template

    Get detailed information about a specific form template by its ID.

  • get_form_template_item

    Get detailed information about a specific form template item by its ID.

  • get_infrastructure_asset

    Get 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_comment

    Get a single infrastructure asset comment by ID.

  • get_infrastructure_asset_cost

    Get 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_document

    Get a single infrastructure asset document by ID.

  • get_infrastructure_asset_inspection

    Get a single infrastructure asset inspection by ID.

  • get_infrastructure_asset_part

    Get a single infrastructure asset part association by ID.

  • get_infrastructure_asset_risk_history_entry

    Get a single infrastructure asset risk history entry by ID. Read-only.

  • get_infrastructure_feature_class

    Get a single infrastructure feature class by its `code` (e.g. "water_main"). Note: addressed by code, not UUID.

  • get_infrastructure_lifecycle_event

    Get 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_target

    Get 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_network

    Get 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_zone

    Get a single infrastructure zone by ID. Boundary is returned as a GeoJSON Polygon.

  • get_invoice

    Get 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_consequence

    Get 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_measure

    Get a single LoS measure by ID, including all configuration (targets, data source, weights).

  • get_los_measurement

    Get a single LoS measurement by ID, including value, period, and source metadata.

  • get_los_proposed_target

    Get 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_snapshot

    Get 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_entry

    Get 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_manufacturer

    Get detailed manufacturer information including contact details and associated system classes.

  • get_organization_settings

    Get 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_part

    Get 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_category

    Get a single part category by ID.

  • get_pm_schedule

    Get 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_project

    Get 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_asset

    Get a single project asset assignment by ID.

  • get_project_budget_item

    Get 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_building

    Get a single project building assignment by ID.

  • get_project_comment

    Get a single project comment by ID.

  • get_project_cost_snapshot

    Get 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_document

    Get a single project document by ID.

  • get_project_document_folder_template

    Get a project document folder template by ID, including its folder structure.

  • get_project_infrastructure_asset

    Get a single project ↔ infrastructure feature link by ID.

  • get_project_location

    Get a single project location assignment by ID.

  • get_project_milestone

    Get a single project milestone by ID.

  • get_project_phase

    Get a single project phase by ID.

  • get_project_risk

    Get a single project risk by ID, including mitigation and contingency plans.

  • get_project_site

    Get a single project site assignment by ID.

  • get_project_system

    Get a single project system assignment by ID.

  • get_project_system_class

    Get a single project system class assignment by ID.

  • get_project_system_group

    Get a single project system group assignment by ID.

  • get_project_task

    Get 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_dependency

    Get a single project task dependency by ID.

  • get_project_team_member

    Get a single project team member by ID.

  • get_project_time_entry

    Get a single project time entry by ID.

  • get_project_update

    Get a single project update by ID.

  • get_purchase_order

    Get 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_line

    Get 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_link

    Get one purchase order link by ID.

  • get_service_area

    Get a single service area by ID, including linked system classes and sites.

  • get_site

    Get 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_entry

    Get a single site FCI history entry by ID.

  • get_system_los_target

    Get 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_user

    Get a specific organization member by their user ID. Returns name, email, and role. Requires users:read scope.

  • get_vendor

    Get detailed vendor information including contact details, address, and website.

  • get_vendor_site_assignment

    Get a single vendor site assignment by ID, including vendor and site names.

  • get_work_order

    Get 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_comment

    Get a single work order comment by ID.

  • get_work_order_schedule

    Get a single work order schedule entry by ID.

  • get_work_request

    Get detailed work request information including description, attachments, and processing status.

  • list_asset_betterments

    List 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_comments

    List comments on assets. Filter by asset_id to get comments for a specific asset.

  • list_asset_condition_assessments

    List 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_costs

    List 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_documents

    List asset documents (O&M manuals, warranties, specs, etc.). Filter by asset_id or category.

  • list_asset_lifecycle_events

    List 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_parts

    List 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_placements

    List 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_plans

    List 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_history

    List 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_statuses

    List 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_groups

    List asset type group classifications. Groups organize asset types into logical categories.

  • list_asset_types

    List asset type classifications. Filter by group.

  • list_assets

    List 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_attachments

    List file attachments linked to work orders, work requests, PM schedules, or PM templates.

  • list_budgets

    List 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_types

    List building type classifications.

  • list_buildings

    List buildings. Optionally filter by site to see all buildings at a specific location.

  • list_change_orders

    List 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_items

    List compliance items (regulatory requirements tracked against PM schedules). Filter by status or system.

  • list_compliance_pm_schedules

    List 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_records

    List compliance records - audit trail of completed compliance checks linked to work orders and PM schedules.

  • list_contract_documents

    List documents attached to contracts. Filter by contract_id.

  • list_contract_sites

    List contract-to-site mappings showing which contracts cover which sites. No single-record lookup (composite key).

  • list_contracts

    List 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_categories

    List cost categories used to classify expenses, invoices, and purchase orders. Supports hierarchical parent-child structure.

  • list_criticality_modifiers

    List 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_definitions

    List custom field definitions configured for this tenant. Filter by entity type (e.g. asset, work_order) or field type.

  • list_custom_field_values

    List custom field values. Filter by entity_id to get all custom fields for a specific record, or by field_definition_id.

  • list_dashboard_snapshots

    List 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_expenses

    List 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_regions

    List 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_floorplans

    List 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_answers

    List the per-question answer values within form responses. Read-only.

  • list_form_responses

    List form responses - completed or in-progress fill-outs of a form, attached to a work order or PM. Read-only.

  • list_form_template_items

    List the items (questions) within form templates. Returned in sort order. Filter by template_id.

  • list_form_templates

    List form templates - reusable inspection, checklist, compliance, and survey definitions. Each has a `module`: facilities, infrastructure, or null (shared by both).

  • list_infrastructure_asset_comments

    List comments on infrastructure features. Filter by feature.

  • list_infrastructure_asset_costs

    List 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_documents

    List documents attached to infrastructure features. Filter by feature, category, or name search.

  • list_infrastructure_asset_inspections

    List inspections recorded against infrastructure assets. Filter by feature, inspector, method, condition score range, or inspection date range.

  • list_infrastructure_asset_parts

    List parts associated with infrastructure features. Filter by feature or part.

  • list_infrastructure_asset_risk_history

    List 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_assets

    List 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_classes

    List 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_events

    List 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_targets

    List 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_networks

    List 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_zones

    List operational hydraulic boundaries (pressure zones, DMAs, sewersheds, etc.). Boundary is returned as a GeoJSON Polygon in EPSG:4326. Filter by network or kind.

  • list_invoices

    List 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_types

    List location type classifications (e.g., room types, floor types).

  • list_locations

    List locations (rooms, floors, areas within buildings). Optionally filter by building or location type.

  • list_los_consequences

    List 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_measurements

    List LoS measurement values (time-series). Filter by measure, period type, date range, or auto/manual.

  • list_los_measures

    List LoS measures. Filter by service area, category, type, data source, or active status.

  • list_los_proposed_targets

    List 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_snapshots

    List 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_history

    List 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_manufacturers

    List manufacturers of equipment and assets.

  • list_part_categories

    List 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_parts

    List 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_schedules

    List 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_templates

    List 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_assets

    List asset assignments for projects. Filter by project_id or asset_id.

  • list_project_budget_items

    List 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_buildings

    List building assignments for projects. Filter by project_id or building_id.

  • list_project_comments

    List comments on projects. Supports threaded replies via parent_id.

  • list_project_cost_snapshots

    List 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_templates

    List project document folder templates for reusable folder structures.

  • list_project_documents

    List documents attached to projects. Filter by project_id or folder_id.

  • list_project_infrastructure_assets

    List links between projects and infrastructure features. Filter by project or feature.

  • list_project_locations

    List location assignments for projects. Filter by project_id or location_id.

  • list_project_milestones

    List project milestones. Filter by project or status (pending, completed, missed, at_risk).

  • list_project_phase_categories

    List project phase categories (e.g., Planning, Design, Execution). Sorted by sort_order.

  • list_project_phases

    List project phases. Filter by project or status (pending, in_progress, completed, skipped).

  • list_project_risks

    List project risks (risk register). Filter by project, status, category, probability, or impact.

  • list_project_sites

    List site assignments for projects. Filter by project_id or site_id.

  • list_project_system_classes

    List system class assignments for projects. Filter by project_id or system_class_id.

  • list_project_system_groups

    List system group assignments for projects. Filter by project_id or system_group_id.

  • list_project_systems

    List system assignments for projects. Filter by project_id or system_id.

  • list_project_task_dependencies

    List task dependencies. Filter by task_id or depends_on_task_id to see dependency chains.

  • list_project_tasks

    List 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_members

    List project team members. Filter by project, user, or active status.

  • list_project_time_entries

    List project time entries for labor tracking. Filter by project, task, or user.

  • list_project_updates

    List periodic project updates (status reports). Filter by project, timeframe, or year.

  • list_projects

    List 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_lines

    List 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_links

    List 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_orders

    List 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_sites

    List site links for service areas. Filter by service_area_id or site_id.

  • list_service_area_system_classes

    List system class links for service areas. Filter by service_area_id or system_class_id.

  • list_service_areas

    List service areas (Level of Service groupings). Filter by active status or search by name.

  • list_site_fci_history

    List 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_sites

    List 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_classes

    List system classes (top-level classification, e.g., "HVAC", "Plumbing", "Electrical").

  • list_system_groups

    List system groups (categories of systems, e.g., "Heating", "Cooling"). Optionally filter by system class.

  • list_system_los_targets

    List 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_systems

    List systems (e.g., HVAC units, plumbing systems, electrical systems). Optionally filter by system group.

  • list_users

    List 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_assignments

    List vendor-to-site assignments showing which vendors serve which sites.

  • list_vendors

    List vendors. Filter by status, category, or city.

  • list_work_categories

    List 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_comments

    List comments on work orders. Filter by work_order_id to get comments for a specific work order.

  • list_work_order_schedules

    List 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_orders

    List 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_requests

    List work requests (submitted by requesters). Filter by status (PENDING_REVIEW, APPROVED, REJECTED) or priority.

  • show_site_fci_trend

    Show 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_asset

    Update 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_betterment

    Update 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_comment

    Update an existing asset comment by ID. Requires asset_comments:write scope.

  • update_asset_condition_assessment

    Update 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_cost

    Update an existing asset cost entry by ID - the record type shown on the AssetLab "Expenses" page. Requires asset_costs:write scope.

  • update_asset_document

    Update an asset document by ID. Requires asset_documents:write scope.

  • update_asset_lifecycle_event

    Update 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_part

    Update the quantity of an asset-part association by ID. Requires asset_parts:write scope.

  • update_asset_placement

    Move an asset placement to new coordinates or a different floorplan. Requires asset_placements:write scope.

  • update_asset_replacement_plan

    Update an existing asset replacement plan by ID. Requires asset_replacement_plans:write scope.

  • update_asset_status

    Update 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_type

    Update an existing asset type by ID. Requires asset_types:write scope.

  • update_asset_type_group

    Update an existing asset type group by ID. Requires asset_type_groups:write scope.

  • update_attachment

    Update an attachment by ID. Requires attachments:write scope.

  • update_budget

    Update an existing budget by ID. Requires budgets:write scope.

  • update_building

    Update 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_type

    Update an existing building type by ID. Requires building_types:write scope.

  • update_change_order

    Update an existing change order by ID. Requires change_orders:write scope.

  • update_compliance_item

    Update an existing compliance item by ID. Requires compliance:write scope.

  • update_compliance_pm_schedule

    Change 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_record

    Update an existing compliance record by ID. Requires compliance_records:write scope.

  • update_contract

    Update an existing contract by ID. Requires contracts:write scope.

  • update_contract_document

    Update a contract document by ID. Requires contract_documents:write scope.

  • update_cost_category

    Update an existing cost category by ID. Requires cost_categories:write scope.

  • update_criticality_modifier

    Update 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_definition

    Update an existing custom field definition by ID. Requires custom_fields:write scope.

  • update_custom_field_value

    Update 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_expense

    Update an existing expense by ID. Requires expenses:write scope.

  • update_floorplan

    Update floorplan metadata (rename floor, reorder, set status). Requires floorplans:write scope.

  • update_floorplan_region

    Update a floorplan region - rename, reshape polygon, link to a Location, or mark as reviewed. Requires floorplan_regions:write scope.

  • update_form_template

    Update an existing form template by ID. Requires form_templates:write scope.

  • update_form_template_item

    Update 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_asset

    Update 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_comment

    Update an infrastructure asset comment by ID. Requires infrastructure_asset_comments:write scope.

  • update_infrastructure_asset_cost

    Update an infrastructure asset cost by ID. Requires infrastructure_asset_costs:write scope.

  • update_infrastructure_asset_document

    Update infrastructure asset document metadata by ID. Requires infrastructure_asset_documents:write scope.

  • update_infrastructure_asset_inspection

    Update an existing infrastructure asset inspection by ID. Requires infrastructure_asset_inspections:write scope.

  • update_infrastructure_asset_part

    Update an infrastructure asset part association by ID. Requires infrastructure_asset_parts:write scope.

  • update_infrastructure_feature_class

    Update 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_event

    Update 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_target

    Update an infrastructure LoS target by ID. base_target stays on 0-100. Requires los_targets:write scope.

  • update_infrastructure_network

    Update an existing infrastructure network by ID. Requires infrastructure_networks:write scope.

  • update_infrastructure_zone

    Update an infrastructure zone by ID. Pass boundary as a GeoJSON Polygon or MultiPolygon to replace the geometry. Requires infrastructure_zones:write scope.

  • update_invoice

    Update an existing invoice by ID. Requires invoices:write scope.

  • update_location

    Update an existing location by ID. Requires locations:write scope.

  • update_location_type

    Update an existing location type by ID. Requires location_types:write scope.

  • update_los_consequence

    Update 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_measure

    Update an existing LoS measure by ID. Requires los_measures:write scope.

  • update_los_measurement

    Update an existing LoS measurement by ID. Requires los_measurements:write scope.

  • update_los_proposed_target

    Update an existing LoS proposed target by ID. Requires los_proposed_targets:write scope.

  • update_manufacturer

    Update an existing manufacturer by ID. Requires manufacturers:write scope.

  • update_part

    Update an existing part/inventory item by ID. Requires parts:write scope.

  • update_part_category

    Update an existing part category by ID. Requires part_categories:write scope.

  • update_pm_schedule

    Update 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_template

    Update an existing PM template by ID. Requires pm_templates:write scope.

  • update_project

    Update an existing project by ID. Requires projects:write scope.

  • update_project_budget_item

    Update an existing project budget item by ID. Requires project_budget_items:write scope.

  • update_project_comment

    Update an existing project comment by ID. Requires project_comments:write scope.

  • update_project_document

    Update a project document by ID. Requires project_documents:write scope.

  • update_project_document_folder_template

    Update a project document folder template by ID. Requires project_document_folder_templates:write scope.

  • update_project_infrastructure_asset

    Update a project ↔ infrastructure feature link by ID. Requires project_infrastructure_assets:write scope.

  • update_project_milestone

    Update an existing project milestone by ID. Requires project_milestones:write scope.

  • update_project_phase

    Update an existing project phase by ID. Requires project_phases:write scope.

  • update_project_phase_category

    Update an existing project phase category by ID. Requires project_phase_categories:write scope.

  • update_project_risk

    Update an existing project risk by ID. Requires project_risks:write scope.

  • update_project_task

    Update an existing project task by ID. Requires project_tasks:write scope.

  • update_project_team_member

    Update a project team member by ID. Requires project_team_members:write scope.

  • update_project_time_entry

    Update an existing project time entry by ID. Requires project_time_entries:write scope.

  • update_project_update

    Update an existing project update by ID. Requires project_updates:write scope.

  • update_purchase_order

    Update an existing purchase order by ID. Requires purchase_orders:write scope.

  • update_purchase_order_line

    Update 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_area

    Update an existing service area by ID. Requires service_areas:write scope.

  • update_site

    Update an existing site by ID. Requires sites:write scope.

  • update_system

    Update an existing system by ID. Requires systems:write scope.

  • update_system_class

    Update an existing system class by ID. Requires systems:write scope.

  • update_system_group

    Update an existing system group by ID. Requires systems:write scope.

  • update_system_los_target

    Update 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_vendor

    Update an existing vendor by ID. Requires vendors:write scope.

  • update_work_category

    Update an existing work category by ID. Requires work_categories:write scope.

  • update_work_order

    Update 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_comment

    Update an existing work order comment by ID. Requires work_order_comments:write scope.

  • update_work_order_schedule

    Update 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_request

    Update 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_file

    Upload 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
License
License unknown
First seen
Oct 24, 2026
Last checked
Oct 25, 2026
Cite this page

AssetLab MCP server. Agent Mart. https://agentmart.dev/connectors/assetlab-ca-mcp-server (last updated 2026-10-25)