{"schema_version":"1.14.0","provider":"XRPL-Utilities™","service":"XR-Pulse","description":"Normalized event feed for XRPL agents. Aggregates regulatory press, central-bank releases, and crypto-press coverage of Ripple/XRP/RLUSD/XRPL into a single time-ordered JSON stream, alongside an on-chain whale-transfer source. Deterministic heuristic data only; no editorial scoring or source ranking.","event_shape":{"event_id":"Stable sha256-derived id of the source URL.","source_appearances":"Array of source names where the event was found. e.g. ['bis_speeches', 'cointelegraph_ripple'].","appearance_count":"Length of source_appearances. Numerical. Present only on news events; omitted on on-chain-only rows (whale_xrpl, permissioned_domain_lifecycle) where each event has a unique tx-hash-derived event_id and appearance_count is structurally always 1.","cross_verified":"Boolean. True when appearance_count >= 2 across distinct sources. Cluster membership is computed by Jaccard title-similarity (threshold 0.5) within a 48h window. Mechanical, not editorial. Omitted on on-chain-only rows for the same reason as appearance_count.","cluster_members":"Optional array. Present when cross_verified=true. Lists the secondary {title, source, url, published_at} entries that joined the cluster, so consumers can verify the merge was sane.","primary_url":"The most-recent source URL in the cluster.","title":"Title verbatim from the most-recent source feed in the cluster.","brief":"Short summary verbatim from the source feed's description tag, trimmed to 400 chars. Not LLM-generated.","published_at":"Unix timestamp from the feed's published or updated tag.","ingested_at":"Unix timestamp when XR-Pulse first stored the event.","correlation":"Optional block; null until the post-event window closes. Shape: {correlation: 'heuristic_only', window_hours, metric, current_price_usd, price_at_event_usd, delta_pct, note}. The 'heuristic_only' watermark is fixed; this is a measurement, not a causal claim."},"sources_v1_1":[{"name":"sec_press","type":"regulatory_press","url_env":"SEC_EDGAR_SEARCH_URL","keyword_filter":["ripple","xrp","rlusd","digital asset"]},{"name":"federal_reserve","type":"central_bank","url_env":"FEDERAL_RESERVE_RSS_URL","keyword_filter":["ripple","xrp","rlusd","digital asset"]},{"name":"bis_speeches","type":"central_bank","url_env":"BIS_PRESS_RSS_URL","keyword_filter":["ripple","xrp","rlusd","digital asset"]},{"name":"ecb_press","type":"central_bank","url_env":"ECB_PRESS_RSS_URL","keyword_filter":["ripple","xrp","rlusd","digital asset"]},{"name":"bank_of_england","type":"central_bank","url_env":"BANK_OF_ENGLAND_RSS_URL","keyword_filter":["ripple","xrp","rlusd","digital asset"]},{"name":"rba_australia","type":"central_bank","url_env":"RBA_AUSTRALIA_RSS_URL","keyword_filter":["ripple","xrp","rlusd","digital asset"]}],"dropped_sources_v1_1":"Sources listed in the v1.1 spec that did not expose working public RSS at the spec'd paths are surfaced in /stats.dropped_sources_v1_1 with the specific reason. Operator can override via env vars if a working URL is later discovered.","cross_verification":{"method":"title_jaccard_similarity","threshold":0.5,"time_window_hours":48,"note":"Two distinct events become cross_verified when their normalized title tokens share Jaccard >= 0.5 within 48h. Mechanical heuristic, not editorial judgment."},"active_utility":{"description":"Mechanical-only Partnership-to-Payload signal. An event row gains an active_utility block when one or more deterministic signals fire within the post-event window. None of the signals are causation claims; each lists its underlying evidence so consumers can verify it themselves.","signals":[{"name":"cross_verified","fires_when":"appearance_count >= 2 across distinct sources via title-similarity clustering"},{"name":"price_moved","fires_when":"current_price_usd_delta_pct (over the T+4h window) exceeds the configured threshold (default 1.5%)"},{"name":"volume_moved","fires_when":"exchange_outflow_24h_xrp_delta_pct (over the T+4h window) exceeds the configured threshold (default 5%). Requires a TELEMETRY_SISTER_KEY so Pulse can read the paid Telemetry /scan; falls back to None when unset."},{"name":"rlusd_mint_observed","fires_when":"one or more outgoing IOU Payments from the RLUSD issuer wallet land within the T+4h window. The watcher polls the issuer's account_tx; only Payment txs whose Amount.currency=RLUSD and issuer matches are counted."},{"name":"watchlist_activity_observed","fires_when":"one or more above-threshold (default $100k USD) outgoing XRP Payments from a labeled exchange/issuer/treasury/MM/bridge/custody wallet land within the T+4h window. Watchlist source addresses are resolved dynamically from XRPScan's well-known label list against an operator-curated role filter; destination addresses are resolved against both the well-known list and XRPScan's per-account API (24h-cached) so labels missing from the well-known subset still surface. Each tx attaches source_label, source_role, destination, amount_xrp, amount_usd_at_tx, tx_hash, and (when the receiver is on the watchlist) destination_label + destination_role so consumers can see exchange-to-exchange flow, bridge outflows, OTC consolidators, and custody movements without manual cross-referencing. Retention: rows older than PULSE_WATCHLIST_RETENTION_DAYS (default 30) are purged daily. Consumers wanting institutional-grade-only firing should filter on total_amount_usd or roles in the signal payload rather than relying on the binary fire/no-fire."},{"name":"high_activity_target","fires_when":"an XRPL classic address embedded in the event's title or brief returns activity_level=High when scanned via XR-Sentinel free-web. Address detection is regex-based; cross-reference is best-effort."},{"name":"whale_transfer","fires_when":"a successful XRPL Payment whose USD value clears WHALE_THRESHOLD_USD (default $50,000) is observed by the whale_watcher loop. Carries currency (XRP or RLUSD), usd_value at the ledger close, sender_address + sender_label, receiver_address + receiver_label (label is the institutional-watchlist match when present, null otherwise), ledger_index, tx_hash, a tier classification, and per-emit cross-product enrichment: sender_sentinel + receiver_sentinel (XR-Sentinel /scan results - activity_level, signals, identity, delta), and telemetry_context (XR-Telemetry macro snapshot at emit time - current_price_usd, active_float_xrp, exchange_outflow_24h_xrp). Continuous on-chain source (polled every WHALE_POLL_SECONDS, default 60s); not gated by RSS ingestion cadence. Cross-product fields are best-effort; null when the upstream service is unreachable."},{"name":"tier","fires_when":"Always present on whale_transfer events. One of four values: NORMAL_ACTIVITY (< $1M USD, both sides unwatchlisted - 'network noise', excluded from the high-impact stream by the default min_whale_usd surface threshold), WHALE_MOVE ($1M-$10M, both sides unwatchlisted - private high-value intent or OTC accumulation), INSTITUTIONAL_FLOW (>= $10M USD OR at least one side on the institutional watchlist - named smart money, exchanges/issuers/treasuries/MMs/custody/bridges), EXCHANGE_LOGISTICS (both sides labeled to the SAME canonical exchange family per _EXCHANGE_FAMILY_ALIASES - 'logistic whales' that hold massive weight but represent maintenance, not sentiment). Identity supersedes value: a Ripple Treasury -> unlabeled $5M move is INSTITUTIONAL_FLOW, not WHALE_MOVE."},{"name":"permissioned_domain_lifecycle","fires_when":"an XLS-70/80 lifecycle tx (PermissionedDomainSet, PermissionedDomainDelete, CredentialCreate, CredentialAccept, or CredentialDelete) validates on the XRPL ledger. Sourced from XR-Trust's /events stream, which runs a long-lived WebSocket subscribe directly to the network. Polled every PD_POLL_SECONDS (default 120s). active_utility carries: tx_type, tx_hash, account, domain_id, ledger_index, credential_type_hex, subject, trust_event_id, trust_url. trust_url drill-down lets consumers jump straight into the institutional-issuer breakdown for the affected domain. Catches owner additions of new credential issuers, fresh domain creation, credential acceptance by new subjects, etc."},{"name":"permissioned_dex_event","fires_when":"an XLS-81 (Permissioned DEX) tx that operates within a permissioned venue validates on the XRPL ledger - OfferCreate, OfferCancel, AMMCreate, AMMDeposit, AMMWithdraw, AMMVote, AMMBid, or Payment that carries a DomainID in its tx body or affected meta nodes. Same source path as permissioned_domain_lifecycle (Trust /events poll); distinct signal value so consumers can filter on the DEX granularity specifically. active_utility carries: tx_type, tx_hash, account, domain_id, ledger_index, taker_gets, taker_pays, asset, asset2, amount, destination, offer_sequence (subset present per tx_type), trust_event_id, trust_url. Captures actual trading inside permissioned venues like xrp-liquid.com - permissioned offers selling XRP for Circle USDC / Ripple RLUSD / Quantoz EURQ, AMMs created with permissioned-only liquidity, cross-currency payments restricted to domain members."}]},"whale_xrpl_source":{"description":"Continuous on-chain feed alongside the RSS sources. Validated XRPL ledgers are polled every WHALE_POLL_SECONDS (default 60s); successful Payments whose USD value clears WHALE_THRESHOLD_USD (default $50,000) are stored as events with source='whale_xrpl'.","currencies":["XRP","RLUSD"],"xrp_pricing":"Telemetry /healthz oracle (60s in-process cache).","rlusd_pricing":"Pegged at $1.00.","feed_floor":"POST /events/recent suppresses whale events below WHALE_FEED_MIN_USD (default $500,000) by default so RSS-sourced events stay visible alongside the whale stream. Override via the min_whale_usd field on the request body.","address_labels":"sender_label and receiver_label populate from the institutional watchlist's resolved-address cache when the address is on the watchlist; null otherwise.","partial_payments":"Uses meta.delivered_amount when present so partial-payment transactions are sized by what actually arrived, not the intended Amount.","primary_url_format":"https://xrpscan.com/tx/<tx_hash>"},"legal_notice":"Deterministic heuristic data only. Not an endorsement of news legitimacy. Source presence is reported as a property of an event, not a verdict on the source. Correlation against XR-Telemetry is a measurement, not a causal claim. DYOR. Not investment, legal, or regulatory advice."}