AbuseIPDB API reference. IP reputation and abuse report lookups.
日本語の概要は準備中です。原文の説明を表示しています。
Use when you need to query an OpenCTI instance — is this IOC already known, what entities/reports/campaigns exist for an actor — or push new intel into it — creating indicators/observables, labelling, TLP markings, relationships, or importing a STIX 2.1 bundle. Two-way integration. Commonly invoked by /ip-investigation and friends to check whether an indicator is already in your knowledge base, and by analytical skills that want to publish their findings back to OpenCTI. Reads $OPENCTI_URL and $OPENCTI_TOKEN.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Two-way bridge to an OpenCTI threat-intelligence platform. OpenCTI is a STIX 2.1-native knowledge base: everything in it — indicators, observables, intrusion sets, malware, reports, campaigns — is a STIX entity connected by relationships. Like /lookup-misp, this skill also writes: it can create indicators and observables, label and TLP-mark entities, relate them, and import STIX 2.1 bundles. Treat write commands as deliberate actions; don't use them in autonomous enrichment loops. The delete command is destructive — always confirm with the user before invoking it.
Read:
lookup)search, list, get)list with filters)connectors, version)Write:
/stix-bundle should be imported as entitiesDo NOT invoke for:
/lookup-misp). OpenCTI is your internal knowledge graph; MISP is the exchange layer. Many teams run both, synced by a connector.Single Python CLI (stdlib only — no install). Single endpoint: everything is GraphQL against $OPENCTI_URL/graphql with Authorization: Bearer $OPENCTI_TOKEN.
# Connectivity + version check
python3 tools/clis/opencti.py version
# Is this IOC known? Checks observables AND indicators in one call
python3 tools/clis/opencti.py lookup 1.2.3.4
python3 tools/clis/opencti.py lookup evil.example.com --limit 10
# Global full-text search across all entity types (actors, malware, reports, ...)
python3 tools/clis/opencti.py search "APT28" --limit 10
# List/filter one entity type. Types: indicators, observables, reports, incidents,
# campaigns, intrusion-sets, malware, attack-patterns, vulnerabilities, sightings
python3 tools/clis/opencti.py list indicators --score-gte 80 --created-after 2026-06-01T00:00:00Z
python3 tools/clis/opencti.py list reports --label apt28 --limit 10
python3 tools/clis/opencti.py list intrusion-sets --order-by modified --order desc
# Full detail + first 25 relationships for one entity (id from lookup/search/list)
python3 tools/clis/opencti.py get <internal-id>
# Connector health (which enrichment/import connectors are registered + active)
python3 tools/clis/opencti.py connectors
list paginates: when the response has has_next_page: true, pass the returned end_cursor back via --after for the next page.
# Create an indicator (auto-generates the STIX pattern; creates the underlying
# observable too by default so raw-value lookups will find it)
python3 tools/clis/opencti.py create-indicator \
--value 185.220.101.45 --type ip \
--score 85 --description 'C2 observed 2026-07-01' \
--labels apt28,c2
# Explicit STIX pattern (for anything the --type shorthand doesn't cover)
python3 tools/clis/opencti.py create-indicator \
--pattern "[file:hashes.'SHA-256' = '<hash>' AND file:name = 'dropper.exe']" \
--observable-type StixFile --name 'APT28 dropper'
# Create a bare observable (a fact, no detection semantics)
python3 tools/clis/opencti.py create-observable --value 185.220.101.45 --type ip --labels apt28
# Label + TLP-mark an existing entity (labels are auto-created if missing)
python3 tools/clis/opencti.py add-label <id> apt28 c2
python3 tools/clis/opencti.py add-marking <id> TLP:AMBER
# Update a field (name | description | score | confidence)
python3 tools/clis/opencti.py update <id> --field score --value 95
# Relate two entities with a STIX relationship (indicates, uses, targets, ...)
python3 tools/clis/opencti.py create-relationship --from <indicator-id> --to <malware-id> --type indicates
# Import a STIX 2.1 bundle (upload + trigger import job)
python3 tools/clis/opencti.py upload-stix data/stix-bundles/2026-07-01-apt28-c2.json
# Delete an entity — DESTRUCTIVE. Confirm with the user first.
python3 tools/clis/opencti.py delete <id>
All commands accept --dry-run (preview the GraphQL request without sending) and --insecure (skip TLS verification, common on internal deployments).
The CLI exits 2 if OPENCTI_URL or OPENCTI_TOKEN is unset (when not in dry-run). Report missing credentials; do not fabricate.
OpenCTI separates the two, and it matters for both reads and writes:
lookup checks both and reports which matched (known_as). When writing: use create-indicator for anything you'd want detections or blocklists built from, and let it create the companion observable (the default — don't pass --no-observable unless you have a reason; without the observable, raw value-searches won't find the IOC). Use create-observable for context-only sightings. Deleting an indicator does not cascade to its observable, and vice versa.
OpenCTI is STIX-native, so bundles from /stix-bundle import without the marking-definition surgery MISP needs:
/ip-investigation)/stix-bundle)/apply-tlp, /score-source)python3 tools/clis/opencti.py upload-stix <bundle.json>Import semantics: by default the CLI triggers the import with bypassValidation, which imports the bundle directly. With --no-bypass (or if your token lacks the bypass capability) the bundle lands in the analyst workbench (Data → Import) awaiting human validation — uploaded but not yet in the knowledge base. The CLI's response note tells you which happened; relay it. Import is asynchronous — poll with lookup/search; small bundles take seconds.
All commands return JSON:
source: opencti
operation: lookup | search | list | get | create-indicator | upload-stix | ...
query_time: <ISO8601>
# lookup:
known: true|false
known_as: [observable, indicator]
observables: [...]
indicators: [...]
# list:
total_matches: <n>
has_next_page: true|false
end_cursor: <cursor for --after>
results: [...]
# get:
entity: {...}
relationships: [...]
Default rating for downstream /score-source: B2 (usually reliable, probably true). OpenCTI is an aggregation platform — the rating belongs to the feed or author behind the entity, not the platform. Check createdBy and the entity's labels/markings:
confidence field on the entity (0-100) maps directly onto /confidence-levels bandsA reliability value on an Organization in OpenCTI is that instance's Admiralty rating of the source. Show it as such.
Evidence grades are a different instrument. Admiralty ratings apply to lookup results and single items; the evidence grade from /quality-of-information-check applies to claims from documents; neither is converted into the other. When pushing graded claims, do not write the grade into an Organization's reliability field. That field is a track-record rating. Put the two words in the labels or the description of the object that expresses the claim, for example --labels access-level:direct,claim-support:firm. Bundles from /stix-bundle carry them as x_liberty91_access_level and x_liberty91_claim_support. When reading, a confidence value becomes claim support by the import table in /stix-bundle, with access level indirect and the flag derived_from_confidence.
errors array — the CLI surfaces the first message and exits 1. AUTH_REQUIRED means a bad or missing token.x_opencti_score feeds downstream decay and detection-export rules on many deployments. Don't inflate scores on write; 50 is neutral.add-label and --labels auto-create missing labels — check list indicators --label <name> for the existing convention before inventing a new one./stix-bundle — write STIX 2.1 bundles that this CLI's upload-stix consumes (OpenCTI accepts them as-is; no MISP-style TLP workaround needed)/lookup-misp — the sharing-platform sibling; OpenCTI = internal knowledge graph, MISP = community exchange/lookup-virustotal, /lookup-otx — community reputation lookups; chain before pushing into OpenCTI/score-source — apply Admiralty rating before publishing/apply-tlp — decide TLP before add-marking/ip-investigation, /domain-investigation, /hash-investigation, /url-investigation — produce findings that OpenCTI write commands consume/threat-actor-profiling, /campaign-tracking — consume search/list/get output for actor and campaign contexttools/integrations/opencti.mdtools/clis/opencti.py$OPENCTI_URL/public/graphql (when enabled by the admin)まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
AbuseIPDB API reference. IP reputation and abuse report lookups.
日本語の概要は準備中です。原文の説明を表示しています。
Analysis of Competing Hypotheses — structured technique for evaluating multiple explanations against evidence. Use when facing ambiguous attribution or multiple plausible scenarios. Prefers graded evidence items from /quality-of-information-check and runs that skill first when handed raw URLs or text. Runs on ungraded evidence when asked, labelled as such, unweighted, and capped at Moderate confidence.
日本語の概要は準備中です。原文の説明を表示しています。
Use when documenting a named campaign across time and victims, the user asks to start or update a campaign record, or another skill identified a multi-incident cluster that warrants formal tracking. Provides the template (timeline, attribution, victimology, attack chain, Diamond Model mapping, IOC clusters) and the lifecycle from active to historical.
日本語の概要は準備中です。原文の説明を表示しています。
Use when the user asks about carding, BIN attacks, payment-card breach markets, fullz/CVV2 trade, autoshops (BidenCash, Brian's Club, Russianmarket, B1ack's Stash), or financial-fraud TTPs. Self-updating knowledge cell.
日本語の概要は準備中です。原文の説明を表示しています。
Censys API v2 reference. Host reconnaissance and certificate data.
日本語の概要は準備中です。原文の説明を表示しています。
Use when the user asks about Chinese state-sponsored cyber operations or specific PRC-aligned actors (APT41, Volt Typhoon, Mustang Panda, APT10, APT31, Salt Typhoon, etc.), MSS/PLA-attributed campaigns, or PRC sector targeting. Self-updating knowledge cell.
日本語の概要は準備中です。原文の説明を表示しています。