AgentStack
SKILL verified MIT Self-run

Crowdstrike Api

skill-liberty91ltd-cti-skills-crowdstrike-api · by Liberty91LTD

CrowdStrike Falcon Intelligence (Intel API) reference. OAuth2 auth, Falcon Query Language, indicator (IOC) lookups, threat-actor entities, intel reports, MITRE ATT&CK mappings, malware families, vulnerabilities, rule sets.

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-liberty91ltd-cti-skills-crowdstrike-api

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Crowdstrike Api? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

CrowdStrike Falcon Intelligence (Intel) API

This is reference documentation. The agent-invokable lookup skill is /lookup-crowdstrike; the runtime CLI is tools/clis/crowdstrike.py. Read this file when the lookup skill's options are not enough and you need to know which raw endpoint to hit, what fields a response carries, or how to construct an FQL query the CLI does not expose directly.

Source of truth: https://developer.crowdstrike.com/api-reference/collections/intel/

Base URL

OAuth2 base differs by cloud region. The Intel path prefix is /intel/.

| Cloud | Base URL | |---|---| | US-1 (default) | https://api.crowdstrike.com | | US-2 | https://api.us-2.crowdstrike.com | | EU-1 | https://api.eu-1.crowdstrike.com | | US-GovCloud | https://api.laggar.gcw.crowdstrike.com |

Override with CROWDSTRIKE_BASE_URL (or --base-url). FalconPy also accepts the short names us-1, us-2, eu-1, usgov1.

Authentication

OAuth2 client-credentials flow:

  1. POST /oauth2/token with form-encoded client_id and client_secret.
  2. Response: {"access_token": "", "expires_in": 1799, "token_type": "bearer"}.
  3. All subsequent requests carry Authorization: Bearer .

FalconPy performs this exchange and refresh automatically when given client_id= / client_secret=.

# Manual token exchange
TOKEN=$(curl -s -X POST "https://api.crowdstrike.com/oauth2/token" \
  -d "client_id=$CROWDSTRIKE_CLIENT_ID&client_secret=$CROWDSTRIKE_CLIENT_SECRET" | jq -r .access_token)

# Subsequent call
curl -s "https://api.crowdstrike.com/intel/combined/actors/v1?filter=origins.slug%3A%27ru%27&limit=10" \
  -H "Authorization: Bearer $TOKEN"

The API client needs the Intel scopes: Indicators (Falcon Intelligence): Read, Actors (Falcon Intelligence): Read, Reports (Falcon Intelligence): Read, and Rules (Falcon Intelligence): Read for rule-set endpoints. Create it in the Falcon console → Support and resources → API clients and keys. If the env vars are unset, inform the user to run /cti-setup or ./scripts/setup.sh.

Rate limits

Per-tenant token bucket. Responses carry X-RateLimit-Limit and X-RateLimit-Remaining. On exhaustion the API returns HTTP 429 with a Retry-After: header — back off and retry. 429 is also returned briefly if you call before the OAuth token is minted.

Falcon Query Language (FQL)

Query/combined endpoints accept a filter parameter in FQL:

  • Equality: malicious_confidence:'high', name:'FANCY BEAR' (actor name; exact match)
  • Country slugs are ISO 3166-1 alpha-2 codes, not names: origins.slug:'ru' (Russia), 'cn' (China), 'ir' (Iran), 'kp' (North Korea), target_countries.slug:'us'
  • Other nested arrays use word slugs: target_industries.slug:'financial-services', motivations.slug:'state-sponsored', actors.slug:'mustang-panda'
  • Comparisons / dates: created_date:>'2025-01-01', last_updated:>=1704067200
  • Boolean combine: + = AND, , = OR. e.g. origins.slug:'cn'+target_industries.slug:'government'
  • Free-text: the separate q parameter does a fuzzy text match across the entity (used by actor/reports --search)
  • Sort: sort=created_date|desc, sort=last_activity_date|desc. name is not a sortable field on the actors endpoint — sorting by it silently returns zero results
  • Page: limit (max 5000 for most, 10000 for indicators) + offset

Capability map

