PAGES
← all tools
◆ Threat Intelligence

MSTICPy

v3.1.0 open-source

MSTICPy is a Python library for InfoSec investigation and hunting in Jupyter Notebooks, supporting data queries, threat intelligence enrichment, and visualization.

Summary

MSTICPy is an open-source Python library for InfoSec investigation and hunting inside Jupyter Notebooks, free to use and imported directly into a notebook rather than run as a standalone application. It lets analysts query log data from multiple sources — Microsoft Sentinel, Splunk, Microsoft Defender, Microsoft GraphMicrosoft GraphMicrosoft's unified REST API for accessing data and services across Microsoft 365, Azure AD, and related cloud products, giving cyber tools a single authenticated endpoint to query users, emails, files, and sign-in logs., Cybereason, Prisma Cloud, OpenObserve and others — then enrich it with threat intelligence, geolocation and Azure resource data, extract indicators of activity, and visualize results through interactive timelines, process trees and Morph Charts. It is built for SOCSOCA security operations center, the team or function that monitors threats, investigates alerts and coordinates incident response. Its work can be internal, outsourced or shared. analysts and threat hunters who write notebooks rather than dashboards, and it grew out of Microsoft's own MSTIC team authoring Sentinel notebooks before extending to other SIEMSIEMSecurity information and event management, collecting logs from many systems and correlating events to find suspicious activity. Analysts use it to investigate alerts and incidents. platforms.

MSTICPy is a Python library for InfoSec investigation and hunting in Jupyter Notebooks, supporting data queries, threat intelligence enrichment, and visualization.

How MSTICPy helps

Which hosts or accounts in my logs were also seen in a threat intelligence feed?

pulls indicators from the queried log data and checks them against configured threat intelligence providers, returning matches with confidence scores and source attribution

Where in the world did this set of IP addresses connect from?

enriches the IPs with geolocation lookups and plots them so clusters of unexpected countries or ASNs stand out

Which sessions or events in this dataset are behaving differently from the rest?

runs anomalous session detection, time series decomposition, or outlier scoring (including multi-feature and ensemble methods) over the dataframe and flags the records that fall outside the normal pattern

What actually happened on this host, in what order, across these different log sources?

builds an interactive timeline or process tree from the combined query results so the sequence of events is visible without manually joining tables

Can I ask the same investigative questions whether my logs sit in Sentinel, Splunk, Defender, or Cybereason?

runs the same query and enrichment workflow against whichever provider is configured, returning results as a common pandas dataframe so downstream analysis doesn't change with the source

all 23 features, with the evidence for each →

Languages

Not documented

Features

23 capabilities · 2 backed by code, an API document or a real run

Built from MSTICPy's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

  • MSTICPy covers 2 of the 8 investigation and response capabilities we track.

What MSTICPy offers you

  • Built-in AI assistant1
  • ML-based detection1
  • Natural-language query1
  • Plugin system1
  • Python scripting support1
  • Scripting API1
  • Scripting language support1
  • Command-line interface
  • REST API
All capabilities 23 capabilities
Visualization and mapping shipped Visualizes investigation timelines, graphs, process trees, and maps directly from data structures. 27 releases · 9 other sources · first seen Apr 2019

Shared capability: Forensic timeline analysis

release 27 total

  • Cybereason driver's data flattening (_flatten_simple_values, _flatten_element_values) reworked for more reliable output, with extra fields now mapped to the result DataFrame. v3.0.0 · Apr 2026 · source · release history
  • Adds RRCF (Random Cut Forest) outlier detection for ensemble-based anomaly scoring on telemetry data. v2.17.0 · Sep 2025 · source · release history
  • Adds multi-dimensional plot support to analysis.outliers via plot_outlier_results, enabling visual interpretation of Isolation Forest anomaly detection across N-dimensional feature sets. v2.15.0 · Dec 2024 · source · release history
  • Adds a max-retry parameter to prevent HTTP 429 (rate-limit) errors during query execution. v2.14.0 · Oct 2024 · source · release history
  • Adds schema parameter to mp_plot_process and related process tree functions to accept dictionary mappings instead of only ProcSchema objects v2.1.3 · Oct 2022 · source · release history
  • Adds plot_map function in msticpy.vis.foliummap for direct DataFrame-to-map plotting with layer and icon control v2.0.0 · Jul 2022 · source · release history

