{"apiVersion":"v1","directorySlug":"nistantritech-mcp-7d23e83ad1","title":"NistantriTech | Let","description":"NistantriTech - IoT solutions and AI services: connected products, ThingsBoard platforms, edge to cloud, and practical AI on your data and workflows. Let","pageUrl":"https://www.mcpbundles.com/skills/nistantritech-mcp-7d23e83ad1","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.nistantritech.com/","hostedMcpUrl":null,"toolCount":124,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.nistantritech/nistantritech-mcp-7d23e83ad1","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"getDevicesByIds","description":"Use this to get multiple devices by their ids (comma-separated).","inputSchema":{"type":"object","required":["devicesIds"],"properties":{"devicesIds":{"type":"string"}},"additionalProperties":false},"logicalName":"getDevicesByIds","displayName":"getDevicesByIds","title":"getDevicesByIds","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAttributeKeys","description":"Use this to get all attribute key names for an entity (merged across SERVER_SCOPE, CLIENT_SCOPE, SHARED_SCOPE).","inputSchema":{"type":"object","required":["entityType","entityIdStr"],"properties":{"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"getAttributeKeys","displayName":"getAttributeKeys","title":"getAttributeKeys","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countBySingleEntityFilter","description":"Use this to count entities matching a single entity filter with optional keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["singleEntityFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"singleEntityFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countBySingleEntityFilter","displayName":"countBySingleEntityFilter","title":"countBySingleEntityFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByDeviceTypeFilter","description":"Use this to count devices by profile/type and optional name prefix with keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["deviceTypeFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"deviceTypeFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByDeviceTypeFilter","displayName":"countByDeviceTypeFilter","title":"countByDeviceTypeFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAllAlarms","description":"Use this to get all alarms visible to the current user (tenant-scoped or customer-scoped). Filter by searchStatus or status (not both). Returns PageData of AlarmInfo.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"endTs":{"type":"string"},"status":{"type":"string"},"startTs":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"assigneeId":{"type":"string"},"textSearch":{"type":"string"},"searchStatus":{"type":"string"},"sortProperty":{"type":"string"},"fetchOriginator":{"type":"boolean"}},"additionalProperties":false},"logicalName":"getAllAlarms","displayName":"getAllAlarms","title":"getAllAlarms","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveEntityGroup","description":"Use this to create or update an entity group. Omit 'id' to create; include 'id' to update. Group names are unique per owner + entity type. Supported types: CUSTOMER, ASSET, DEVICE, USER, ENTITY_VIEW, DASHBOARD, EDGE. PE only.","inputSchema":{"type":"object","required":["entityGroupJson"],"properties":{"entityGroupJson":{"type":"string"}},"additionalProperties":false},"logicalName":"saveEntityGroup","displayName":"saveEntityGroup","title":"saveEntityGroup","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteAlarm","description":"Use this to permanently delete an alarm by its id.","inputSchema":{"type":"object","required":["alarmIdStr"],"properties":{"alarmIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteAlarm","displayName":"deleteAlarm","title":"deleteAlarm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAttributesByScope","description":"Use this to get attributes for an entity filtered by scope. Scopes: SERVER_SCOPE, SHARED_SCOPE, CLIENT_SCOPE (devices only). Use optional 'keys' to filter.","inputSchema":{"type":"object","required":["entityType","entityIdStr","scope"],"properties":{"keys":{"type":"string"},"scope":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"getAttributesByScope","displayName":"getAttributesByScope","title":"getAttributesByScope","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getKeyFiltersGuide","description":"Call this to get the full documentation and JSON schema for creating 'keyFilters'. Use it if you are unsure about filter keys, value types, or predicates.","inputSchema":{"type":"object","required":[],"properties":{"unused":{"type":"string"}},"additionalProperties":false},"logicalName":"getKeyFiltersGuide","displayName":"getKeyFiltersGuide","title":"getKeyFiltersGuide","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUsers","description":"Use this to get a paginated list of users. Scope depends on caller's authority.","inputSchema":{"type":"object","required":[],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getUsers","displayName":"getUsers","title":"getUsers","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTenantAdmins","description":"Use this to get a paginated list of tenant administrator users for a specified tenant.","inputSchema":{"type":"object","required":["tenantId","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"tenantId":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getTenantAdmins","displayName":"getTenantAdmins","title":"getTenantAdmins","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getCustomerUsers","description":"Use this to get a paginated list of users assigned to a specific customer.","inputSchema":{"type":"object","required":["customerId","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"customerId":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getCustomerUsers","displayName":"getCustomerUsers","title":"getCustomerUsers","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTenantDevice","description":"Use this to get a device by its unique name within the tenant.","inputSchema":{"type":"object","required":["deviceName"],"properties":{"deviceName":{"type":"string"}},"additionalProperties":false},"logicalName":"getTenantDevice","displayName":"getTenantDevice","title":"getTenantDevice","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAssetsByEntityGroupId","description":"Use this to get a paginated list of assets in a specific entity group. PE only.","inputSchema":{"type":"object","required":["entityGroupId","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"},"entityGroupId":{"type":"string"}},"additionalProperties":false},"logicalName":"getAssetsByEntityGroupId","displayName":"getAssetsByEntityGroupId","title":"getAssetsByEntityGroupId","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getDevicesByEntityGroupId","description":"Use this to get a paginated list of devices in a specific entity group. PE only.","inputSchema":{"type":"object","required":["entityGroupId","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"},"entityGroupId":{"type":"string"}},"additionalProperties":false},"logicalName":"getDevicesByEntityGroupId","displayName":"getDevicesByEntityGroupId","title":"getDevicesByEntityGroupId","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveAsset","description":"Use this to create or update an asset. Omit 'id' to create; include 'id' to update. Asset names are unique per tenant. Profile selection: 'assetProfileId' takes precedence over 'type'. If neither set, default profile is used. PE: use 'entityGroupId'/'entityGroupIds' to attach to groups.","inputSchema":{"type":"object","required":["assetJson"],"properties":{"assetJson":{"type":"string"},"entityGroupId":{"type":"string"},"entityGroupIds":{"type":"string"}},"additionalProperties":false},"logicalName":"saveAsset","displayName":"saveAsset","title":"saveAsset","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAttributes","description":"Use this to get all attributes for an entity. Use optional 'keys' to return specific attributes.","inputSchema":{"type":"object","required":["entityType","entityIdStr"],"properties":{"keys":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"getAttributes","displayName":"getAttributes","title":"getAttributes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getOtaPackages","description":"Use this to get a paginated list of OTA packages.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getOtaPackages","displayName":"getOtaPackages","title":"getOtaPackages","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAttributeKeysByScope","description":"Use this to get attribute key names for an entity filtered by scope (SERVER_SCOPE, CLIENT_SCOPE, SHARED_SCOPE).","inputSchema":{"type":"object","required":["entityType","entityIdStr","scope"],"properties":{"scope":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"getAttributeKeysByScope","displayName":"getAttributeKeysByScope","title":"getAttributeKeysByScope","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityTypeFilter","description":"Use this to count all entities of a type (DEVICE, ASSET, CUSTOMER, etc.) with optional keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityTypeFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityTypeFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityTypeFilter","displayName":"countByEntityTypeFilter","title":"countByEntityTypeFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"assignOtaPackageToDevice","description":"Use this to assign or clear an OTA package (FIRMWARE/SOFTWARE) on a specific device.","inputSchema":{"type":"object","required":["deviceId","otaPackageType"],"properties":{"clear":{"type":"boolean"},"deviceId":{"type":"string"},"otaPackageId":{"type":"string"},"otaPackageType":{"type":"string"}},"additionalProperties":false},"logicalName":"assignOtaPackageToDevice","displayName":"assignOtaPackageToDevice","title":"assignOtaPackageToDevice","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getCustomerDevices","description":"Use this to get a paginated list of devices assigned to a specific customer. Filter by type.","inputSchema":{"type":"object","required":["customerId","pageSize","page"],"properties":{"page":{"type":"string"},"type":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"customerId":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getCustomerDevices","displayName":"getCustomerDevices","title":"getCustomerDevices","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveCustomer","description":"Use this to create or update a customer. Omit 'id' to create; include 'id' to update. Customer titles are unique per tenant. PE: use 'entityGroupId'/'entityGroupIds' for groups.","inputSchema":{"type":"object","required":["customerJson"],"properties":{"customerJson":{"type":"string"},"entityGroupId":{"type":"string"},"entityGroupIds":{"type":"string"}},"additionalProperties":false},"logicalName":"saveCustomer","displayName":"saveCustomer","title":"saveCustomer","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityListFilter","description":"Use this to count entities by their ids with optional keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityListFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityListFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityListFilter","displayName":"countByEntityListFilter","title":"countByEntityListFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUsersByEntityGroupId","description":"Use this to get a paginated list of users in a specific entity group. PE only.","inputSchema":{"type":"object","required":["entityGroupId","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"},"entityGroupId":{"type":"string"}},"additionalProperties":false},"logicalName":"getUsersByEntityGroupId","displayName":"getUsersByEntityGroupId","title":"getUsersByEntityGroupId","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteOtaPackage","description":"Use this to delete an OTA package by id.","inputSchema":{"type":"object","required":["otaPackageId"],"properties":{"otaPackageId":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteOtaPackage","displayName":"deleteOtaPackage","title":"deleteOtaPackage","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteUser","description":"Use this to permanently delete a user by id.","inputSchema":{"type":"object","required":["userIdStr"],"properties":{"userIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteUser","displayName":"deleteUser","title":"deleteUser","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAlarmTypes","description":"Use this to list unique alarm type names visible to the current user.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"}},"additionalProperties":false},"logicalName":"getAlarmTypes","displayName":"getAlarmTypes","title":"getAlarmTypes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityViewSearchQueryFilter","description":"Use this to count entity views related to a root entity by relation type and view types.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityViewSearchQueryFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityViewSearchQueryFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityViewSearchQueryFilter","displayName":"countByEntityViewSearchQueryFilter","title":"countByEntityViewSearchQueryFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"createOrUpsertDevice","description":"Use this to create or update a device by name. Primary tool for 90% of device tasks. Handles name-to-ID lookups for customers and groups automatically. Best for: creating devices, assigning to customers by title, adding to groups by name, updating label/type. For nested 'deviceData', firmware, or transport settings, use 'saveDevice' instead.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"type":{"type":"string"},"label":{"type":"string"},"groupId":{"type":"string"},"groupName":{"type":"string"},"customerId":{"type":"string"},"customerTitle":{"type":"string"},"deviceProfileId":{"type":"string"}},"additionalProperties":false},"logicalName":"createOrUpsertDevice","displayName":"createOrUpsertDevice","title":"createOrUpsertDevice","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getOtaPackageInfoById","description":"Use this to get OTA package info by id.","inputSchema":{"type":"object","required":["otaPackageId"],"properties":{"otaPackageId":{"type":"string"}},"additionalProperties":false},"logicalName":"getOtaPackageInfoById","displayName":"getOtaPackageInfoById","title":"getOtaPackageInfoById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUserById","description":"Use this to get a user by id.","inputSchema":{"type":"object","required":["userId"],"properties":{"userId":{"type":"string"}},"additionalProperties":false},"logicalName":"getUserById","displayName":"getUserById","title":"getUserById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findEntityDataByApiUsageStateFilter","description":"Use this to find API usage data. If customer id provided, returns customer's usage; otherwise tenant's. Call getEdqGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["apiUsageStateFilterJson","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortOrderKey":{"type":"string"},"sortOrderType":{"type":"string"},"keyFiltersJson":{"type":"string"},"entityFieldsJson":{"type":"string"},"latestValuesJson":{"type":"string"},"apiUsageStateFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"findEntityDataByApiUsageStateFilter","displayName":"findEntityDataByApiUsageStateFilter","title":"findEntityDataByApiUsageStateFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUserAssets","description":"Use this to get a paginated list of assets available to the current user. PE only.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"type":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getUserAssets","displayName":"getUserAssets","title":"getUserAssets","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findByFromWithRelationType","description":"Use this to list outgoing relations of a specific type for an entity.","inputSchema":{"type":"object","required":["strFromId","strFromType","relationType"],"properties":{"strFromId":{"type":"string"},"strFromType":{"type":"string"},"relationType":{"type":"string"},"strRelationTypeGroup":{"type":"string"}},"additionalProperties":false},"logicalName":"findByFromWithRelationType","displayName":"findByFromWithRelationType","title":"findByFromWithRelationType","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveDeviceAttributes","description":"Use this to create or update device attributes. Provide device id, scope (SERVER_SCOPE or SHARED_SCOPE), and JSON key-value payload.","inputSchema":{"type":"object","required":["deviceId","scope","jsonBody"],"properties":{"scope":{"type":"string"},"deviceId":{"type":"string"},"jsonBody":{"type":"string"}},"additionalProperties":false},"logicalName":"saveDeviceAttributes","displayName":"saveDeviceAttributes","title":"saveDeviceAttributes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteRelation","description":"Use this to delete a specific relation identified by (from, to, typeGroup, type). Defaults typeGroup to COMMON.","inputSchema":{"type":"object","required":["fromIdStr","fromTypeStr","relationType","toIdStr","toTypeStr"],"properties":{"toIdStr":{"type":"string"},"fromIdStr":{"type":"string"},"toTypeStr":{"type":"string"},"fromTypeStr":{"type":"string"},"relationType":{"type":"string"},"relationTypeGroupStr":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteRelation","displayName":"deleteRelation","title":"deleteRelation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveOtaPackageInfo","description":"Use this to create or update OTA package info. Omit 'id' to create; include 'id' to update.","inputSchema":{"type":"object","required":["otaPackageInfoJson"],"properties":{"isUrl":{"type":"boolean"},"otaPackageInfoJson":{"type":"string"}},"additionalProperties":false},"logicalName":"saveOtaPackageInfo","displayName":"saveOtaPackageInfo","title":"saveOtaPackageInfo","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveOtaPackageData","description":"Use this to upload OTA package binary data from a file path on the MCP host.","inputSchema":{"type":"object","required":["otaPackageId","filePath"],"properties":{"checksum":{"type":"string"},"filePath":{"type":"string"},"otaPackageId":{"type":"string"},"checksumAlgorithm":{"type":"string"}},"additionalProperties":false},"logicalName":"saveOtaPackageData","displayName":"saveOtaPackageData","title":"saveOtaPackageData","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByApiUsageStateFilter","description":"Use this to get API usage count. Customer-scoped if customer id set, otherwise tenant-scoped.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["apiUsageStateFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"apiUsageStateFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByApiUsageStateFilter","displayName":"countByApiUsageStateFilter","title":"countByApiUsageStateFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityViewTypeFilter","description":"Use this to count entity views by type and optional name prefix with keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityViewTypeFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityViewTypeFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityViewTypeFilter","displayName":"countByEntityViewTypeFilter","title":"countByEntityViewTypeFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteEntityGroup","description":"Use this to delete an entity group by id. Entities remain in the 'All' group. Cannot delete the 'All' group. PE only.","inputSchema":{"type":"object","required":["entityGroupIdStr"],"properties":{"entityGroupIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteEntityGroup","displayName":"deleteEntityGroup","title":"deleteEntityGroup","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEdgeTypeFilter","description":"Use this to count edges by type and optional name prefix with keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["edgeTypeFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"edgeTypeFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEdgeTypeFilter","displayName":"countByEdgeTypeFilter","title":"countByEdgeTypeFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"removeEntitiesFromEntityGroup","description":"Use this to remove entities from an entity group. Cannot remove from the 'All' group. PE only.","inputSchema":{"type":"object","required":["entityGroupIdStr","entityIdsStr","entityGroupType"],"properties":{"entityIdsStr":{"type":"string"},"entityGroupType":{"type":"string"},"entityGroupIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"removeEntitiesFromEntityGroup","displayName":"removeEntitiesFromEntityGroup","title":"removeEntitiesFromEntityGroup","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getOtaPackagesByDeviceProfile","description":"Use this to get a paginated list of OTA packages filtered by device profile and type (FIRMWARE/SOFTWARE).","inputSchema":{"type":"object","required":["deviceProfileId","otaPackageType","pageSize","page"],"properties":{"page":{"type":"string"},"hasData":{"type":"boolean"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"},"otaPackageType":{"type":"string"},"deviceProfileId":{"type":"string"}},"additionalProperties":false},"logicalName":"getOtaPackagesByDeviceProfile","displayName":"getOtaPackagesByDeviceProfile","title":"getOtaPackagesByDeviceProfile","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEntityGroupsByOwnerAndType","description":"Use this to list entity groups by owner and type. PE only.","inputSchema":{"type":"object","required":["strOwnerType","strOwnerId","entityType"],"properties":{"entityType":{"type":"string"},"strOwnerId":{"type":"string"},"strOwnerType":{"type":"string"}},"additionalProperties":false},"logicalName":"getEntityGroupsByOwnerAndType","displayName":"getEntityGroupsByOwnerAndType","title":"getEntityGroupsByOwnerAndType","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveDevice","description":"Use this to save/update a device from raw JSON. Advanced tool: use 'createOrUpsertDevice' first for standard tasks. Best for modifying 'deviceData', firmware/software IDs, or bulk updates with full JSON. Omit 'id' to create; include 'id' to update. Profile: 'deviceProfileId' takes precedence over 'type'. PE: use 'entityGroupId'/'entityGroupIds' for groups.","inputSchema":{"type":"object","required":["deviceJson"],"properties":{"deviceJson":{"type":"string"},"accessToken":{"type":"string"},"entityGroupId":{"type":"string"},"entityGroupIds":{"type":"string"}},"additionalProperties":false},"logicalName":"saveDevice","displayName":"saveDevice","title":"saveDevice","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUserCustomers","description":"Use this to get a paginated list of customers available to the current user. PE only.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getUserCustomers","displayName":"getUserCustomers","title":"getUserCustomers","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteCustomer","description":"Use this to permanently delete a customer and all its users. Assigned dashboards, assets, devices will be unassigned but not deleted.","inputSchema":{"type":"object","required":["customerIdStr"],"properties":{"customerIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteCustomer","displayName":"deleteCustomer","title":"deleteCustomer","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEntityGroupsForEntity","description":"Use this to list all groups containing a specific entity. Always includes the 'All' group. PE only.","inputSchema":{"type":"object","required":["entityType","strEntityId"],"properties":{"entityType":{"type":"string"},"strEntityId":{"type":"string"}},"additionalProperties":false},"logicalName":"getEntityGroupsForEntity","displayName":"getEntityGroupsForEntity","title":"getEntityGroupsForEntity","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEdqGuide","description":"Call this to get the documentation for creating and run complex queries over platform entities based on filters.","inputSchema":{"type":"object","required":[],"properties":{"unused":{"type":"string"}},"additionalProperties":false},"logicalName":"getEdqGuide","displayName":"getEdqGuide","title":"getEdqGuide","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getDeviceCredentialsByDeviceId","description":"Use this to get device credentials (e.g., ACCESS_TOKEN) by device id.","inputSchema":{"type":"object","required":["deviceId"],"properties":{"deviceId":{"type":"string"}},"additionalProperties":false},"logicalName":"getDeviceCredentialsByDeviceId","displayName":"getDeviceCredentialsByDeviceId","title":"getDeviceCredentialsByDeviceId","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveEntityTelemetry","description":"Use this to save time series data for an entity. Accepts JSON: simple {key:value}, with timestamp {ts:...,values:{...}}, or array format.","inputSchema":{"type":"object","required":["entityType","entityIdStr","jsonBody"],"properties":{"jsonBody":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"saveEntityTelemetry","displayName":"saveEntityTelemetry","title":"saveEntityTelemetry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteAsset","description":"Use this to permanently delete an asset and all its relations by id.","inputSchema":{"type":"object","required":["assetIdStr"],"properties":{"assetIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteAsset","displayName":"deleteAsset","title":"deleteAsset","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveEntityTelemetryWithTTL","description":"Use this to save time series data with a TTL (Time to Live) for an entity. TTL only applies with Cassandra DB.","inputSchema":{"type":"object","required":["entityType","entityIdStr","ttl","jsonBody"],"properties":{"ttl":{"type":"string"},"jsonBody":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"saveEntityTelemetryWithTTL","displayName":"saveEntityTelemetryWithTTL","title":"saveEntityTelemetryWithTTL","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveRelation","description":"Use this to create or update a relation between two entities. Unique key: (from, to, typeGroup, type). 'typeGroup' defaults to COMMON.","inputSchema":{"type":"object","required":["relationJson"],"properties":{"relationJson":{"type":"string"}},"additionalProperties":false},"logicalName":"saveRelation","displayName":"saveRelation","title":"saveRelation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAlarms","description":"Use this to get a paginated list of alarms for a specific entity. Filter by searchStatus or status (not both). Returns PageData of AlarmInfo.","inputSchema":{"type":"object","required":["entityType","entityId","pageSize","page"],"properties":{"page":{"type":"string"},"endTs":{"type":"string"},"status":{"type":"string"},"startTs":{"type":"string"},"entityId":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"entityType":{"type":"string"},"textSearch":{"type":"string"},"searchStatus":{"type":"string"},"sortProperty":{"type":"string"},"fetchOriginator":{"type":"boolean"}},"additionalProperties":false},"logicalName":"getAlarms","displayName":"getAlarms","title":"getAlarms","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findByToWithRelationType","description":"Use this to list incoming relations of a specific type for an entity.","inputSchema":{"type":"object","required":["strToId","strToType","relationType"],"properties":{"strToId":{"type":"string"},"strToType":{"type":"string"},"relationType":{"type":"string"},"strRelationTypeGroup":{"type":"string"}},"additionalProperties":false},"logicalName":"findByToWithRelationType","displayName":"findByToWithRelationType","title":"findByToWithRelationType","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUserDevices","description":"Use this to get a paginated list of devices available to the current user. PE only.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"type":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getUserDevices","displayName":"getUserDevices","title":"getUserDevices","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByAssetTypeFilter","description":"Use this to count assets by profile/type and optional name prefix with keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["assetTypeFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"assetTypeFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByAssetTypeFilter","displayName":"countByAssetTypeFilter","title":"countByAssetTypeFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getOtaPackageById","description":"Use this to get the full OTA package object by id.","inputSchema":{"type":"object","required":["otaPackageId"],"properties":{"otaPackageId":{"type":"string"}},"additionalProperties":false},"logicalName":"getOtaPackageById","displayName":"getOtaPackageById","title":"getOtaPackageById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getCustomerAssets","description":"Use this to get a paginated list of assets assigned to a specific customer. Filter by type.","inputSchema":{"type":"object","required":["customerId","pageSize","page"],"properties":{"page":{"type":"string"},"type":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"customerId":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getCustomerAssets","displayName":"getCustomerAssets","title":"getCustomerAssets","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEntityGroupByOwnerAndNameAndType","description":"Use this to get an entity group by owner, type, and name. PE only.","inputSchema":{"type":"object","required":["strOwnerType","strOwnerId","entityType","name"],"properties":{"name":{"type":"string"},"entityType":{"type":"string"},"strOwnerId":{"type":"string"},"strOwnerType":{"type":"string"}},"additionalProperties":false},"logicalName":"getEntityGroupByOwnerAndNameAndType","displayName":"getEntityGroupByOwnerAndNameAndType","title":"getEntityGroupByOwnerAndNameAndType","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTenantDevices","description":"Use this to get a paginated list of devices owned by the tenant. Filter by type.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"type":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getTenantDevices","displayName":"getTenantDevices","title":"getTenantDevices","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAllCustomerUsers","description":"Use this to get a paginated list of all customer users for the current tenant. PE only.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getAllCustomerUsers","displayName":"getAllCustomerUsers","title":"getAllCustomerUsers","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findInfoByTo","description":"Use this to list all incoming relations (TO direction) for an entity. Returns RelationInfo with entity names.","inputSchema":{"type":"object","required":["strToId","strToType"],"properties":{"strToId":{"type":"string"},"strToType":{"type":"string"},"strRelationTypeGroup":{"type":"string"}},"additionalProperties":false},"logicalName":"findInfoByTo","displayName":"findInfoByTo","title":"findInfoByTo","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByRelationsQueryFilter","description":"Use this to count entities related to a root entity with optional keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["relationsQueryFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"relationsQueryFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByRelationsQueryFilter","displayName":"countByRelationsQueryFilter","title":"countByRelationsQueryFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEntityGroupsByType","description":"Use this to list all entity groups of a specific type (CUSTOMER, ASSET, DEVICE, USER, ENTITY_VIEW, DASHBOARD, EDGE). PE only.","inputSchema":{"type":"object","required":["entityType"],"properties":{"entityType":{"type":"string"}},"additionalProperties":false},"logicalName":"getEntityGroupsByType","displayName":"getEntityGroupsByType","title":"getEntityGroupsByType","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByDeviceProfileAndEmptyOtaPackage","description":"Use this to count devices in a profile that have no assigned OTA package.","inputSchema":{"type":"object","required":["deviceProfileId","otaPackageType"],"properties":{"otaPackageType":{"type":"string"},"deviceProfileId":{"type":"string"}},"additionalProperties":false},"logicalName":"countByDeviceProfileAndEmptyOtaPackage","displayName":"countByDeviceProfileAndEmptyOtaPackage","title":"countByDeviceProfileAndEmptyOtaPackage","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityNameFilter","description":"Use this to count entities matching a name prefix with optional keyFilters.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityNameFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityNameFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityNameFilter","displayName":"countByEntityNameFilter","title":"countByEntityNameFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveAlarm","description":"Use this to create or update an alarm. To create: provide 'originator', 'type', 'severity'. Omit 'id'. To update: include 'id'. Alarms are deduplicated by originator + type: duplicates update the existing active alarm. After clearing (clearAlarm), a new one with the same type can be created.","inputSchema":{"type":"object","required":["alarmJson"],"properties":{"alarmJson":{"type":"string"}},"additionalProperties":false},"logicalName":"saveAlarm","displayName":"saveAlarm","title":"saveAlarm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findInfoByFrom","description":"Use this to list all outgoing relations (FROM direction) for an entity. Returns RelationInfo with entity names.","inputSchema":{"type":"object","required":["strFromId","strFromType"],"properties":{"strFromId":{"type":"string"},"strFromType":{"type":"string"},"strRelationTypeGroup":{"type":"string"}},"additionalProperties":false},"logicalName":"findInfoByFrom","displayName":"findInfoByFrom","title":"findInfoByFrom","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveUser","description":"Use this to create or update a user. Omit 'id' to create; include 'id' to update. Required: 'email' (unique per tenant), 'authority' (SYS_ADMIN|TENANT_ADMIN|CUSTOMER_USER). PE: use 'entityGroupId'/'entityGroupIds' for groups.","inputSchema":{"type":"object","required":["userJson"],"properties":{"userJson":{"type":"string"},"entityGroupId":{"type":"string"},"entityGroupIds":{"type":"string"},"sendActivationEmail":{"type":"boolean"}},"additionalProperties":false},"logicalName":"saveUser","displayName":"saveUser","title":"saveUser","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityGroupNameFilter","description":"Use this to count entity groups matching a name prefix with optional keyFilters. PE only.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityGroupNameFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityGroupNameFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityGroupNameFilter","displayName":"countByEntityGroupNameFilter","title":"countByEntityGroupNameFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"clearAlarm","description":"Use this to clear an alarm. Sets 'clear_ts' and triggers ALARM_CLEAR rule chain event.","inputSchema":{"type":"object","required":["alarmIdStr"],"properties":{"alarmIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"clearAlarm","displayName":"clearAlarm","title":"clearAlarm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteRelations","description":"Use this to delete all relations (both directions) for an entity in the COMMON group.","inputSchema":{"type":"object","required":["strEntityId","strEntityType"],"properties":{"strEntityId":{"type":"string"},"strEntityType":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteRelations","displayName":"deleteRelations","title":"deleteRelations","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEdgeQueryFilter","description":"Use this to count edges related to a root entity by relation type and edge types.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["edgeSearchQueryFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"edgeSearchQueryFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEdgeQueryFilter","displayName":"countByEdgeQueryFilter","title":"countByEdgeQueryFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deleteDevice","description":"Use this to permanently delete a device, its credentials, and all relations by id.","inputSchema":{"type":"object","required":["deviceId"],"properties":{"deviceId":{"type":"string"}},"additionalProperties":false},"logicalName":"deleteDevice","displayName":"deleteDevice","title":"deleteDevice","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"assignOtaPackageToDeviceProfile","description":"Use this to assign or clear an OTA package (FIRMWARE/SOFTWARE) on a device profile.","inputSchema":{"type":"object","required":["deviceProfileId","otaPackageType"],"properties":{"clear":{"type":"boolean"},"otaPackageId":{"type":"string"},"otaPackageType":{"type":"string"},"deviceProfileId":{"type":"string"}},"additionalProperties":false},"logicalName":"assignOtaPackageToDeviceProfile","displayName":"assignOtaPackageToDeviceProfile","title":"assignOtaPackageToDeviceProfile","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntitiesGroupNameFilter","description":"Use this to count entities in a group by group name with optional keyFilters. PE only.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entitiesByGroupNameFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entitiesByGroupNameFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntitiesGroupNameFilter","displayName":"countByEntitiesGroupNameFilter","title":"countByEntitiesGroupNameFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTimeseriesKeys","description":"Use this to get all time series key names for an entity.","inputSchema":{"type":"object","required":["entityType","entityIdStr"],"properties":{"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"getTimeseriesKeys","displayName":"getTimeseriesKeys","title":"getTimeseriesKeys","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAlarmInfoById","description":"Use this to get alarm details by id. Returns AlarmInfo including originator name.","inputSchema":{"type":"object","required":["alarmId"],"properties":{"alarmId":{"type":"string"}},"additionalProperties":false},"logicalName":"getAlarmInfoById","displayName":"getAlarmInfoById","title":"getAlarmInfoById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByDeviceSearchQueryFilter","description":"Use this to count devices related to a root entity by relation type and device types.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["deviceSearchQueryFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"deviceSearchQueryFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByDeviceSearchQueryFilter","displayName":"countByDeviceSearchQueryFilter","title":"countByDeviceSearchQueryFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getRelation","description":"Use this to get a specific relation between two entities.","inputSchema":{"type":"object","required":["strFromId","strFromType","relationType","strToId","strToType"],"properties":{"strToId":{"type":"string"},"strFromId":{"type":"string"},"strToType":{"type":"string"},"strFromType":{"type":"string"},"relationType":{"type":"string"},"strRelationTypeGroup":{"type":"string"}},"additionalProperties":false},"logicalName":"getRelation","displayName":"getRelation","title":"getRelation","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEntityGroupById","description":"Use this to get an entity group by its id. Returns EntityGroupInfo with owner IDs. PE only.","inputSchema":{"type":"object","required":["entityGroupId"],"properties":{"entityGroupId":{"type":"string"}},"additionalProperties":false},"logicalName":"getEntityGroupById","displayName":"getEntityGroupById","title":"getEntityGroupById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getHighestAlarmSeverity","description":"Use this to get the highest alarm severity for an entity. Returns: CRITICAL, MAJOR, MINOR, WARNING, or INDETERMINATE. Filter by searchStatus or status (not both).","inputSchema":{"type":"object","required":["entityType","entityId"],"properties":{"status":{"type":"string"},"entityId":{"type":"string"},"entityType":{"type":"string"},"searchStatus":{"type":"string"}},"additionalProperties":false},"logicalName":"getHighestAlarmSeverity","displayName":"getHighestAlarmSeverity","title":"getHighestAlarmSeverity","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTenantCustomer","description":"Use this to get a customer by its unique title within the tenant.","inputSchema":{"type":"object","required":["customerTitle"],"properties":{"customerTitle":{"type":"string"}},"additionalProperties":false},"logicalName":"getTenantCustomer","displayName":"getTenantCustomer","title":"getTenantCustomer","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getCustomerById","description":"Use this to get a customer by its id.","inputSchema":{"type":"object","required":["customerId"],"properties":{"customerId":{"type":"string"}},"additionalProperties":false},"logicalName":"getCustomerById","displayName":"getCustomerById","title":"getCustomerById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByAssetSearchQueryFilter","description":"Use this to count assets related to a root entity by relation type and asset types.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["assetSearchQueryFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"assetSearchQueryFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByAssetSearchQueryFilter","displayName":"countByAssetSearchQueryFilter","title":"countByAssetSearchQueryFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getCustomers","description":"Use this to get a paginated list of customers owned by the tenant.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getCustomers","displayName":"getCustomers","title":"getCustomers","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTenantAsset","description":"Use this to get an asset by its unique name within the tenant.","inputSchema":{"type":"object","required":["assetName"],"properties":{"assetName":{"type":"string"}},"additionalProperties":false},"logicalName":"getTenantAsset","displayName":"getTenantAsset","title":"getTenantAsset","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getLatestTimeseries","description":"Use this to get the latest time series values for an entity. Use optional 'keys' to filter. Set 'useStrictDataTypes'=true to preserve original types.","inputSchema":{"type":"object","required":["entityType","entityIdStr"],"properties":{"keys":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"},"useStrictDataTypes":{"type":"string"}},"additionalProperties":false},"logicalName":"getLatestTimeseries","displayName":"getLatestTimeseries","title":"getLatestTimeseries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getAssetById","description":"Use this to get an asset by its id.","inputSchema":{"type":"object","required":["assetId"],"properties":{"assetId":{"type":"string"}},"additionalProperties":false},"logicalName":"getAssetById","displayName":"getAssetById","title":"getAssetById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"downloadOtaPackage","description":"Use this to download OTA package binary to a local file path on the MCP host.","inputSchema":{"type":"object","required":["otaPackageId","destinationPath"],"properties":{"otaPackageId":{"type":"string"},"destinationPath":{"type":"string"}},"additionalProperties":false},"logicalName":"downloadOtaPackage","displayName":"downloadOtaPackage","title":"downloadOtaPackage","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getTenantAssets","description":"Use this to get a paginated list of assets owned by the tenant. Filter by type.","inputSchema":{"type":"object","required":["pageSize","page"],"properties":{"page":{"type":"string"},"type":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getTenantAssets","displayName":"getTenantAssets","title":"getTenantAssets","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"saveEntityAttributesV2","description":"Use this to create or update attributes for any entity. Provide entity type/id, scope (SERVER_SCOPE or SHARED_SCOPE), and JSON key-value payload.","inputSchema":{"type":"object","required":["entityType","entityIdStr","scope","jsonBody"],"properties":{"scope":{"type":"string"},"jsonBody":{"type":"string"},"entityType":{"type":"string"},"entityIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"saveEntityAttributesV2","displayName":"saveEntityAttributesV2","title":"saveEntityAttributesV2","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getDeviceById","description":"Use this to get a device by its id.","inputSchema":{"type":"object","required":["deviceId"],"properties":{"deviceId":{"type":"string"}},"additionalProperties":false},"logicalName":"getDeviceById","displayName":"getDeviceById","title":"getDeviceById","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getCustomersByEntityGroupId","description":"Use this to get a paginated list of customers in a specific entity group. PE only.","inputSchema":{"type":"object","required":["entityGroupId","pageSize","page"],"properties":{"page":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"},"entityGroupId":{"type":"string"}},"additionalProperties":false},"logicalName":"getCustomersByEntityGroupId","displayName":"getCustomersByEntityGroupId","title":"getCustomersByEntityGroupId","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getUsersForAssign","description":"Use this to get users that can be assigned to a specific alarm. Searches by email, firstName, lastName.","inputSchema":{"type":"object","required":["alarmId","pageSize","page"],"properties":{"page":{"type":"string"},"alarmId":{"type":"string"},"pageSize":{"type":"string"},"sortOrder":{"type":"string"},"textSearch":{"type":"string"},"sortProperty":{"type":"string"}},"additionalProperties":false},"logicalName":"getUsersForAssign","displayName":"getUsersForAssign","title":"getUsersForAssign","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityGroupFilter","description":"Use this to count entities in a specific group with optional keyFilters. PE only.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityGroupFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityGroupFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityGroupFilter","displayName":"countByEntityGroupFilter","title":"countByEntityGroupFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEdqCountGuide","description":"Call this to get the documentation for creating and run complex queries to search the count of platform entities based on filters.","inputSchema":{"type":"object","required":[],"properties":{"unused":{"type":"string"}},"additionalProperties":false},"logicalName":"getEdqCountGuide","displayName":"getEdqCountGuide","title":"getEdqCountGuide","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"countByEntityGroupListFilter","description":"Use this to count entities across multiple groups with optional keyFilters. PE only.  Call getEdqCountGuide() and getKeyFiltersGuide() first.","inputSchema":{"type":"object","required":["entityGroupListFilterJson"],"properties":{"keyFiltersJson":{"type":"string"},"entityGroupListFilterJson":{"type":"string"}},"additionalProperties":false},"logicalName":"countByEntityGroupListFilter","displayName":"countByEntityGroupListFilter","title":"countByEntityGroupListFilter","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getEntityGroupsByIds","description":"Use this to get multiple entity groups by their ids (comma-separated). PE only.","inputSchema":{"type":"object","required":["entityIds"],"properties":{"entityIds":{"type":"string"}},"additionalProperties":false},"logicalName":"getEntityGroupsByIds","displayName":"getEntityGroupsByIds","title":"getEntityGroupsByIds","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"addEntitiesToEntityGroup","description":"Use this to add entities to an entity group. Cannot add to the 'All' group. PE only.","inputSchema":{"type":"object","required":["entityGroupIdStr","entityIdsStr","entityGroupType"],"properties":{"entityIdsStr":{"type":"string"},"entityGroupType":{"type":"string"},"entityGroupIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"addEntitiesToEntityGroup","displayName":"addEntitiesToEntityGroup","title":"addEntitiesToEntityGroup","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"ackAlarm","description":"Use this to acknowledge an alarm. Sets 'ack_ts' and triggers ALARM_ACK rule chain event.","inputSchema":{"type":"object","required":["alarmIdStr"],"properties":{"alarmIdStr":{"type":"string"}},"additionalProperties":false},"logicalName":"ackAlarm","displayName":"ackAlarm","title":"ackAlarm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=NistantriTech-Let&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AubmlzdGFudHJpdGVjaC5jb20vIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22NistantriTech-Let%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.nistantritech.com%2F%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22NistantriTech-Let%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.nistantritech.com%2F%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=NistantriTech+%7C+Let&connectorUrl=https%3A%2F%2Fmcp.nistantritech.com%2F"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"NistantriTech-Let\" --url \"https://mcp.nistantritech.com/\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/nistantritech-mcp-7d23e83ad1","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/nistantritech-mcp-7d23e83ad1/tools/{tool}","mcpServerUrl":"https://mcp.nistantritech.com/","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/nistantritech-mcp-7d23e83ad1?live=1"}