Skip to content

n8n

The community node gives you a TNL Trigger that fires on new intelligence and a TNL Intelligence node for queries and research.

Install

Settings → Community nodes → Installn8n-nodes-tnl-intelligence

Self-hosted n8n only. n8n Cloud does not permit community nodes; use the webhook or HTTP Request approaches there instead.

Credentials

Credentials → New → TNL API, paste your API key, save. Every TNL node references this credential, so rotating a key is one edit.

TNL Trigger

Fires when matching intelligence is published. Behind the scenes it registers a webhook subscription and verifies every signature, so you never handle secrets yourself.

FieldPurpose
Event TypesWhich events to receive
CategoriesRestrict to categories, e.g. Economic & Macro
Minimum ConfidenceDrop events below a confidence threshold

Output is the event envelope, so {{$json.data.summary}}, {{$json.resource.url}} and {{$json.data.impactPaths}} are available downstream.

Example: currency alerts to Slack

TNL Trigger                    Slack
├─ Event Types: intelligence.published   →   Send message
├─ Categories: Economic & Macro
└─ Minimum Confidence: 0.7

Slack message text:

*{{$json.data.summary}}*
{{$json.data.geographies.join(", ")}} · confidence {{$json.data.confidence}}
{{$json.resource.url}}

Set Minimum Confidence deliberately. At 0 you get everything including low-signal items; 0.7 is a reasonable starting point for an alerting channel.

Example: only act on real impact changes

TNL Trigger  →  IF  →  Postgres (insert)

IF condition — skip events with no market-impact path:

{{ $json.data.impactPaths.length > 0 }}

Because delivery is at-least-once, make the database step idempotent — upsert on {{$json.resource.id}} with {{$json.resource.revision}}, and ignore a row whose stored revision is already higher. Otherwise a retry or replay will double-write.

TNL Intelligence node

Two resources.

Intelligence

OperationUse
search_intelligenceFull-text query
get_intelligenceFetch one story by identifier
list_recent_changesWhat changed since a point in time
get_exposureExposure for an entity or asset

Research

OperationUse
run_researchStart an evidence-first research run
get_weekly_editionFetch the weekly digest

Example: scheduled morning brief

Schedule Trigger (07:00)
  → TNL Intelligence: list_recent_changes  (since 24h)
  → Aggregate
  → Send Email

list_recent_changes is the right operation for digests — it returns what moved rather than everything, so you are not filtering a full feed in n8n.

Example: exposure lookup from a form

Webhook (ticker in body)
  → TNL Intelligence: get_exposure
      Exposure Kind: asset
      Identifier: {{$json.body.ticker}}
  → Respond to Webhook

Choosing trigger vs schedule

TriggerSchedule + list_recent_changes
LatencySecondsYour interval
Quota costNone per eventOne call per run
Needs reachable n8nYesNo
Good forAlertsDigests, batch work

If your n8n is not reachable from the internet, the trigger cannot receive deliveries — use the schedule pattern.

Troubleshooting

Trigger never fires. Check n8n is reachable over HTTPS from outside, then send a test from the subscription: POST /v1/webhooks/subscriptions/{id}/test. If the test arrives and real events do not, your filters are too narrow — try clearing Categories and Minimum Confidence.

Duplicate rows. Expected: delivery is at-least-once. Deduplicate on {{$json.id}} or upsert on resource.id + revision.

401 from the Intelligence node. The credential's key is revoked or belongs to a different tenant. tnl status will confirm quickly.

The Neural Ledger API