| Group | Operation | Method + endpoint | FalconPy method | |---|---|---|---| | Actors | QueryIntelActorEntities | GET /intel/combined/actors/v1 | query_actor_entities | | Actors | QueryIntelActorIds | GET /intel/queries/actors/v1 | query_actor_ids | | Actors | GetIntelActorEntities | GET /intel/entities/actors/v1 | get_actor_entities | | Indicators | QueryIntelIndicatorEntities | GET /intel/combined/indicators/v1 | query_indicator_entities | | Indicators | QueryIntelIndicatorIds | GET /intel/queries/indicators/v1 | query_indicator_ids | | Indicators | GetIntelIndicatorEntities | POST /intel/entities/indicators/GET/v1 | get_indicator_entities | | Reports | QueryIntelReportEntities | GET /intel/combined/reports/v1 | query_report_entities | | Reports | QueryIntelReportIds | GET /intel/queries/reports/v1 | query_report_ids | | Reports | GetIntelReportEntities | GET /intel/entities/reports/v1 | get_report_entities | | Reports | GetIntelReportPDF | GET /intel/entities/report-files/v1 | get_report_pdf | | MITRE | QueryMitreAttacks | GET /intel/combined/mitre-attacks/v1 | query_mitre_attacks | | MITRE | QueryMitreAttacksForMalware | GET /intel/combined/mitre-attacks-for-malware/v1 | query_mitre_attacks_for_malware | | MITRE | GetMitreReport | GET /intel/entities/mitre-reports/v1 | get_mitre_report | | MITRE | GetMalwareMitreReport | GET /intel/entities/malware-mitre-reports/v1 | get_malware_mitre_report | | MITRE | PostMitreAttacks | POST /intel/entities/mitre/v1 | post_mitre_attacks | | Malware | QueryIntelMalwareEntities | GET /intel/combined/malware/v1 | query_malware / query_malware_entities | | Malware | GetIntelMalwareEntities | GET /intel/entities/malware/v1 | get_malware_entities | | Vulnerabilities | QueryVulnerabilities | GET /intel/queries/vulnerabilities/v1 | query_vulnerabilities | | Vulnerabilities | GetVulnerabilities | GET /intel/entities/vulnerabilities/GET/v1 | get_vulnerabilities | | Rule sets | QueryIntelRuleIds | GET /intel/queries/rules/v1 | query_rule_ids | | Rule sets | GetIntelRuleEntities | GET /intel/entities/rules/v1 | get_rule_entities | | Rule sets | GetIntelRuleFile | GET /intel/entities/rules-files/v1 | get_rule_file | | Rule sets | GetLatestIntelRuleFile | GET /intel/entities/rules-latest-files/v1 | get_latest_intel_rule_file |

The CLI wraps the bold-path subset (actors, indicators, reports, mitre-attacks, mitre-reports). The rest are reachable directly via FalconPy if a skill needs them.

Key endpoints — examples

Indicator (IOC) lookup

# Single-value lookup (CLI: `indicator `)
curl -s "https://api.crowdstrike.com/intel/combined/indicators/v1?filter=indicator%3A%271.1.1.1%27&limit=50" \
  -H "Authorization: Bearer $TOKEN"

# Browse/sweep the feed — latest high-confidence malicious IOCs (CLI: `indicators --malicious`)
curl -s "https://api.crowdstrike.com/intel/combined/indicators/v1?filter=malicious_confidence%3A%27high%27&sort=published_date%7Cdesc&limit=10" \
  -H "Authorization: Bearer $TOKEN"

type values are: ip_address, domain, url, hash_md5, hash_sha1, hash_sha256, email_address, file_name, mutex_name, registry, service_name, username, persona_name, x509_serial, x509_subject (and more). Combine confidence + type + actors:'' + malware_families:'' + published_date:>EPOCH with +. Requires the Indicators (Falcon Intelligence): Read scope — without it the endpoint returns HTTP 403 "scope not permitted" even though Actors/Reports work.

Response resources[] highlights: indicator, type (ip_address/domain/hash_sha256/url/…), malicious_confidence (high/medium/low/unverified), actors[] (slugs), malware_families[], kill_chains[], threat_types[], reports[] (report IDs), labels[], relations[], published_date, last_updated.

Actor entities

# Search by origin (ISO country-code slug; sort by activity, NOT name)
curl -s "https://api.crowdstrike.com/intel/combined/actors/v1?filter=origins.slug%3A%27ru%27&sort=last_activity_date%7Cdesc&limit=30" \
  -H "Authorization: Bearer $TOKEN"

# Free-text profile lookup
curl -s "https://api.crowdstrike.com/intel/combined/actors/v1?q=Charming%20Kitten&limit=1" \
  -H "Authorization: Bearer $TOKEN"

Actor resources[] fields: id, name, slug, short_description, description, known_as, origins[], target_countries[], target_industries[], motivations[], capability, group, actor_type, first_activity_date, last_activity_date, url. Each origins/target_* element is {id, value, slug}.

Reports

# Latest reports for an actor
curl -s "https://api.crowdstrike.com/intel/combined/reports/v1?filter=actors.slug%3A%27mustang-panda%27&sort=created_date%7Cdesc&limit=5" \
  -H "Authorization: Bearer $TOKEN"

# Download a report PDF (binary)
curl -s "https://api.crowdstrike.com/intel/entities/report-files/v1?ids=CSA-250123" \
  -H "Authorization: Bearer $TOKEN" -o report.pdf

Report resources[] fields: id, name, title, slug, short_description, description, created_date, last_modified_date, actors[], target_countries[], target_industries[], motivations[], tags[], report_type, sub_type, url, attachments[].

MITRE ATT&CK for an actor

# Technique IDs mapped to an actor (by slug or id)
curl -s "https://api.crowdstrike.com/intel/combined/mitre-attacks/v1?id=charming-kitten" \
  -H "Authorization: Bearer $TOKEN"

# Full ATT&CK report — csv | json | json_navigator
curl -s "https://api.crowdstrike.com/intel/entities/mitre-reports/v1?actor_id=charming-kitten&format=json_navigator" \
  -H "Authorization: Bearer $TOKEN"

QueryMitreAttacks returns a flat list of ATT&CK technique IDs in resources[]. GetMitreReport returns the full mapping; json_navigator is an ATT&CK Navigator layer JSON you can load directly into the Navigator UI. Resolve technique IDs against the bundled dataset with /mitre-attack.

Response shape

FalconPy returns {status_code, headers, body} where body = {meta, resources, errors}. The CLI unwraps body.resources and emits a normalised envelope. See skills/lookup-crowdstrike/SKILL.md § Response format.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.