Crowdstrike Capabilities
Naftiko 0.5 capability definitions for Crowdstrike - 100 capabilities showing integration workflows and service orchestrations.
Retrieves a CrowdStrike Falcon Intelligence adversary profile by actor name and publishes a structured threat briefing to Confluence for the security team's knowledge base.
naftiko: "0.5"
info:
label: "Adversary Intel Report to Confluence"
description: "Retrieves a CrowdStrike Falcon Intelligence adversary profile by actor name and publishes a structured threat briefing to Confluence for the security team's knowledge base."
tags:
- security
- threat-intelligence
- crowdstrike-falcon
- confluence
- reporting
capability:
exposes:
- type: mcp
namespace: threat-briefing
port: 8080
tools:
- name: publish-adversary-briefing
description: "Given a threat actor name (e.g., 'FANCY BEAR'), retrieve the full adversary profile from Falcon Intelligence and publish a formatted briefing page to Confluence. Use for team threat awareness and security awareness training materials."
inputParameters:
- name: actor_name
in: body
type: string
description: "CrowdStrike adversary actor name (e.g., 'FANCY BEAR', 'CARBON SPIDER')."
- name: confluence_space_key
in: body
type: string
description: "Confluence space key where the briefing page should be created."
steps:
- name: get-actor-profile
type: call
call: falcon-actors.get-actor
with:
name: "{{actor_name}}"
- name: create-briefing-page
type: call
call: confluence-briefing.create-page
with:
space_key: "{{confluence_space_key}}"
title: "Threat Briefing: {{actor_name}} ({{get-actor-profile.short_description}})"
body: "Actor: {{actor_name}}\nOrigin: {{get-actor-profile.origins}}\nTargeted Industries: {{get-actor-profile.target_industries}}\nCapabilities: {{get-actor-profile.capabilities}}\nLast Active: {{get-actor-profile.last_activity_date}}"
consumes:
- type: http
namespace: falcon-actors
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: actors
path: "/intel/combined/actors/v1"
inputParameters:
- name: name
in: query
operations:
- name: get-actor
method: GET
- type: http
namespace: confluence-briefing
baseUri: "https://crowdstrike.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Aggregates CrowdStrike Falcon endpoint coverage, detection resolution rates, and vulnerability remediation SLA data from Snowflake to generate an annual compliance report in Confluence.
naftiko: "0.5"
info:
label: "Annual Security Compliance Report Generation"
description: "Aggregates CrowdStrike Falcon endpoint coverage, detection resolution rates, and vulnerability remediation SLA data from Snowflake to generate an annual compliance report in Confluence."
tags:
- compliance
- security
- snowflake
- confluence
- reporting
capability:
exposes:
- type: mcp
namespace: compliance-reporting
port: 8080
tools:
- name: generate-annual-compliance-report
description: "Query Snowflake for full-year Falcon metrics including endpoint coverage percentage, mean time to detect, mean time to remediate, and vulnerability SLA compliance, then publish the report to Confluence. Use for SOC 2, FedRAMP, and board-level security reporting."
inputParameters:
- name: report_year
in: body
type: integer
description: "The calendar year for the compliance report (e.g., 2024)."
- name: confluence_space_key
in: body
type: string
description: "Confluence space key for the compliance report page."
steps:
- name: query-annual-metrics
type: call
call: snowflake-compliance.run-query
with:
statement: "SELECT year, avg_endpoint_coverage, mean_ttd_hours, mean_ttr_hours, vuln_sla_compliance_pct FROM security_metrics.annual_summary WHERE year = {{report_year}}"
- name: publish-report
type: call
call: confluence-compliance.create-page
with:
space_key: "{{confluence_space_key}}"
title: "{{report_year}} Annual Security Compliance Report"
body: "Year: {{report_year}}\nEndpoint Coverage: {{query-annual-metrics.avg_endpoint_coverage}}%\nMean TTD: {{query-annual-metrics.mean_ttd_hours}}h\nMean TTR: {{query-annual-metrics.mean_ttr_hours}}h\nVuln SLA Compliance: {{query-annual-metrics.vuln_sla_compliance_pct}}%"
consumes:
- type: http
namespace: snowflake-compliance
baseUri: "https://crowdstrike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: confluence-compliance
baseUri: "https://crowdstrike.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
When an AWS CloudTrail anomaly is detected, enriches the finding with CrowdStrike Falcon device context for the source IP and creates a Jira cloud security investigation task.
naftiko: "0.5"
info:
label: "AWS CloudTrail Anomaly to Falcon Investigation"
description: "When an AWS CloudTrail anomaly is detected, enriches the finding with CrowdStrike Falcon device context for the source IP and creates a Jira cloud security investigation task."
tags:
- cloud
- security
- aws
- crowdstrike-falcon
- jira
capability:
exposes:
- type: mcp
namespace: cloud-threat-ops
port: 8080
tools:
- name: investigate-cloudtrail-anomaly
description: "Given an AWS CloudTrail anomaly finding with a source IP, look up the IP in Falcon Intelligence, retrieve any associated device context, and open a Jira cloud security investigation task. Use when AWS GuardDuty or CloudTrail raises suspicious API activity."
inputParameters:
- name: source_ip
in: body
type: string
description: "Source IP address associated with the CloudTrail anomaly."
- name: aws_account_id
in: body
type: string
description: "AWS account ID where the anomaly was detected."
- name: event_name
in: body
type: string
description: "The AWS CloudTrail event name (API call) that triggered the anomaly."
steps:
- name: lookup-ip
type: call
call: falcon-intel-aws.get-indicator
with:
value: "{{source_ip}}"
type: "ip"
- name: create-investigation
type: call
call: jira-aws.create-issue
with:
project_key: "CLOUDSEC"
issuetype: "Investigation"
summary: "CloudTrail Anomaly: {{event_name}} from {{source_ip}} in {{aws_account_id}}"
description: "Source IP: {{source_ip}}\nEvent: {{event_name}}\nAWS Account: {{aws_account_id}}\nFalcon Verdict: {{lookup-ip.verdict}}\nThreat Actor: {{lookup-ip.threat_actors}}\nMalware Family: {{lookup-ip.malware_families}}"
consumes:
- type: http
namespace: falcon-intel-aws
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: indicators
path: "/intel/combined/indicators/v1"
inputParameters:
- name: value
in: query
- name: type
in: query
operations:
- name: get-indicator
method: GET
- type: http
namespace: jira-aws
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When Falcon Horizon (CSPM) detects a cloud misconfiguration, retrieves the finding details and creates a Jira security task assigned to the cloud infrastructure team.
naftiko: "0.5"
info:
label: "Cloud Security Misconfiguration Alert"
description: "When Falcon Horizon (CSPM) detects a cloud misconfiguration, retrieves the finding details and creates a Jira security task assigned to the cloud infrastructure team."
tags:
- security
- cloud
- cspm
- crowdstrike-falcon
- jira
capability:
exposes:
- type: mcp
namespace: cloud-security
port: 8080
tools:
- name: handle-cspm-finding
description: "Given a Falcon Horizon CSPM finding ID, retrieve the misconfiguration details and open a Jira task for the cloud team to remediate. Use when cloud compliance violations need tracked remediation."
inputParameters:
- name: finding_id
in: body
type: string
description: "The Falcon Horizon CSPM finding ID."
- name: cloud_provider
in: body
type: string
description: "Cloud provider: aws, azure, or gcp."
steps:
- name: get-finding
type: call
call: cspm.get-finding
with:
id: "{{finding_id}}"
- name: create-remediation
type: call
call: jira-cloud.create-issue
with:
project_key: "CLOUDSEC"
issuetype: "Task"
summary: "CSPM: {{get-finding.policy_id}} on {{cloud_provider}} — {{get-finding.resource_id}}"
description: "Finding ID: {{finding_id}}\nProvider: {{cloud_provider}}\nResource: {{get-finding.resource_id}}\nPolicy: {{get-finding.policy_id}}\nSeverity: {{get-finding.severity}}\nRemediation: {{get-finding.remediation_summary}}"
consumes:
- type: http
namespace: cspm
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: findings
path: "/cspm-registration/entities/findings/v2"
inputParameters:
- name: id
in: query
operations:
- name: get-finding
method: GET
- type: http
namespace: jira-cloud
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When Datadog raises a critical infrastructure alert on a host, correlates it with CrowdStrike Falcon sensor data for the same host to determine if the anomaly is security-related.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Alert to Falcon Investigation"
description: "When Datadog raises a critical infrastructure alert on a host, correlates it with CrowdStrike Falcon sensor data for the same host to determine if the anomaly is security-related."
tags:
- observability
- security
- datadog
- crowdstrike-falcon
- incident-response
capability:
exposes:
- type: mcp
namespace: infra-security-ops
port: 8080
tools:
- name: correlate-infra-alert-with-falcon
description: "Given a Datadog monitor alert ID and host name, fetch the alert details from Datadog and query Falcon for recent detections on the same host to determine if the infrastructure anomaly has a security component. Use during critical infrastructure incidents."
inputParameters:
- name: datadog_alert_id
in: body
type: string
description: "Datadog monitor alert ID."
- name: host_name
in: body
type: string
description: "Hostname of the affected infrastructure host."
steps:
- name: get-dd-alert
type: call
call: datadog.get-monitor
with:
monitor_id: "{{datadog_alert_id}}"
- name: get-falcon-detections
type: call
call: falcon-correlate.list-detections-for-host
with:
filter: "device.hostname:'{{host_name}}'+status:'new'"
- name: open-snow-incident
type: call
call: servicenow-infra.create-incident
with:
short_description: "Infra+Security Correlation: {{host_name}} — Datadog {{get-dd-alert.name}}"
category: "Infrastructure"
description: "Datadog Alert: {{datadog_alert_id}} — {{get-dd-alert.name}}\nHost: {{host_name}}\nFalcon Detections: {{get-falcon-detections.count}}\nTop Detection: {{get-falcon-detections.top_scenario}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
- type: http
namespace: falcon-correlate
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/combined/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: list-detections-for-host
method: GET
- type: http
namespace: servicenow-infra
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
When an employee termination is processed in Workday, revokes Okta access, disables the user in Microsoft Graph, and isolates the employee's endpoint in CrowdStrike Falcon.
naftiko: "0.5"
info:
label: "Employee Offboarding Security Deprovision"
description: "When an employee termination is processed in Workday, revokes Okta access, disables the user in Microsoft Graph, and isolates the employee's endpoint in CrowdStrike Falcon."
tags:
- hr
- offboarding
- security
- workday
- okta
- crowdstrike-falcon
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: deprovision-terminated-employee
description: "Given a Workday worker ID for a terminated employee, deactivate the Okta account, disable the Microsoft 365 user, and network-isolate the Falcon-protected endpoint. Use immediately upon confirmed termination to prevent unauthorized access."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID of the terminated employee."
- name: device_id
in: body
type: string
description: "CrowdStrike Falcon device ID of the employee's primary endpoint."
steps:
- name: get-worker
type: call
call: workday-offboard.get-worker
with:
worker_id: "{{worker_id}}"
- name: deactivate-okta-user
type: call
call: okta-offboard.deactivate-user
with:
login: "{{get-worker.work_email}}"
- name: disable-m365-user
type: call
call: msgraph.disable-user
with:
user_principal_name: "{{get-worker.work_email}}"
account_enabled: "false"
- name: isolate-endpoint
type: call
call: falcon-isolate.isolate-host
with:
device_id: "{{device_id}}"
comment: "Employee terminated: {{get-worker.full_name}} ({{worker_id}})"
consumes:
- type: http
namespace: workday-offboard
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/crowdstrike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-offboard
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_ssws_token"
placement: header
resources:
- name: users
path: "/users/{{user_id}}/lifecycle/deactivate"
inputParameters:
- name: user_id
in: path
operations:
- name: deactivate-user
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_principal_name}}"
inputParameters:
- name: user_principal_name
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: falcon-isolate
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: network-containment
path: "/devices/entities/devices-actions/v2"
operations:
- name: isolate-host
method: POST
When a new employee is created in Workday, provisions Okta user account with appropriate group memberships and enrolls the device in CrowdStrike Falcon via the host management API.
naftiko: "0.5"
info:
label: "Employee Onboarding Security Provisioning"
description: "When a new employee is created in Workday, provisions Okta user account with appropriate group memberships and enrolls the device in CrowdStrike Falcon via the host management API."
tags:
- hr
- onboarding
- security
- workday
- okta
- crowdstrike-falcon
capability:
exposes:
- type: mcp
namespace: hr-security-onboarding
port: 8080
tools:
- name: provision-new-employee
description: "Given a Workday employee ID and role, retrieve worker profile, create an Okta user in the correct groups, and register the device with CrowdStrike Falcon for endpoint protection. Use when onboarding new hires to ensure day-one security coverage."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "Employee start date in ISO 8601 format (YYYY-MM-DD)."
steps:
- name: get-worker
type: call
call: workday.get-worker
with:
worker_id: "{{worker_id}}"
- name: create-okta-user
type: call
call: okta-provision.create-user
with:
login: "{{get-worker.work_email}}"
first_name: "{{get-worker.first_name}}"
last_name: "{{get-worker.last_name}}"
department: "{{get-worker.department}}"
- name: enroll-device
type: call
call: falcon-enroll.create-device-enrollment-token
with:
comment: "New hire: {{get-worker.full_name}} ({{worker_id}}) — Start: {{start_date}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/crowdstrike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-provision
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_ssws_token"
placement: header
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: falcon-enroll
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: enrollment-tokens
path: "/devices/entities/deviceregistration-tokens/v1"
operations:
- name: create-device-enrollment-token
method: POST
Queries CrowdStrike Spotlight for critical CVEs affecting a specified host and creates a Jira remediation ticket with affected software details.
naftiko: "0.5"
info:
label: "Endpoint Vulnerability Assessment"
description: "Queries CrowdStrike Spotlight for critical CVEs affecting a specified host and creates a Jira remediation ticket with affected software details."
tags:
- security
- vulnerability-management
- crowdstrike-falcon
- jira
capability:
exposes:
- type: mcp
namespace: vuln-management
port: 8080
tools:
- name: assess-host-vulnerabilities
description: "Given a hostname or device ID, query CrowdStrike Spotlight for critical and high CVEs on that endpoint and open a Jira remediation ticket with all findings. Use during vulnerability triage or patch cycle planning."
inputParameters:
- name: device_id
in: body
type: string
description: "The CrowdStrike device/host ID for the endpoint to assess."
- name: jira_project_key
in: body
type: string
description: "Jira project key where the remediation ticket should be created (e.g., 'SEC')."
steps:
- name: get-vulns
type: call
call: spotlight.list-vulnerabilities
with:
device_id: "{{device_id}}"
filter: "status:'open'+cve.severity:'CRITICAL'"
- name: create-ticket
type: call
call: jira.create-issue
with:
project_key: "{{jira_project_key}}"
issuetype: "Task"
summary: "Vulnerability Remediation: {{device_id}} — {{get-vulns.cve_count}} critical CVEs"
description: "Device: {{device_id}}\nCritical CVEs: {{get-vulns.cve_ids}}\nTop CVE: {{get-vulns.top_cve_id}} (CVSS: {{get-vulns.top_cvss_score}})\nAffected Software: {{get-vulns.affected_software}}"
consumes:
- type: http
namespace: spotlight
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vulnerabilities
path: "/spotlight/combined/vulnerabilities/v1"
inputParameters:
- name: device_id
in: query
- name: filter
in: query
operations:
- name: list-vulnerabilities
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Uses AI to analyze a Falcon detection, determine likelihood of true positive, recommend response actions, and post findings to SOC channel.
naftiko: "0.5"
info:
label: "Falcon AI-Assisted Detection Triage"
description: "Uses AI to analyze a Falcon detection, determine likelihood of true positive, recommend response actions, and post findings to SOC channel."
tags:
- security
- ai
- crowdstrike-falcon
- anthropic
- slack
capability:
exposes:
- type: mcp
namespace: ai-triage
port: 8080
tools:
- name: ai-triage-detection
description: "Given a detection ID, fetch details, use AI to assess severity and recommend actions, and post to SOC."
inputParameters:
- name: detection_id
in: body
type: string
description: "Falcon detection ID."
steps:
- name: get-detection
type: call
call: "falcon.get-detection"
with:
ids: "{{detection_id}}"
- name: ai-analyze
type: call
call: "anthropic.create-message"
with:
model: "claude-sonnet-4-20250514"
max_tokens: 512
system: "You are a SOC analyst. Assess the detection and recommend response actions."
content: "Detection: {{get-detection.tactic}} / {{get-detection.technique}} on {{get-detection.hostname}} | Severity: {{get-detection.severity}} | File: {{get-detection.filename}}"
- name: post-triage
type: call
call: "slack.post-message"
with:
channel: "soc-triage"
text: "AI Triage for {{detection_id}}:\n{{ai-analyze.content}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/summaries/GET/v1"
operations:
- name: get-detection
method: POST
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves Falcon API client details by client ID, returning scopes, creation date, and last used time.
naftiko: "0.5"
info:
label: "Falcon API Client Lookup"
description: "Retrieves Falcon API client details by client ID, returning scopes, creation date, and last used time."
tags:
- security
- api-management
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-api-client
port: 8080
tools:
- name: get-api-client
description: "Given a Falcon API client ID, return its scopes, creation date, and last authentication time."
inputParameters:
- name: client_id
in: body
type: string
description: "Falcon API client ID."
call: "falcon.get-api-client"
with:
ids: "{{client_id}}"
outputParameters:
- name: name
type: string
mapping: "$.resources[0].name"
- name: scopes
type: string
mapping: "$.resources[0].scope"
- name: created
type: string
mapping: "$.resources[0].created_at"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: api-clients
path: "/oauth2/entities/clients/v1"
inputParameters:
- name: ids
in: query
operations:
- name: get-api-client
method: GET
Correlates AWS GuardDuty findings with CrowdStrike Falcon detections on the same hosts, creating a unified security incident.
naftiko: "0.5"
info:
label: "Falcon AWS GuardDuty Correlation"
description: "Correlates AWS GuardDuty findings with CrowdStrike Falcon detections on the same hosts, creating a unified security incident."
tags:
- security
- cloud-security
- crowdstrike-falcon
- aws
- slack
capability:
exposes:
- type: mcp
namespace: guardduty-falcon
port: 8080
tools:
- name: correlate-guardduty-falcon
description: "Given an AWS instance ID from a GuardDuty finding, check for related Falcon detections and post a correlated alert."
inputParameters:
- name: instance_id
in: body
type: string
description: "AWS EC2 instance ID from GuardDuty."
- name: finding_type
in: body
type: string
description: "GuardDuty finding type."
steps:
- name: query-falcon-detections
type: call
call: "falcon.query-detections"
with:
filter: "device.instance_id:\"{{instance_id}}\""
- name: post-correlation
type: call
call: "slack.post-message"
with:
channel: "cloud-security"
text: "GuardDuty-Falcon Correlation: Instance {{instance_id}} | GuardDuty: {{finding_type}} | Falcon detections: {{query-falcon-detections.total_count}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-detections
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves cloud account registration status from Falcon Cloud Security for a given provider.
naftiko: "0.5"
info:
label: "Falcon Cloud Account Registration Check"
description: "Retrieves cloud account registration status from Falcon Cloud Security for a given provider."
tags:
- security
- cloud-security
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-cloud-reg
port: 8080
tools:
- name: check-cloud-registration
description: "Given a cloud account ID, return its registration status, provider, and last scan time."
inputParameters:
- name: account_id
in: body
type: string
description: "Cloud account ID."
call: "falcon.get-cloud-account"
with:
ids: "{{account_id}}"
outputParameters:
- name: status
type: string
mapping: "$.resources[0].status"
- name: provider
type: string
mapping: "$.resources[0].cloud_provider"
- name: last_scan
type: string
mapping: "$.resources[0].last_scanned"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: cloud-accounts
path: "/cloud-connect/entities/accounts/v1"
inputParameters:
- name: ids
in: query
operations:
- name: get-cloud-account
method: GET
Retrieves Indicators of Attack from CrowdStrike Falcon Cloud Security for a given cloud account.
naftiko: "0.5"
info:
label: "Falcon Cloud IOA Lookup"
description: "Retrieves Indicators of Attack from CrowdStrike Falcon Cloud Security for a given cloud account."
tags:
- security
- cloud-security
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-cloud-ioa
port: 8080
tools:
- name: get-cloud-ioas
description: "Given a cloud account ID, return active Indicators of Attack including severity and affected resources."
inputParameters:
- name: cloud_account_id
in: body
type: string
description: "Cloud account ID to query."
call: "falcon.get-ioas"
with:
filter: "cloud_account_id:\"{{cloud_account_id}}\""
outputParameters:
- name: ioa_count
type: string
mapping: "$.meta.pagination.total"
- name: top_severity
type: string
mapping: "$.resources[0].severity"
- name: attack_type
type: string
mapping: "$.resources[0].attack_type"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: cloud-ioas
path: "/detects/combined/ioa/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-ioas
method: GET
Detects cloud misconfigurations from Falcon Horizon, creates a GitHub issue with Terraform remediation, and notifies the cloud security team.
naftiko: "0.5"
info:
label: "Falcon Cloud Misconfiguration to Terraform Fix"
description: "Detects cloud misconfigurations from Falcon Horizon, creates a GitHub issue with Terraform remediation, and notifies the cloud security team."
tags:
- security
- cloud-security
- crowdstrike-falcon
- github
- slack
capability:
exposes:
- type: mcp
namespace: misconfig-fix
port: 8080
tools:
- name: create-terraform-fix
description: "Given a Falcon Horizon finding ID, fetch details, create a GitHub issue with remediation steps, and alert the team."
inputParameters:
- name: finding_id
in: body
type: string
description: "Falcon Horizon misconfiguration finding ID."
steps:
- name: get-finding
type: call
call: "falcon.get-finding"
with:
ids: "{{finding_id}}"
- name: create-gh-issue
type: call
call: "github.create-issue"
with:
repo: "crowdstrike/infrastructure"
title: "Cloud misconfig: {{get-finding.policy_description}}"
body: "Resource: {{get-finding.resource_id}}\nAccount: {{get-finding.cloud_account}}\nSeverity: {{get-finding.severity}}\nRemediation: {{get-finding.remediation}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "cloud-security"
text: "Cloud misconfiguration: {{get-finding.policy_description}} | Severity: {{get-finding.severity}} | GitHub: {{create-gh-issue.html_url}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: findings
path: "/detects/entities/ioa/v1"
operations:
- name: get-finding
method: GET
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: issues
path: "/repos/{{repo}}/issues"
inputParameters:
- name: repo
in: path
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves cloud workload inventory from Falcon Cloud Security for a given cloud provider.
naftiko: "0.5"
info:
label: "Falcon Cloud Workload Inventory"
description: "Retrieves cloud workload inventory from Falcon Cloud Security for a given cloud provider."
tags:
- security
- cloud-security
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-cloud-inv
port: 8080
tools:
- name: get-cloud-inventory
description: "Given a cloud provider name, return the workload inventory count and unprotected instance count."
inputParameters:
- name: cloud_provider
in: body
type: string
description: "Cloud provider: AWS, Azure, or GCP."
call: "falcon.get-cloud-inventory"
with:
filter: "cloud_provider:\"{{cloud_provider}}\""
outputParameters:
- name: total_workloads
type: string
mapping: "$.meta.pagination.total"
- name: unprotected
type: string
mapping: "$.resources[0].unprotected_count"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: cloud-workloads
path: "/cloud-connect/combined/workloads/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-cloud-inventory
method: GET
Retrieves compliance benchmark scores from Falcon Horizon for a given framework.
naftiko: "0.5"
info:
label: "Falcon Compliance Benchmark Lookup"
description: "Retrieves compliance benchmark scores from Falcon Horizon for a given framework."
tags:
- security
- compliance
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-benchmark
port: 8080
tools:
- name: get-benchmark-score
description: "Given a compliance framework name, return the overall score, passing controls, and failing controls."
inputParameters:
- name: framework
in: body
type: string
description: "Compliance framework name, e.g. CIS, NIST, SOC2."
call: "falcon.get-benchmark"
with:
filter: "framework:\"{{framework}}\""
outputParameters:
- name: overall_score
type: string
mapping: "$.resources[0].score"
- name: passing
type: string
mapping: "$.resources[0].passing_count"
- name: failing
type: string
mapping: "$.resources[0].failing_count"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: benchmarks
path: "/compliance/combined/benchmarks/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-benchmark
method: GET
Triggers a container image scan in CrowdStrike Falcon, checks for vulnerabilities, and blocks deployment if critical issues found.
naftiko: "0.5"
info:
label: "Falcon Container Image Scan"
description: "Triggers a container image scan in CrowdStrike Falcon, checks for vulnerabilities, and blocks deployment if critical issues found."
tags:
- security
- container-security
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: container-scan
port: 8080
tools:
- name: scan-container-image
description: "Given a container image tag, trigger a Falcon scan, check results, and post findings to Slack."
inputParameters:
- name: image_tag
in: body
type: string
description: "Container image tag to scan."
steps:
- name: submit-scan
type: call
call: "falcon.submit-image-scan"
with:
image: "{{image_tag}}"
- name: get-results
type: call
call: "falcon.get-scan-results"
with:
scan_id: "{{submit-scan.scan_id}}"
- name: post-results
type: call
call: "slack.post-message"
with:
channel: "container-security"
text: "Container Scan: {{image_tag}} | Vulnerabilities: {{get-results.vuln_count}} | Critical: {{get-results.critical_count}} | Verdict: {{get-results.verdict}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: image-scans
path: "/scanner/entities/scans/v1"
operations:
- name: submit-image-scan
method: POST
- name: scan-results
path: "/scanner/entities/scan-results/v1"
inputParameters:
- name: scan_id
in: query
operations:
- name: get-scan-results
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Detects credential theft attempts via Falcon telemetry, forces password reset in Okta, and escalates to the identity security team.
naftiko: "0.5"
info:
label: "Falcon Credential Theft Detector"
description: "Detects credential theft attempts via Falcon telemetry, forces password reset in Okta, and escalates to the identity security team."
tags:
- security
- credential-theft
- crowdstrike-falcon
- okta
- slack
capability:
exposes:
- type: mcp
namespace: cred-theft
port: 8080
tools:
- name: respond-to-credential-theft
description: "Given a detection ID indicating credential theft, identify the user, reset their Okta password, and alert the team."
inputParameters:
- name: detection_id
in: body
type: string
description: "Falcon detection ID for credential theft."
steps:
- name: get-detection
type: call
call: "falcon.get-detection"
with:
ids: "{{detection_id}}"
- name: reset-password
type: call
call: "okta.reset-password"
with:
user_id: "{{get-detection.username}}"
- name: alert-team
type: call
call: "slack.post-message"
with:
channel: "identity-security"
text: "CREDENTIAL THEFT: {{get-detection.username}} on {{get-detection.hostname}} | Password reset forced | Detection: {{detection_id}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/summaries/GET/v1"
operations:
- name: get-detection
method: POST
- type: http
namespace: okta
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users/{{user_id}}/lifecycle/reset_password"
inputParameters:
- name: user_id
in: path
operations:
- name: reset-password
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates a security assessment for a customer account by pulling Falcon Spotlight scores, detection metrics, and policy compliance, then shares via Salesforce.
naftiko: "0.5"
info:
label: "Falcon Customer Security Assessment"
description: "Generates a security assessment for a customer account by pulling Falcon Spotlight scores, detection metrics, and policy compliance, then shares via Salesforce."
tags:
- security
- assessment
- crowdstrike-falcon
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: customer-assessment
port: 8080
tools:
- name: generate-customer-assessment
description: "Given a customer account ID, compile security metrics from Falcon and update the Salesforce opportunity."
inputParameters:
- name: account_name
in: body
type: string
description: "Customer account name."
- name: salesforce_opportunity_id
in: body
type: string
description: "Salesforce opportunity ID to update."
steps:
- name: get-spotlight-scores
type: call
call: "falcon.get-scores"
with:
filter: "account:\"{{account_name}}\""
- name: update-salesforce
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{salesforce_opportunity_id}}"
security_score: "{{get-spotlight-scores.overall_score}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "customer-success"
text: "Security assessment for {{account_name}}: Score {{get-spotlight-scores.overall_score}} | Salesforce updated."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: scores
path: "/scores/entities/scores/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-scores
method: GET
- type: http
namespace: salesforce
baseUri: "https://crowdstrike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: update-opportunity
method: PATCH
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Pushes CrowdStrike detection and vulnerability metrics to Datadog for unified security dashboarding.
naftiko: "0.5"
info:
label: "Falcon Datadog Security Metric Sync"
description: "Pushes CrowdStrike detection and vulnerability metrics to Datadog for unified security dashboarding."
tags:
- security
- observability
- crowdstrike-falcon
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: falcon-dd-sync
port: 8080
tools:
- name: sync-security-metrics
description: "Pull detection and vulnerability counts from Falcon and push as custom metrics to Datadog."
inputParameters:
- name: hours
in: body
type: string
description: "Hours of data to aggregate."
steps:
- name: count-detections
type: call
call: "falcon.count-detections"
with:
filter: "created_timestamp:>\"{{hours}}h\""
- name: push-to-datadog
type: call
call: "datadog.submit-metrics"
with:
series: "crowdstrike.detections.count"
points: "{{count-detections.total}}"
tags: "source:crowdstrike"
- name: confirm-sync
type: call
call: "slack.post-message"
with:
channel: "security-dashboards"
text: "Falcon metrics synced to Datadog: {{count-detections.total}} detections in last {{hours}} hours."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: count-detections
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: metrics
path: "/series"
operations:
- name: submit-metrics
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns the count of active detections in CrowdStrike Falcon filtered by severity level.
naftiko: "0.5"
info:
label: "Falcon Detection Count Lookup"
description: "Returns the count of active detections in CrowdStrike Falcon filtered by severity level."
tags:
- security
- threat-detection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-detect-count
port: 8080
tools:
- name: get-detection-count
description: "Given a severity filter, return the number of active detections in Falcon."
inputParameters:
- name: min_severity
in: body
type: string
description: "Minimum severity level (1-5)."
call: "falcon.count-detections"
with:
filter: "status:\"new\"+max_severity_displayname:>\"{{min_severity}}\""
outputParameters:
- name: total_count
type: string
mapping: "$.meta.pagination.total"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: count-detections
method: GET
Processes false positive feedback for a Falcon detection, updates the detection status, creates an exclusion, and logs in Jira.
naftiko: "0.5"
info:
label: "Falcon Detection False Positive Feedback"
description: "Processes false positive feedback for a Falcon detection, updates the detection status, creates an exclusion, and logs in Jira."
tags:
- security
- detection-tuning
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: fp-feedback
port: 8080
tools:
- name: process-false-positive
description: "Given a detection ID and justification, mark as false positive, create an exclusion, and log in Jira."
inputParameters:
- name: detection_id
in: body
type: string
description: "Falcon detection ID."
- name: justification
in: body
type: string
description: "Reason for marking as false positive."
steps:
- name: update-detection
type: call
call: "falcon.update-detection-status"
with:
ids: "{{detection_id}}"
status: "false_positive"
- name: create-jira
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Task"
summary: "FP Review: Detection {{detection_id}}"
description: "Justification: {{justification}}\nDetection marked as false positive. Review exclusion request."
- name: notify-tuning
type: call
call: "slack.post-message"
with:
channel: "detection-tuning"
text: "False positive reported: {{detection_id}} | Jira: {{create-jira.key}} | Reason: {{justification}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/detects/v2"
operations:
- name: update-detection-status
method: PATCH
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves detection details by ID from CrowdStrike Falcon, returning severity, tactic, technique, and affected hostname.
naftiko: "0.5"
info:
label: "Falcon Detection Severity Lookup"
description: "Retrieves detection details by ID from CrowdStrike Falcon, returning severity, tactic, technique, and affected hostname."
tags:
- security
- threat-detection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-detect-detail
port: 8080
tools:
- name: get-detection-detail
description: "Given a detection ID, return the severity, MITRE tactic, technique, and affected hostname."
inputParameters:
- name: detection_id
in: body
type: string
description: "Falcon detection ID."
call: "falcon.get-detection-detail"
with:
ids: "{{detection_id}}"
outputParameters:
- name: severity
type: string
mapping: "$.resources[0].max_severity_displayname"
- name: tactic
type: string
mapping: "$.resources[0].behaviors[0].tactic"
- name: technique
type: string
mapping: "$.resources[0].behaviors[0].technique"
- name: hostname
type: string
mapping: "$.resources[0].device.hostname"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/summaries/GET/v1"
operations:
- name: get-detection-detail
method: POST
Converts a CrowdStrike Falcon detection into a Jira security issue, enriches with threat intel, and notifies the security team via Slack.
naftiko: "0.5"
info:
label: "Falcon Detection to Jira Security Issue"
description: "Converts a CrowdStrike Falcon detection into a Jira security issue, enriches with threat intel, and notifies the security team via Slack."
tags:
- security
- threat-detection
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: detect-to-jira
port: 8080
tools:
- name: create-jira-from-detection
description: "Given a Falcon detection ID, fetch details, create a Jira security issue, and notify the team."
inputParameters:
- name: detection_id
in: body
type: string
description: "CrowdStrike Falcon detection ID."
steps:
- name: get-detection
type: call
call: "falcon.get-detection"
with:
ids: "{{detection_id}}"
- name: create-jira-issue
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Security Issue"
summary: "Falcon Detection: {{get-detection.tactic}} — {{get-detection.technique}}"
description: "Detection ID: {{detection_id}}\nHost: {{get-detection.hostname}}\nSeverity: {{get-detection.severity}}\nTactic: {{get-detection.tactic}}\nTechnique: {{get-detection.technique}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "security-ops"
text: "Detection {{detection_id}} tracked in Jira {{create-jira-issue.key}}: {{get-detection.tactic}} on {{get-detection.hostname}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/summaries/GET/v1"
operations:
- name: get-detection
method: POST
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves a Falcon host group by name, returning member count, group type, and assignment rule.
naftiko: "0.5"
info:
label: "Falcon Device Group Lookup"
description: "Retrieves a Falcon host group by name, returning member count, group type, and assignment rule."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-groups
port: 8080
tools:
- name: get-host-group
description: "Given a host group name, return the group type, member count, and dynamic assignment rule."
inputParameters:
- name: group_name
in: body
type: string
description: "Falcon host group name."
call: "falcon.get-group"
with:
filter: "name:\"{{group_name}}\""
outputParameters:
- name: group_id
type: string
mapping: "$.resources[0].id"
- name: group_type
type: string
mapping: "$.resources[0].group_type"
- name: member_count
type: string
mapping: "$.resources[0].member_count"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: host-groups
path: "/devices/combined/host-groups/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-group
method: GET
Retrieves application inventory from CrowdStrike Falcon Discover for a given host or network segment.
naftiko: "0.5"
info:
label: "Falcon Discover Application Inventory"
description: "Retrieves application inventory from CrowdStrike Falcon Discover for a given host or network segment."
tags:
- security
- asset-discovery
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-discover-apps
port: 8080
tools:
- name: get-application-inventory
description: "Given a hostname, return the installed applications discovered by Falcon."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname to query."
call: "falcon.get-applications"
with:
filter: "host.hostname:\"{{hostname}}\""
outputParameters:
- name: app_count
type: string
mapping: "$.meta.pagination.total"
- name: first_app
type: string
mapping: "$.resources[0].name"
- name: first_version
type: string
mapping: "$.resources[0].version"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: applications
path: "/discover/combined/applications/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-applications
method: GET
Analyzes email-borne threats by checking attachments in Falcon Sandbox, URLs in Falcon Intelligence, and posting findings to the email security team.
naftiko: "0.5"
info:
label: "Falcon Email Threat Analysis"
description: "Analyzes email-borne threats by checking attachments in Falcon Sandbox, URLs in Falcon Intelligence, and posting findings to the email security team."
tags:
- security
- email-security
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: email-threat
port: 8080
tools:
- name: analyze-email-threat
description: "Given a suspicious file hash and URL from an email, check both in Falcon and post the analysis to Slack."
inputParameters:
- name: file_hash
in: body
type: string
description: "SHA256 hash of the email attachment."
- name: url
in: body
type: string
description: "Suspicious URL from the email."
steps:
- name: check-hash
type: call
call: "falcon-intel.get-indicator"
with:
value: "{{file_hash}}"
type: "hash"
- name: check-url
type: call
call: "falcon-intel.get-indicator"
with:
value: "{{url}}"
type: "domain"
- name: post-analysis
type: call
call: "slack.post-message"
with:
channel: "email-security"
text: "Email Threat Analysis:\n- Hash {{file_hash}}: {{check-hash.verdict}}\n- URL {{url}}: {{check-url.verdict}}"
consumes:
- type: http
namespace: falcon-intel
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: indicators
path: "/intel/combined/indicators/v1"
inputParameters:
- name: value
in: query
- name: type
in: query
operations:
- name: get-indicator
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates an endpoint compliance report from Falcon, checking sensor versions and policy compliance, and distributes via Slack.
naftiko: "0.5"
info:
label: "Falcon Endpoint Compliance Report"
description: "Generates an endpoint compliance report from Falcon, checking sensor versions and policy compliance, and distributes via Slack."
tags:
- security
- compliance
- crowdstrike-falcon
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: endpoint-compliance
port: 8080
tools:
- name: generate-compliance-report
description: "Query Falcon for endpoints with outdated sensors or non-compliant policies and post a summary to Slack."
inputParameters:
- name: min_agent_version
in: body
type: string
description: "Minimum acceptable Falcon agent version."
steps:
- name: query-outdated
type: call
call: "falcon.query-hosts"
with:
filter: "agent_version:<\"{{min_agent_version}}\""
- name: post-report
type: call
call: "slack.post-message"
with:
channel: "endpoint-security"
text: "Endpoint Compliance Report: {{query-outdated.total_count}} hosts running Falcon agent below {{min_agent_version}}. Update required."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/queries/devices/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-hosts
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When CrowdStrike Falcon raises a high-severity detection alert, retrieves alert details, creates a ServiceNow incident, and posts a summary to the security-alerts Slack channel.
naftiko: "0.5"
info:
label: "Falcon Endpoint Detection Alert Triage"
description: "When CrowdStrike Falcon raises a high-severity detection alert, retrieves alert details, creates a ServiceNow incident, and posts a summary to the security-alerts Slack channel."
tags:
- security
- incident-response
- crowdstrike-falcon
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: handle-falcon-alert
description: "Given a CrowdStrike Falcon detection alert ID, retrieve full alert details, open a ServiceNow security incident, and notify the security team via Slack. Use when a high-severity Falcon detection needs structured triage."
inputParameters:
- name: alert_id
in: body
type: string
description: "The CrowdStrike Falcon detection alert ID (e.g., 'ldt:abc123:456')."
- name: severity
in: body
type: string
description: "Alert severity level: critical, high, medium, or low."
steps:
- name: get-alert
type: call
call: falcon.get-detection
with:
detection_id: "{{alert_id}}"
- name: create-incident
type: call
call: servicenow.create-incident
with:
short_description: "CrowdStrike Falcon Alert: {{get-alert.scenario}} on {{get-alert.hostname}}"
category: "Security"
urgency: "1"
description: "Detection ID: {{alert_id}}\nHost: {{get-alert.hostname}}\nTactic: {{get-alert.tactic}}\nTechnique: {{get-alert.technique}}\nSeverity: {{severity}}"
- name: notify-slack
type: call
call: slack.post-message
with:
channel: "security-alerts"
text: "FALCON ALERT [{{severity}}]: {{get-alert.scenario}} on {{get-alert.hostname}} | SNOW: {{create-incident.number}} | Alert: {{alert_id}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/detect/v2"
inputParameters:
- name: detection_id
in: query
operations:
- name: get-detection
method: GET
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Compiles a weekly threat briefing from Falcon Intelligence adversary reports, summarizes with AI, and distributes to executives via Slack and email.
naftiko: "0.5"
info:
label: "Falcon Executive Threat Briefing"
description: "Compiles a weekly threat briefing from Falcon Intelligence adversary reports, summarizes with AI, and distributes to executives via Slack and email."
tags:
- security
- threat-intelligence
- crowdstrike-falcon
- anthropic
- slack
capability:
exposes:
- type: mcp
namespace: exec-briefing
port: 8080
tools:
- name: generate-threat-briefing
description: "Pull recent adversary reports from Falcon Intel, summarize with AI, and distribute the briefing."
inputParameters:
- name: days
in: body
type: string
description: "Number of days of threat intelligence to include."
steps:
- name: get-adversary-reports
type: call
call: "falcon-intel.get-reports"
with:
filter: "created_date:>{{days}}"
- name: summarize
type: call
call: "anthropic.create-message"
with:
model: "claude-sonnet-4-20250514"
max_tokens: 1024
system: "You are a cybersecurity analyst. Create a concise executive threat briefing."
content: "Summarize these threat intelligence reports for executives: {{get-adversary-reports.summaries}}"
- name: post-briefing
type: call
call: "slack.post-message"
with:
channel: "executive-security"
text: "Weekly Threat Briefing:\n{{summarize.content}}"
consumes:
- type: http
namespace: falcon-intel
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: reports
path: "/intel/combined/reports/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-reports
method: GET
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates a Falcon Exposure Management report showing internet-facing assets and their risk levels, posts summary to Slack.
naftiko: "0.5"
info:
label: "Falcon Exposure Management Report"
description: "Generates a Falcon Exposure Management report showing internet-facing assets and their risk levels, posts summary to Slack."
tags:
- security
- exposure-management
- crowdstrike-falcon
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: exposure-report
port: 8080
tools:
- name: generate-exposure-report
description: "Query Falcon for internet-facing assets and their risk scores, and post an exposure summary to Slack."
inputParameters:
- name: min_risk_score
in: body
type: string
description: "Minimum risk score threshold."
steps:
- name: query-exposures
type: call
call: "falcon.query-exposures"
with:
filter: "risk_score:>{{min_risk_score}}"
- name: post-report
type: call
call: "slack.post-message"
with:
channel: "security-posture"
text: "Exposure Report: {{query-exposures.total_count}} internet-facing assets with risk score > {{min_risk_score}}. Review at Falcon console."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: exposures
path: "/fem/queries/external-assets/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-exposures
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves firewall management rules from CrowdStrike Falcon by rule group name.
naftiko: "0.5"
info:
label: "Falcon Firewall Rule Lookup"
description: "Retrieves firewall management rules from CrowdStrike Falcon by rule group name."
tags:
- security
- firewall-management
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-fw
port: 8080
tools:
- name: get-firewall-rules
description: "Given a rule group name, return the firewall rules including action, direction, and protocol."
inputParameters:
- name: group_name
in: body
type: string
description: "Falcon firewall rule group name."
call: "falcon.get-fw-rules"
with:
filter: "name:\"{{group_name}}\""
outputParameters:
- name: rule_count
type: string
mapping: "$.meta.pagination.total"
- name: enabled
type: string
mapping: "$.resources[0].enabled"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: fw-rules
path: "/fwmgr/combined/rule-groups/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-fw-rules
method: GET
Generates a CIS benchmark compliance summary from Falcon Horizon (CSPM) across all cloud accounts and posts a pass/fail scorecard to the security governance Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Falcon Horizon Compliance Benchmark Report"
description: "Generates a CIS benchmark compliance summary from Falcon Horizon (CSPM) across all cloud accounts and posts a pass/fail scorecard to the security governance Microsoft Teams channel."
tags:
- cloud
- compliance
- cspm
- crowdstrike-falcon
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: cloud-compliance
port: 8080
tools:
- name: report-cloud-benchmark-compliance
description: "Query Falcon Horizon for CIS benchmark assessment results across all registered cloud accounts, then post a pass rate scorecard to the security governance Teams channel. Use for monthly cloud compliance reviews."
inputParameters:
- name: benchmark_framework
in: body
type: string
description: "Benchmark framework to report on: CIS, NIST, or PCI."
- name: teams_channel_id
in: body
type: string
description: "Microsoft Teams channel ID to post the compliance scorecard to."
steps:
- name: get-benchmark-results
type: call
call: cspm-benchmark.get-assessment-summary
with:
framework: "{{benchmark_framework}}"
- name: post-scorecard
type: call
call: msteams-compliance.send-message
with:
channel_id: "{{teams_channel_id}}"
message: "Cloud Compliance ({{benchmark_framework}}): Pass Rate {{get-benchmark-results.pass_rate}}% | Passing: {{get-benchmark-results.passing_controls}} | Failing: {{get-benchmark-results.failing_controls}} | Cloud Accounts Assessed: {{get-benchmark-results.account_count}}"
consumes:
- type: http
namespace: cspm-benchmark
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: assessments
path: "/cspm-registration/entities/benchmark/v1"
inputParameters:
- name: framework
in: query
operations:
- name: get-assessment-summary
method: GET
- type: http
namespace: msteams-compliance
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves detailed host information from CrowdStrike Falcon by hostname, returning OS, agent version, and containment status.
naftiko: "0.5"
info:
label: "Falcon Host Detail Lookup"
description: "Retrieves detailed host information from CrowdStrike Falcon by hostname, returning OS, agent version, and containment status."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-hosts
port: 8080
tools:
- name: get-host-details
description: "Given a hostname, return the host's OS, Falcon agent version, last seen time, and containment status."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname to look up in Falcon."
call: "falcon.get-host"
with:
filter: "hostname:\"{{hostname}}\""
outputParameters:
- name: device_id
type: string
mapping: "$.resources[0].device_id"
- name: os_version
type: string
mapping: "$.resources[0].os_version"
- name: agent_version
type: string
mapping: "$.resources[0].agent_version"
- name: status
type: string
mapping: "$.resources[0].status"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/combined/host-search/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-host
method: GET
Audits host group policy assignments in Falcon, identifies unprotected groups, and creates a Jira compliance ticket.
naftiko: "0.5"
info:
label: "Falcon Host Group Policy Audit"
description: "Audits host group policy assignments in Falcon, identifies unprotected groups, and creates a Jira compliance ticket."
tags:
- security
- compliance
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: policy-audit
port: 8080
tools:
- name: audit-group-policies
description: "Query Falcon host groups, check for groups without prevention policies, and create a compliance ticket."
inputParameters:
- name: platform
in: body
type: string
description: "Platform to audit: Windows, Mac, or Linux."
steps:
- name: query-groups
type: call
call: "falcon.query-groups"
with:
filter: "platform_name:\"{{platform}}\""
- name: create-jira
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Task"
summary: "Policy audit: {{platform}} host groups — {{query-groups.unprotected_count}} without prevention policies"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "endpoint-security"
text: "Policy Audit: {{query-groups.unprotected_count}} {{platform}} host groups lack prevention policies. Jira: {{create-jira.key}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: groups
path: "/devices/combined/host-groups/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-groups
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Tracks hosts being migrated between Falcon CIDs, verifies sensor connectivity post-migration, and reports status to Slack.
naftiko: "0.5"
info:
label: "Falcon Host Migration Tracker"
description: "Tracks hosts being migrated between Falcon CIDs, verifies sensor connectivity post-migration, and reports status to Slack."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: host-migration
port: 8080
tools:
- name: track-host-migration
description: "Given a hostname, verify its sensor status in the new CID and report migration success to Slack."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname being migrated."
steps:
- name: check-host
type: call
call: "falcon.get-host"
with:
filter: "hostname:\"{{hostname}}\""
- name: post-status
type: call
call: "slack.post-message"
with:
channel: "endpoint-migration"
text: "Migration status: {{hostname}} | Agent: {{check-host.agent_version}} | Status: {{check-host.status}} | Last seen: {{check-host.last_seen}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/combined/host-search/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-host
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves identity risk score from CrowdStrike Falcon Identity Protection for a given user.
naftiko: "0.5"
info:
label: "Falcon Identity Risk Score Lookup"
description: "Retrieves identity risk score from CrowdStrike Falcon Identity Protection for a given user."
tags:
- security
- identity-protection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-id-risk
port: 8080
tools:
- name: get-identity-risk
description: "Given a username, return their identity risk score, risk factors, and recommended actions."
inputParameters:
- name: username
in: body
type: string
description: "Username to check."
call: "falcon.get-identity-risk"
with:
filter: "username:\"{{username}}\""
outputParameters:
- name: risk_score
type: string
mapping: "$.resources[0].risk_score"
- name: risk_level
type: string
mapping: "$.resources[0].risk_level"
- name: top_risk_factor
type: string
mapping: "$.resources[0].risk_factors[0].description"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: identities
path: "/identity-protection/combined/identities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-identity-risk
method: GET
When a critical Falcon detection occurs, contains the host, creates a PagerDuty alert, opens a Jira incident, and posts a war room link to Slack.
naftiko: "0.5"
info:
label: "Falcon Incident Response Automation"
description: "When a critical Falcon detection occurs, contains the host, creates a PagerDuty alert, opens a Jira incident, and posts a war room link to Slack."
tags:
- security
- incident-response
- crowdstrike-falcon
- pagerduty
- jira
- slack
capability:
exposes:
- type: mcp
namespace: falcon-ir
port: 8080
tools:
- name: automate-incident-response
description: "Given a detection ID, contain the host, create PagerDuty and Jira incidents, and open a Slack war room."
inputParameters:
- name: detection_id
in: body
type: string
description: "CrowdStrike Falcon detection ID."
steps:
- name: get-detection
type: call
call: "falcon.get-detection"
with:
ids: "{{detection_id}}"
- name: contain-host
type: call
call: "falcon.contain-host"
with:
device_id: "{{get-detection.device_id}}"
- name: page-oncall
type: call
call: "pagerduty.create-incident"
with:
title: "Critical detection: {{get-detection.tactic}} on {{get-detection.hostname}}"
service_id: "$secrets.pagerduty_security_service_id"
urgency: "high"
- name: create-jira
type: call
call: "jira.create-issue"
with:
project_key: "IR"
issuetype: "Incident"
summary: "Security Incident: {{get-detection.tactic}} — {{get-detection.hostname}}"
description: "Detection: {{detection_id}}\nHost contained: {{get-detection.hostname}}\nPD: {{page-oncall.incident_url}}"
- name: post-war-room
type: call
call: "slack.post-message"
with:
channel: "security-incidents"
text: "SECURITY INCIDENT: {{get-detection.tactic}} on {{get-detection.hostname}} | Host contained | Jira: {{create-jira.key}} | PD: {{page-oncall.incident_url}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/summaries/GET/v1"
operations:
- name: get-detection
method: POST
- name: host-actions
path: "/devices/entities/host-actions/v2"
operations:
- name: contain-host
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves a Falcon incident by ID, returning severity, status, host count, and detection count.
naftiko: "0.5"
info:
label: "Falcon Incident Severity Lookup"
description: "Retrieves a Falcon incident by ID, returning severity, status, host count, and detection count."
tags:
- security
- incident-management
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-incident
port: 8080
tools:
- name: get-incident-details
description: "Given a Falcon incident ID, return its severity, status, involved hosts, and detection count."
inputParameters:
- name: incident_id
in: body
type: string
description: "Falcon incident ID."
call: "falcon.get-incident"
with:
ids: "{{incident_id}}"
outputParameters:
- name: severity
type: string
mapping: "$.resources[0].fine_score"
- name: status
type: string
mapping: "$.resources[0].status"
- name: host_count
type: string
mapping: "$.resources[0].host_ids.length"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: incidents
path: "/incidents/entities/incidents/GET/v1"
operations:
- name: get-incident
method: POST
Builds a chronological incident timeline from Falcon detections and process events, documents it in Confluence, and shares via Slack.
naftiko: "0.5"
info:
label: "Falcon Incident Timeline Builder"
description: "Builds a chronological incident timeline from Falcon detections and process events, documents it in Confluence, and shares via Slack."
tags:
- security
- incident-response
- crowdstrike-falcon
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: timeline-builder
port: 8080
tools:
- name: build-incident-timeline
description: "Given a Falcon incident ID, compile a timeline of related events and document in Confluence."
inputParameters:
- name: incident_id
in: body
type: string
description: "Falcon incident ID."
steps:
- name: get-incident
type: call
call: "falcon.get-incident"
with:
ids: "{{incident_id}}"
- name: document-timeline
type: call
call: "confluence.create-page"
with:
space_key: "IR"
title: "Incident Timeline: {{incident_id}}"
body: "Hosts: {{get-incident.hosts}}\nDetections: {{get-incident.detection_ids}}\nFirst activity: {{get-incident.first_behavior}}\nLast activity: {{get-incident.last_behavior}}"
- name: share-timeline
type: call
call: "slack.post-message"
with:
channel: "security-incidents"
text: "Incident timeline documented: {{incident_id}} | {{document-timeline.url}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: incidents
path: "/incidents/entities/incidents/GET/v1"
operations:
- name: get-incident
method: POST
- type: http
namespace: confluence
baseUri: "https://crowdstrike.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Publishes a new CrowdStrike Falcon custom YARA rule submission to the Custom IOA repository and notifies the threat hunting team in Slack.
naftiko: "0.5"
info:
label: "Falcon Intelligence YARA Rule Publication"
description: "Publishes a new CrowdStrike Falcon custom YARA rule submission to the Custom IOA repository and notifies the threat hunting team in Slack."
tags:
- security
- threat-hunting
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: threat-hunting
port: 8080
tools:
- name: publish-yara-rule
description: "Given a YARA rule name, pattern, and description, create a new custom YARA rule in CrowdStrike Falcon and announce it to the threat hunting Slack channel. Use when analysts develop new detection signatures from threat research."
inputParameters:
- name: rule_name
in: body
type: string
description: "Name for the new YARA rule (kebab-case, max 64 chars)."
- name: rule_description
in: body
type: string
description: "Description of what threat this rule detects."
- name: rule_body
in: body
type: string
description: "Full YARA rule body text."
steps:
- name: create-yara-rule
type: call
call: falcon-ioa.create-rule
with:
name: "{{rule_name}}"
description: "{{rule_description}}"
pattern: "{{rule_body}}"
- name: announce-rule
type: call
call: slack-hunting.post-message
with:
channel: "threat-hunting"
text: "New YARA rule published: {{rule_name}} | ID: {{create-yara-rule.rule_id}} | {{rule_description}}"
consumes:
- type: http
namespace: falcon-ioa
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: custom-ioa-rules
path: "/ioarules/entities/rules/v1"
operations:
- name: create-rule
method: POST
- type: http
namespace: slack-hunting
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Reviews and manages IOA exclusions in Falcon, audits for overly broad rules, and reports findings.
naftiko: "0.5"
info:
label: "Falcon IOA Exclusion Manager"
description: "Reviews and manages IOA exclusions in Falcon, audits for overly broad rules, and reports findings."
tags:
- security
- policy-management
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: ioa-exclusions
port: 8080
tools:
- name: audit-ioa-exclusions
description: "Query Falcon for active IOA exclusions and identify overly broad or expired rules."
inputParameters:
- name: platform
in: body
type: string
description: "Platform filter: Windows, Mac, or Linux."
steps:
- name: get-exclusions
type: call
call: "falcon.get-ioa-exclusions"
with:
filter: "applied_globally:true+platform:\"{{platform}}\""
- name: post-audit
type: call
call: "slack.post-message"
with:
channel: "security-policy"
text: "IOA Exclusion Audit ({{platform}}): {{get-exclusions.total_count}} global exclusions found. Review for overly broad rules."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: exclusions
path: "/policy/queries/ioa-exclusions/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-ioa-exclusions
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Imports a batch of IOCs from a threat intelligence feed into CrowdStrike custom IOCs with appropriate actions and expiration dates.
naftiko: "0.5"
info:
label: "Falcon IOC Batch Import"
description: "Imports a batch of IOCs from a threat intelligence feed into CrowdStrike custom IOCs with appropriate actions and expiration dates."
tags:
- security
- threat-intelligence
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: ioc-import
port: 8080
tools:
- name: import-ioc-batch
description: "Given a list of indicators and action type, import them as custom IOCs in Falcon and confirm via Slack."
inputParameters:
- name: indicators
in: body
type: string
description: "Comma-separated list of IOC values."
- name: ioc_type
in: body
type: string
description: "Type of IOC: sha256, ipv4, domain."
- name: action
in: body
type: string
description: "Action to take: detect, prevent, or allow."
steps:
- name: create-iocs
type: call
call: "falcon.create-iocs"
with:
indicators: "{{indicators}}"
type: "{{ioc_type}}"
action: "{{action}}"
expiration: "30d"
- name: confirm-import
type: call
call: "slack.post-message"
with:
channel: "threat-intel"
text: "IOC Import: {{create-iocs.created_count}} {{ioc_type}} indicators imported with action '{{action}}'. Expires in 30 days."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: custom-iocs
path: "/iocs/entities/indicators/v1"
operations:
- name: create-iocs
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Searches CrowdStrike custom IOC management for a given indicator, returning action, severity, and expiration.
naftiko: "0.5"
info:
label: "Falcon IOC Search"
description: "Searches CrowdStrike custom IOC management for a given indicator, returning action, severity, and expiration."
tags:
- security
- threat-intelligence
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-ioc
port: 8080
tools:
- name: search-custom-ioc
description: "Given an indicator value (hash, IP, domain), return its custom IOC entry including action, severity, and expiration date."
inputParameters:
- name: indicator_value
in: body
type: string
description: "IOC value to search for."
call: "falcon.get-ioc"
with:
filter: "value:\"{{indicator_value}}\""
outputParameters:
- name: action
type: string
mapping: "$.resources[0].action"
- name: severity
type: string
mapping: "$.resources[0].severity"
- name: expiration
type: string
mapping: "$.resources[0].expiration"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: iocs
path: "/iocs/combined/indicator/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-ioc
method: GET
Detects lateral movement patterns across endpoints using Falcon telemetry, isolates affected hosts, and creates a security incident with full timeline.
naftiko: "0.5"
info:
label: "Falcon Lateral Movement Detector"
description: "Detects lateral movement patterns across endpoints using Falcon telemetry, isolates affected hosts, and creates a security incident with full timeline."
tags:
- security
- threat-detection
- crowdstrike-falcon
- slack
- incident-response
capability:
exposes:
- type: mcp
namespace: lateral-movement
port: 8080
tools:
- name: detect-lateral-movement
description: "Given a suspicious host, query Falcon for lateral movement indicators, contain involved hosts, and alert the SOC."
inputParameters:
- name: source_hostname
in: body
type: string
description: "Hostname where suspicious activity originated."
steps:
- name: query-lateral
type: call
call: "falcon.search-events"
with:
filter: "behaviors.hostname:\"{{source_hostname}}\"+behaviors.tactic:\"Lateral Movement\""
- name: contain-source
type: call
call: "falcon.contain-host"
with:
hostname: "{{source_hostname}}"
- name: alert-soc
type: call
call: "slack.post-message"
with:
channel: "soc-alerts"
text: "LATERAL MOVEMENT DETECTED: Source: {{source_hostname}} | Events: {{query-lateral.event_count}} | Host contained. Investigate immediately."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: search-events
method: GET
- name: host-actions
path: "/devices/entities/host-actions/v2"
operations:
- name: contain-host
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Executes a LogScale query against CrowdStrike log data and returns matching event results.
naftiko: "0.5"
info:
label: "Falcon LogScale Query Lookup"
description: "Executes a LogScale query against CrowdStrike log data and returns matching event results."
tags:
- security
- log-management
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-logscale
port: 8080
tools:
- name: run-logscale-query
description: "Given a LogScale query string, execute it and return matching results with event count."
inputParameters:
- name: query
in: body
type: string
description: "LogScale query string."
call: "falcon.run-query"
with:
queryString: "{{query}}"
outputParameters:
- name: event_count
type: string
mapping: "$.metadata.eventCount"
- name: status
type: string
mapping: "$.metadata.queryStatus"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: logscale
path: "/loggingapi/combined/query-job-results/v1"
operations:
- name: run-query
method: POST
When Falcon detects malware, quarantines the file, contains the endpoint, creates a ServiceNow security incident, and alerts the SOC.
naftiko: "0.5"
info:
label: "Falcon Malware Quarantine and Notify"
description: "When Falcon detects malware, quarantines the file, contains the endpoint, creates a ServiceNow security incident, and alerts the SOC."
tags:
- security
- malware
- crowdstrike-falcon
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: malware-quarantine
port: 8080
tools:
- name: quarantine-and-notify
description: "Given a detection ID, quarantine the malware, contain the host, create a ServiceNow incident, and notify the SOC."
inputParameters:
- name: detection_id
in: body
type: string
description: "Falcon detection ID."
steps:
- name: get-detection
type: call
call: "falcon.get-detection"
with:
ids: "{{detection_id}}"
- name: contain-host
type: call
call: "falcon.contain-host"
with:
device_id: "{{get-detection.device_id}}"
- name: create-snow-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Malware detected: {{get-detection.filename}} on {{get-detection.hostname}}"
category: "security"
urgency: "1"
description: "Detection: {{detection_id}}\nFile: {{get-detection.filename}}\nHash: {{get-detection.sha256}}\nHost: {{get-detection.hostname}}"
- name: alert-soc
type: call
call: "slack.post-message"
with:
channel: "soc-alerts"
text: "MALWARE: {{get-detection.filename}} on {{get-detection.hostname}} | Host contained | SNOW: {{create-snow-incident.number}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/entities/summaries/GET/v1"
operations:
- name: get-detection
method: POST
- name: host-actions
path: "/devices/entities/host-actions/v2"
operations:
- name: contain-host
method: POST
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates a MITRE ATT&CK coverage report based on Falcon detection capabilities and posts to Slack.
naftiko: "0.5"
info:
label: "Falcon MITRE ATT&CK Coverage Report"
description: "Generates a MITRE ATT&CK coverage report based on Falcon detection capabilities and posts to Slack."
tags:
- security
- compliance
- crowdstrike-falcon
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: mitre-coverage
port: 8080
tools:
- name: generate-mitre-report
description: "Pull Falcon detection coverage by MITRE technique and post a summary report."
inputParameters:
- name: slack_channel
in: body
type: string
description: "Slack channel for the report."
steps:
- name: get-coverage
type: call
call: "falcon.get-mitre-coverage"
with:
platform: "windows"
- name: post-report
type: call
call: "slack.post-message"
with:
channel: "{{slack_channel}}"
text: "MITRE ATT&CK Coverage Report: {{get-coverage.covered_techniques}} / {{get-coverage.total_techniques}} techniques covered. Coverage: {{get-coverage.percentage}}%"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: mitre
path: "/intel/combined/mitre/v1"
inputParameters:
- name: platform
in: query
operations:
- name: get-mitre-coverage
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Checks health status of managed child CIDs in a Falcon MSSP environment and reports unhealthy tenants.
naftiko: "0.5"
info:
label: "Falcon MSSP Child CID Health"
description: "Checks health status of managed child CIDs in a Falcon MSSP environment and reports unhealthy tenants."
tags:
- security
- mssp
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: mssp-health
port: 8080
tools:
- name: check-child-cid-health
description: "Query Falcon MSSP for child CID health and post a status report."
inputParameters:
- name: slack_channel
in: body
type: string
description: "Slack channel for the report."
steps:
- name: get-children
type: call
call: "falcon.get-child-cids"
with:
sort: "last_modified_timestamp.desc"
- name: post-report
type: call
call: "slack.post-message"
with:
channel: "{{slack_channel}}"
text: "MSSP CID Health: {{get-children.total_count}} child CIDs monitored. Review at Falcon console."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: children
path: "/mssp/queries/children/v1"
inputParameters:
- name: sort
in: query
operations:
- name: get-child-cids
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Lifts network containment on a previously isolated host, verifies connectivity, and logs the action in ServiceNow.
naftiko: "0.5"
info:
label: "Falcon Network Containment Lift"
description: "Lifts network containment on a previously isolated host, verifies connectivity, and logs the action in ServiceNow."
tags:
- security
- incident-response
- crowdstrike-falcon
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: containment-lift
port: 8080
tools:
- name: lift-containment
description: "Given a hostname, lift Falcon network containment, verify status, and log in ServiceNow."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname to uncontain."
- name: justification
in: body
type: string
description: "Reason for lifting containment."
steps:
- name: get-host
type: call
call: "falcon.get-host"
with:
filter: "hostname:\"{{hostname}}\""
- name: lift-contain
type: call
call: "falcon.lift-containment"
with:
device_id: "{{get-host.device_id}}"
- name: log-action
type: call
call: "servicenow.create-task"
with:
short_description: "Containment lifted: {{hostname}}"
description: "Justification: {{justification}}\nDevice ID: {{get-host.device_id}}"
assignment_group: "security-ops"
- name: notify-soc
type: call
call: "slack.post-message"
with:
channel: "soc-operations"
text: "Containment lifted: {{hostname}} | Reason: {{justification}} | SNOW: {{log-action.number}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/combined/host-search/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-host
method: GET
- name: host-actions
path: "/devices/entities/host-actions/v2"
operations:
- name: lift-containment
method: POST
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a new hire device is detected in Falcon, assigns it to the correct host group, applies prevention policies, and notifies IT.
naftiko: "0.5"
info:
label: "Falcon New Hire Endpoint Provisioning"
description: "When a new hire device is detected in Falcon, assigns it to the correct host group, applies prevention policies, and notifies IT."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- slack
- onboarding
capability:
exposes:
- type: mcp
namespace: endpoint-provision
port: 8080
tools:
- name: provision-new-endpoint
description: "Given a device hostname and department, assign the device to the correct Falcon host group and notify IT."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname of the new device."
- name: department
in: body
type: string
description: "Department of the new hire."
steps:
- name: get-device
type: call
call: "falcon.get-host"
with:
filter: "hostname:\"{{hostname}}\""
- name: assign-group
type: call
call: "falcon.assign-host-group"
with:
device_id: "{{get-device.device_id}}"
group_name: "{{department}}-endpoints"
- name: notify-it
type: call
call: "slack.post-message"
with:
channel: "it-ops"
text: "New endpoint provisioned: {{hostname}} assigned to {{department}}-endpoints group in Falcon."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/combined/host-search/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-host
method: GET
- name: host-group-actions
path: "/devices/entities/host-group-actions/v1"
operations:
- name: assign-host-group
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
During employee offboarding, hides the endpoint from Falcon, requests device wipe via Intune, and logs the action in ServiceNow.
naftiko: "0.5"
info:
label: "Falcon Offboarding Endpoint Wipe"
description: "During employee offboarding, hides the endpoint from Falcon, requests device wipe via Intune, and logs the action in ServiceNow."
tags:
- security
- offboarding
- crowdstrike-falcon
- microsoft-intune
- servicenow
capability:
exposes:
- type: mcp
namespace: offboard-endpoint
port: 8080
tools:
- name: offboard-and-wipe
description: "Given a hostname, hide the Falcon sensor, initiate device wipe via Intune, and create a ServiceNow audit task."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname of the departing employee's device."
- name: employee_name
in: body
type: string
description: "Name of the departing employee."
steps:
- name: get-host
type: call
call: "falcon.get-host"
with:
filter: "hostname:\"{{hostname}}\""
- name: hide-host
type: call
call: "falcon.hide-host"
with:
device_id: "{{get-host.device_id}}"
- name: create-audit-task
type: call
call: "servicenow.create-task"
with:
short_description: "Offboarding endpoint wipe: {{hostname}} for {{employee_name}}"
assignment_group: "endpoint-management"
description: "Falcon sensor hidden. Device wipe initiated. Employee: {{employee_name}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/combined/host-search/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-host
method: GET
- name: host-actions
path: "/devices/entities/host-actions/v2"
operations:
- name: hide-host
method: POST
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Correlates Falcon Identity risk data with Okta user status, flags high-risk active users, and creates access review tasks.
naftiko: "0.5"
info:
label: "Falcon Okta Identity Correlation"
description: "Correlates Falcon Identity risk data with Okta user status, flags high-risk active users, and creates access review tasks."
tags:
- security
- identity-protection
- crowdstrike-falcon
- okta
- slack
capability:
exposes:
- type: mcp
namespace: identity-correlation
port: 8080
tools:
- name: correlate-identity-risk
description: "Given a username, check Falcon Identity risk and Okta status, and create an access review task if high-risk."
inputParameters:
- name: username
in: body
type: string
description: "Username to correlate."
steps:
- name: get-falcon-risk
type: call
call: "falcon.get-identity-risk"
with:
filter: "username:\"{{username}}\""
- name: get-okta-user
type: call
call: "okta.get-user"
with:
id: "{{username}}"
- name: alert-if-risky
type: call
call: "slack.post-message"
with:
channel: "identity-security"
text: "Identity Risk Alert: {{username}} | Falcon risk: {{get-falcon-risk.risk_score}} | Okta status: {{get-okta-user.status}} | Review access immediately."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: identities
path: "/identity-protection/combined/identities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-identity-risk
method: GET
- type: http
namespace: okta
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-user
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When CrowdStrike Overwatch raises a managed detection requiring customer action, creates a high-priority ServiceNow incident and pages the on-call security engineer via PagerDuty.
naftiko: "0.5"
info:
label: "Falcon Overwatch Managed Detection Escalation"
description: "When CrowdStrike Overwatch raises a managed detection requiring customer action, creates a high-priority ServiceNow incident and pages the on-call security engineer via PagerDuty."
tags:
- security
- incident-response
- crowdstrike-falcon
- servicenow
- pagerduty
capability:
exposes:
- type: mcp
namespace: overwatch-ops
port: 8080
tools:
- name: escalate-overwatch-detection
description: "Given a CrowdStrike Overwatch managed detection event, create a P1 ServiceNow incident and trigger a PagerDuty alert for the on-call security engineer. Use when Overwatch identifies hands-on-keyboard adversary activity requiring immediate human response."
inputParameters:
- name: detection_id
in: body
type: string
description: "The Overwatch managed detection identifier."
- name: host_name
in: body
type: string
description: "Hostname of the affected endpoint."
- name: tactic
in: body
type: string
description: "MITRE ATT&CK tactic identified by Overwatch."
steps:
- name: create-p1-incident
type: call
call: servicenow-ow.create-incident
with:
short_description: "OVERWATCH DETECTION: Hands-on-keyboard activity on {{host_name}}"
category: "Security"
urgency: "1"
impact: "1"
description: "Detection ID: {{detection_id}}\nHost: {{host_name}}\nTactic: {{tactic}}\nSource: CrowdStrike Overwatch Managed Detection"
- name: page-on-call
type: call
call: pagerduty.create-incident
with:
title: "OVERWATCH: Adversary activity on {{host_name}} — {{tactic}}"
severity: "critical"
body: "Detection: {{detection_id}} | SNOW: {{create-p1-incident.number}} | Host: {{host_name}} | Tactic: {{tactic}}"
consumes:
- type: http
namespace: servicenow-ow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.pagerduty_token"
placement: header
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Investigates a reported phishing attempt by checking the sender domain in Falcon Intelligence, scanning the user's endpoint, and documenting findings.
naftiko: "0.5"
info:
label: "Falcon Phishing Investigation Workflow"
description: "Investigates a reported phishing attempt by checking the sender domain in Falcon Intelligence, scanning the user's endpoint, and documenting findings."
tags:
- security
- phishing
- crowdstrike-falcon
- slack
- jira
capability:
exposes:
- type: mcp
namespace: phishing-investigation
port: 8080
tools:
- name: investigate-phishing
description: "Given a suspicious domain and reporting user, check Falcon Intel for the domain, scan the user's endpoint, and create a Jira ticket."
inputParameters:
- name: suspicious_domain
in: body
type: string
description: "Domain from the phishing email."
- name: reporting_user
in: body
type: string
description: "Username of the person who reported the phish."
steps:
- name: check-domain
type: call
call: "falcon-intel.get-indicator"
with:
value: "{{suspicious_domain}}"
type: "domain"
- name: create-investigation
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Investigation"
summary: "Phishing: {{suspicious_domain}} reported by {{reporting_user}}"
description: "Domain verdict: {{check-domain.verdict}}\nReported by: {{reporting_user}}\nMalware families: {{check-domain.malware_families}}"
- name: notify-soc
type: call
call: "slack.post-message"
with:
channel: "soc-alerts"
text: "Phishing investigation: {{suspicious_domain}} | Verdict: {{check-domain.verdict}} | Jira: {{create-investigation.key}}"
consumes:
- type: http
namespace: falcon-intel
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: indicators
path: "/intel/combined/indicators/v1"
inputParameters:
- name: value
in: query
- name: type
in: query
operations:
- name: get-indicator
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves a Falcon prevention policy by name, returning enabled features, assigned host groups, and enforcement mode.
naftiko: "0.5"
info:
label: "Falcon Prevention Policy Lookup"
description: "Retrieves a Falcon prevention policy by name, returning enabled features, assigned host groups, and enforcement mode."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- policy
capability:
exposes:
- type: mcp
namespace: falcon-policy
port: 8080
tools:
- name: get-prevention-policy
description: "Given a prevention policy name, return its enabled features, assigned groups, and enforcement mode."
inputParameters:
- name: policy_name
in: body
type: string
description: "Falcon prevention policy name."
call: "falcon.get-policy"
with:
filter: "name:\"{{policy_name}}\""
outputParameters:
- name: policy_id
type: string
mapping: "$.resources[0].id"
- name: enabled
type: string
mapping: "$.resources[0].enabled"
- name: platform
type: string
mapping: "$.resources[0].platform_name"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: policies
path: "/policy/combined/prevention/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-policy
method: GET
Compares current Falcon prevention policies against a baseline, identifies drift, and creates a Jira remediation ticket.
naftiko: "0.5"
info:
label: "Falcon Prevention Policy Drift Check"
description: "Compares current Falcon prevention policies against a baseline, identifies drift, and creates a Jira remediation ticket."
tags:
- security
- policy-management
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: policy-drift
port: 8080
tools:
- name: check-policy-drift
description: "Query Falcon prevention policies and compare against baseline, flagging deviations."
inputParameters:
- name: platform
in: body
type: string
description: "Platform to check: Windows, Mac, or Linux."
steps:
- name: get-policies
type: call
call: "falcon.get-policies"
with:
filter: "platform_name:\"{{platform}}\""
- name: create-drift-ticket
type: call
call: "jira.create-issue"
with:
project_key: "SEC"
issuetype: "Task"
summary: "Policy drift detected: {{platform}} prevention policies"
description: "{{get-policies.total_count}} policies found. Review for configuration drift against baseline."
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "security-policy"
text: "Policy drift check: {{platform}} — {{get-policies.total_count}} policies reviewed. Jira: {{create-drift-ticket.key}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: policies
path: "/policy/combined/prevention/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-policies
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors privileged account activity in Falcon Identity Protection, detects anomalous admin behavior, and escalates to security leadership.
naftiko: "0.5"
info:
label: "Falcon Privileged Account Monitor"
description: "Monitors privileged account activity in Falcon Identity Protection, detects anomalous admin behavior, and escalates to security leadership."
tags:
- security
- identity-protection
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: priv-monitor
port: 8080
tools:
- name: monitor-privileged-accounts
description: "Query Falcon for anomalous privileged account activity and escalate findings."
inputParameters:
- name: hours
in: body
type: string
description: "Hours to look back for activity."
steps:
- name: query-priv-activity
type: call
call: "falcon.query-identity-events"
with:
filter: "is_admin:true+is_anomalous:true+created_timestamp:>\"{{hours}}h\""
- name: alert-security
type: call
call: "slack.post-message"
with:
channel: "identity-security"
text: "Privileged Account Alert: {{query-priv-activity.total_count}} anomalous admin events in last {{hours}} hours. Investigate immediately."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: identity-events
path: "/identity-protection/queries/events/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-identity-events
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves quarantined file details from Falcon by SHA256 hash, returning filename, host, and quarantine date.
naftiko: "0.5"
info:
label: "Falcon Quarantine File Lookup"
description: "Retrieves quarantined file details from Falcon by SHA256 hash, returning filename, host, and quarantine date."
tags:
- security
- malware
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-quarantine
port: 8080
tools:
- name: get-quarantined-file
description: "Given a SHA256 hash, return the quarantined file name, affected host, and quarantine timestamp."
inputParameters:
- name: sha256
in: body
type: string
description: "SHA256 hash of the quarantined file."
call: "falcon.get-quarantine"
with:
filter: "sha256:\"{{sha256}}\""
outputParameters:
- name: filename
type: string
mapping: "$.resources[0].filename"
- name: hostname
type: string
mapping: "$.resources[0].hostname"
- name: quarantine_date
type: string
mapping: "$.resources[0].date_created"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: quarantine
path: "/quarantine/combined/quarantined-files/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-quarantine
method: GET
Executes ransomware response by isolating affected hosts, disabling compromised accounts in Okta, creating a critical incident, and alerting leadership.
naftiko: "0.5"
info:
label: "Falcon Ransomware Response Playbook"
description: "Executes ransomware response by isolating affected hosts, disabling compromised accounts in Okta, creating a critical incident, and alerting leadership."
tags:
- security
- ransomware
- crowdstrike-falcon
- okta
- slack
- incident-response
capability:
exposes:
- type: mcp
namespace: ransomware-response
port: 8080
tools:
- name: execute-ransomware-response
description: "Given affected hostname and user, contain the host, suspend the Okta account, and escalate to leadership."
inputParameters:
- name: hostname
in: body
type: string
description: "Hostname of the affected endpoint."
- name: affected_user
in: body
type: string
description: "Username of the compromised account."
steps:
- name: contain-host
type: call
call: "falcon.contain-host"
with:
hostname: "{{hostname}}"
- name: suspend-okta
type: call
call: "okta.suspend-user"
with:
user_id: "{{affected_user}}"
- name: alert-leadership
type: call
call: "slack.post-message"
with:
channel: "security-leadership"
text: "RANSOMWARE ALERT: Host {{hostname}} contained | User {{affected_user}} suspended | Immediate investigation required."
- name: alert-soc
type: call
call: "slack.post-message"
with:
channel: "soc-alerts"
text: "Ransomware response initiated: {{hostname}} / {{affected_user}} | Host isolated, account suspended. Begin forensic analysis."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: host-actions
path: "/devices/entities/host-actions/v2"
operations:
- name: contain-host
method: POST
- type: http
namespace: okta
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users/{{user_id}}/lifecycle/suspend"
inputParameters:
- name: user_id
in: path
operations:
- name: suspend-user
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Initiates a Falcon Real Time Response session to execute a predefined remediation script on a target host and logs the results.
naftiko: "0.5"
info:
label: "Falcon Real Time Response Script"
description: "Initiates a Falcon Real Time Response session to execute a predefined remediation script on a target host and logs the results."
tags:
- security
- endpoint-remediation
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: rtr-script
port: 8080
tools:
- name: run-rtr-script
description: "Given a hostname and script name, initiate an RTR session, execute the script, and post results to Slack."
inputParameters:
- name: hostname
in: body
type: string
description: "Target hostname."
- name: script_name
in: body
type: string
description: "Name of the predefined RTR script."
steps:
- name: get-host
type: call
call: "falcon.get-host"
with:
filter: "hostname:\"{{hostname}}\""
- name: init-session
type: call
call: "falcon.init-rtr-session"
with:
device_id: "{{get-host.device_id}}"
- name: run-script
type: call
call: "falcon.run-rtr-command"
with:
session_id: "{{init-session.session_id}}"
command_string: "runscript -CloudFile={{script_name}}"
- name: post-results
type: call
call: "slack.post-message"
with:
channel: "endpoint-remediation"
text: "RTR script {{script_name}} executed on {{hostname}} | Status: {{run-script.status}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/combined/host-search/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-host
method: GET
- name: rtr-sessions
path: "/real-time-response/entities/sessions/v1"
operations:
- name: init-rtr-session
method: POST
- name: rtr-commands
path: "/real-time-response/entities/active-responder-command/v1"
operations:
- name: run-rtr-command
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves a Falcon response policy by name, returning RTR permissions, assigned groups, and enabled state.
naftiko: "0.5"
info:
label: "Falcon Response Policy Lookup"
description: "Retrieves a Falcon response policy by name, returning RTR permissions, assigned groups, and enabled state."
tags:
- security
- policy-management
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-resp-policy
port: 8080
tools:
- name: get-response-policy
description: "Given a response policy name, return its RTR permissions, assigned groups, and enabled state."
inputParameters:
- name: policy_name
in: body
type: string
description: "Falcon response policy name."
call: "falcon.get-response-policy"
with:
filter: "name:\"{{policy_name}}\""
outputParameters:
- name: policy_id
type: string
mapping: "$.resources[0].id"
- name: enabled
type: string
mapping: "$.resources[0].enabled"
- name: platform
type: string
mapping: "$.resources[0].platform_name"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: policies
path: "/policy/combined/response/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-response-policy
method: GET
When Falcon Identity detects high risk for a user, triggers step-up authentication in Okta and notifies the security team.
naftiko: "0.5"
info:
label: "Falcon Risk-Based Authentication Trigger"
description: "When Falcon Identity detects high risk for a user, triggers step-up authentication in Okta and notifies the security team."
tags:
- security
- identity-protection
- crowdstrike-falcon
- okta
- slack
capability:
exposes:
- type: mcp
namespace: risk-auth
port: 8080
tools:
- name: trigger-step-up-auth
description: "Given a high-risk user, enforce MFA challenge in Okta and alert the identity security team."
inputParameters:
- name: username
in: body
type: string
description: "Username flagged as high risk."
steps:
- name: get-risk
type: call
call: "falcon.get-identity-risk"
with:
filter: "username:\"{{username}}\""
- name: enforce-mfa
type: call
call: "okta.reset-mfa"
with:
user_id: "{{username}}"
- name: alert-team
type: call
call: "slack.post-message"
with:
channel: "identity-security"
text: "Risk-based auth: {{username}} risk score {{get-risk.risk_score}} — MFA reset triggered in Okta."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: identities
path: "/identity-protection/combined/identities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-identity-risk
method: GET
- type: http
namespace: okta
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users/{{user_id}}/lifecycle/reset_factors"
inputParameters:
- name: user_id
in: path
operations:
- name: reset-mfa
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Opens a CrowdStrike Falcon Real Time Response session on a compromised host to execute an approved remediation script and records the session transcript in ServiceNow.
naftiko: "0.5"
info:
label: "Falcon RTR Remote Remediation Session"
description: "Opens a CrowdStrike Falcon Real Time Response session on a compromised host to execute an approved remediation script and records the session transcript in ServiceNow."
tags:
- security
- incident-response
- crowdstrike-falcon
- servicenow
- endpoint
capability:
exposes:
- type: mcp
namespace: rtr-ops
port: 8080
tools:
- name: run-rtr-remediation
description: "Given a Falcon device ID and approved remediation script name, initiate a Real Time Response session, execute the script, and record the session output in a ServiceNow incident. Use only for pre-approved remediation playbooks during active incident response."
inputParameters:
- name: device_id
in: body
type: string
description: "CrowdStrike Falcon device ID of the host to remediate."
- name: script_name
in: body
type: string
description: "Name of the approved remediation script to execute (e.g., 'isolate-host', 'kill-malicious-process')."
- name: incident_number
in: body
type: string
description: "ServiceNow incident number to record the remediation session against."
steps:
- name: init-rtr-session
type: call
call: falcon-rtr.init-session
with:
device_id: "{{device_id}}"
- name: run-script
type: call
call: falcon-rtr.run-command
with:
session_id: "{{init-rtr-session.session_id}}"
command_string: "runscript -ScriptName={{script_name}}"
- name: record-session
type: call
call: servicenow-rtr.update-incident
with:
incident_number: "{{incident_number}}"
work_notes: "RTR Remediation executed on {{device_id}}\nScript: {{script_name}}\nSession ID: {{init-rtr-session.session_id}}\nOutput: {{run-script.output}}"
consumes:
- type: http
namespace: falcon-rtr
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: rtr-sessions
path: "/real-time-response/entities/sessions/v1"
operations:
- name: init-session
method: POST
- name: rtr-commands
path: "/real-time-response/entities/active-sessions/v1"
operations:
- name: run-command
method: POST
- type: http
namespace: servicenow-rtr
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: update-incident
method: PATCH
Retrieves malware sandbox analysis results from CrowdStrike Falcon Sandbox by submission ID.
naftiko: "0.5"
info:
label: "Falcon Sandbox Analysis Lookup"
description: "Retrieves malware sandbox analysis results from CrowdStrike Falcon Sandbox by submission ID."
tags:
- security
- malware-analysis
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-sandbox
port: 8080
tools:
- name: get-sandbox-report
description: "Given a Falcon Sandbox submission ID, return the analysis verdict, threat score, and extracted indicators."
inputParameters:
- name: submission_id
in: body
type: string
description: "Falcon Sandbox submission ID."
call: "falcon.get-sandbox-report"
with:
ids: "{{submission_id}}"
outputParameters:
- name: verdict
type: string
mapping: "$.resources[0].verdict"
- name: threat_score
type: string
mapping: "$.resources[0].threat_score"
- name: file_type
type: string
mapping: "$.resources[0].file_type"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: sandbox-reports
path: "/falconx/entities/reports/v1"
inputParameters:
- name: ids
in: query
operations:
- name: get-sandbox-report
method: GET
Retrieves the status of scheduled on-demand scans from CrowdStrike Falcon by scan ID.
naftiko: "0.5"
info:
label: "Falcon Scheduled Scan Status Lookup"
description: "Retrieves the status of scheduled on-demand scans from CrowdStrike Falcon by scan ID."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-scan-status
port: 8080
tools:
- name: get-scan-status
description: "Given a scan ID, return the scan status, scanned host count, and detection count."
inputParameters:
- name: scan_id
in: body
type: string
description: "Falcon scan ID."
call: "falcon.get-scan"
with:
ids: "{{scan_id}}"
outputParameters:
- name: status
type: string
mapping: "$.resources[0].status"
- name: hosts_scanned
type: string
mapping: "$.resources[0].hosts_scanned"
- name: detections_found
type: string
mapping: "$.resources[0].filecount.malicious_count"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: scans
path: "/scanner/entities/scans/v1"
inputParameters:
- name: ids
in: query
operations:
- name: get-scan
method: GET
When a user triggers repeated security detections, enrolls them in security awareness training and notifies their manager.
naftiko: "0.5"
info:
label: "Falcon Security Training Trigger"
description: "When a user triggers repeated security detections, enrolls them in security awareness training and notifies their manager."
tags:
- security
- training
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: security-training
port: 8080
tools:
- name: trigger-security-training
description: "Given a username with repeated violations, enroll in training and notify their manager via Slack."
inputParameters:
- name: username
in: body
type: string
description: "Username with repeated security violations."
- name: violation_count
in: body
type: string
description: "Number of violations in the period."
steps:
- name: get-user-detections
type: call
call: "falcon.query-detections"
with:
filter: "behaviors.user_name:\"{{username}}\""
- name: notify-manager
type: call
call: "slack.post-message"
with:
channel: "security-awareness"
text: "Security training triggered: {{username}} has {{violation_count}} security violations. User enrolled in mandatory security awareness training."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-detections
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Queries CrowdStrike Falcon for the list of hosts missing sensor coverage and creates a remediation report in Confluence for the IT operations team.
naftiko: "0.5"
info:
label: "Falcon Sensor Deployment Verification"
description: "Queries CrowdStrike Falcon for the list of hosts missing sensor coverage and creates a remediation report in Confluence for the IT operations team."
tags:
- security
- endpoint
- crowdstrike-falcon
- reporting
- monitoring
capability:
exposes:
- type: mcp
namespace: sensor-ops
port: 8080
tools:
- name: verify-sensor-coverage
description: "Query Falcon device management for hosts that are unprotected or have outdated sensor versions, then write a coverage gap report to Confluence. Use for monthly compliance audits and endpoint health reviews."
inputParameters:
- name: confluence_page_id
in: body
type: string
description: "Confluence page ID to update with the coverage gap report."
steps:
- name: get-unprotected-hosts
type: call
call: falcon-devices.list-devices
with:
filter: "status:'Reduced Functionality Mode',status:'Not Installed'"
- name: update-coverage-report
type: call
call: confluence.update-page
with:
page_id: "{{confluence_page_id}}"
title: "Falcon Sensor Coverage Gap Report"
body: "Unprotected hosts: {{get-unprotected-hosts.count}}\nDevice IDs: {{get-unprotected-hosts.device_ids}}\nReport generated: {{get-unprotected-hosts.generated_at}}"
consumes:
- type: http
namespace: falcon-devices
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: devices
path: "/devices/combined/devices/v1"
inputParameters:
- name: filter
in: query
operations:
- name: list-devices
method: GET
- type: http
namespace: confluence
baseUri: "https://crowdstrike.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: pages
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
Queries Falcon for sensors in reduced functionality mode, creates a ServiceNow remediation task, and alerts the endpoint team.
naftiko: "0.5"
info:
label: "Falcon Sensor Health Check"
description: "Queries Falcon for sensors in reduced functionality mode, creates a ServiceNow remediation task, and alerts the endpoint team."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: sensor-health
port: 8080
tools:
- name: check-sensor-health
description: "Query for sensors in degraded or RFM state, create a ServiceNow task, and notify the endpoint management team."
inputParameters:
- name: platform
in: body
type: string
description: "Platform filter: Windows, Mac, or Linux."
steps:
- name: query-rfm-hosts
type: call
call: "falcon.query-hosts"
with:
filter: "reduced_functionality_mode:\"yes\"+platform_name:\"{{platform}}\""
- name: create-snow-task
type: call
call: "servicenow.create-task"
with:
short_description: "Falcon RFM: {{query-rfm-hosts.total_count}} {{platform}} hosts in reduced mode"
assignment_group: "endpoint-management"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "endpoint-security"
text: "Sensor Health Alert: {{query-rfm-hosts.total_count}} {{platform}} hosts in RFM. Task: {{create-snow-task.number}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/queries/devices/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-hosts
method: GET
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Compiles an end-of-shift summary from Falcon detections and open investigations, and posts a structured handoff report to the SOC Slack channel.
naftiko: "0.5"
info:
label: "Falcon SOC Shift Handoff"
description: "Compiles an end-of-shift summary from Falcon detections and open investigations, and posts a structured handoff report to the SOC Slack channel."
tags:
- security
- soc-operations
- crowdstrike-falcon
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: soc-handoff
port: 8080
tools:
- name: generate-shift-handoff
description: "Aggregate Falcon detections and open Jira investigations from the last 8 hours and post a handoff summary."
inputParameters:
- name: shift_hours
in: body
type: string
description: "Number of hours in the shift to summarize."
steps:
- name: query-detections
type: call
call: "falcon.query-detections"
with:
filter: "created_timestamp:>\"{{shift_hours}}h\""
- name: query-open-jiras
type: call
call: "jira.search-issues"
with:
jql: "project = SEC AND status != Done AND updated >= -{{shift_hours}}h"
- name: post-handoff
type: call
call: "slack.post-message"
with:
channel: "soc-operations"
text: "SOC Shift Handoff ({{shift_hours}}h):\n- Detections: {{query-detections.total_count}}\n- Open investigations: {{query-open-jiras.total}}\nReview and continue monitoring."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-detections
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search"
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Fetches high-severity Falcon detections and forwards them to Splunk for SIEM correlation, then posts a sync confirmation to Slack.
naftiko: "0.5"
info:
label: "Falcon Splunk SIEM Integration"
description: "Fetches high-severity Falcon detections and forwards them to Splunk for SIEM correlation, then posts a sync confirmation to Slack."
tags:
- security
- siem
- crowdstrike-falcon
- splunk
- slack
capability:
exposes:
- type: mcp
namespace: falcon-splunk
port: 8080
tools:
- name: sync-detections-to-splunk
description: "Query Falcon for recent high-severity detections and forward to Splunk HEC for SIEM correlation."
inputParameters:
- name: hours
in: body
type: string
description: "Hours to look back."
steps:
- name: query-detections
type: call
call: "falcon.query-detections"
with:
filter: "max_severity:>=4+created_timestamp:>\"{{hours}}h\""
- name: send-to-splunk
type: call
call: "splunk.send-event"
with:
sourcetype: "crowdstrike:falcon:detection"
event: "{{query-detections.resources}}"
- name: confirm-sync
type: call
call: "slack.post-message"
with:
channel: "siem-operations"
text: "Falcon-Splunk sync: {{query-detections.total_count}} detections forwarded to Splunk in last {{hours}} hours."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-detections
method: GET
- type: http
namespace: splunk
baseUri: "https://splunk.crowdstrike.com:8088"
authentication:
type: bearer
token: "$secrets.splunk_hec_token"
resources:
- name: events
path: "/services/collector/event"
operations:
- name: send-event
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Queries Falcon Spotlight for vulnerabilities with high exploit prediction scores and prioritizes patching via Jira.
naftiko: "0.5"
info:
label: "Falcon Spotlight Exploit Prediction"
description: "Queries Falcon Spotlight for vulnerabilities with high exploit prediction scores and prioritizes patching via Jira."
tags:
- security
- vulnerability-management
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: exploit-prediction
port: 8080
tools:
- name: prioritize-exploit-vulns
description: "Query Spotlight for vulns with high ExPRT scores, create priority Jira tickets, and alert the patching team."
inputParameters:
- name: min_exprt_score
in: body
type: string
description: "Minimum ExPRT score threshold."
steps:
- name: query-high-exprt
type: call
call: "falcon.query-vulnerabilities"
with:
filter: "cve.exprt_rating:\"CRITICAL\"+status:\"open\""
- name: create-priority-ticket
type: call
call: "jira.create-issue"
with:
project_key: "PATCH"
issuetype: "Bug"
summary: "High exploit risk: {{query-high-exprt.total_count}} vulns with critical ExPRT rating"
priority: "Highest"
- name: notify-patching
type: call
call: "slack.post-message"
with:
channel: "patching"
text: "Exploit Prediction Alert: {{query-high-exprt.total_count}} vulnerabilities with critical ExPRT rating. Priority Jira: {{create-priority-ticket.key}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vulnerabilities
path: "/spotlight/queries/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-vulnerabilities
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Identifies Falcon sensors that have not checked in for a given period, hides them, and notifies the endpoint management team.
naftiko: "0.5"
info:
label: "Falcon Stale Sensor Cleanup"
description: "Identifies Falcon sensors that have not checked in for a given period, hides them, and notifies the endpoint management team."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- slack
- automation
capability:
exposes:
- type: mcp
namespace: stale-sensors
port: 8080
tools:
- name: cleanup-stale-sensors
description: "Query for Falcon sensors not seen in the given number of days and post a cleanup report."
inputParameters:
- name: days_stale
in: body
type: string
description: "Number of days since last check-in."
steps:
- name: query-stale
type: call
call: "falcon.query-hosts"
with:
filter: "last_seen:<\"{{days_stale}}d\""
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "endpoint-management"
text: "Stale Sensor Report: {{query-stale.total_count}} endpoints not seen in {{days_stale}} days. Review and clean up."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: hosts
path: "/devices/queries/devices/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-hosts
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves a threat actor profile from CrowdStrike Falcon Intelligence by name, returning origin, motivation, and targeted industries.
naftiko: "0.5"
info:
label: "Falcon Threat Actor Profile Lookup"
description: "Retrieves a threat actor profile from CrowdStrike Falcon Intelligence by name, returning origin, motivation, and targeted industries."
tags:
- security
- threat-intelligence
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-actor
port: 8080
tools:
- name: get-actor-profile
description: "Given a threat actor name (e.g., COZY BEAR), return their origin, motivation, and targeted industries."
inputParameters:
- name: actor_name
in: body
type: string
description: "CrowdStrike threat actor name."
call: "falcon-intel.get-actor"
with:
filter: "name:\"{{actor_name}}\""
outputParameters:
- name: origin
type: string
mapping: "$.resources[0].origins[0].value"
- name: motivation
type: string
mapping: "$.resources[0].motivations[0].value"
- name: target_industries
type: string
mapping: "$.resources[0].target_industries[0].value"
consumes:
- type: http
namespace: falcon-intel
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: actors
path: "/intel/combined/actors/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-actor
method: GET
Executes a threat hunt query in Falcon, correlates findings with MITRE ATT&CK, and distributes results to the threat hunt team via Slack and Confluence.
naftiko: "0.5"
info:
label: "Falcon Threat Hunt Orchestrator"
description: "Executes a threat hunt query in Falcon, correlates findings with MITRE ATT&CK, and distributes results to the threat hunt team via Slack and Confluence."
tags:
- security
- threat-hunting
- crowdstrike-falcon
- slack
- confluence
capability:
exposes:
- type: mcp
namespace: threat-hunt
port: 8080
tools:
- name: execute-threat-hunt
description: "Given a Falcon query and MITRE technique ID, run the hunt, and post results to Slack and document in Confluence."
inputParameters:
- name: hunt_query
in: body
type: string
description: "Falcon event search query."
- name: mitre_technique
in: body
type: string
description: "MITRE ATT&CK technique ID, e.g. T1059."
steps:
- name: run-hunt
type: call
call: "falcon.search-events"
with:
filter: "{{hunt_query}}"
- name: post-results
type: call
call: "slack.post-message"
with:
channel: "threat-hunt"
text: "Hunt results for {{mitre_technique}}: {{run-hunt.event_count}} events found. Query: {{hunt_query}}"
- name: document-hunt
type: call
call: "confluence.create-page"
with:
space_key: "SEC"
title: "Threat Hunt: {{mitre_technique}} — {{hunt_query}}"
body: "Hunt executed on CrowdStrike Falcon.\nQuery: {{hunt_query}}\nResults: {{run-hunt.event_count}} events\nMITRE: {{mitre_technique}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: events
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: search-events
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: confluence
baseUri: "https://crowdstrike.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Discovers unmanaged hosts in the network via Falcon, creates deployment tasks in ServiceNow, and alerts the endpoint team.
naftiko: "0.5"
info:
label: "Falcon Unmanaged Host Discovery"
description: "Discovers unmanaged hosts in the network via Falcon, creates deployment tasks in ServiceNow, and alerts the endpoint team."
tags:
- security
- asset-discovery
- crowdstrike-falcon
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: unmanaged-hosts
port: 8080
tools:
- name: discover-unmanaged-hosts
description: "Query Falcon for hosts seen on the network without a Falcon sensor and create deployment tasks."
inputParameters:
- name: subnet
in: body
type: string
description: "Network subnet to scan."
steps:
- name: query-unmanaged
type: call
call: "falcon.query-unmanaged-assets"
with:
filter: "network_segment:\"{{subnet}}\"+entity_type:\"unmanaged\""
- name: create-deploy-task
type: call
call: "servicenow.create-task"
with:
short_description: "Deploy Falcon sensor: {{query-unmanaged.total_count}} unmanaged hosts in {{subnet}}"
assignment_group: "endpoint-management"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "endpoint-security"
text: "Unmanaged Host Discovery: {{query-unmanaged.total_count}} hosts in {{subnet}} without Falcon sensor. Task: {{create-deploy-task.number}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: discover-hosts
path: "/discover/queries/hosts/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-unmanaged-assets
method: GET
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When Falcon detects unauthorized USB device usage, logs the event, creates a ServiceNow security incident, and notifies the DLP team.
naftiko: "0.5"
info:
label: "Falcon USB Device Control Alert"
description: "When Falcon detects unauthorized USB device usage, logs the event, creates a ServiceNow security incident, and notifies the DLP team."
tags:
- security
- device-control
- crowdstrike-falcon
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: usb-control
port: 8080
tools:
- name: handle-usb-violation
description: "Given a device control event ID, fetch details, create a ServiceNow security incident, and alert the DLP team."
inputParameters:
- name: event_id
in: body
type: string
description: "Falcon device control event ID."
steps:
- name: get-event
type: call
call: "falcon.get-device-event"
with:
ids: "{{event_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "USB violation: {{get-event.device_class}} on {{get-event.hostname}}"
category: "security"
description: "User: {{get-event.username}}\nDevice: {{get-event.device_class}}\nHost: {{get-event.hostname}}\nAction: {{get-event.action}}"
- name: notify-dlp
type: call
call: "slack.post-message"
with:
channel: "data-loss-prevention"
text: "USB Violation: {{get-event.device_class}} by {{get-event.username}} on {{get-event.hostname}} | SNOW: {{create-incident.number}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: device-events
path: "/device-control/entities/events/v1"
inputParameters:
- name: ids
in: query
operations:
- name: get-device-event
method: GET
- type: http
namespace: servicenow
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.snow_user"
password: "$secrets.snow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves user session activity from CrowdStrike Falcon Identity Protection by username, returning login events and risk score.
naftiko: "0.5"
info:
label: "Falcon User Activity Lookup"
description: "Retrieves user session activity from CrowdStrike Falcon Identity Protection by username, returning login events and risk score."
tags:
- security
- identity-protection
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-identity
port: 8080
tools:
- name: get-user-activity
description: "Given a username, return recent login events, risk score, and anomalous behavior flags from Falcon Identity."
inputParameters:
- name: username
in: body
type: string
description: "Username to look up."
call: "falcon.get-user-sessions"
with:
filter: "user_name:\"{{username}}\""
outputParameters:
- name: risk_score
type: string
mapping: "$.resources[0].risk_score"
- name: last_login
type: string
mapping: "$.resources[0].last_login_time"
- name: anomalous
type: string
mapping: "$.resources[0].is_anomalous"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: identity-sessions
path: "/identity-protection/combined/sessions/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-user-sessions
method: GET
Retrieves vulnerability details from CrowdStrike Spotlight by CVE ID, returning severity, affected hosts, and remediation status.
naftiko: "0.5"
info:
label: "Falcon Vulnerability Lookup"
description: "Retrieves vulnerability details from CrowdStrike Spotlight by CVE ID, returning severity, affected hosts, and remediation status."
tags:
- security
- vulnerability-management
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: falcon-vuln
port: 8080
tools:
- name: get-vulnerability
description: "Given a CVE ID, return the vulnerability severity, affected host count, and remediation status from Spotlight."
inputParameters:
- name: cve_id
in: body
type: string
description: "CVE identifier, e.g. CVE-2024-1234."
call: "falcon.get-vulnerability"
with:
filter: "cve.id:\"{{cve_id}}\""
outputParameters:
- name: severity
type: string
mapping: "$.resources[0].cve.severity"
- name: affected_hosts
type: string
mapping: "$.resources[0].host_info.count"
- name: remediation
type: string
mapping: "$.resources[0].remediation.action"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vulnerabilities
path: "/spotlight/combined/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-vulnerability
method: GET
Queries critical vulnerabilities from Falcon Spotlight, creates Jira remediation tickets, and posts a summary to Slack.
naftiko: "0.5"
info:
label: "Falcon Vulnerability Remediation Tracker"
description: "Queries critical vulnerabilities from Falcon Spotlight, creates Jira remediation tickets, and posts a summary to Slack."
tags:
- security
- vulnerability-management
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: vuln-remediation
port: 8080
tools:
- name: track-vuln-remediation
description: "Query critical Spotlight vulnerabilities, create Jira tickets for remediation, and notify the patching team."
inputParameters:
- name: min_cvss
in: body
type: string
description: "Minimum CVSS score to include."
steps:
- name: query-vulns
type: call
call: "falcon.query-vulnerabilities"
with:
filter: "cve.severity:\"CRITICAL\"+cve.base_score:>{{min_cvss}}"
- name: create-jira-ticket
type: call
call: "jira.create-issue"
with:
project_key: "PATCH"
issuetype: "Task"
summary: "Critical vulns: {{query-vulns.total_count}} with CVSS > {{min_cvss}}"
description: "Vulnerabilities from CrowdStrike Spotlight requiring remediation."
- name: notify-patching
type: call
call: "slack.post-message"
with:
channel: "patching"
text: "Vulnerability Remediation: {{query-vulns.total_count}} critical vulns (CVSS > {{min_cvss}}). Jira: {{create-jira-ticket.key}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vulnerabilities
path: "/spotlight/queries/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-vulnerabilities
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Compiles weekly security metrics from Falcon including detections, vulnerabilities, and cloud findings, then distributes via Slack.
naftiko: "0.5"
info:
label: "Falcon Weekly Security Posture Digest"
description: "Compiles weekly security metrics from Falcon including detections, vulnerabilities, and cloud findings, then distributes via Slack."
tags:
- security
- reporting
- crowdstrike-falcon
- slack
capability:
exposes:
- type: mcp
namespace: posture-digest
port: 8080
tools:
- name: generate-posture-digest
description: "Aggregate weekly security metrics from Falcon and post a posture digest to Slack."
inputParameters:
- name: slack_channel
in: body
type: string
description: "Slack channel for the digest."
steps:
- name: count-detections
type: call
call: "falcon.count-detections"
with:
filter: "created_timestamp:>\"7d\""
- name: count-vulns
type: call
call: "falcon.count-vulns"
with:
filter: "created_timestamp:>\"7d\"+cve.severity:\"CRITICAL\""
- name: post-digest
type: call
call: "slack.post-message"
with:
channel: "{{slack_channel}}"
text: "Weekly Security Posture:\n- New detections: {{count-detections.total}}\n- Critical vulns: {{count-vulns.total}}\nReview in Falcon console."
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/queries/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: count-detections
method: GET
- name: vulnerabilities
path: "/spotlight/queries/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: count-vulns
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When an employee's role changes in Workday, updates their Falcon host group assignment to match the new security policy requirements.
naftiko: "0.5"
info:
label: "Falcon Workday Role-Based Policy Assignment"
description: "When an employee's role changes in Workday, updates their Falcon host group assignment to match the new security policy requirements."
tags:
- security
- endpoint-protection
- crowdstrike-falcon
- workday
- slack
capability:
exposes:
- type: mcp
namespace: role-policy
port: 8080
tools:
- name: update-policy-for-role-change
description: "Given a worker ID, fetch the new role from Workday, update the Falcon host group, and notify security."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: update-host-group
type: call
call: "falcon.assign-host-group"
with:
hostname: "{{get-worker.hostname}}"
group_name: "{{get-worker.department}}-endpoints"
- name: notify-security
type: call
call: "slack.post-message"
with:
channel: "endpoint-security"
text: "Role change: {{get-worker.full_name}} moved to {{get-worker.department}}. Falcon host group updated."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/crowdstrike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: host-group-actions
path: "/devices/entities/host-group-actions/v1"
operations:
- name: assign-host-group
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a zero-day vulnerability is published, queries Falcon Spotlight for affected hosts, creates emergency patching tickets, and alerts leadership.
naftiko: "0.5"
info:
label: "Falcon Zero-Day Alert Workflow"
description: "When a zero-day vulnerability is published, queries Falcon Spotlight for affected hosts, creates emergency patching tickets, and alerts leadership."
tags:
- security
- vulnerability-management
- crowdstrike-falcon
- jira
- slack
capability:
exposes:
- type: mcp
namespace: zero-day-alert
port: 8080
tools:
- name: handle-zero-day-alert
description: "Given a CVE ID for a zero-day, find affected hosts in Spotlight, create Jira tickets, and escalate to leadership."
inputParameters:
- name: cve_id
in: body
type: string
description: "CVE identifier for the zero-day."
steps:
- name: find-affected
type: call
call: "falcon.query-vulnerabilities"
with:
filter: "cve.id:\"{{cve_id}}\""
- name: create-jira
type: call
call: "jira.create-issue"
with:
project_key: "PATCH"
issuetype: "Bug"
summary: "Zero-Day: {{cve_id}} — {{find-affected.total_count}} affected hosts"
description: "CVE: {{cve_id}}\nAffected hosts: {{find-affected.total_count}}\nImmediate patching required."
priority: "Highest"
- name: alert-leadership
type: call
call: "slack.post-message"
with:
channel: "security-leadership"
text: "ZERO-DAY ALERT: {{cve_id}} affects {{find-affected.total_count}} hosts. Emergency Jira: {{create-jira.key}}"
consumes:
- type: http
namespace: falcon
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vulnerabilities
path: "/spotlight/queries/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: query-vulnerabilities
method: GET
- type: http
namespace: jira
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
After a GitHub Actions workflow completes on the main branch, queries CrowdStrike Falcon for any detection events associated with the build runner and fails the deployment gate if threats are found.
naftiko: "0.5"
info:
label: "GitHub Actions CI Pipeline Security Gate"
description: "After a GitHub Actions workflow completes on the main branch, queries CrowdStrike Falcon for any detection events associated with the build runner and fails the deployment gate if threats are found."
tags:
- devops
- security
- github
- crowdstrike-falcon
- cicd
capability:
exposes:
- type: mcp
namespace: cicd-security-gate
port: 8080
tools:
- name: check-runner-security-posture
description: "Given a GitHub Actions workflow run ID and the hostname of the build runner, query Falcon for detections on that runner host during the build window and post a security gate status check to the GitHub commit. Use as a post-build security verification step."
inputParameters:
- name: run_id
in: body
type: string
description: "GitHub Actions workflow run ID."
- name: repo_owner
in: body
type: string
description: "GitHub repository owner."
- name: repo_name
in: body
type: string
description: "GitHub repository name."
- name: runner_hostname
in: body
type: string
description: "Hostname of the GitHub Actions runner used for the build."
- name: commit_sha
in: body
type: string
description: "Commit SHA the workflow ran against."
steps:
- name: check-runner-detections
type: call
call: falcon-cicd.list-detections-for-host
with:
filter: "device.hostname:'{{runner_hostname}}'+status:'new'"
- name: post-status-check
type: call
call: github-status.create-status
with:
owner: "{{repo_owner}}"
repo: "{{repo_name}}"
sha: "{{commit_sha}}"
state: "success"
description: "Falcon: {{check-runner-detections.count}} detections on runner {{runner_hostname}}"
context: "crowdstrike/security-gate"
consumes:
- type: http
namespace: falcon-cicd
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections
path: "/detects/combined/detects/v1"
inputParameters:
- name: filter
in: query
operations:
- name: list-detections-for-host
method: GET
- type: http
namespace: github-status
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: statuses
path: "/repos/{{owner}}/{{repo}}/statuses/{{sha}}"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: sha
in: path
operations:
- name: create-status
method: POST
On a pull request to a protected branch in GitHub, triggers a CrowdStrike Falcon code scanning check and blocks merge if critical findings are detected, posting results as a PR comment.
naftiko: "0.5"
info:
label: "GitHub Repository Security Scan Gate"
description: "On a pull request to a protected branch in GitHub, triggers a CrowdStrike Falcon code scanning check and blocks merge if critical findings are detected, posting results as a PR comment."
tags:
- devops
- security
- github
- crowdstrike-falcon
- code-scanning
capability:
exposes:
- type: mcp
namespace: devops-security
port: 8080
tools:
- name: scan-pull-request
description: "Given a GitHub repository and pull request number, trigger a Falcon code scanning analysis, wait for results, then post a status comment on the PR. Use as a pre-merge security gate in CI/CD pipelines."
inputParameters:
- name: repo_owner
in: body
type: string
description: "GitHub organization or user that owns the repository."
- name: repo_name
in: body
type: string
description: "GitHub repository name."
- name: pull_request_number
in: body
type: integer
description: "Pull request number to scan and comment on."
- name: commit_sha
in: body
type: string
description: "The HEAD commit SHA of the pull request branch."
steps:
- name: get-pr
type: call
call: github.get-pull-request
with:
owner: "{{repo_owner}}"
repo: "{{repo_name}}"
pull_number: "{{pull_request_number}}"
- name: post-scan-result
type: call
call: github-comments.create-comment
with:
owner: "{{repo_owner}}"
repo: "{{repo_name}}"
issue_number: "{{pull_request_number}}"
body: "Security scan initiated for commit {{commit_sha}}. Results will be posted when analysis completes."
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pull-requests
path: "/repos/{{owner}}/{{repo}}/pulls/{{pull_number}}"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: pull_number
in: path
operations:
- name: get-pull-request
method: GET
- type: http
namespace: github-comments
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: issue-comments
path: "/repos/{{owner}}/{{repo}}/issues/{{issue_number}}/comments"
inputParameters:
- name: owner
in: path
- name: repo
in: path
- name: issue_number
in: path
operations:
- name: create-comment
method: POST
When Falcon Identity Protection detects a compromised credential or suspicious login, suspends the Okta user session and creates a ServiceNow identity incident for investigation.
naftiko: "0.5"
info:
label: "Identity Threat Detection Response"
description: "When Falcon Identity Protection detects a compromised credential or suspicious login, suspends the Okta user session and creates a ServiceNow identity incident for investigation."
tags:
- security
- identity
- crowdstrike-falcon
- okta
- servicenow
- incident-response
capability:
exposes:
- type: mcp
namespace: identity-ops
port: 8080
tools:
- name: respond-to-identity-threat
description: "Given a Falcon Identity Protection alert for a user, suspend the user's Okta sessions and open a ServiceNow identity security incident. Use immediately when account takeover or credential compromise is detected."
inputParameters:
- name: username
in: body
type: string
description: "The username (UPN or email) of the potentially compromised account."
- name: alert_id
in: body
type: string
description: "The Falcon Identity Protection alert ID."
steps:
- name: get-okta-user
type: call
call: okta.get-user
with:
login: "{{username}}"
- name: revoke-sessions
type: call
call: okta.revoke-sessions
with:
user_id: "{{get-okta-user.user_id}}"
- name: create-identity-incident
type: call
call: servicenow-identity.create-incident
with:
short_description: "Identity Threat Detected: {{username}}"
category: "Identity Security"
urgency: "1"
description: "Falcon Alert: {{alert_id}}\nUser: {{username}}\nOkta User ID: {{get-okta-user.user_id}}\nSessions revoked at: {{revoke-sessions.revoked_at}}"
consumes:
- type: http
namespace: okta
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_ssws_token"
placement: header
resources:
- name: users
path: "/users"
inputParameters:
- name: login
in: query
operations:
- name: get-user
method: GET
- name: user-sessions
path: "/users/{{user_id}}/sessions"
inputParameters:
- name: user_id
in: path
operations:
- name: revoke-sessions
method: DELETE
- type: http
namespace: servicenow-identity
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
When a security bug is filed in Jira, automatically searches CrowdStrike Spotlight to determine whether any company endpoints are exposed to the related CVE, updating the Jira ticket with exposure count.
naftiko: "0.5"
info:
label: "Jira Bug to Falcon Exposure Correlation"
description: "When a security bug is filed in Jira, automatically searches CrowdStrike Spotlight to determine whether any company endpoints are exposed to the related CVE, updating the Jira ticket with exposure count."
tags:
- devops
- security
- jira
- crowdstrike-falcon
- vulnerability-management
capability:
exposes:
- type: mcp
namespace: vuln-correlation
port: 8080
tools:
- name: correlate-bug-to-exposure
description: "Given a Jira issue key for a security bug that references a CVE, query CrowdStrike Spotlight for the number of exposed endpoints and update the Jira issue with exposure impact data. Use during security bug triage to prioritize based on real exposure."
inputParameters:
- name: jira_issue_key
in: body
type: string
description: "Jira issue key for the security bug (e.g., 'SEC-4521')."
- name: cve_id
in: body
type: string
description: "CVE identifier referenced in the bug report (e.g., 'CVE-2024-12345')."
steps:
- name: get-exposure-count
type: call
call: spotlight-vuln.list-vulnerabilities
with:
filter: "cve.id:'{{cve_id}}'+status:'open'"
- name: update-jira-issue
type: call
call: jira-vuln.update-issue
with:
issue_key: "{{jira_issue_key}}"
comment: "Falcon Spotlight exposure check for {{cve_id}}: {{get-exposure-count.total}} endpoints exposed. Top affected product: {{get-exposure-count.top_product}}. CVSS Score: {{get-exposure-count.cvss_score}}."
consumes:
- type: http
namespace: spotlight-vuln
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vulnerabilities
path: "/spotlight/combined/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: list-vulnerabilities
method: GET
- type: http
namespace: jira-vuln
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issue-comments
path: "/issue/{{issue_key}}/comment"
inputParameters:
- name: issue_key
in: path
operations:
- name: update-issue
method: POST
Retrieves all open security-labeled Jira issues in the current sprint and posts a prioritized digest to the security engineering Slack channel.
naftiko: "0.5"
info:
label: "Jira Sprint Security Backlog Digest"
description: "Retrieves all open security-labeled Jira issues in the current sprint and posts a prioritized digest to the security engineering Slack channel."
tags:
- devops
- security
- jira
- slack
- reporting
capability:
exposes:
- type: mcp
namespace: sprint-reporting
port: 8080
tools:
- name: digest-security-backlog
description: "Query Jira for all open security-tagged issues in the active sprint for a given project, then post a prioritized summary to Slack. Use for weekly security engineering stand-ups or sprint reviews."
inputParameters:
- name: jira_project_key
in: body
type: string
description: "Jira project key to query for security issues (e.g., 'SEC' or 'ENG')."
- name: slack_channel
in: body
type: string
description: "Slack channel to post the sprint digest to."
steps:
- name: get-security-issues
type: call
call: jira-sprint.search-issues
with:
jql: "project={{jira_project_key}} AND labels=security AND sprint in openSprints() AND status != Done ORDER BY priority ASC"
- name: post-digest
type: call
call: slack-sprint.post-message
with:
channel: "{{slack_channel}}"
text: "Security Sprint Backlog ({{jira_project_key}}): {{get-security-issues.total}} open items | Critical: {{get-security-issues.critical_count}} | High: {{get-security-issues.high_count}}"
consumes:
- type: http
namespace: jira-sprint
baseUri: "https://crowdstrike.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues-search
path: "/search"
inputParameters:
- name: jql
in: query
operations:
- name: search-issues
method: GET
- type: http
namespace: slack-sprint
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Queries Okta for users without MFA enrolled and cross-references with Workday active employees to produce a compliance gap report, alerting the security team via Slack.
naftiko: "0.5"
info:
label: "Okta MFA Compliance Audit"
description: "Queries Okta for users without MFA enrolled and cross-references with Workday active employees to produce a compliance gap report, alerting the security team via Slack."
tags:
- security
- identity
- okta
- workday
- compliance
capability:
exposes:
- type: mcp
namespace: mfa-compliance
port: 8080
tools:
- name: audit-mfa-compliance
description: "Retrieve the list of Okta users without MFA factors enrolled, cross-reference with active Workday employees, and post a non-compliance summary to Slack. Use for periodic identity hygiene audits."
inputParameters:
- name: notification_channel
in: body
type: string
description: "Slack channel to receive the MFA compliance audit results."
steps:
- name: get-users-without-mfa
type: call
call: okta-audit.list-users-no-mfa
with:
filter: "status eq \"ACTIVE\""
- name: post-compliance-report
type: call
call: slack-compliance.post-message
with:
channel: "{{notification_channel}}"
text: "MFA Compliance Audit: {{get-users-without-mfa.count}} active users missing MFA enrollment. Review required before next compliance deadline."
consumes:
- type: http
namespace: okta-audit
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_ssws_token"
placement: header
resources:
- name: users-factors
path: "/users"
inputParameters:
- name: filter
in: query
operations:
- name: list-users-no-mfa
method: GET
- type: http
namespace: slack-compliance
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Triggers a Power BI dataset refresh for the CrowdStrike security KPI dashboard and notifies the security leadership team in Microsoft Teams when the refresh completes.
naftiko: "0.5"
info:
label: "Power BI Security KPI Report Refresh"
description: "Triggers a Power BI dataset refresh for the CrowdStrike security KPI dashboard and notifies the security leadership team in Microsoft Teams when the refresh completes."
tags:
- reporting
- data
- power-bi
- microsoft-teams
- security
capability:
exposes:
- type: mcp
namespace: bi-reporting
port: 8080
tools:
- name: refresh-security-kpi-dashboard
description: "Trigger a Power BI dataset refresh for the security KPI report, then send a Microsoft Teams notification to the security leadership channel when the refresh is complete. Use before executive security reviews."
inputParameters:
- name: dataset_id
in: body
type: string
description: "Power BI dataset ID for the security KPI dashboard."
- name: workspace_id
in: body
type: string
description: "Power BI workspace ID containing the dataset."
- name: teams_channel_id
in: body
type: string
description: "Microsoft Teams channel ID to notify on completion."
steps:
- name: trigger-refresh
type: call
call: powerbi.trigger-refresh
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-teams
type: call
call: msteams.send-message
with:
channel_id: "{{teams_channel_id}}"
message: "Security KPI Dashboard refresh triggered for dataset {{dataset_id}}. Results will be available within 15 minutes."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: trigger-refresh
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a candidate reaches the offer stage in the applicant tracking system, creates a pre-hire record in Workday and notifies the hiring manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Recruiter Pipeline Sync to Workday"
description: "When a candidate reaches the offer stage in the applicant tracking system, creates a pre-hire record in Workday and notifies the hiring manager via Microsoft Teams."
tags:
- hr
- recruiting
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: recruiting-ops
port: 8080
tools:
- name: sync-candidate-to-workday
description: "Given a candidate ID from the ATS in offer-accepted stage, create a Workday pre-hire record and notify the hiring manager in Microsoft Teams. Use when a candidate accepts an offer to trigger pre-boarding setup."
inputParameters:
- name: candidate_email
in: body
type: string
description: "Candidate's email address."
- name: candidate_name
in: body
type: string
description: "Candidate's full name."
- name: job_title
in: body
type: string
description: "Job title for the accepted offer."
- name: start_date
in: body
type: string
description: "Agreed start date in ISO 8601 format (YYYY-MM-DD)."
- name: hiring_manager_upn
in: body
type: string
description: "UPN (email) of the hiring manager to notify."
steps:
- name: create-prehire
type: call
call: workday-recruit.create-prehire
with:
email: "{{candidate_email}}"
full_name: "{{candidate_name}}"
job_title: "{{job_title}}"
start_date: "{{start_date}}"
- name: notify-manager
type: call
call: msteams-recruit.send-message
with:
recipient_upn: "{{hiring_manager_upn}}"
message: "New hire confirmed: {{candidate_name}} as {{job_title}} starting {{start_date}}. Workday pre-hire ID: {{create-prehire.prehire_id}}"
consumes:
- type: http
namespace: workday-recruit
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: prehires
path: "/crowdstrike/prehires"
operations:
- name: create-prehire
method: POST
- type: http
namespace: msteams-recruit
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves customer health metrics from CrowdStrike's internal platform usage API and syncs them as custom fields on the Salesforce Account record for customer success teams.
naftiko: "0.5"
info:
label: "Salesforce Account Health Score Sync"
description: "Retrieves customer health metrics from CrowdStrike's internal platform usage API and syncs them as custom fields on the Salesforce Account record for customer success teams."
tags:
- sales
- crm
- salesforce
- customer-success
capability:
exposes:
- type: mcp
namespace: customer-success
port: 8080
tools:
- name: sync-account-health-score
description: "Given a Salesforce account ID and corresponding CrowdStrike tenant ID, retrieve the customer's Falcon platform usage health score and update the Salesforce account record. Use for monthly customer success reviews and at-risk account identification."
inputParameters:
- name: account_id
in: body
type: string
description: "Salesforce account record ID."
- name: tenant_id
in: body
type: string
description: "CrowdStrike Falcon tenant/CID for the customer."
steps:
- name: get-health-score
type: call
call: falcon-platform.get-tenant-health
with:
tenant_id: "{{tenant_id}}"
- name: update-account
type: call
call: salesforce-account.update-account
with:
account_id: "{{account_id}}"
health_score: "{{get-health-score.score}}"
sensor_coverage_pct: "{{get-health-score.sensor_coverage}}"
last_health_sync: "{{get-health-score.as_of}}"
consumes:
- type: http
namespace: falcon-platform
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: tenant-health
path: "/customer-facing-assessment/entities/assessments/v1"
inputParameters:
- name: tenant_id
in: query
operations:
- name: get-tenant-health
method: GET
- type: http
namespace: salesforce-account
baseUri: "https://crowdstrike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH
When a new lead is created in Salesforce, queries Falcon Intelligence for any known threat associations with the lead's domain, enriching the lead record with a risk score.
naftiko: "0.5"
info:
label: "Salesforce Lead Enrichment with Threat Context"
description: "When a new lead is created in Salesforce, queries Falcon Intelligence for any known threat associations with the lead's domain, enriching the lead record with a risk score."
tags:
- sales
- crm
- salesforce
- threat-intelligence
- crowdstrike-falcon
capability:
exposes:
- type: mcp
namespace: sales-crm
port: 8080
tools:
- name: enrich-lead-with-threat-context
description: "Given a Salesforce lead ID, retrieve the lead's email domain, check it against Falcon Intelligence, and update the lead record with a threat risk label. Use when processing inbound leads to flag high-risk domains."
inputParameters:
- name: lead_id
in: body
type: string
description: "Salesforce lead record ID."
steps:
- name: get-lead
type: call
call: salesforce-lead.get-lead
with:
lead_id: "{{lead_id}}"
- name: check-threat-context
type: call
call: falcon-intel-lead.get-indicator
with:
value: "{{get-lead.email_domain}}"
type: "domain"
- name: update-lead
type: call
call: salesforce-lead-update.update-lead
with:
lead_id: "{{lead_id}}"
threat_verdict: "{{check-threat-context.verdict}}"
threat_label: "{{check-threat-context.labels}}"
consumes:
- type: http
namespace: salesforce-lead
baseUri: "https://crowdstrike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: get-lead
method: GET
- type: http
namespace: falcon-intel-lead
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: indicators
path: "/intel/combined/indicators/v1"
inputParameters:
- name: value
in: query
- name: type
in: query
operations:
- name: get-indicator
method: GET
- type: http
namespace: salesforce-lead-update
baseUri: "https://crowdstrike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead/{{lead_id}}"
inputParameters:
- name: lead_id
in: path
operations:
- name: update-lead
method: PATCH
Before a sales opportunity advances to contract stage in Salesforce, checks the prospective customer against CrowdStrike's threat intelligence for known malicious infrastructure associations.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Security Clearance Check"
description: "Before a sales opportunity advances to contract stage in Salesforce, checks the prospective customer against CrowdStrike's threat intelligence for known malicious infrastructure associations."
tags:
- sales
- security
- salesforce
- threat-intelligence
- crowdstrike-falcon
capability:
exposes:
- type: mcp
namespace: sales-security
port: 8080
tools:
- name: check-opportunity-clearance
description: "Given a Salesforce opportunity ID, retrieve the account domain and query Falcon Intelligence to verify the domain has no known malicious associations before contract progression. Use in opportunity stage-advancement workflows."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID (18-character Salesforce record ID)."
steps:
- name: get-opportunity
type: call
call: salesforce.get-opportunity
with:
opportunity_id: "{{opportunity_id}}"
- name: check-domain
type: call
call: falcon-intel-sales.get-indicator
with:
value: "{{get-opportunity.account_domain}}"
type: "domain"
- name: update-opportunity
type: call
call: salesforce-update.update-opportunity
with:
opportunity_id: "{{opportunity_id}}"
security_clearance_status: "{{check-domain.verdict}}"
security_check_date: "{{check-domain.checked_at}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://crowdstrike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: falcon-intel-sales
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: indicators
path: "/intel/combined/indicators/v1"
inputParameters:
- name: value
in: query
- name: type
in: query
operations:
- name: get-indicator
method: GET
- type: http
namespace: salesforce-update
baseUri: "https://crowdstrike.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: update-opportunity
method: PATCH
Pulls current endpoint coverage, active detections count, and unresolved vulnerability counts from CrowdStrike Falcon and publishes a daily summary to a Slack channel.
naftiko: "0.5"
info:
label: "Security Posture Dashboard Digest"
description: "Pulls current endpoint coverage, active detections count, and unresolved vulnerability counts from CrowdStrike Falcon and publishes a daily summary to a Slack channel."
tags:
- security
- reporting
- crowdstrike-falcon
- slack
- monitoring
capability:
exposes:
- type: mcp
namespace: security-reporting
port: 8080
tools:
- name: digest-security-posture
description: "Retrieve today's Falcon detection counts, endpoint coverage percentage, and open critical vulnerabilities, then post a digest summary to the designated Slack security channel. Use for daily security stand-up reporting."
inputParameters:
- name: slack_channel
in: body
type: string
description: "Slack channel ID or name to post the digest to."
steps:
- name: get-detections-summary
type: call
call: falcon-summary.get-detections-aggregate
with:
date_range_days: "1"
- name: get-vuln-summary
type: call
call: spotlight-summary.get-vuln-counts
with:
filter: "status:'open'+cve.severity:'CRITICAL'"
- name: post-digest
type: call
call: slack-reporting.post-message
with:
channel: "{{slack_channel}}"
text: "Daily Security Posture: Detections (24h): {{get-detections-summary.total}} | Critical CVEs Open: {{get-vuln-summary.count}} | High-Severity Detections: {{get-detections-summary.high_count}}"
consumes:
- type: http
namespace: falcon-summary
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: detections-aggregate
path: "/detects/aggregates/detects/GET/v1"
inputParameters:
- name: date_range_days
in: query
operations:
- name: get-detections-aggregate
method: GET
- type: http
namespace: spotlight-summary
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: vuln-counts
path: "/spotlight/aggregates/vulnerabilities/v1"
inputParameters:
- name: filter
in: query
operations:
- name: get-vuln-counts
method: GET
- type: http
namespace: slack-reporting
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a CrowdStrike Falcon prevention policy change is needed, creates a formal ServiceNow change request for ITIL approval before applying the new policy configuration.
naftiko: "0.5"
info:
label: "ServiceNow Change Request for Falcon Policy Update"
description: "When a CrowdStrike Falcon prevention policy change is needed, creates a formal ServiceNow change request for ITIL approval before applying the new policy configuration."
tags:
- itsm
- security
- servicenow
- change-management
- crowdstrike-falcon
capability:
exposes:
- type: mcp
namespace: change-management
port: 8080
tools:
- name: request-policy-change
description: "Given a Falcon policy ID, proposed change description, and business justification, create a ServiceNow change request for ITIL review and approval before the policy is modified. Use when Falcon prevention or detection policies require changes in production."
inputParameters:
- name: policy_id
in: body
type: string
description: "The CrowdStrike Falcon policy ID to be changed."
- name: change_description
in: body
type: string
description: "Description of the proposed policy change and its expected impact."
- name: business_justification
in: body
type: string
description: "Business or security justification for the policy change."
- name: requested_by
in: body
type: string
description: "Email or username of the requester."
call: servicenow-change.create-change-request
with:
short_description: "Falcon Policy Change Request: {{policy_id}}"
description: "Policy ID: {{policy_id}}\nChange: {{change_description}}\nJustification: {{business_justification}}\nRequested by: {{requested_by}}"
category: "Security"
type: "Normal"
outputParameters:
- name: change_number
type: string
mapping: "$.result.number"
- name: change_sys_id
type: string
mapping: "$.result.sys_id"
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change-request
method: POST
Checks the status of CrowdStrike threat intelligence data pipelines feeding into Snowflake and alerts the data engineering team in Slack if any pipeline has not refreshed within the expected SLA window.
naftiko: "0.5"
info:
label: "Snowflake Threat Data Pipeline Monitor"
description: "Checks the status of CrowdStrike threat intelligence data pipelines feeding into Snowflake and alerts the data engineering team in Slack if any pipeline has not refreshed within the expected SLA window."
tags:
- data
- monitoring
- snowflake
- slack
- threat-intelligence
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: check-threat-pipeline-health
description: "Query Snowflake for the last successful load timestamp of CrowdStrike threat data tables. If any table is stale beyond the SLA threshold, post an alert to Slack. Use in scheduled data quality monitoring."
inputParameters:
- name: sla_hours
in: body
type: integer
description: "Maximum acceptable hours since last data load before raising an alert."
- name: alert_channel
in: body
type: string
description: "Slack channel to notify if pipeline is stale."
steps:
- name: check-pipeline-status
type: call
call: snowflake.run-query
with:
statement: "SELECT table_name, MAX(loaded_at) as last_load FROM threat_intel.pipeline_metadata WHERE loaded_at < DATEADD(hour, -{{sla_hours}}, CURRENT_TIMESTAMP()) GROUP BY 1"
- name: post-alert
type: call
call: slack-data.post-message
with:
channel: "{{alert_channel}}"
text: "DATA PIPELINE ALERT: CrowdStrike threat intelligence pipeline is stale. Table: {{check-pipeline-status.table_name}} | Last load: {{check-pipeline-status.last_load}} | SLA: {{sla_hours}}h"
consumes:
- type: http
namespace: snowflake
baseUri: "https://crowdstrike.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: slack-data
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Looks up a file hash, IP address, or domain in CrowdStrike Falcon Intelligence to return threat actor associations, malware family, and verdict.
naftiko: "0.5"
info:
label: "Threat Intelligence Indicator Lookup"
description: "Looks up a file hash, IP address, or domain in CrowdStrike Falcon Intelligence to return threat actor associations, malware family, and verdict."
tags:
- security
- threat-intelligence
- crowdstrike-falcon
- lookup
capability:
exposes:
- type: mcp
namespace: threat-intel
port: 8080
tools:
- name: get-indicator-report
description: "Given a file hash (MD5/SHA256), IP address, or domain, query CrowdStrike Falcon Intelligence and return the verdict, associated malware families, and threat actor attributions."
inputParameters:
- name: indicator
in: body
type: string
description: "The IOC to look up: SHA256 hash, MD5 hash, IPv4 address, or domain name."
- name: indicator_type
in: body
type: string
description: "Type of indicator: hash, ip, or domain."
call: falcon-intel.get-indicator
with:
value: "{{indicator}}"
type: "{{indicator_type}}"
outputParameters:
- name: verdict
type: string
mapping: "$.resources[0].verdict"
- name: malware_families
type: string
mapping: "$.resources[0].malware_families[0]"
- name: threat_actors
type: string
mapping: "$.resources[0].actors[0]"
- name: labels
type: string
mapping: "$.resources[0].labels[0].name"
consumes:
- type: http
namespace: falcon-intel
baseUri: "https://api.crowdstrike.com"
authentication:
type: bearer
token: "$secrets.falcon_oauth_token"
resources:
- name: indicators
path: "/intel/combined/indicators/v1"
inputParameters:
- name: value
in: query
- name: type
in: query
operations:
- name: get-indicator
method: GET
Retrieves current headcount and departmental FTE distribution from Workday for executive reporting and financial planning purposes.
naftiko: "0.5"
info:
label: "Workday Payroll Headcount Snapshot"
description: "Retrieves current headcount and departmental FTE distribution from Workday for executive reporting and financial planning purposes."
tags:
- hr
- finance
- workday
- reporting
capability:
exposes:
- type: mcp
namespace: hr-finance
port: 8080
tools:
- name: get-headcount-snapshot
description: "Retrieve the current total headcount and FTE breakdown by department and location from Workday. Use for monthly HR reporting, headcount planning, and budget reviews."
call: workday-hc.headcount-report
outputParameters:
- name: total_headcount
type: string
mapping: "$.report.total"
- name: departments
type: array
mapping: "$.report.departments"
items:
- name: department_name
type: string
mapping: "$.name"
- name: fte_count
type: number
mapping: "$.fte_count"
consumes:
- type: http
namespace: workday-hc
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: headcount-report
path: "/crowdstrike/reports/headcount"
operations:
- name: headcount-report
method: GET
When an employee changes roles in Workday, triggers an Okta group membership update to reflect new job function and creates a ServiceNow access review task for IT security.
naftiko: "0.5"
info:
label: "Workday Role Change Access Review"
description: "When an employee changes roles in Workday, triggers an Okta group membership update to reflect new job function and creates a ServiceNow access review task for IT security."
tags:
- hr
- identity
- workday
- okta
- servicenow
- access-management
capability:
exposes:
- type: mcp
namespace: access-review
port: 8080
tools:
- name: process-role-change
description: "Given a Workday worker ID with an updated job profile, update Okta group memberships to match the new role's access policy and create a ServiceNow access review task for security team validation. Use when employees transfer teams or are promoted."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID of the employee whose role has changed."
- name: new_job_profile
in: body
type: string
description: "New Workday job profile name."
- name: old_job_profile
in: body
type: string
description: "Previous Workday job profile name."
steps:
- name: get-worker
type: call
call: workday-role.get-worker
with:
worker_id: "{{worker_id}}"
- name: update-okta-groups
type: call
call: okta-role.update-user-groups
with:
login: "{{get-worker.work_email}}"
new_profile: "{{new_job_profile}}"
- name: create-access-review
type: call
call: servicenow-access.create-task
with:
short_description: "Access Review: {{get-worker.full_name}} role change from {{old_job_profile}} to {{new_job_profile}}"
category: "Access Management"
description: "Worker: {{worker_id}}\nEmployee: {{get-worker.full_name}}\nPrevious Role: {{old_job_profile}}\nNew Role: {{new_job_profile}}\nOkta groups updated: {{update-okta-groups.groups_modified}}"
consumes:
- type: http
namespace: workday-role
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/crowdstrike/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: okta-role
baseUri: "https://crowdstrike.okta.com/api/v1"
authentication:
type: apikey
key: "Authorization"
value: "$secrets.okta_ssws_token"
placement: header
resources:
- name: user-groups
path: "/users/{{user_id}}/groups"
inputParameters:
- name: user_id
in: path
operations:
- name: update-user-groups
method: PUT
- type: http
namespace: servicenow-access
baseUri: "https://crowdstrike.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/sc_task"
operations:
- name: create-task
method: POST