example 9 total

  • Enable process tree visualization using standard Windows process GUIDs instead of parsing hex or decimal integers. process_tree(ProcessID='{123e4567-e89b-12d3-a456-426614174000}') v2.1.5 · Nov 2022 · source
  • Map custom log fields to the process tree schema using a dictionary cust_schema = { 'process_name': 'ImageFileName', 'process_id': 'PID', 'parent_id': 'PPID', 'time_stamp': 'CreateTime' } df.mp_plot_process(schema=cust_schema) v2.1.3 · Oct 2022 · source
  • Visualize an investigation timeline directly from a Pandas DataFrame df.mp_plot.incident_graph(timeline=True) v1.5.0 · Nov 2021 · source
  • Display a timeline with reference events for host logons. from msticpy.nbtools.timeline_duration import display_timeline_duration display_timeline_duration( host_logons, group_by="Account", ref_events=host_logons.sample(3), ref_col="TargetUserName", ) v1.3.0 · Jul 2021 · source
  • Visualize communication duration grouped by source, destination, and protocol. az_net_flows_df.mp_timeline.plot_duration( group_by=["SrcIP", "DestIP", "L7Protocol"] ) v1.3.0 · Jul 2021 · source
  • Render security event logs as an interactive timeline directly from a pandas DataFrame without explicit function calls. my_events_df.mp_timeline.plot() v0.3.2 · Feb 2020 · source
Threat intelligence lookups shipped Queries multiple threat intelligence providers and pivots on indicators of compromise. 26 releases · 8 other sources · first seen Aug 2019

Shared capability: Threat indicator matching

release 26 total

  • Adds the ScanMalware threat-intelligence provider supporting verdict lookups for hosts and URLs, passive-DNS context for IP addresses, and quick query modes for bulk lookups — no API credentials required.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ v3.1.0 · Sep 2026 · source · release history
  • Adds the ScanMalware threat-intelligence provider supporting verdict lookups for DNS names, hostnames, URLs, IPv4, and IPv6 observables, passive-DNS context for addresses, and quick query modes for lower-overhead bulk lookups — no configured API credentials required. v3.1.0 · Sep 2026 · source · release history
  • Adds Cyberint as a new Threat Intelligence provider for IoC lookup via the Cyberint API. v2.16.0 · Feb 2025 · source · release history
  • Supports Maxmind GeoIPLite's new AccountID-based download authentication mechanism via msticpyconfig.yaml. v2.14.0 · Oct 2024 · source · release history
  • Adds a new Threat Intelligence provider for BinaryEdge, expanding TI lookup coverage. v2.13.0 · Sep 2024 · source · release history
  • VirusTotalQueries class provides Virus Total Search Capabilities v2.10.0 · Feb 2024 · source · release history

