CustomerDashboard
Qué hace este MCP
Connects databases and spreadsheets to create charts, tables, and KPI dashboards, including customer-specific login-gated views and data filtering.
Herramientas
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'name', 'customerId'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Display name for this customer, for your own reference.'}, 'customerId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The identifier for this customer in your own data, for example the value in your orders.customer_id column. Must match exactly.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': "A dashboard of type 'customer'."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'customerRecordId', 'email'], 'properties': {'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'description': "The person's email address. Must be unique on this dashboard."}, 'password': {'type': 'string', 'maxLength': 200, 'minLength': 4, 'description': 'Leave empty to have a strong password generated.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'customerRecordId': {'type': 'string', 'minLength': 1, 'description': "The customer's id from list_customers."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name', 'type', 'config'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'A name for this connection, shown in the dashboard editor.'}, 'type': {'enum': ['postgres', 'mysql', 'mssql', 'oracle', 'aurora', 'redshift', 'bigquery', 'snowflake', 'googleSheets', 'api', 'custom'], 'type': 'string', 'description': 'Connector type. Call list_supported_data_connectors for the settings each one expects.'}, 'config': {'type': 'object', 'description': 'Connection settings for this connector type, for example { host, port, database, username, password, ssl } for postgres. Credentials are stored encrypted at rest and are never returned by read tools.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Dashboard name.'}, 'type': {'enum': ['internal', 'customer'], 'type': 'string', 'description': "'customer' for a per-customer, login-gated dashboard; 'internal' for a single shared dashboard. Defaults to 'internal'. This cannot be changed later."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'View name, shown on the tab.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['viewId', 'dataSourceId', 'title', 'query', 'visualizationType'], 'properties': {'query': {'type': 'string', 'minLength': 1, 'description': 'SQL, or an A1 range for Google Sheets. On a customer dashboard include :customer_id, for example "WHERE customer_id = :customer_id".'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Widget title.'}, 'layout': {'type': 'object', 'required': ['x', 'y', 'width', 'height'], 'properties': {'x': {'type': 'integer', 'maximum': 11, 'minimum': 0}, 'y': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'integer', 'maximum': 12, 'minimum': 1}, 'height': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'description': 'Position and size on the 12-column grid. Omit on create and a free slot is chosen for you.'}, 'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id the widget belongs to.'}, 'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Data source the query runs against.'}, 'visualizationType': {'enum': ['table', 'number', 'lineChart', 'barChart', 'stackedBarChart', 'stackedLineChart', 'comboChart', 'scatterChart', 'histogram', 'pivotTable', 'pieChart'], 'type': 'string'}, 'visualizationConfig': {'type': 'object', 'description': 'Field mappings and display options for this visualization type. Call list_widget_types for the keys each type expects.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'allowSharedAcrossAllCustomers': {'type': 'boolean', 'description': 'Only for customer dashboards. Set true, after the user explicitly confirms, to allow a query with no per-customer filter so every customer sees identical rows.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'customerRecordId'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Set to true only after the user has seen what will be deleted and explicitly agreed. Calling without it returns a preview instead of deleting.'}, 'confirmName': {'type': 'string', 'description': 'The exact current name of the item being deleted, copied from the preview. Required alongside confirm.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'customerRecordId': {'type': 'string', 'minLength': 1, 'description': "The customer's id from list_customers."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'customerRecordId', 'userId'], 'properties': {'userId': {'type': 'string', 'minLength': 1, 'description': "The login's id."}, 'confirm': {'type': 'boolean', 'description': 'Set to true only after the user has seen what will be deleted and explicitly agreed. Calling without it returns a preview instead of deleting.'}, 'confirmName': {'type': 'string', 'description': 'The exact current name of the item being deleted, copied from the preview. Required alongside confirm.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'customerRecordId': {'type': 'string', 'minLength': 1, 'description': "The customer's id from list_customers."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Set to true only after the user has seen what will be deleted and explicitly agreed. Calling without it returns a preview instead of deleting.'}, 'confirmName': {'type': 'string', 'description': 'The exact current name of the item being deleted, copied from the preview. Required alongside confirm.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dataSourceId'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Set to true only after the user has seen what will be deleted and explicitly agreed. Calling without it returns a preview instead of deleting.'}, 'confirmName': {'type': 'string', 'description': 'The exact current name of the item being deleted, copied from the preview. Required alongside confirm.'}, 'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Data source id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'viewId'], 'properties': {'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id.'}, 'confirm': {'type': 'boolean', 'description': 'Set to true only after the user has seen what will be deleted and explicitly agreed. Calling without it returns a preview instead of deleting.'}, 'confirmName': {'type': 'string', 'description': 'The exact current name of the item being deleted, copied from the preview. Required alongside confirm.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['viewId', 'widgetId'], 'properties': {'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id.'}, 'confirm': {'type': 'boolean', 'description': 'Set to true only after the user has seen what will be deleted and explicitly agreed. Calling without it returns a preview instead of deleting.'}, 'widgetId': {'type': 'string', 'minLength': 1, 'description': 'Widget id.'}, 'confirmName': {'type': 'string', 'description': 'The exact current name of the item being deleted, copied from the preview. Required alongside confirm.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'includeWidgets': {'type': 'boolean', 'description': 'Include every widget on every view. Defaults to true.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dataSourceId'], 'properties': {'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Data source id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dataSourceId'], 'properties': {'table': {'type': 'string', 'description': 'Return only this table. Useful when a database has many tables.'}, 'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Data source id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'includeUsers': {'type': 'boolean', 'description': "Include each customer's login email addresses."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['viewId'], 'properties': {'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'access': {'enum': ['public', 'protected'], 'type': 'string', 'description': "For internal dashboards: 'public' means anyone with the link, 'protected' requires a shared username and password. Ignored for customer dashboards, which always require a per-customer login. Defaults to 'protected'."}, 'password': {'type': 'string', 'maxLength': 200, 'minLength': 4, 'description': "Shared password, for 'protected' access. Leave empty to have one generated and returned once."}, 'username': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "Shared username, for 'protected' access."}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'viewIds'], 'properties': {'viewIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'minItems': 1, 'description': 'Every view id on this dashboard, in the order you want.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dataSourceId', 'query'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Rows to return. Defaults to 25.'}, 'query': {'type': 'string', 'minLength': 1, 'description': "The SQL to run, or an A1 range for Google Sheets. Use :customer_id where a customer's own identifier belongs."}, 'customerId': {'type': 'string', 'description': 'The id of a customer (from list_customers) to run the query as. Required when the query uses :customer_id, unless dashboardId is given.'}, 'dashboardId': {'type': 'string', 'description': 'A customer dashboard whose configured test customer should be used instead of a real customer. Only needed when the query uses :customer_id.'}, 'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Data source id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'date': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'locale': {'type': 'string', 'maxLength': 20, 'description': 'BCP 47 locale such as en-US, en-GB or de-DE.'}, 'number': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'currency': {'type': 'object', 'description': 'For example { "currency": "USD", "decimals": 2 }.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'datetime': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'duration': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'percentage': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'nullDisplay': {'type': 'string', 'maxLength': 20, 'description': 'What to show for an empty value, for example a dash.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'backgroundColor', 'surfaceColor', 'primaryTextColor', 'secondaryTextColor', 'primaryBrandColor'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'surfaceColor': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$', 'description': 'Background of each widget card.'}, 'backgroundColor': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$', 'description': 'Page background.'}, 'primaryTextColor': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$', 'description': 'Main text.'}, 'chartSeriesColors': {'type': 'array', 'items': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$'}, 'maxItems': 20, 'description': 'Explicit chart series palette. Leave empty to derive one from the brand colours.'}, 'primaryBrandColor': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$', 'description': 'Main accent, used as the first chart series colour.'}, 'secondaryTextColor': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$', 'description': 'Muted and secondary text.'}, 'secondaryBrandColor': {'type': 'string', 'pattern': '^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$', 'description': 'Secondary accent, used for the second chart series.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['viewId', 'layouts'], 'properties': {'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id.'}, 'layouts': {'type': 'array', 'items': {'type': 'object', 'required': ['widgetId', 'layout'], 'properties': {'layout': {'type': 'object', 'required': ['x', 'y', 'width', 'height'], 'properties': {'x': {'type': 'integer', 'maximum': 11, 'minimum': 0}, 'y': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'integer', 'maximum': 12, 'minimum': 1}, 'height': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'description': 'Position and size on the 12-column grid. Omit on create and a free slot is chosen for you.'}, 'widgetId': {'type': 'string', 'minLength': 1}}}, 'minItems': 1, 'description': 'The widgets to move, with their new positions.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'type': {'enum': ['postgres', 'mysql', 'mssql', 'oracle', 'aurora', 'redshift', 'bigquery', 'snowflake', 'googleSheets', 'api', 'custom'], 'type': 'string', 'description': 'Connector type. Call list_supported_data_connectors for the settings each one expects.'}, 'config': {'type': 'object', 'description': 'Connection settings for this connector type, for example { host, port, database, username, password, ssl } for postgres. Credentials are stored encrypted at rest and are never returned by read tools.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Test a saved data source. Omit to test new settings.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'customerRecordId'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'customerId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'New identifier from your own data. This changes which rows this customer can see.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'customerRecordId': {'type': 'string', 'minLength': 1, 'description': "The customer's id from list_customers (not their customerId)."}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}, 'testCustomerId': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}], 'description': 'A customer identifier from your own data, used to preview a customer dashboard before real customers exist. This is bound to :customer_id during previews only.'}, 'viewRotationSeconds': {'anyOf': [{'type': 'integer', 'maximum': 86400, 'minimum': 0}, {'type': 'null'}], 'description': 'Seconds each view is shown before rotating to the next, for wall displays. 0 or null turns rotation off.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dataSourceId'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'config': {'type': 'object', 'description': 'Connection settings for this connector type, for example { host, port, database, username, password, ssl } for postgres. Credentials are stored encrypted at rest and are never returned by read tools.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'dataSourceId': {'type': 'string', 'minLength': 1, 'description': 'Data source id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId', 'viewId', 'name'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'New view name.'}, 'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id.'}, 'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['viewId', 'widgetId'], 'properties': {'query': {'type': 'string', 'minLength': 1}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'layout': {'type': 'object', 'required': ['x', 'y', 'width', 'height'], 'properties': {'x': {'type': 'integer', 'maximum': 11, 'minimum': 0}, 'y': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'width': {'type': 'integer', 'maximum': 12, 'minimum': 1}, 'height': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'description': 'Position and size on the 12-column grid. Omit on create and a free slot is chosen for you.'}, 'viewId': {'type': 'string', 'minLength': 1, 'description': 'View id the widget belongs to.'}, 'widgetId': {'type': 'string', 'minLength': 1, 'description': 'Widget id.'}, 'dataSourceId': {'type': 'string', 'minLength': 1}, 'visualizationType': {'enum': ['table', 'number', 'lineChart', 'barChart', 'stackedBarChart', 'stackedLineChart', 'comboChart', 'scatterChart', 'histogram', 'pivotTable', 'pieChart'], 'type': 'string'}, 'visualizationConfig': {'type': 'object', 'description': 'Replaces the whole configuration object, so include every key you want to keep.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'allowSharedAcrossAllCustomers': {'type': 'boolean', 'description': 'Only for customer dashboards. Set true, after the user explicitly confirms, to allow a query with no per-customer filter.'}}}
Esquema de entrada
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['dashboardId'], 'properties': {'dashboardId': {'type': 'string', 'minLength': 1, 'description': 'Dashboard id.'}}}
Cambios recientes en herramientas
Servidores MCP similares
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
synter-ads
Manages cross-platform advertising campaigns, audiences, tracking, creative, landing pages, campaign audits, technology intellige…
Stratalize Finance
Provides financial, macroeconomic, banking, credit, commodities, M&A, ESG, labor, and regulatory benchmarks for analysis and plan…
Stratalize Healthcare
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Governance
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Oracle
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Intelligence
Provides vendor, market, SaaS, workforce, government contract, public company, regulatory, competitive, and AI-brand intelligence…
Stratalize Real Estate
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…