id: threatconnect name: ThreatConnect version: 1.0.0 description: "ThreatConnect (API v3) — threat intelligence: query and read indicators and groups (TQL), create and delete indicators, create groups, and tag indicators. HMAC-SHA256 signed authentication; stdlib-only, no extra Python dependencies." changelog: "1.0.0 — Initial release: list/get/create/delete indicators, list/get/create groups, add indicator tag." category: threat_intel # Per-instance configuration. Requests are signed with HMAC-SHA256 using the # access ID + secret key (header 'Authorization: TC :'). config_schema: properties: base_url: type: string description: "ThreatConnect base URL (e.g. https://app.threatconnect.com)" access_id: type: string description: "API access ID" api_secret_key: type: string description: "API secret key" x-soar-sensitive: true required: - base_url - access_id - api_secret_key commands: - id: list_indicators name: tc-list-indicators description: "Query indicators using a TQL expression." risk: read inputs_schema: properties: tql: { type: string, description: "ThreatConnect Query Language expression (e.g. summary contains \"1.2.3.4\")" } limit: { type: number, description: "Max indicators (default 50)" } required: [] outputs_schema: { properties: {} } - id: get_indicator name: tc-get-indicator description: "Get a single indicator by ID." risk: read inputs_schema: properties: indicator_id: { type: string, description: "Indicator ID" } required: [indicator_id] outputs_schema: { properties: {} } - id: create_indicator name: tc-create-indicator description: "Create an indicator (e.g. Address, Host, File, URL, EmailAddress)." inputs_schema: properties: type: { type: string, description: "Indicator type: Address, Host, File, URL, or EmailAddress" } summary: { type: string, description: "Indicator value (IP, domain, hash, URL, email)" } owner_name: { type: string, description: "Owner (organization) name" } rating: { type: number, description: "Threat rating 0-5 (optional)" } confidence: { type: number, description: "Confidence 0-100 (optional)" } required: [type, summary] outputs_schema: { properties: {} } - id: delete_indicator name: tc-delete-indicator description: "Delete an indicator by ID." inputs_schema: properties: indicator_id: { type: string, description: "Indicator ID" } required: [indicator_id] outputs_schema: { properties: {} } - id: list_groups name: tc-list-groups description: "Query groups (incidents, threats, campaigns, ...) using a TQL expression." risk: read inputs_schema: properties: tql: { type: string, description: "TQL expression" } limit: { type: number, description: "Max groups (default 50)" } required: [] outputs_schema: { properties: {} } - id: get_group name: tc-get-group description: "Get a single group by ID." risk: read inputs_schema: properties: group_id: { type: string, description: "Group ID" } required: [group_id] outputs_schema: { properties: {} } - id: create_group name: tc-create-group description: "Create a group (Incident, Threat, Campaign, Adversary, ...)." inputs_schema: properties: type: { type: string, description: "Group type: Incident, Threat, Campaign, Adversary, Document, ..." } name: { type: string, description: "Group name" } owner_name: { type: string, description: "Owner (organization) name" } required: [type, name] outputs_schema: { properties: {} } - id: add_indicator_tag name: tc-add-indicator-tag description: "Add a tag to an indicator." inputs_schema: properties: indicator_id: { type: string, description: "Indicator ID" } tag: { type: string, description: "Tag name" } required: [indicator_id, tag] outputs_schema: { properties: {} } - id: test_connection name: tc-test-connection description: "Verify connectivity and the signed credentials (used by the Test button)." risk: read inputs_schema: properties: {} required: [] outputs_schema: { properties: {} }