{"apiVersion":"v1","directorySlug":"bitpool-mcp-71f71314f1","title":"Bitpool — Autonomous Building Intelligence","description":"No logins. Just Results. Bitpool is the AI platform that sees, knows, acts and grows your asset portfolio.","pageUrl":"https://www.mcpbundles.com/skills/bitpool-mcp-71f71314f1","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://api.bitpool.com/mcp","hostedMcpUrl":null,"toolCount":85,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.bitpool/bitpool-mcp-71f71314f1","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"get_pools","description":"Get a list of pools with pagination and optional search support.","inputSchema":{"type":"object","properties":{"desc":{"type":"boolean","default":false},"skip":{"type":"integer","default":0},"take":{"type":"integer","default":20},"search":{"type":"string","default":""},"orderBy":{"type":"string","default":""}}},"logicalName":"get_pools","displayName":"get_pools","title":"get_pools","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_aggregation_periods","description":"Get all aggregation periods as [{name, value}]. Use the numeric value for a widget data setting aggPeriod.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_aggregation_periods","displayName":"get_aggregation_periods","title":"get_aggregation_periods","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_stream_data_quality_over_time","description":"Get data quality information for a specific stream over a time period. Data quality scores range from 0-100%: Poor (0-60%), Fair (60-70%), Good (70-80%), Very good (80-90%), Excellent (90-100%).","inputSchema":{"type":"object","required":["streamKey","start","end"],"properties":{"end":{"type":"string","format":"date-time"},"start":{"type":"string","format":"date-time"},"streamKey":{"type":"string"}}},"logicalName":"get_stream_data_quality_over_time","displayName":"get_stream_data_quality_over_time","title":"get_stream_data_quality_over_time","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_grid","description":"Add an empty grid container to a dashboard (at the root, or inside a parent grid) to group widgets. Returns the new grid guid. Read GetDashboardConfigurationGuide first for the layout shapes and constraints.","inputSchema":{"type":"object","required":["dashboardId"],"properties":{"size":{"type":"string","default":""},"scope":{"type":"string","default":"Organisation"},"dashboardId":{"type":"string"},"parentGridGuid":{"type":"string","default":""}}},"logicalName":"create_grid","displayName":"create_grid","title":"create_grid","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_stream","description":"Delete a specific stream and all its logs.","inputSchema":{"type":"object","required":["streamKey"],"properties":{"streamKey":{"type":"string"}}},"logicalName":"delete_stream","displayName":"delete_stream","title":"delete_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"execute_cypher_query","description":"Executes a read-only Cypher query against the Bitpool graph for a specific site. Use GetBitpoolGraphSchema first to discover available site keys and schema. Only works when the Bitpool cache is available for the target site.","inputSchema":{"type":"object","required":["query","siteKey"],"properties":{"query":{"type":"string"},"siteKey":{"type":"string"}}},"logicalName":"execute_cypher_query","displayName":"execute_cypher_query","title":"execute_cypher_query","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_report","description":"Update a report's name, layout, datasources, date range and margins, preserving its creation metadata and its header/footer (which are the organisation defaults and not editable here). See GetReportConfigurationGuide for the layout/datasource shapes.","inputSchema":{"type":"object","required":["reportId"],"properties":{"name":{"type":"string","default":""},"items":{"type":"string","default":""},"margins":{"type":"string","default":""},"reportId":{"type":"string"},"dateRange":{"type":"string","default":""},"datasources":{"type":"string","default":""}}},"logicalName":"update_report","displayName":"update_report","title":"update_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"preview_report","description":"Render a report to a PDF through the PDF generation service, using the same generation pipeline as a scheduled report (stream data, global styles, UTC offset, tariff data, AI insight text and billing data), so a caller can preview the actual output. Returns { ok, elementCount, missingElements, pdfUrl, error }; the PDF is served at pdfUrl. Requires the PDF generation service to be running.","inputSchema":{"type":"object","required":["reportId"],"properties":{"reportId":{"type":"string"},"timezone":{"type":"string","default":""},"includeBilling":{"type":"boolean","default":true},"includeAiInsights":{"type":"boolean","default":true}}},"logicalName":"preview_report","displayName":"preview_report","title":"preview_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_reports","description":"List reports the caller may access. Paginated and searchable by name. Uses the organisation bound to the auth key.","inputSchema":{"type":"object","properties":{"skip":{"type":"integer","default":0},"take":{"type":"integer","default":20},"search":{"type":"string","default":""}}},"logicalName":"get_reports","displayName":"get_reports","title":"get_reports","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_report","description":"Get a report definition (name, header, items, footer, datasources, date range) by id.","inputSchema":{"type":"object","required":["reportId"],"properties":{"reportId":{"type":"string"}}},"logicalName":"get_report","displayName":"get_report","title":"get_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_report","description":"Delete a report and detach it from any schedules that reference it.","inputSchema":{"type":"object","required":["reportId"],"properties":{"reportId":{"type":"string"}}},"logicalName":"delete_report","displayName":"delete_report","title":"delete_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_entity","description":"Create a semantics entity. Use entityType \"Entity\" for structure nodes (sites, spaces, equips) and \"PointWithDataSlot\" for semantic points that reference a separate data stream.","inputSchema":{"type":"object","required":["name","entityType"],"properties":{"name":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"default":null},"dataType":{"enum":["Double","String",null],"type":["string","null"],"default":null},"entityType":{"type":"string"}}},"logicalName":"create_entity","displayName":"create_entity","title":"create_entity","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"move_widget","description":"Move a widget to a target position, optionally into another dashboard. The index is 0-based within the target parent (the destination dashboard root, or the given target grid). Returns { guid, index, dashboardId }. Read GetDashboardConfigurationGuide first for the layout shapes and constraints.","inputSchema":{"type":"object","required":["dashboardId","widgetGuid","targetIndex"],"properties":{"scope":{"type":"string","default":"Organisation"},"widgetGuid":{"type":"string"},"dashboardId":{"type":"string"},"targetIndex":{"type":"integer"},"parentGridGuid":{"type":"string","default":""},"targetDashboardId":{"type":"string","default":""}}},"logicalName":"move_widget","displayName":"move_widget","title":"move_widget","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_billing_sources","description":"List billing sources for the auth key's organisation, for building a report 'billing' datasource. Returns { data: [{ id, name, type }] } where type is 'group' (an account/group) or 'smart' (a smart collection); use id as the datasource Configuration.billingSourceId and type as billingSourceType.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_billing_sources","displayName":"get_billing_sources","title":"get_billing_sources","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"rename_dashboard","description":"Rename a dashboard without touching its widgets.","inputSchema":{"type":"object","required":["dashboardId","name"],"properties":{"name":{"type":"string"},"scope":{"type":"string","default":"Organisation"},"dashboardId":{"type":"string"}}},"logicalName":"rename_dashboard","displayName":"rename_dashboard","title":"rename_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"add_tags_to_stream","description":"Add tags to a specific stream.","inputSchema":{"type":"object","required":["streamKey","tags"],"properties":{"tags":{"type":"array","items":{"type":"string"}},"streamKey":{"type":"string"}}},"logicalName":"add_tags_to_stream","displayName":"add_tags_to_stream","title":"add_tags_to_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_entity","description":"Delete a semantics entity (site, space, equip, point).","inputSchema":{"type":"object","required":["entityKey"],"properties":{"entityKey":{"type":"string"}}},"logicalName":"delete_entity","displayName":"delete_entity","title":"delete_entity","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_pool","description":"Delete a specific pool by its key.","inputSchema":{"type":"object","required":["poolKey"],"properties":{"poolKey":{"type":"string"}}},"logicalName":"delete_pool","displayName":"delete_pool","title":"delete_pool","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_widget_type_details","description":"Get the full definition of one authorable widget type, including its default settings.","inputSchema":{"type":"object","required":["widgetType"],"properties":{"widgetType":{"type":"string"}}},"logicalName":"get_widget_type_details","displayName":"get_widget_type_details","title":"get_widget_type_details","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"change_entity_tags","description":"Add and remove tags for one or more semantics entities at once.","inputSchema":{"type":"object","required":["entityKeys","tagsRemove","tagsAdd"],"properties":{"tagsAdd":{"type":"array","items":{"type":"string"}},"entityKeys":{"type":"array","items":{"type":"string"}},"tagsRemove":{"type":"array","items":{"type":"string"}}}},"logicalName":"change_entity_tags","displayName":"change_entity_tags","title":"change_entity_tags","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_image_gallery","description":"Search the organisation's image gallery (Graphic Library), for the image and image-freeform widgets. Each item returns id, name, groupId, groupName and url; set the widget's advancedWidgetSettings.widgetImageSrc to url. Returns { data, total }.","inputSchema":{"type":"object","properties":{"skip":{"type":"integer","default":0},"take":{"type":"integer","default":50},"search":{"type":"string","default":""},"groupId":{"type":"string","default":""}}},"logicalName":"get_image_gallery","displayName":"get_image_gallery","title":"get_image_gallery","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_report_elements","description":"List report elements available to the caller as building blocks, paginated and searchable by name. Returns summaries without markup/styles/script. Elements are organisation-scoped (no per-element ACL).","inputSchema":{"type":"object","properties":{"skip":{"type":"integer","default":0},"take":{"type":"integer","default":20},"search":{"type":"string","default":""},"elementRole":{"type":"string","default":""}}},"logicalName":"get_report_elements","displayName":"get_report_elements","title":"get_report_elements","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_dashboard","description":"Remove a dashboard and its widgets. Child dashboards are retained unless deleteChildDashboards is true (cascade is opt-in).","inputSchema":{"type":"object","required":["dashboardId"],"properties":{"scope":{"type":"string","default":"Organisation"},"dashboardId":{"type":"string"},"deleteChildDashboards":{"type":"boolean","default":false}}},"logicalName":"delete_dashboard","displayName":"delete_dashboard","title":"delete_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_dashboard","description":"Inspect a dashboard's widgets and report problems the editor would only reveal at render time. Errors (make ok=false): stream keys that are invalid, missing or unreadable by the auth key, stream data types that do not match the widget type, layout sizes outside 1..12, widget configurations not referenced by the layout, and invalid data conditions (a rule the widget type does not implement, a missing field the rule requires, or an operand that does not match the stream data type). See GetDashboar","inputSchema":{"type":"object","required":["dashboardId"],"properties":{"scope":{"type":"string","default":"Organisation"},"dashboardId":{"type":"string"}}},"logicalName":"validate_dashboard","displayName":"validate_dashboard","title":"validate_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"copy_dashboard","description":"Duplicate a dashboard (optionally with its child dashboards) under a target parent dashboard, or the scope root when omitted. Returns the new dashboard id and link.","inputSchema":{"type":"object","required":["dashboardId"],"properties":{"scope":{"type":"string","default":"Organisation"},"toParentId":{"type":"string","default":""},"dashboardId":{"type":"string"},"copyChildDashboards":{"type":"boolean","default":false}}},"logicalName":"copy_dashboard","displayName":"copy_dashboard","title":"copy_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"attach_data_stream_to_point","description":"Attach one or more data streams to a PointWithDataSlot point. The point will then serve data from these streams.","inputSchema":{"type":"object","required":["pointKey","dataStreamKeys"],"properties":{"pointKey":{"type":"string"},"dataStreamKeys":{"type":"array","items":{"type":"string"}}}},"logicalName":"attach_data_stream_to_point","displayName":"attach_data_stream_to_point","title":"attach_data_stream_to_point","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"change_tags_for_pools","description":"Add and remove tags for multiple pools at once.","inputSchema":{"type":"object","required":["poolKeys","tagsRemove","tagsAdd"],"properties":{"tagsAdd":{"type":"array","items":{"type":"string"}},"poolKeys":{"type":"array","items":{"type":"string"}},"tagsRemove":{"type":"array","items":{"type":"string"}}}},"logicalName":"change_tags_for_pools","displayName":"change_tags_for_pools","title":"change_tags_for_pools","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"copy_report","description":"Duplicate a report: copies its layout, datasources, header/footer, date range and margins under a new name (name + ' - Copy'). The copy has no schedules. Returns the new report plus a url.","inputSchema":{"type":"object","required":["reportId"],"properties":{"reportId":{"type":"string"}}},"logicalName":"copy_report","displayName":"copy_report","title":"copy_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_tags_from_pool","description":"Delete tags from a specific pool.","inputSchema":{"type":"object","required":["poolKey","tags"],"properties":{"tags":{"type":"array","items":{"type":"string"}},"poolKey":{"type":"string"}}},"logicalName":"delete_tags_from_pool","displayName":"delete_tags_from_pool","title":"delete_tags_from_pool","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"rename_pool","description":"Rename a specific pool.","inputSchema":{"type":"object","required":["poolKey","name"],"properties":{"name":{"type":"string"},"poolKey":{"type":"string"}}},"logicalName":"rename_pool","displayName":"rename_pool","title":"rename_pool","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_report_data","description":"Check that a report's stream datasources actually return data over the report's date range: for each streams datasource it runs the same aggregated request the scheduler uses and reports the series and point counts (and any error). Billing datasources are skipped. Returns { data: [{ datasourceUid, datasourceName, series, points, error }] }.","inputSchema":{"type":"object","required":["reportId"],"properties":{"reportId":{"type":"string"}}},"logicalName":"check_report_data","displayName":"check_report_data","title":"check_report_data","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_image_gallery_groups","description":"List the organisation's image gallery (Graphic Library) groups, to filter GetImageGallery. Returns { data: [{ id, name }] }.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_image_gallery_groups","displayName":"get_image_gallery_groups","title":"get_image_gallery_groups","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ai_personas","description":"List the AI personas (agents) available for report AI insights, used as the PersonaId in an element's BitpoolAI feature configuration. Returns { data: [{ id, name, model, isDefault, enabled }] }.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_ai_personas","displayName":"get_ai_personas","title":"get_ai_personas","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"detach_data_stream_from_point","description":"Detach data streams from a PointWithDataSlot point. If dataStreamKeys is provided, only those streams are detached; if empty or null, all streams are detached.","inputSchema":{"type":"object","required":["pointKey"],"properties":{"pointKey":{"type":"string"},"dataStreamKeys":{"type":"array","items":{"type":"string"},"default":null}}},"logicalName":"detach_data_stream_from_point","displayName":"detach_data_stream_from_point","title":"detach_data_stream_from_point","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"remove_grid","description":"Remove a grid (and everything inside it) from a dashboard, deleting the configurations of the widgets it contained. A widget node is rejected - use RemoveWidget. Returns { gridGuid, removedWidgets }. Read GetDashboardConfigurationGuide first for the layout shapes and constraints.","inputSchema":{"type":"object","required":["dashboardId","gridGuid"],"properties":{"scope":{"type":"string","default":"Organisation"},"gridGuid":{"type":"string"},"dashboardId":{"type":"string"}}},"logicalName":"remove_grid","displayName":"remove_grid","title":"remove_grid","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_ai_insight_library","description":"List the predefined AI insight questions (prompts) available to the caller's organisation, used as the QuestionId in an element's BitpoolAI feature configuration (use QuestionId 'custom' with CustomQuestion for a one-off question). Organisation and global questions are included. Returns { data: [{ id, name, question, personaId }], total }.","inputSchema":{"type":"object","properties":{"take":{"type":"integer","default":100},"search":{"type":"string","default":""}}},"logicalName":"get_ai_insight_library","displayName":"get_ai_insight_library","title":"get_ai_insight_library","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_tariffs","description":"List the tariffs available to the caller's organisation (organisation and global), for an element parameter of type TariffSelect. Returns { data: [{ id, name, number, retailer, type, currency }], total }.","inputSchema":{"type":"object","properties":{"take":{"type":"integer","default":100},"search":{"type":"string","default":""}}},"logicalName":"get_tariffs","displayName":"get_tariffs","title":"get_tariffs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"move_grid","description":"Move a grid to a target position within its dashboard (optionally into another grid). A grid cannot be moved into itself or one of its own descendants. The index is 0-based within the target parent. Returns { guid, index }. Read GetDashboardConfigurationGuide first for the layout shapes and constraints.","inputSchema":{"type":"object","required":["dashboardId","gridGuid","targetIndex"],"properties":{"scope":{"type":"string","default":"Organisation"},"gridGuid":{"type":"string"},"dashboardId":{"type":"string"},"targetIndex":{"type":"integer"},"parentGridGuid":{"type":"string","default":""}}},"logicalName":"move_grid","displayName":"move_grid","title":"move_grid","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_stream_data_types","description":"Get all stream data types as [{name, value}].","inputSchema":{"type":"object","properties":{}},"logicalName":"get_stream_data_types","displayName":"get_stream_data_types","title":"get_stream_data_types","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_aggregation_type_strings","description":"Get all string aggregation types as [{name, value}]. Use the name or value for a widget stream Params.aggTypeString.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_aggregation_type_strings","displayName":"get_aggregation_type_strings","title":"get_aggregation_type_strings","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_stream","description":"Update a stream name.","inputSchema":{"type":"object","required":["streamKey","name"],"properties":{"name":{"type":"string"},"streamKey":{"type":"string"}}},"logicalName":"update_stream","displayName":"update_stream","title":"update_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_widget","description":"Update a widget's settings, preserving its identity and creation metadata. The patch is merged into widgetOptions and accepts { title, refreshSecs, widgetOptions, basicWidgetSettings, advancedWidgetSettings, widgetDataSettings }. Use GetWidgetTypeDetails to see the full settings shape and GetDashboard to read the widget's current values; see GetDashboardConfigurationGuide. Optionally resize its layout entry. Returns the widget guid and a dashboard link.","inputSchema":{"type":"object","required":["dashboardId","widgetGuid","patch"],"properties":{"size":{"type":"string","default":""},"patch":{"type":"string"},"scope":{"type":"string","default":"Organisation"},"widgetGuid":{"type":"string"},"dashboardId":{"type":"string"}}},"logicalName":"update_widget","displayName":"update_widget","title":"update_widget","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_semantics_nodes","description":"Get a list of semantics nodes for a given parent node key. Only the immediate (one level) children of the specified node are returned. To retrieve the next level, call this method again with the key of a returned node. If the key is empty, the root nodes are returned.","inputSchema":{"type":"object","properties":{"key":{"type":"string","default":""}}},"logicalName":"get_semantics_nodes","displayName":"get_semantics_nodes","title":"get_semantics_nodes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"set_pool_timezone","description":"Update the timezone of a specific pool.","inputSchema":{"type":"object","required":["poolKey","timezone"],"properties":{"poolKey":{"type":"string"},"timezone":{"type":"string"}}},"logicalName":"set_pool_timezone","displayName":"set_pool_timezone","title":"set_pool_timezone","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_report_element","description":"Get a report element by id. Returns a summary by default; set full=true to include its markup, styles and script. Its Features (enable them via FeaturesConfiguration, see GetReportConfigurationGuide) and AdditionalParameters describe how the element can be configured.","inputSchema":{"type":"object","required":["elementId"],"properties":{"full":{"type":"boolean","default":false},"elementId":{"type":"string"}}},"logicalName":"get_report_element","displayName":"get_report_element","title":"get_report_element","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_dashboard","description":"Create an empty dashboard in the selected scope, optionally under a parent dashboard. Scope is 'Organisation' (default) or 'Personal'. Returns the new dashboard id.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"scope":{"type":"string","default":"Organisation"},"parentId":{"type":"string","default":""}}},"logicalName":"create_dashboard","displayName":"create_dashboard","title":"create_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"move_dashboard","description":"Move a dashboard: reorders it among its siblings (0-based target position, clamped), or, when targetParentId is given, re-parents it (with its descendant dashboards) under that parent. The root dashboard cannot be moved. Cannot move a dashboard into itself or one of its own descendants. Returns { dashboardId, parentId, index }.","inputSchema":{"type":"object","required":["dashboardId","targetIndex"],"properties":{"scope":{"type":"string","default":"Organisation"},"dashboardId":{"type":"string"},"targetIndex":{"type":"integer"},"targetParentId":{"type":"string","default":""}}},"logicalName":"move_dashboard","displayName":"move_dashboard","title":"move_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"remove_widget","description":"Remove a widget from a dashboard (deletes its layout entry and configuration). A grid node is rejected - use RemoveGrid. Read GetDashboardConfigurationGuide first for the layout shapes and constraints.","inputSchema":{"type":"object","required":["dashboardId","widgetGuid"],"properties":{"scope":{"type":"string","default":"Organisation"},"widgetGuid":{"type":"string"},"dashboardId":{"type":"string"}}},"logicalName":"remove_widget","displayName":"remove_widget","title":"remove_widget","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_report","description":"Create a report by assembling existing report elements (GetReportElements) into a layout with datasources. items and datasources are JSON arrays (Reports3ElementConfiguration[] and Reports3Datasource[]); call GetReportConfigurationGuide for their shapes and a worked example. The header and footer are set to the organisation's default header/footer elements. Returns the created report plus a url.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"items":{"type":"string","default":"[]"},"margins":{"type":"string","default":""},"dateRange":{"type":"string","default":""},"datasources":{"type":"string","default":"[]"}}},"logicalName":"create_report","displayName":"create_report","title":"create_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_aggregation_types","description":"Get all numeric aggregation types as [{name, value}]. Use the name or value for a widget stream Params.aggType.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_aggregation_types","displayName":"get_aggregation_types","title":"get_aggregation_types","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_time_ranges","description":"Get all available time ranges (date-range presets) as [{name, value}]. Use the numeric value for widget/report data settings such as rangePreset/rangePresetHolder.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_time_ranges","displayName":"get_time_ranges","title":"get_time_ranges","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_stream_data_quality","description":"Get the last data quality information for a specific stream. Data quality scores range from 0-100%: Poor (0-60%), Fair (60-70%), Good (70-80%), Very good (80-90%), Excellent (90-100%).","inputSchema":{"type":"object","required":["streamKey"],"properties":{"streamKey":{"type":"string"}}},"logicalName":"get_stream_data_quality","displayName":"get_stream_data_quality","title":"get_stream_data_quality","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pool_data_quality_over_time","description":"Get data quality information for a specific pool over a time period. Data quality scores range from 0-100%: Poor (0-60%), Fair (60-70%), Good (70-80%), Very good (80-90%), Excellent (90-100%).","inputSchema":{"type":"object","required":["poolKey","start","end"],"properties":{"end":{"type":"string","format":"date-time"},"start":{"type":"string","format":"date-time"},"poolKey":{"type":"string"}}},"logicalName":"get_pool_data_quality_over_time","displayName":"get_pool_data_quality_over_time","title":"get_pool_data_quality_over_time","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"register_pool","description":"Create a new pool with the specified name.","inputSchema":{"type":"object","required":["poolName"],"properties":{"poolName":{"type":"string"}}},"logicalName":"register_pool","displayName":"register_pool","title":"register_pool","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_time_zones","description":"Get the list of valid timezones supported by Bitpool.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_time_zones","displayName":"get_time_zones","title":"get_time_zones","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_stream","description":"Get details of a specific stream by its key.","inputSchema":{"type":"object","required":["streamKey"],"properties":{"streamKey":{"type":"string"}}},"logicalName":"get_stream","displayName":"get_stream","title":"get_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_bitpool_graph_schema","description":"Returns schema information about the Bitpool graph database. Lists all available cached sites with node counts, node labels, property keys, and relationship types. Use this to discover available site keys and properties before running custom Cypher queries.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_bitpool_graph_schema","displayName":"get_bitpool_graph_schema","title":"get_bitpool_graph_schema","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_dashboards","description":"List dashboards one level at a time. Omit parentId to list the root level, or pass a parentId to list that dashboard's direct children. Returns full dashboard documents, never descendants. Scope is 'Organisation' (default) or 'Personal'; the organisation comes from the auth key.","inputSchema":{"type":"object","properties":{"scope":{"type":"string","default":"Organisation"},"parentId":{"type":"string","default":""}}},"logicalName":"get_dashboards","displayName":"get_dashboards","title":"get_dashboards","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_dashboard_from_spec","description":"Create a dashboard (layout + widgets) from a structured specification: { childrens: [ { name, type: 'grid', size, childrens: [ { name, type: 'widget', size, widgetType, streams: [ { streamKey, aggregationType, aggregationTypeString, seriesType } ] } ] } ] }. See GetDashboardConfigurationGuide for the shape and a worked example.","inputSchema":{"type":"object","required":["name","spec"],"properties":{"name":{"type":"string"},"spec":{"type":"string"},"scope":{"type":"string","default":"Organisation"},"parentId":{"type":"string","default":""}}},"logicalName":"create_dashboard_from_spec","displayName":"create_dashboard_from_spec","title":"create_dashboard_from_spec","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_report","description":"Inspect a report's element configurations and report problems the editor would only reveal at render time. Errors (make ok=false): a FeaturesConfiguration key that is not a feature of the element (or DataStreams); a per-stream key that is not a stream-option Uid of the element's datasource; a series type outside the allowed set; a condition-duration rule outside the allowed operators or missing its second value; a share outside 0-100. See GetReportConfigurationGuide for the shapes. Returns { ok,","inputSchema":{"type":"object","required":["reportId"],"properties":{"reportId":{"type":"string"}}},"logicalName":"validate_report","displayName":"validate_report","title":"validate_report","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_dashboard","description":"Get a dashboard: the stored document (its layout tree references widget guids) plus the resolved widget configurations, linked by guid.","inputSchema":{"type":"object","required":["dashboardId"],"properties":{"scope":{"type":"string","default":"Organisation"},"dashboardId":{"type":"string"}}},"logicalName":"get_dashboard","displayName":"get_dashboard","title":"get_dashboard","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_widget_catalog","description":"Get the compact catalog of widget types available for authoring (identifier, display name, group, description, stream slots, supported data/series types, default size). Does not include per-type default settings; use GetWidgetTypeDetails for those.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_widget_catalog","displayName":"get_widget_catalog","title":"get_widget_catalog","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pool_data_quality","description":"Get the last data quality information for a specific pool. Data quality scores range from 0-100%: Poor (0-60%), Fair (60-70%), Good (70-80%), Very good (80-90%), Excellent (90-100%).","inputSchema":{"type":"object","required":["poolKey"],"properties":{"poolKey":{"type":"string"}}},"logicalName":"get_pool_data_quality","displayName":"get_pool_data_quality","title":"get_pool_data_quality","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_pool","description":"Get details of a specific pool by its key.","inputSchema":{"type":"object","required":["poolKey"],"properties":{"poolKey":{"type":"string"}}},"logicalName":"get_pool","displayName":"get_pool","title":"get_pool","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"generate_uuid","description":"Generate one or more new UUIDs (v4) to use as report configuration identifiers (element-configuration Uid, datasource Uid, stream-option Uid, and per-stream feature map keys). Returns { data: [uuid, ...] }.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":1}}},"logicalName":"generate_uuid","displayName":"generate_uuid","title":"generate_uuid","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_station","description":"Get details of a specific station inside a pool.","inputSchema":{"type":"object","required":["poolKey","stationId"],"properties":{"poolKey":{"type":"string"},"stationId":{"type":"integer"}}},"logicalName":"get_station","displayName":"get_station","title":"get_station","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"register_stream","description":"Create a new stream in a specific pool and station.","inputSchema":{"type":"object","required":["poolKey","stationId","localIndex","streamName"],"properties":{"poolKey":{"type":"string"},"dataType":{"enum":["Double","String"],"type":"string","default":"Double"},"stationId":{"type":"integer"},"localIndex":{"type":"string"},"streamName":{"type":"string"}}},"logicalName":"register_stream","displayName":"register_stream","title":"register_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"recalculate_stream","description":"Mark a stream for recalculation.","inputSchema":{"type":"object","required":["streamKey"],"properties":{"streamKey":{"type":"string"}}},"logicalName":"recalculate_stream","displayName":"recalculate_stream","title":"recalculate_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_stations","description":"Get a list of stations inside a specific pool.","inputSchema":{"type":"object","required":["poolKey"],"properties":{"poolKey":{"type":"string"}}},"logicalName":"get_stations","displayName":"get_stations","title":"get_stations","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"change_tags_for_streams","description":"Add and remove tags for multiple streams at once.","inputSchema":{"type":"object","required":["streamKeys","tagsRemove","tagsAdd"],"properties":{"tagsAdd":{"type":"array","items":{"type":"string"}},"streamKeys":{"type":"array","items":{"type":"string"}},"tagsRemove":{"type":"array","items":{"type":"string"}}}},"logicalName":"change_tags_for_streams","displayName":"change_tags_for_streams","title":"change_tags_for_streams","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"add_widget","description":"Add a widget to a dashboard using a catalog widget type and stream keys. Get the type from GetWidgetCatalog; discover stream keys with GetPools then GetStreams, or SearchSemanticsNodes. Settings start from the type defaults (GetWidgetTypeDetails); tune them with the overrides parameter or afterwards with UpdateWidget. See GetDashboardConfigurationGuide for the layout and widget settings shapes. Returns the new widget guid and a dashboard link.","inputSchema":{"type":"object","required":["dashboardId","widgetType"],"properties":{"size":{"type":"string","default":""},"scope":{"type":"string","default":"Organisation"},"overrides":{"type":"string","default":""},"streamKeys":{"type":"string","default":"[]"},"widgetType":{"type":"string"},"dashboardId":{"type":"string"}}},"logicalName":"add_widget","displayName":"add_widget","title":"add_widget","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_report_configuration_guide","description":"Reference for building and editing report layouts and datasources: the Reports3ElementConfiguration and Reports3Datasource shapes, how grids/width and moving grids/elements work (see layoutEditing), FeaturesConfiguration keys, AdditionalParameters, and a complete worked example. Read this first before CreateReport or UpdateReport - the shapes are strict and the tools reject malformed input, so loading this guide once avoids repeated failures.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_report_configuration_guide","displayName":"get_report_configuration_guide","title":"get_report_configuration_guide","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"add_tags_to_pool","description":"Add tags to a specific pool.","inputSchema":{"type":"object","required":["poolKey","tags"],"properties":{"tags":{"type":"array","items":{"type":"string"}},"poolKey":{"type":"string"}}},"logicalName":"add_tags_to_pool","displayName":"add_tags_to_pool","title":"add_tags_to_pool","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_stream_additional","description":"Update additional configuration of a specific stream.","inputSchema":{"type":"object","required":["streamKey"],"properties":{"streamKey":{"type":"string"},"aggregateType":{"enum":["None","Average","Maximum","Minimum","Difference","Sum","Accum","First","Last"],"type":"string","default":"None"},"changeOfValue":{"type":"boolean","default":false},"isAccumulating":{"type":"boolean","default":false}}},"logicalName":"update_stream_additional","displayName":"update_stream_additional","title":"update_stream_additional","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_dashboard_configuration_guide","description":"Reference for authoring dashboards: the grid/widget layout shape, how to add widgets and grids and move them, the widget settings and stream workflow, enum values, scope and links. Read this first before any create/add/update/layout call - the shapes are strict and the tools reject malformed input, so loading this guide once avoids repeated failures.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_dashboard_configuration_guide","displayName":"get_dashboard_configuration_guide","title":"get_dashboard_configuration_guide","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_dashboards","description":"Search dashboards by name across the whole accessible tree (every level, not just one) and return the matches with their id, name and path so nested dashboards can be located. Case-insensitive substring match. Returns { data, url, total }.","inputSchema":{"type":"object","required":["search"],"properties":{"take":{"type":"integer","default":50},"scope":{"type":"string","default":"Organisation"},"search":{"type":"string"}}},"logicalName":"search_dashboards","displayName":"search_dashboards","title":"search_dashboards","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_date_time","description":"Get the current date and time in specified timezone. Example: Brisbane. Default is GMT.","inputSchema":{"type":"object","properties":{"timezone":{"type":"string","default":"GMT"}}},"logicalName":"get_date_time","displayName":"get_date_time","title":"get_date_time","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_aggregate_types","description":"Get all aggregate types as [{name, value}] for stream additional configuration.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_aggregate_types","displayName":"get_aggregate_types","title":"get_aggregate_types","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_stream_additional","description":"Get additional configuration of a specific stream.","inputSchema":{"type":"object","required":["streamKey"],"properties":{"streamKey":{"type":"string"}}},"logicalName":"get_stream_additional","displayName":"get_stream_additional","title":"get_stream_additional","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"duplicate_widget","description":"Duplicate a widget: copies its configuration and layout entry under a new guid, placed directly after the original (or into a target dashboard when targetDashboardId is given). Returns { guid, index, dashboardId }. Read GetDashboardConfigurationGuide first for the layout shapes and constraints.","inputSchema":{"type":"object","required":["dashboardId","widgetGuid"],"properties":{"scope":{"type":"string","default":"Organisation"},"widgetGuid":{"type":"string"},"dashboardId":{"type":"string"},"targetIndex":{"type":"integer","default":-1},"parentGridGuid":{"type":"string","default":""},"targetDashboardId":{"type":"string","default":""}}},"logicalName":"duplicate_widget","displayName":"duplicate_widget","title":"duplicate_widget","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_semantics_nodes","description":"Search for semantics nodes by name across all accessible sites. Returns a flat paginated list of exact matching nodes. Similar to GetSemanticsNodes but with search and pagination.","inputSchema":{"type":"object","required":["search"],"properties":{"skip":{"type":"integer","default":0},"take":{"type":"integer","default":20},"search":{"type":"string"}}},"logicalName":"search_semantics_nodes","displayName":"search_semantics_nodes","title":"search_semantics_nodes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"register_station","description":"Create a new station inside a specific pool.","inputSchema":{"type":"object","required":["poolKey","stationName"],"properties":{"poolKey":{"type":"string"},"stationName":{"type":"string"}}},"logicalName":"register_station","displayName":"register_station","title":"register_station","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"aggregate_stream_logs","description":"Aggregate logs for a stream with the specified aggregation type and period.","inputSchema":{"type":"object","required":["streamKey","from","to"],"properties":{"to":{"type":"string","format":"date-time"},"from":{"type":"string","format":"date-time"},"streamKey":{"type":"string"},"aggregationType":{"enum":["Avg","Sum","Diff","Min","Max","None","MinTimeOccurrence","MaxTimeOccurrence","First","Last","Accum","FirstTimeOccurrence","LastTimeOccurrence"],"type":"string","default":"Avg"},"aggregationPeriod":{"enum":["Hourly","Daily","Weekly","Monthly","Yearly","Total","Minute","Minutes15","Raw","Minutes10","Minutes30","Minutes5"],"type":"string","default":"Hourly"},"aggregationTypeString":{"enum":["None","Most","Least","First","Last"],"type":"string","default":"Last"}}},"logicalName":"aggregate_stream_logs","displayName":"aggregate_stream_logs","title":"aggregate_stream_logs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_tags_from_stream","description":"Delete tags from a specific stream.","inputSchema":{"type":"object","required":["streamKey","tags"],"properties":{"tags":{"type":"array","items":{"type":"string"}},"streamKey":{"type":"string"}}},"logicalName":"delete_tags_from_stream","displayName":"delete_tags_from_stream","title":"delete_tags_from_stream","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_streams","description":"Get a list of streams in a specific pool with pagination and optional search support.","inputSchema":{"type":"object","required":["poolKey"],"properties":{"desc":{"type":"boolean","default":false},"skip":{"type":"integer","default":0},"take":{"type":"integer","default":20},"search":{"type":"string","default":""},"orderBy":{"type":"string","default":""},"poolKey":{"type":"string"}}},"logicalName":"get_streams","displayName":"get_streams","title":"get_streams","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Bitpool-Autonomous-Building-Intelligence&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkuYml0cG9vbC5jb20vbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Bitpool-Autonomous-Building-Intelligence%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.bitpool.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Bitpool-Autonomous-Building-Intelligence%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.bitpool.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Bitpool+%E2%80%94+Autonomous+Building+Intelligence&connectorUrl=https%3A%2F%2Fapi.bitpool.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Bitpool-Autonomous-Building-Intelligence\" --url \"https://api.bitpool.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/bitpool-mcp-71f71314f1","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/bitpool-mcp-71f71314f1/tools/{tool}","mcpServerUrl":"https://api.bitpool.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/bitpool-mcp-71f71314f1?live=1"}