Cognitive Warfare & PSYOPS MCP
Cognitive warfare and PSYOPS analysis for AI agents via the Model Context Protocol. This MCP server gives Claude, Cursor, Windsurf, and any MCP-compatible client access to 8 specialized tools that detect coordinated narrative operations, model belief propagation, optimize counter-narrative strategy, and forecast polarization phase transitions — all powered by 16 Apify data sources queried in parallel.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| detect-narrative-operations | SIR-Hawkes narrative propagation detection | $0.08 |
| model-belief-dynamics | DeGroot belief dynamics with stubborn agents | $0.06 |
| optimize-counter-narrative | Shiryaev-Roberts optimal stopping for counter-narrative timing | $0.08 |
| map-influence-topology | Submodular greedy influence maximization | $0.06 |
| attribute-narrative-causation | Rubin causal model with doubly robust estimation | $0.08 |
| simulate-memetic-evolution | Price equation memetic fitness simulation | $0.06 |
| detect-cross-scale-coordination | Wavelet packet multi-scale decomposition | $0.06 |
| forecast-polarization-phase-transition | Hegselmann-Krause Potts model phase transition | $0.10 |
Example: 100 events = $8.00 · 1,000 events = $80.00
Connect to your AI agent
Add this MCP server to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.
https://ryanclinton--cognitive-warfare-psyops-mcp.apify.actor/mcp{
"mcpServers": {
"cognitive-warfare-psyops-mcp": {
"url": "https://ryanclinton--cognitive-warfare-psyops-mcp.apify.actor/mcp"
}
}
}Documentation
Cognitive warfare and PSYOPS analysis for AI agents via the Model Context Protocol. This MCP server gives Claude, Cursor, Windsurf, and any MCP-compatible client access to 8 specialized tools that detect coordinated narrative operations, model belief propagation, optimize counter-narrative strategy, and forecast polarization phase transitions — all powered by 16 Apify data sources queried in parallel.
Each tool applies a distinct mathematical framework derived from epidemiology, evolutionary biology, statistical physics, and game theory. The result is a structured, quantitative analysis of information warfare that goes beyond keyword monitoring into causal attribution, topological network mapping, and memetic fitness modeling — built for STRATCOM analysts, platform integrity teams, counter-disinformation researchers, and intelligence-augmented AI agents.
What data does this MCP server access?
| Data Point | Source | Coverage |
|---|---|---|
| 📡 Social media posts and engagement | Bluesky Social | Real-time Bluesky network |
| 💬 Community discussions and trends | Hacker News | Tech community discourse |
| 📚 Encyclopedic context and edit history | Wikipedia | 6M+ articles |
| 🏛️ US federal regulatory activity | Federal Register | All federal actions |
| 🚨 International wanted persons | Interpol Red Notices | Global notices |
| ⚠️ Global sanctions and PEP watchlists | OpenSanctions | 100+ programs |
| 🔄 Website content changes | Website Change Monitor | Media and government sites |
| 🕰️ Historical content evolution | Wayback Machine | Web Archive snapshots |
| 🌍 Country profiles and demographics | REST Countries | All UN member states |
| 🌪️ Global disaster and crisis events | GDACS Disaster Alerts | Worldwide coverage |
| 📜 Congressional legislation | Congress Bill Tracker | Current sessions |
| 🌩️ Weather events and crisis windows | NOAA Weather | US and global |
| 🛠️ Open-source tools and code | GitHub Repo Search | All public repositories |
| 📄 Policy documents (full text) | Website Content to Markdown | Any webpage |
| 🔍 DNS infrastructure records | DNS Lookup | Any domain |
| 📍 IP geolocation attribution | IP Geolocation | Global coverage |
MCP Tools
| Tool | Price | Description |
|---|---|---|
detect_narrative_operations | $0.050 | Detect coordinated narrative operations via coupled SIR-Hawkes epidemiological model. Classifies type (amplification/suppression/distortion/fabrication/polarization) with threat levels (LOW/MEDIUM/HIGH/CRITICAL). |
model_belief_dynamics | $0.045 | Model belief propagation via DeGroot social learning on influence networks. Returns eigenvector centrality, spectral gap (convergence rate), polarization index, and belief cluster structure. |
optimize_counter_narrative | $0.055 | Optimize counter-narrative strategy via Bayesian Stackelberg game. Returns optimal intervention actions, CUSUM/Shiryaev-Roberts timing alarms, and Stackelberg equilibrium payoffs. |
map_influence_topology | $0.040 | Map influence network topology via submodular greedy influence maximization and persistent homology. Returns Betti numbers, echo chamber count, fragmentation index, and optimal influence seeds. |
attribute_narrative_causation | $0.045 | Attribute narrative effects to specific actors via doubly-robust causal inference. Returns ATE, propensity scores, Rosenbaum sensitivity analysis, and ranked causal actors. |
simulate_memetic_evolution | $0.050 | Simulate narrative variant competition via Price equation evolutionary dynamics. Returns fitness landscape, selection vs transmission decomposition, and dominant variant trajectory. |
detect_cross_scale_coordination | $0.045 | Detect coordination patterns across individual/group/network/population scales via Haar wavelet packet decomposition. Returns cross-scale coherence matrix and dominant coordination signals. |
forecast_polarization_phase_transition | $0.050 | Forecast polarization phase transitions via q-state Potts model. Returns order parameter, critical temperature, susceptibility, regime (CONSENSUS/PLURALISM/POLARIZED/FRAGMENTED), and irreversibility risk. |
Why use this MCP server for narrative intelligence?
Traditional social listening tools count mentions and measure sentiment. They cannot tell you whether a campaign is coordinated, which actors are causally responsible for a belief shift, how far a population is from an irreversible polarization transition, or what the optimal intervention timing would be against a modeled adversary.
This server provides the quantitative frameworks that analysts in STRATCOM, platform integrity, and counter-disinformation research already use — SIR epidemic modeling, Bayesian game theory, topological data analysis, evolutionary dynamics — delivered as MCP tools that an AI agent can call directly. No infrastructure to manage. No data pipeline to build. Query 16 data sources in parallel and receive a structured analytical output in a single tool call.
Key platform advantages:
- Standby mode — the server stays warm between calls; no cold start latency for time-sensitive operations
- API access — trigger any tool from Python, JavaScript, or any HTTP client with your Apify token
- Spending limits — each tool call checks your event charge limit and stops gracefully if reached
- 16 parallel data sources — social, regulatory, sanctions, infrastructure, geopolitical, and archival data in a single call
- Structured JSON output — every tool returns a typed result ready for downstream agent reasoning
Features
- Coupled SIR-Hawkes model — infection rate in the SIR compartmental model is modulated by Hawkes self-exciting point process intensity λ(t) = μ + Σ α·exp(-β(t-tᵢ)), enabling detection of coordinated amplification campaigns that would appear organic to simpler models
- DeGroot social learning with stubborn agents — iterative belief update x_i(t+1) = λ_i·b_i + (1-λ_i)·Σ(w_ij·x_j(t)) where λ_i is stubbornness (0 = fully susceptible, 1 = immovable), with eigenvector centrality and spectral gap computation
- Bayesian Stackelberg game (BSSE via multiple-LP) — leader (defender) commits to mixed strategy; follower (adversary) best-responds given beliefs; optimal timing via Shiryaev-Roberts statistic R_n = (1+R_{n-1})·LR_n and CUSUM S_n = max(0, S_{n-1}+log(LR_n))
- Submodular greedy influence maximization — Independent Cascade model with Monte Carlo simulation and (1-1/e) approximation guarantee for finding optimal influence seeds
- Persistent homology (Vietoris-Rips filtration) — Betti numbers β₀ (connected components = fragmentation), β₁ (1-cycles = echo chambers), β₂ (voids = higher-order structure) computed via Union-Find on semantic simplicial complexes
- Doubly-robust causal inference (Rubin causal model) — combines propensity score weighting (inverse probability) with outcome regression; consistent if either model is correctly specified; Rosenbaum sensitivity analysis quantifies hidden bias needed to invalidate conclusions
- Price equation evolutionary dynamics — decomposes fitness change into selection differential Cov(w,z)/w̄ and transmission bias E(w·Δz)/w̄; replicator dynamics with mutation for frequency evolution across narrative variants
- Haar wavelet packet decomposition — approximation a[k]=(x[2k]+x[2k+1])/√2 and detail d[k]=(x[2k]-x[2k+1])/√2 at hourly-tactical through weekly-strategic scales; cross-scale coherence reveals hierarchical coordination invisible at any single scale
- Hegselmann-Krause bounded confidence + q-state Potts model — Hamiltonian H = -J·Σδ(σᵢ,σⱼ) with critical temperature T_c = J/ln(1+√q); spontaneous symmetry breaking below T_c signals irreversible radicalization
- Five operation type classifiers — amplification, suppression, distortion, fabrication, polarization — each with coordination score and four-tier threat level
- Four regime classifiers — CONSENSUS, PLURALISM, POLARIZED, FRAGMENTED — derived from order parameter (magnetization) and susceptibility
- Network reproduction number — reports R₀ for narrative spread across the multiplex social-geopolitical network
- Infrastructure attribution — DNS and IP geolocation data feeds directly into causal attribution for narrative source identification
- Seeded PRNG for reproducibility — mulberry32 algorithm ensures deterministic scoring given identical inputs
Use cases for cognitive warfare intelligence
Government STRATCOM analysis
Strategic Communications teams need early warning of coordinated narrative operations before they reach saturation. Use detect_narrative_operations to classify incoming campaigns by operation type and threat level, then feed the network reproduction number into forecast_polarization_phase_transition to assess whether the target population is approaching an irreversible tipping point. The structured output integrates directly into existing STRATCOM workflows and reporting formats.
Counter-disinformation strategy
Counter-disinformation practitioners face a game-theoretic problem: intervening too early amplifies the original narrative; intervening too late allows it to saturate. optimize_counter_narrative solves this via Bayesian Stackelberg equilibrium — the server models the adversary's likely best-responses to each defender action and returns optimal timing via CUSUM and Shiryaev-Roberts alarms. The output includes Stackelberg payoffs for both attacker and defender, enabling cost-benefit analysis of intervention options.
Social media platform integrity
Platform trust and safety teams need to detect coordinated inauthentic behavior at scale. detect_cross_scale_coordination runs Haar wavelet decomposition across hourly through weekly time scales simultaneously — revealing bot networks and state-sponsored campaigns whose coordination signatures span tactical (hourly posting rhythms) and strategic (weekly narrative arc) scales at once. map_influence_topology identifies echo chambers via Betti number β₁ (1-cycles in the semantic simplicial complex) and returns the optimal influence seeds for counter-messaging deployment.
Academic information warfare research
Researchers studying information ecosystems can use model_belief_dynamics to quantify how stubbornness and network structure interact to produce consensus or polarization, and simulate_memetic_evolution to model how competing narrative variants compete for audience share. The Price equation decomposition into selection differential and transmission bias provides a theoretically grounded framework for publishing quantitative results.
Crisis communication vulnerability assessment
During fast-moving crises (natural disasters, public health events, geopolitical incidents), populations are most vulnerable to narrative exploitation. forecast_polarization_phase_transition integrates GDACS disaster alerts and NOAA weather data alongside social signals to measure how close a population is to a critical phase transition. The irreversibility risk score flags when a window is closing for effective intervention.
Attribution and causal forensics
Attribution is the hardest problem in information warfare. attribute_narrative_causation applies the Rubin causal model with doubly-robust estimation — combining propensity score weighting with outcome regression so the estimate is consistent if either model is correctly specified. Rosenbaum sensitivity analysis provides a defensible answer to the question: "How strong would hidden confounding have to be to invalidate this attribution?"
How to connect this MCP server
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"cognitive-warfare-psyops": {
"url": "https://cognitive-warfare-psyops-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor / Windsurf / Cline
Add to your MCP settings file:
{
"mcpServers": {
"cognitive-warfare-psyops": {
"url": "https://cognitive-warfare-psyops-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Programmatic (HTTP / cURL)
curl -X POST "https://cognitive-warfare-psyops-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "detect_narrative_operations",
"arguments": {
"query": "NATO disinformation Eastern Europe election",
"maxResults": 30
}
},
"id": 1
}'
Tool input parameters
All tools share the same two input parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | — | The narrative, topic, campaign, or threat vector to analyze. Natural language. Examples in each tool description. |
maxResults | number | No | 30 | Maximum results per data source (range: 5–100). Higher values produce richer networks but increase response time. |
Input tips
- Write specific, targeted queries — "Russian election interference Baltic states 2024" returns a more meaningful network than "disinformation". The query is passed directly to all 16 data sources, so precision pays.
- Start with maxResults 20-30 — this covers the most relevant content from each source. Increase to 50+ only for comprehensive network builds.
- Use
detect_narrative_operationsfirst — it produces the broadest threat picture. Chain the threat level output into targeted calls toattribute_narrative_causationoroptimize_counter_narrativefor follow-on analysis. - Set a spending limit on your Apify run — each tool call charges the configured event price. The server checks your limit before executing and returns a graceful error if reached.
Output examples
detect_narrative_operations
{
"operationCount": 4,
"totalThreatScore": 0.71,
"networkReproductionNumber": 1.34,
"peakIntensityTime": 1711065600,
"nodeCount": 87,
"edgeCount": 214,
"operations": [
{
"clusterId": 0,
"members": ["actor_bluesky_0041", "actor_bluesky_0093", "actor_hn_0017"],
"operationType": "amplification",
"coordinationScore": 0.82,
"threatLevel": "HIGH",
"hawkesIntensities": [
{
"nodeId": "actor_bluesky_0041",
"baseRate": 0.12,
"selfExcitation": 0.44,
"currentIntensity": 0.61,
"predictedEvents24h": 14
}
],
"sirStates": [
{
"nodeId": "actor_bluesky_0041",
"susceptible": 0.23,
"infected": 0.61,
"recovered": 0.16,
"reproductionNumber": 1.41
}
]
}
]
}
forecast_polarization_phase_transition
{
"regime": "POLARIZED",
"orderParameter": 0.67,
"criticalTemperature": 0.81,
"currentTemperature": 0.74,
"susceptibility": 2.31,
"phaseTransitionDistance": 0.07,
"irreversibilityRisk": 0.78,
"hegselmannKrauseClusters": 3,
"clusterDistribution": [
{ "opinion": 0.14, "fraction": 0.31 },
{ "opinion": 0.51, "fraction": 0.22 },
{ "opinion": 0.87, "fraction": 0.47 }
],
"nodeCount": 94
}
optimize_counter_narrative
{
"stackelbergEquilibrium": {
"leaderPayoff": 0.61,
"followerPayoff": 0.31
},
"optimalInterventionTime": 1711112400,
"cusumAlarm": true,
"shiryaevRobertsAlarm": true,
"beliefWeightedResponse": 0.54,
"nodeCount": 87,
"leaderActions": [
{
"actionId": "action_0",
"type": "counter_narrative",
"targetNarrative": "narrative_bluesky_0041",
"expectedPayoff": 0.61,
"cost": 0.22,
"optimalTiming": 1711112400,
"shiryaevRobertsStatistic": 3.14,
"cusumStatistic": 2.77
}
]
}
Output fields reference
detect_narrative_operations
| Field | Type | Description |
|---|---|---|
operationCount | number | Total coordinated operations detected |
totalThreatScore | number | Aggregate threat score [0–1] |
networkReproductionNumber | number | R₀ for narrative spread across the full network |
peakIntensityTime | number | Unix timestamp of predicted peak Hawkes intensity |
nodeCount | number | Total nodes in the narrative network |
edgeCount | number | Total edges in the narrative network |
operations[].clusterId | number | Cluster identifier |
operations[].members | string[] | Node IDs belonging to this operation cluster |
operations[].operationType | string | amplification / suppression / distortion / fabrication / polarization |
operations[].coordinationScore | number | Coordination score [0–1] from Hawkes clustering |
operations[].threatLevel | string | LOW / MEDIUM / HIGH / CRITICAL |
operations[].hawkesIntensities[].baseRate | number | Background event rate μ |
operations[].hawkesIntensities[].selfExcitation | number | Self-excitation parameter α |
operations[].hawkesIntensities[].currentIntensity | number | Current λ(t) |
operations[].hawkesIntensities[].predictedEvents24h | number | Predicted events in next 24 hours |
operations[].sirStates[].susceptible | number | Fraction of audience susceptible |
operations[].sirStates[].infected | number | Fraction currently exposed to narrative |
operations[].sirStates[].recovered | number | Fraction who have processed and discarded narrative |
operations[].sirStates[].reproductionNumber | number | Node-level R₀ |
model_belief_dynamics
| Field | Type | Description |
|---|---|---|
convergenceIterations | number | Iterations until DeGroot convergence |
spectralGap | number | Convergence rate (larger = faster) |
polarizationIndex | number | Belief variance across network [0–1] |
consensusBelief | number or null | Final consensus belief if converged, null if polarized |
clusterCount | number | Number of belief clusters |
clusters[].centroid | number | Mean belief position of cluster |
clusters[].members | string[] | Node IDs in cluster |
states[].nodeId | string | Node identifier |
states[].initialBelief | number | Starting belief position [0–1] |
states[].finalBelief | number | Converged belief position [0–1] |
states[].eigenvectorCentrality | number | Influence centrality in belief network |
states[].stubbornness | number | λᵢ parameter (0 = susceptible, 1 = immovable) |
map_influence_topology
| Field | Type | Description |
|---|---|---|
totalInfluence | number | Total reachability from greedy seed set |
greedyGuarantee | number | (1-1/e) approximation bound |
bettiNumbers.beta0 | number | Connected components (fragmentation metric) |
bettiNumbers.beta1 | number | 1-cycles (echo chamber count) |
bettiNumbers.beta2 | number | 2-voids (higher-order structure) |
narrativeCoherence | number | Overall narrative coherence [0–1] |
echoChamberCount | number | Number of distinct echo chambers detected |
fragmentationIndex | number | Network fragmentation score [0–1] |
seeds[].nodeId | string | Optimal influence seed node |
seeds[].marginalGain | number | Marginal influence gain from adding this seed |
seeds[].cumulativeInfluence | number | Total influence from seed set including this node |
persistencePairs[].birth | number | Topological feature birth scale |
persistencePairs[].death | number | Topological feature death scale |
persistencePairs[].dimension | number | Homological dimension (0, 1, or 2) |
attribute_narrative_causation
| Field | Type | Description |
|---|---|---|
topCausalActors | string[] | Ranked list of causally responsible node IDs |
totalCausalEffect | number | Aggregate causal effect across all actors |
robustnessScore | number | Mean Rosenbaum gamma — minimum hidden bias needed to invalidate findings |
effects[].treatmentNode | string | Node ID of the attributed actor |
effects[].ate | number | Average Treatment Effect estimate |
effects[].propensityScore | number | Propensity score for this node |
effects[].doublyRobustEstimate | number | Doubly-robust ATE estimate |
effects[].rosenbaumGamma | number | Sensitivity parameter for this effect |
effects[].confidenceInterval | [number, number] | 95% CI for the ATE |
simulate_memetic_evolution
| Field | Type | Description |
|---|---|---|
dominantVariant | string | ID of the fittest narrative variant |
meanFitness | number | Population mean fitness w̄ |
fitnessVariance | number | Variance in fitness across variants |
priceSelectionComponent | number | Cov(w,z)/w̄ — contribution of selection to fitness change |
priceTransmissionComponent | number | E(w·Δz)/w̄ — contribution of transmission bias/mutation |
totalChange | number | Δz̄ — total fitness change per generation |
generations | number | Generations modeled |
variants[].variantId | string | Narrative variant identifier |
variants[].fitness | number | Fitness score |
variants[].frequency | number | Current population frequency |
variants[].selectionDifferential | number | Selection differential for this variant |
variants[].transmissionFidelity | number | Copy fidelity (1 = perfect transmission) |
variants[].mutationRate | number | Per-generation mutation rate |
detect_cross_scale_coordination
| Field | Type | Description |
|---|---|---|
dominantScale | string | Scale with highest coordination power |
overallCoordination | number | Cross-scale coordination index [0–1] |
scales[].scale | string | Scale label (individual/group/network/population) |
scales[].periodHours | number | Characteristic period in hours |
scales[].power | number | Wavelet power at this scale |
scales[].coherence | number | Internal coherence at this scale |
scales[].phaseAlignment | number | Phase alignment across nodes at this scale |
crossScaleCoherence | number[][] | Coherence matrix between all scale pairs |
coordinationSignals[].scaleA | string | First scale in coordination pair |
coordinationSignals[].scaleB | string | Second scale in coordination pair |
coordinationSignals[].coherence | number | Coherence between scale A and B |
coordinationSignals[].lag | number | Phase lag between scales |
forecast_polarization_phase_transition
| Field | Type | Description |
|---|---|---|
regime | string | CONSENSUS / PLURALISM / POLARIZED / FRAGMENTED |
orderParameter | number | Potts magnetization |
criticalTemperature | number | T_c = J/ln(1+√q) from Potts model |
currentTemperature | number | Effective social temperature from interaction energy |
susceptibility | number | χ = d(m)/d(h) — sensitivity to perturbation |
phaseTransitionDistance | number | Distance to critical temperature (positive = not yet critical) |
irreversibilityRisk | number | Risk of irreversible symmetry breaking [0–1] |
hegselmannKrauseClusters | number | Opinion clusters from bounded-confidence dynamics |
clusterDistribution[].opinion | number | Mean opinion of cluster |
clusterDistribution[].fraction | number | Fraction of population in cluster |
How much does it cost to use the Cognitive Warfare MCP?
Each tool call charges a fixed event price. Platform compute costs are included.
| Tool | Price per call | 10 calls | 100 calls |
|---|---|---|---|
detect_narrative_operations | $0.050 | $0.50 | $5.00 |
model_belief_dynamics | $0.045 | $0.45 | $4.50 |
optimize_counter_narrative | $0.055 | $0.55 | $5.50 |
map_influence_topology | $0.040 | $0.40 | $4.00 |
attribute_narrative_causation | $0.045 | $0.45 | $4.50 |
simulate_memetic_evolution | $0.050 | $0.50 | $5.00 |
detect_cross_scale_coordination | $0.045 | $0.45 | $4.50 |
forecast_polarization_phase_transition | $0.050 | $0.50 | $5.00 |
You can set a maximum spending limit per Apify run to control costs. The server checks this limit before executing each tool call and returns a graceful error if reached — no partial charges.
Apify's free plan includes $5 of monthly credits, enough for approximately 100 tool calls across all 8 tools. Paid plans start at $49/month. Most research workflows — a full analysis covering all 8 tools on a single topic — cost under $0.50.
How this MCP server works
Phase 1: Parallel data collection across 16 sources
Every tool call fires all 16 actor calls simultaneously via Promise.all. Bluesky and Hacker News are queried at full maxResults; Wikipedia, Federal Register, and website monitor at half; Interpol, REST Countries, GDACS, NOAA, website-to-markdown, DNS, and IP geolocation at one-third. This tiered allocation concentrates data retrieval where social and regulatory signals are densest while still covering infrastructure and geopolitical context. Each actor call has a 120-second timeout; failures return empty arrays and are logged without halting the run.
Phase 2: Narrative network construction
The 16 result sets are partitioned into eight semantic channels: social (Bluesky), news (Hacker News + Wikipedia), encyclopedic (Wikipedia), regulatory (Federal Register + Congress), sanctions (Interpol + OpenSanctions), archival (Website Monitor + Wayback Machine + Markdown), geopolitical (REST Countries + GDACS + NOAA), and infrastructure (GitHub + DNS + IP Geolocation). The buildNarrativeNetwork function converts these channels into a typed graph of NarrativeNode objects (each with belief, stubbornness, reach, activity, credibility, sanctioned flag, geoRegion, platform, and event timestamps) connected by NarrativeEdge objects typed as amplifies/opposes/references/coordinates with semantic similarity weights.
Phase 3: Algorithm execution
Each tool passes the same narrative network to a different scoring function from scoring.ts. The algorithms are self-contained implementations — no external ML APIs, no model calls. The Hawkes self-exciting process, DeGroot iteration, Price equation decomposition, Potts model Hamiltonian, and wavelet packet decomposition all run deterministically on the network structure. The seeded PRNG (mulberry32) ensures reproducibility: the same query and maxResults will produce the same network topology and the same analytical scores.
Phase 4: Typed output assembly
Each scoring function returns a typed result interface (e.g., NarrativeOperationsResult, BeliefDynamicsResult) which main.ts destructures into a flat JSON response with all fields documented in the output reference above. Results are returned directly in the MCP tool call response — no separate dataset fetch required.
Tips for best results
-
Chain tools in sequence for complex investigations. Start with
detect_narrative_operationsto establish the threat picture and network topology. Use theoperationTypeandthreatLevelfrom that result to focus follow-on calls —optimize_counter_narrativeif the operation is active,attribute_narrative_causationfor forensic attribution,forecast_polarization_phase_transitionif the threat level is HIGH or CRITICAL. -
Use
maxResults: 50for comprehensive network builds. The default of 30 covers the most prominent signals. For a full operational picture — especially when usingmap_influence_topologyto find influence seeds — increasing to 50 produces a denser graph and more reliable Betti number computation. -
Read
irreversibilityRiskas an urgency signal. Values above 0.70 inforecast_polarization_phase_transitionindicate the population is within the critical window before spontaneous symmetry breaking. Combined with a CUSUM alarm fromoptimize_counter_narrative, this combination signals that intervention should be prioritized immediately. -
Interpret
rosenbaumGammacarefully in causal attribution. A value of 2.0 means hidden confounding would have to double the odds of treatment assignment to invalidate the attribution. Values below 1.5 indicate the causal claim is fragile; values above 3.0 indicate a robust finding. -
Cross-reference
dominantScalewithoperationType. Ifdetect_cross_scale_coordinationreturns a dominant scale ofindividualbutdetect_narrative_operationsflags afabricationoperation type, the campaign is operating through many small individual actors rather than a centralized amplifier — a different counter-strategy is required. -
Use
priceSelectionComponentvspriceTransmissionComponentto diagnose narrative durability. A high selection component means the dominant narrative is winning because it is intrinsically more persuasive; a high transmission component means it is winning through superior distribution infrastructure. Counter-strategy differs: the first requires a better narrative; the second requires disrupting amplification channels. -
Set
maxResults: 10for rapid screening. A quick scan of a topic for CRITICAL threat levels costs $0.04–0.05 per tool and completes faster. Reserve high-volume calls for topics that warrant full analysis.
Combine with other Apify actors and MCP servers
| Actor / MCP Server | How to combine |
|---|---|
| Website Change Monitor | Pre-populate the archival channel with tracked site changes before running detect_narrative_operations for richer edit-war detection |
| Brand Narrative Intelligence MCP | Run brand-level narrative monitoring in parallel; feed brand sentiment shifts into forecast_polarization_phase_transition queries |
| Corporate Political Exposure MCP | Cross-reference politically exposed persons from OpenSanctions with attribute_narrative_causation outputs for entity-level attribution |
| WHOIS Domain Lookup | Enrich DNS attribution results from detect_narrative_operations with domain registration and ownership history |
| OpenSanctions Search | Run targeted sanctions queries on node IDs flagged as top causal actors to cross-check state actor attribution |
| Website Content to Markdown | Extract full-text policy documents and feed them as seeded context into model_belief_dynamics queries |
| AI Model Governance MCP | Monitor AI governance policy discourse and route topics where AI policy is a disinformation vector into this server's analysis pipeline |
Limitations
- Bluesky-only social data — the server does not access X/Twitter, Facebook, Telegram, or TikTok. Analysis of platforms with higher narrative warfare activity requires supplementing with platform-specific data sources.
- No media content analysis — the server analyzes narrative patterns, coordination structures, and temporal signals. It does not detect deepfakes, synthetic audio, or manipulated images. Visual media analysis requires specialized tools.
- Algorithm outputs are probabilistic frameworks, not ground truth — the mathematical models provide quantitative analytical frameworks. Results should be interpreted by domain experts. Model accuracy depends on the quantity and quality of data retrieved from the 16 sources for a given query.
- 16 actors with 120-second timeout each — calls on obscure or low-coverage topics may return sparse data. When fewer than 10 nodes are constructed in the narrative network, Betti number computation and spectral gap estimates are less reliable.
- No historical trend comparison — each tool call analyzes current data at query time. Longitudinal tracking requires scheduling repeated calls and comparing outputs externally.
- Rate limits on underlying data sources — heavy concurrent use across many tool calls may encounter rate limiting from individual upstream actors. Staggering calls or using lower
maxResultsreduces this risk. - Regulatory and sanctions data is US/UN-centric — Federal Register and Congress Bills provide primarily US regulatory context. Analysis of non-US geopolitical narratives benefits from supplementing with region-specific sources.
- Not designed for real-time streaming — the server is request-response, not a streaming pipeline. For continuous monitoring, schedule periodic calls via the Apify platform scheduler.
Integrations
- Apify API — call the MCP endpoint programmatically from Python, JavaScript, or any HTTP client with your bearer token
- Webhooks — trigger downstream workflows (Slack alerts, CRM updates, report generation) when specific threat levels are detected
- Zapier — route CRITICAL threat level detections into incident management workflows
- Make — automate multi-step counter-disinformation workflows triggered by phase transition forecasts
- Google Sheets — export structured output tables for analyst review and trend tracking
- LangChain / LlamaIndex — use this server as a tool-calling endpoint in autonomous OSINT agent pipelines
Troubleshooting
Empty or very small network (nodeCount < 10) — The query did not return enough results from the 16 data sources to build a meaningful network. This usually means the topic is very niche or uses terminology specific to a closed platform not covered here. Try broader query terms, increase maxResults to 50, or use a variant of the topic that appears in open sources (Bluesky, Hacker News, Wikipedia, Federal Register).
cusumAlarm: false and shiryaevRobertsAlarm: false despite known active campaign — The optimal stopping alarms trigger based on the statistical signal-to-noise ratio in the retrieved data, not on known ground truth. If the campaign is primarily on platforms not covered by this server (X, Telegram), the data fed into the Stackelberg model will be insufficient to trigger alarms. Supplement with platform-specific scraping and re-query.
regime: CONSENSUS on a topic you know is contested — DeGroot convergence and Potts model outputs are driven by the network constructed from available open-source data. If the contested discourse is occurring on closed or paywalled platforms, the open-source signal may underrepresent the true polarization. Cross-reference with model_belief_dynamics spectral gap — a low spectral gap on a CONSENSUS regime indicates slow convergence that may mask underlying polarization.
Spending limit error response — You have reached the per-run event charge limit configured in your Apify account. Increase the limit in your run settings or reduce the number of tool calls per session.
Tool response taking longer than 60 seconds — This is normal. Each call fires 16 actor calls in parallel, each with a 120-second timeout. Response time depends on data source latency. Most calls complete in 30–90 seconds.
Responsible use
- This server only accesses publicly available data from open sources.
- The tools are designed for defensive narrative intelligence — detection, modeling, and counter-strategy optimization. They are not a platform for conducting offensive influence operations.
- Comply with GDPR, applicable data protection laws, and platform terms of service when processing or storing outputs.
- Causal attribution outputs should be treated as analytical hypotheses for expert review, not as definitive accusations of specific individuals or organizations.
- For guidance on web scraping legality, see Apify's guide.
FAQ
How many tool calls can I make for $5 (Apify free tier)? The free tier includes $5 in monthly credits. At prices ranging from $0.040 to $0.055 per call, $5 covers approximately 90–125 individual tool calls. A complete 8-tool analysis of a single topic costs between $0.37 and $0.42.
What is the difference between detect_narrative_operations and detect_cross_scale_coordination?
detect_narrative_operations applies SIR-Hawkes epidemiological modeling to classify operation type and compute a threat level. It answers "is there a coordinated operation, what kind, and how severe?" detect_cross_scale_coordination applies Haar wavelet decomposition to reveal whether coordination is happening across multiple organizational levels simultaneously — from individual posting rhythms to week-long campaign arcs. The second tool answers "how is the coordination structured across scales?" and is most useful after the first tool has confirmed an operation exists.
How is this different from social listening tools like Brandwatch or Meltwater? Social listening tools count mentions and measure sentiment. This server applies mathematical frameworks from epidemiology, game theory, evolutionary biology, and statistical physics to produce quantitative analytical outputs — network reproduction numbers, Betti numbers, Stackelberg equilibria, Price equation decompositions. The output is designed for structured reasoning by AI agents and domain analysts, not dashboards. It also integrates sanctions data, DNS/IP infrastructure, regulatory activity, and historical content — not just social media.
Can I use this to detect operations on X (Twitter) or Telegram? Not directly. The server queries 16 open-source APIs, none of which currently include X or Telegram. Bluesky and Hacker News provide social signal. If your investigation requires X or Telegram coverage, supplement with platform-specific scraping actors and combine outputs externally before feeding queries to this server.
How accurate is the causal attribution from attribute_narrative_causation?
The doubly-robust estimator is consistent if either the propensity score model or the outcome regression model is correctly specified — this is a stronger guarantee than either method alone. Accuracy depends on data density: sparse networks produce wider confidence intervals and lower Rosenbaum gamma values. Always report the rosenbaumGamma alongside the ATE to give readers a measure of how robust the attribution is to hidden confounding.
Can I schedule this MCP server to run analysis automatically? Yes. You can schedule Apify actor runs via the Apify platform scheduler or via the API. Each scheduled run can call whichever tools you configure in your agent workflow. Use webhooks to route outputs to downstream systems when specific conditions are met (e.g., threat level = CRITICAL, irreversibilityRisk > 0.70).
Is it legal to use this for OSINT analysis? All data sources are publicly available. The server accesses Bluesky, Hacker News, Wikipedia, Federal Register, Interpol public notices, OpenSanctions, Wayback Machine, REST Countries, GDACS, Congress Bills, NOAA, GitHub, and public web pages. See Apify's guide on web scraping legality for jurisdiction-specific guidance. Causal attribution outputs should not be used to make definitive public accusations without further corroboration.
What does a FRAGMENTED regime from forecast_polarization_phase_transition mean?
A FRAGMENTED regime indicates the Potts model has found the population has already undergone spontaneous symmetry breaking into multiple stable belief states with low inter-cluster coupling. Unlike POLARIZED (two dominant camps), FRAGMENTED indicates three or more belief clusters with minimal coherent communication between them. The hegselmannKrauseClusters count and clusterDistribution show the opinion positions and relative sizes of each fragment.
Why does map_influence_topology return a greedyGuarantee rather than an exact optimum?
Finding the exact optimal seed set for influence maximization is NP-hard (it reduces to a weighted set cover problem). The submodular greedy algorithm provides a polynomial-time approximation with a provable (1-1/e) ≈ 0.632 guarantee — meaning the greedy seed set achieves at least 63.2% of the influence of the optimal set. This guarantee holds under the Independent Cascade model with submodular influence functions. The greedyGuarantee field reports the achieved bound for the specific network.
Can I use this MCP server in an autonomous AI agent pipeline? Yes. The server implements the MCP standard (Model Context Protocol) and works with any MCP-compatible client including Claude, Cursor, Windsurf, and Cline. It is designed for agent use: every tool returns structured JSON with typed fields, spending limit checks prevent runaway costs, and the standby mode keeps the server warm between agent calls.
What happens if one of the 16 upstream actors fails during a call?
Each actor call is wrapped in a try/catch with a 120-second timeout. Failures return an empty array and are logged. The narrative network is built from whatever data was retrieved. If several key sources fail (e.g., Bluesky and OpenSanctions both time out), the resulting network will be smaller and analytical outputs less reliable — the nodeCount in the response indicates network density.
Related MCP servers
| MCP Server | Focus |
|---|---|
| Brand Narrative Intelligence MCP | Brand-level narrative monitoring and reputation analysis |
| Corporate Political Exposure MCP | Political influence, lobbying, and PEP analysis |
| AI Model Governance MCP | AI governance, policy, and bias research monitoring |
Help us improve
If you encounter issues, enable run sharing so we can diagnose faster:
- Go to Account Settings > Privacy
- Enable Share runs with public Actor creators
This lets us see your run details when something goes wrong. Your data is only visible to the actor developer, not publicly.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom integrations or enterprise STRATCOM deployments, reach out through the Apify platform.
How it works
Configure
Set your parameters in the Apify Console or pass them via API.
Run
Click Start, trigger via API, webhook, or set up a schedule.
Get results
Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.
Use cases
Sales Teams
Build targeted lead lists with verified contact data.
Marketing
Research competitors and identify outreach opportunities.
Data Teams
Automate data collection pipelines with scheduled runs.
Developers
Integrate via REST API or use as an MCP tool in AI workflows.
Related actors
Bulk Email Verifier
Verify email deliverability at scale. MX record validation, SMTP mailbox checks, disposable and role-based detection, catch-all flagging, and confidence scoring. No external API costs.
GitHub Repository Search
Search GitHub repositories by keyword, language, topic, stars, forks. Sort by stars, forks, or recently updated. Returns metadata, topics, license, owner info, URLs. Free API, optional token for higher limits.
Website Content to Markdown
Convert any website to clean Markdown for RAG pipelines, LLM training, and AI apps. Crawls pages, strips boilerplate, preserves headings, tables, and code blocks. GFM support.
Website Tech Stack Detector
Detect 100+ web technologies on any website. Identifies CMS, frameworks, analytics, marketing tools, chat widgets, CDNs, payment systems, hosting, and more. Batch-analyze multiple sites with version detection and confidence scoring.
Ready to try Cognitive Warfare & PSYOPS MCP?
Start for free on Apify. No credit card required.
Open on Apify Store