example 8 total

  • Side-load custom threat intelligence providers from specific directories. import msticpy as mp mp.load_plugins(plugin_paths=["./my_custom_providers", "./shared_plugins"]) v2.5.0 · May 2023 · source
  • Defang or refang IOCs using the new utility functions. from msticpy.common.utility import defang_ioc, refang_ioc defanged = defang_ioc('http://evil.com') refanged = refang_ioc('hXXp://evil[.]com') v2.2.0 · Nov 2022 · source
  • Fetch threat intel data using the new IntSights provider import msticpy from msticpy.provider.IntSightsProvider import IntSightsProvider provider = IntSightsProvider(api_key='your-key') print(provider.indicators.get(indicator='example.com')) v1.7.0 · Feb 2022 · source
  • Query risk intelligence for an IP and run pivot functions on DNS resolutions ( Dns.RiskIQ.resolutions("jquery.su") .query("recordtype=='A'") .mp_pivot.run(Dns.RiskIQ.reputation, column='resolve', join='left') .mp_pivot.run(IpAddress.RiskIQ.resolutions, column='resolve',… v1.5.0 · Nov 2021 · source
  • Query threat intel using the new Greynoise provider within a ThreatIntel lookup context. from msticpy.sectools.threat_intelligence import ThreatIntel with ThreatIntel() as ti: results = ti.query_provider('Greynoise', '1.2.3.4') v1.1.0 · May 2021 · source
  • Install the specific extras package required to access the new VirusTotal V3 API module. pip install msticpy[vt3] v0.8.5 · Oct 2020 · source
Configuration management shipped Manages tool configuration, workspace selection, and environment-specific settings. 22 releases · 5 other sources · first seen Aug 2019

release 22 total

  • Minimum versions have been raised for IPython, ipywidgets, Panel, Folium, Beautiful Soup, and dnspython — review application constraints if they pin older releases of these packages. v3.1.0 · Sep 2026 · source · release history
  • Adds Python 3.14 to the supported package classifiers and CI test matrix while retaining support for Python 3.10 through 3.13. v3.1.0 · Sep 2026 · source · release history
  • Adds mp.load_user_session() to declaratively initialize and connect multiple data providers and components from a YAML file, publishing them directly into the notebook namespace. v2.14.0 · Oct 2024 · source · release history
  • VelociraptorLogs data environment added to read local exported Velociraptor logs into pandas DataFrames. v2.6.0 · Jul 2023 · source · release history
  • The mp_az_auth_tenant_id parameter is deprecated and unsupported in new providers, replaced by tenant_id v2.5.0 · May 2023 · source · release history
  • The mp_az_auth parameter is deprecated in favor of auth_types (will be removed in a future release) v2.5.0 · May 2023 · source · release history

example

  • Configure OpenObserve credentials in msticpyconfig.yaml, storing the password in Key Vault, before connecting from any notebook. DataProviders: OpenObserve: Args: connection_str: "https://your-openobserve-host:5080" user: "your-username" password: KeyVault: verify: true timeout: 300 v3.0.0 · Apr 2026 · source
  • Bootstrap a notebook's full provider stack from a YAML file instead of writing repetitive connect calls — useful in automation or shared notebook templates. import msticpy as mp mp.init_notebook() mp.load_user_session("my_config.yaml", verbose=True) # qry_prov_sent, qry_prov_md, mssentinel now available as variables v2.14.0 · Oct 2024 · source
  • Configure MSTICPy for Azure China or Government clouds via the settings editor. # Open MpConfigEdit and navigate to Azure tab # Select 'Azure China', 'Azure Germany', or 'US Government' # from the cloud provider dropdown menu v1.4.0 · Sep 2021 · source
  • Check if the current msticpy installation is up to date with PyPI. import msticpy msticpy.check_version() v0.6.0 · Jun 2020 · source
  • Access configuration via the new top-level settings attribute. import msticpy as m config = m.settings.get('TIProvider', {}) 0.2.7 · Oct 2019 · source
Endpoint and cloud provider support shipped Provides data access for Microsoft Defender, Cybereason, Kusto, and various cloud environments. 16 releases · 10 other sources · first seen Dec 2019

release 16 total

  • Cybereason driver gains automatic HTTP 429 rate-limit retry with backoff, additional query parameters (page_size, timeout, retry_on_error), improved timeout handling, and better error reporting via MsticpyDataQueryError. v3.0.0 · Apr 2026 · source · release history
  • New OpenObserve data provider enables querying OpenObserve instances directly via mp.QueryProvider('OpenObserve'), with support for time-range parameters, result limits, timezone config, and custom timeouts. v3.0.0 · Apr 2026 · source · release history
  • Adds experimental Azure Monitor search driver with support for custom tables (tracked as issue #831). v2.16.0 · Feb 2025 · source · release history
  • Adds PrismaCloudDriver for querying Prisma Cloud assets, configurations, and events via its CSPM API within MSTICPy workflows. v2.16.0 · Feb 2025 · source · release history
  • Adds support for Microsoft Defender Graph API by using the M365DGraph DataEnvironment name in the data provider v2.9.0 · Nov 2023 · source · release history
  • mp.QueryProvider("OSQueryLogs") enables importing OSQuery JSON logs into dataframes for forensic analysis v2.5.0 · May 2023 · source · release history

example 10 total

  • Query an OpenObserve instance for error logs in the last 24 hours — useful for integrating OpenObserve into existing MSTICPy investigation notebooks. import msticpy as mp mp.init_notebook() qry_prov = mp.QueryProvider("OpenObserve") qry_prov.connect( connection_str="https://localhost:5080", user="admin", password="[PLACEHOLDER]", verify=True, ) df… v3.0.0 · Apr 2026 · source
  • Load and query local Velociraptor forensic logs using the new VelociraptorLogs provider. qry_prov = QueryProvider("VelociraptorLogs", data_paths=["~/my_logs"]) qry_prov.connect() tables = qry_prov.list_queries() process_info = qry_prov.vc_prov.velociraptor.Windows_Forensics_ProcessInfo() v2.6.0 · Jul 2023 · source
  • Import OSQuery forensic logs from local directories into a QueryProvider. qry_prov = mp.QueryProvider("OSQueryLogs", data_paths=["/var/osquery/logs"]) qry_prov.connect() df = qry_prov.osquery.processes() v2.5.0 · May 2023 · source
  • Query an MDE provider with a custom timeout to avoid default hanging. from msticpy.providers.mde_provider import MDEProvider mde = MDEProvider() results = mde.my_query(params={'limit': 100}, timeout=30) v1.8.0 · May 2022 · source
  • Query Cybereason for host data using the new provider import msticpy from msticpy.providers.cybereason.CybereasonProvider import CybereasonProvider provider = CybereasonProvider(host='https://cybereason-api') hosts = provider.hosts.get_all() print(hosts) v1.7.0 · Feb 2022 · source
  • Query Azure infrastructure directly using KQL within a Jupyter environment. from msticpy.data import DataProvider provider = DataProvider(query_provider='AzureResourceGraph') df = provider.query('Resources | where type =~ "microsoft.compute/virtualmachines"') v1.2.1 · Jun 2021 · source
Microsoft Sentinel automation shipped Creates, searches, and manages security items within Microsoft Sentinel workspaces. 16 releases · 9 other sources · first seen Dec 2019

release 16 total

  • Adds delete_watchlist_item method to the MS Sentinel API integration v2.7.0 · Aug 2023 · source · release history
  • Introduces an ipywidgets-based QueryEditor to edit and manage KQL query templates with parameter definitions and metadata v2.7.0 · Aug 2023 · source · release history
  • max_threads parameter on QueryProvider controls concurrent thread count (default 4, configurable via init). v2.6.0 · Jul 2023 · source · release history
  • QueryProvider.add_connection() enables running queries across multiple Sentinel/Defender/Splunk instances in parallel. v2.6.0 · Jul 2023 · source · release history
  • download_and_write_sentinel_queries(query_type="Hunting") downloads detection/hunting queries from the Sentinel repo for use with MSTICPy v2.5.0 · May 2023 · source · release history
  • Adds sentinel.list_dynamic_summaries(), create_dynamic_summary(), get_dynamic_summary(), and new_dynamic_summary() to manage Microsoft Sentinel dynamic summaries in preview v2.3.0 · Jan 2023 · source · release history

example 9 total

  • Ensure your analysis completes fully by failing the query immediately if it hits a pagination limit. qry_prov.exec_query(query_string, fail_if_partial=True) v2.11.0 · Mar 2024 · source
  • Initialize the new query editor to manage KQL templates. from msticpy.nbtools import QueryEditor QueryEditor() v2.7.0 · Aug 2023 · source
  • Run queries across multiple Sentinel workspaces in parallel using the new add_connection and max_threads capabilities. qry_prov = QueryProvider("MSSentinel", max_threads=10) qry_prov.connect(workspace="WS1") qry_prov.add_connection(workspace="WS2", alias="WS2") results = qry_prov.exec_query(query="SecurityAlert |… v2.6.0 · Jul 2023 · source
  • Download hunting queries from the MS Sentinel repository to local YAML files. from msticpy.data.drivers.sentinel_query_reader import download_and_write_sentinel_queries download_and_write_sentinel_queries(query_type="Hunting", yaml_output_folder="./sentinel_hunt") v2.5.0 · May 2023 · source
  • Create and persist a Sentinel summary to archive automated notebook results for later retrieval. sentinel.connect() sentinel.create_dynamic_summary( name='My_XYZ_Summary', description='Summarizing the running of the XYZ job.', data=summary_df, tactics=['discovery', 'exploitation'],… v2.3.0 · Jan 2023 · source
  • Define and register a reusable parameterized KQL query in a notebook without editing static query files. qry_prov = mp.QueryProvider('MSSentinel') query = """ SecurityEvent | where EventID == {event_id} | where TimeGenerated between (datetime({start}) .. v2.3.0 · Jan 2023 · source
Authentication and token management shipped Manages authentication tokens and secrets securely across various providers. 11 releases · first seen Oct 2020

release 11 total

  • Microsoft Sentinel connections now support certificate-based authentication as an alternative to client secrets, improving security for automated pipelines and service accounts. v3.0.0 · Apr 2026 · source · release history
  • Adds certificate authentication support for OData-based drivers (Microsoft Defender and Microsoft Graph). v2.16.0 · Feb 2025 · source · release history
  • Config key authentication.token in msticpyconfig.yaml enables security token auth for SplunkUploader v2.10.0 · Feb 2024 · source · release history
  • Allows passing an AzureCredential object directly to the credential parameter of AzureData.connect() and MicrosoftSentinel.connect() methods for authentication v2.7.0 · Aug 2023 · source · release history
  • Replaces MSAL auth plaintext file cache with a memory cache, removing the ability to use plaintext token cache due to security concerns. v1.8.2 · May 2022 · source · release history
  • The MSAL auth plaintext file cache is replaced with a memory cache; the previous mechanism for persisting tokens to disk is removed. v1.8.2 · May 2022 · source · release history
Query management and templating shipped Allows defining, registering, and managing parameterized KQL query templates with metadata and a dedicated UI editor within notebooks. 6 releases · 3 other sources · first seen May 2019

Also counts toward: Scripting API

release

  • Introduces an ipywidgets-based QueryEditor to edit and manage KQL query templates with parameter definitions and metadata v2.7.0 · Aug 2023 · source · release history
  • Adds QueryProvider.search() method for finding queries by name, properties, table, or parameter using regex-like terms v2.3.0 · Jan 2023 · source · release history
  • Adds QueryProvider.add_custom_query() API to register ad-hoc parameterized queries at runtime with defined parameters v2.3.0 · Jan 2023 · source · release history
  • Adds QueryProvider.Param constructor for defining query parameter metadata (name, type, description, default) v2.3.0 · Jan 2023 · source · release history
  • In query templates you can now express date parameters (and query defaults) as a pos/neg number relative to current date or a KQL-like range (-30d, 15h, etc.) 0.2.7 · Oct 2019 · source · release history
  • Runtime parameter replacement for query definitions v0.1.8 · May 2019 · source · release history

example

  • Initialize the new query editor to manage KQL templates. from msticpy.nbtools import QueryEditor QueryEditor() v2.7.0 · Aug 2023 · source
  • Define and register a reusable parameterized KQL query in a notebook without editing static query files. qry_prov = mp.QueryProvider('MSSentinel') query = """ SecurityEvent | where EventID == {event_id} | where TimeGenerated between (datetime({start}) .. v2.3.0 · Jan 2023 · source
  • Find all queries in a provider that match specific table names or parameter keywords. matches = qry_prov.search( search='syslog', table='Syslog', param='hostname' ) v2.3.0 · Jan 2023 · source
Data and utility modules shipped Provides helper modules for common data operations including IP address validation, domain/DNS/URL parsing, syslog log analysis, and command-line inspection. 5 releases · 3 other sources · first seen Oct 2019

release

  • Code that directly indexes the dictionary returned by mp_ua_header() must replace ["UserAgent"] with ["User-Agent"]; code that passes the complete dictionary as HTTP headers does not need to change. The raw identifier is available as MSTICPY_USER_AGENT. v3.1.0 · Sep 2026 · source · release history
  • Adds functions to obfuscate/hash data to protect PII v0.8.0 · Sep 2020 · source · release history
  • base64unpack adds a pandas extension for unpacking Base64 data in DataFrames plus an IPython %%b64 magic for notebook cells v0.3.2 · Feb 2020 · source · release history
  • Added ip_utils module for common IP Address operations 0.2.7 · Oct 2019 · source · release history
  • Added cmd_line module for syslog CMD analysis 0.2.7 · Oct 2019 · source · release history

example

  • Serialize a list of MSTICPy entities to JSON for external storage or transmission without manual mapping. import json from msticpy.sectools.entities import Entity # Assuming 'my_entities' is a list of entity instances json_output = json.dumps(my_entities, cls=Entity.JSONEncoder) print(json_output) v1.4.5 · Oct 2021 · source
  • Obfuscate sensitive data fields before logging or export from msticpy.data.query_browser import obfuscate_data obfuscated = obfuscate_data(input_data) v0.8.0 · Sep 2020 · source
  • Unpack base64 encoded strings in a notebook cell using the new magic command. %%b64 c2VjcmV0IGRhdGE= v0.3.2 · Feb 2020 · source
Package download verified Downloads a specific Python package version as a zip file to a chosen directory. 3 releases · 4 other sources · first seen Nov 2021

release

  • Adds refresh and delete functions in the keyring module for managing cached secrets v1.7.5 · Mar 2022 · source · release history
  • Preview support for the Kusto query provider targeting Azure Data Explorer clusters v1.5.0 · Nov 2021 · source · release history
  • Sovereign cloud support added to the Microsoft Graph provider v1.5.0 · Nov 2021 · source · release history

command line

Sentinel query repository access shipped Enables downloading, loading, and utilizing detection and hunting queries directly from the Microsoft Sentinel repository. 5 releases · 1 other source · first seen Jan 2020

Also counts toward: Python scripting support

release

  • The ThreatIntelIndicators BYOTI provider now supports both old and new table schemas, enabling seamless operation across Sentinel workspaces with either schema version. v3.0.0 · Apr 2026 · source · release history
  • download_and_write_sentinel_queries(query_type="Hunting") downloads detection/hunting queries from the Sentinel repo for use with MSTICPy v2.5.0 · May 2023 · source · release history
  • Adds query_browser module for interactive data exploration v0.8.0 · Sep 2020 · source · release history
  • Adds two new Azure Sentinel query templates: linux_logon_failures and host_linux_logons under azure_sentinel.queries.logon_queries v0.4.1 · May 2020 · source · release history
  • Template queries for MDATP for hunting and standard entities v0.3.0 · Jan 2020 · source · release history

example

  • Download hunting queries from the MS Sentinel repository to local YAML files. from msticpy.data.drivers.sentinel_query_reader import download_and_write_sentinel_queries download_and_write_sentinel_queries(query_type="Hunting", yaml_output_folder="./sentinel_hunt") v2.5.0 · May 2023 · source
Data visualization controls shipped Provides configurable data viewer components such as Tabulator and base64 cell export for enhanced notebook interaction. 5 releases · 1 other source · first seen Sep 2019

release

  • Add bearer token auth to splunk driver - Supports authentication via security token instead of username/password v2.8.0 · Oct 2023 · source · release history
  • Panel Tabulator is now available as a data viewer control, configurable via initialization parameters v2.5.0 · May 2023 · source · release history
  • Adds DataViewer control for sorting, filtering, and browsing pandas DataFrames in notebooks v1.2.1 · Jun 2021 · source · release history
  • New progress_bar widget added to the nbwidgets module for Jupyter notebook progress visualization v0.2.8 · Dec 2019 · source · release history
  • Adds SelectSubset widget in nbwidgets allowing users to pick from one list and add to selected subset v0.2.6 · Sep 2019 · source · release history

example

  • Visualize and filter a pandas DataFrame interactively using the new Bokeh widget. from msticpy.vis import DataViewer viewer = DataViewer(df) viewer.show() v1.2.1 · Jun 2021 · source
Dependency updates and removals shipped Manages the evolution of package dependencies, including major version upgrades and the removal of deprecated extras or packages. 4 releases · first seen Apr 2021

release

  • The sql2kql extra now requires mo-sql-parsing>=11,<12 (previously >=8,<9); environments using sql_to_kql must be updated. v3.0.0 · Apr 2026 · source · release history
  • MSTICPY now requires pandas 1.1.5 as a minimum v1.3.1 · Aug 2021 · source · release history
  • Adds Pandas accessors filter_cols, filter, sort, list_to_rows, and parse_json to pivot data frames v1.1.0 · May 2021 · source · release history
  • Adds msticpy.data.sql_to_kql module to translate ANSI SQL queries to KQL. v1.0.0 · Apr 2021 · source · release history
Anomaly detection shipped Detects statistical outliers in telemetry data using Isolation Forest or Random Cut Forest algorithms to identify anomalies across multiple feature sets. 4 releases · first seen May 2020

Also counts toward: ML-based detection

release

  • Adds RRCF (Random Cut Forest) outlier detection for ensemble-based anomaly scoring on telemetry data. v2.17.0 · Sep 2025 · source · release history
  • Adds multi-dimensional plot support to analysis.outliers via plot_outlier_results, enabling visual interpretation of Isolation Forest anomaly detection across N-dimensional feature sets. v2.15.0 · Dec 2024 · source · release history
  • msticpy.anomaly.markov provides anomalous sequence detection using Markov Chain analysis for session commands/patterns v0.5.0 · May 2020 · source · release history
  • msticpy.anomalymap.AnomalyDetection enables Markov Chain-based sequence analysis to detect anomalous command patterns in sessions v0.4.1 · May 2020 · source · release history
Context provider integrations shipped Connects to external platforms such as ServiceNow for context enrichment. 2 releases · 2 other sources · first seen Nov 2022

release

  • mp.load_plugins(plugin_paths=...) allows side-loading private data, TI, and context providers alongside built-in ones v2.5.0 · May 2023 · source · release history
  • Adds ContextProviders config section in msticpyconfig.yaml with a ServiceNow provider for querying ServiceNow via the new generic context lookup API. v2.2.0 · Nov 2022 · source · release history

example

  • Configure the ServiceNow context provider with tenant and auth details in the MSTICPy config file. ContextProviders: ServiceNow: Primary: True Args: TenantId: <tenant_id> AuthKey: 'auth_key' AuthId: 'auth_id' Provider: "ServiceNow" v2.2.0 · Nov 2022 · source
  • Query ServiceNow for threat intelligence context by IP or email using the new generic provider. context_lookup = ContextLookup() result = context_lookup.lookup_observable('10.0.0.1', providers=['ServiceNow']) v2.2.0 · Nov 2022 · source
Requirements file comparison verified Compares two Python requirements files to identify differences between them. 3 other sources · first seen Nov 2021

command line

example

  • Configure credentials for the new M365D provider in the config file DataProviders: MicrosoftDefender: Args: ClientId: <client_id> ClientSecret: KeyVault: <keyvault_name> TenantId: <tenant_id> v1.5.0 · Nov 2021 · source
Context enrichment providers shipped suggested Integrates with external threat intelligence and context platforms to enrich investigation data during analysis. 2 releases · 1 other source · first seen Sep 2019

Suggested capability: Threat indicator matching. This is our guess, not confirmed.

release

  • Adds support for the Greynoise Community API as a Threat Intel provider v1.1.0 · May 2021 · source · release history
  • Adds validation checks for missing TI Providers or keys with updated documentation in TIProvider v0.2.6 · Sep 2019 · source · release history

example

  • Automatically load specific providers like Azure Sentinel and Threat Intelligence at notebook start. # In msticpyconfig.yaml providers: DataProviders: - AzureSentinel TIProviders: - MISP v1.0.0 · Apr 2021 · source
Documentation Q&A agent shipped Offers an LLM-powered interface to answer questions about the tool's documentation using RAG technology. 1 release · 1 other source · first seen Sep 2024

Also counts toward: Built-in AI assistant, Natural-language query

release

  • Adds an LLM/RAG-based document Q&A agent (msticpy.aiagents.mp_docs_rag_magic) powered by Autogen, enabling natural-language queries against MSTICPy documentation inside notebooks. v2.13.0 · Sep 2024 · source · release history

example

  • Ask natural-language questions about MSTICPy from a notebook — useful when onboarding or exploring unfamiliar query provider configuration. %load_ext msticpy.aiagents.mp_docs_rag_magic %%ask What are the three things that I need to connect to Azure Query Provider? v2.13.0 · Sep 2024 · source
Authentication method expansion shipped Adds support for bearer token authentication and explicit credential passing across Splunk and Azure services. 2 releases · first seen Aug 2023

release

  • Config key authentication.token in msticpyconfig.yaml enables security token auth for SplunkUploader v2.10.0 · Feb 2024 · source · release history
  • Allows passing an AzureCredential object directly to the credential parameter of AzureData.connect() and MicrosoftSentinel.connect() methods for authentication v2.7.0 · Aug 2023 · source · release history
Private provider loading shipped Allows side-loading custom or private data, threat intelligence, and context providers from local directories at runtime. 1 release · 1 other source · first seen May 2023

Also counts toward: Plugin system

release

  • mp.load_plugins(plugin_paths=...) allows side-loading private data, TI, and context providers alongside built-in ones v2.5.0 · May 2023 · source · release history

example

  • Side-load custom threat intelligence providers from specific directories. import msticpy as mp mp.load_plugins(plugin_paths=["./my_custom_providers", "./shared_plugins"]) v2.5.0 · May 2023 · source
Threat intelligence result visualization shipped Provides interactive widgets to browse and visualize threat intelligence lookup results within the notebook interface. 2 releases · first seen Jul 2020

release

  • Adds methods to tilookup and data_providers modules to access respective browser widgets v0.8.0 · Sep 2020 · source · release history
  • Threat Intelligence results browser widget v0.6.2 · Jul 2020 · source · release history
Partial result handling shipped Enforces query completion by raising exceptions or warnings when data retrieval hits pagination limits. 1 other source · first seen Mar 2024

example

  • Ensure your analysis completes fully by failing the query immediately if it hits a pagination limit. qry_prov.exec_query(query_string, fail_if_partial=True) v2.11.0 · Mar 2024 · source
Logging configuration shipped Provides centralized control over Python logging levels and file output for debugging tool internals. 1 release · first seen Apr 2023

release

  • Adds set_logging_level() function and MSTICPYLOGLEVEL / MSTICPYLOGFILE environment variables for centralized Python logging control v2.4.0 · Apr 2023 · source · release history
Code analysis and cleanup shipped suggested Analyzes, formats, and cleans up code artifacts such as PowerShell scripts. 1 release · first seen Mar 2022

Suggested capability: Static malware analysis. This is our guess, not confirmed.

Also counts toward: Scripting language support

release

  • Introduces msticpy.analysis.code_cleanup.format_powershell to de-obfuscate and format PowerShell strings into readable code v1.7.5 · Mar 2022 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for MSTICPy, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail MSTICPy puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Commercials

pricing & packaging history · Microsoft vendor page

16 readings of Microsoft's pricing page since Mar 2022, with 3 relaunches of its plan lineup — each one dated, compared with the reading before it, and explained for someone buying the tool.

Pricing and packaging history is included with Researcher and Business. See how every vendor we track sells, and how that has changed over time, using data we don't publish anywhere else.

See plans →

Website history

microsoft.com, every change

Microsoft's home page and 40 more pages as they looked each month from October 2021 to October 2026: 1520 renders, 335 changes of tagline or palette. Step through them, play them, or put any two months side by side.

Website history is included with Researcher and Business.

See plans →

Releases

Show

59 entries

  1. September 20261
  2. May 20261
  3. April 20261
  4. September 20251
  5. February 20251
  6. December 20241
  7. October 20241
  8. September 20241
  9. May 20241
  10. March 20241
  11. February 20241
  12. November 20231
  13. October 20231
  14. August 20231
  15. July 20231
  16. May 20231
  17. April 20231
  18. February 20231
  19. January 20231
  20. November 20222
  21. October 20222
  22. September 20221
  23. July 20221
  24. May 20222
  25. March 20221
  26. February 20221
  27. January 20221
  28. December 20211
  29. November 20211
  30. October 20211
  31. September 20211
  32. August 20211
  33. July 20211
  34. June 20211
  35. May 20211
  36. April 20211
  37. February 20211
  38. January 20211
  39. October 20201
  40. September 20201
  41. August 20201
  42. July 20201
  43. June 20201
  44. May 20203
  45. March 20201
  46. February 20201
  47. January 20201
  48. December 20191
  49. October 20191
  50. September 20191
  51. August 20191
  52. May 20191
  53. April 20192
    Show

    59 entries

    Project health

    Issue, contributor and maintainer activity in microsoft/msticpy, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 8 ±0 vs prior 12 months
    2. Maintainers 2 +1 joined · −1 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 67% of issues opened, last 12 months
    5. Median time to close 358 days first maintainer reply 2.6 hours
    6. Open backlog 5 of 206 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 5
    3. Contributors / month 2
    4. Commits / month 6
    5. Stars 2,001
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →