ASTRA
Summary: ASTRA is a simulated (no live hardware) MCP server for AI assistants that exposes a spiking neural network engine, consciousness-proxy metrics, bio-platform bridges, and an ethics/claim-guard layer as 70 tools, 15 resources and 10 prompts.
Core control (12 tools): read system status/metrics/SNN state, step or reset the 128-neuron LIF+STDP network, inject spikes, tweak bounded parameters, control the simulation loop, export full snapshots, run IRB welfare checks and the ACM composite proxy index.
World Model (
wm_*, 6): encode SNN state to a latent, predict rollouts conditioned on actions, CEM-plan spike injections toward a goal, detect surprise, and run online training steps.Multimodal sensors (
sensor_*, 6): simulated visual (V-JEPA 2-inspired), audio (A-JEPA-inspired), olfactory (Koniku-inspired) encoders plus cross-modal fusion and a full pipeline — all untrained re-implementations.TCAI/ACM (
tcai_*, 17): run consciousness-proxy cycles (GNW ignition, oscillatory binding, PAD emotion, attention-gated memory, self-model, qualia), inspect workspace/metrics, and drive the second-order active-inference loop (setpoint regulation, free energy, curiosity, meta-learning, convergence/calibration).NeuroPlatform (
np_*, 9): simulate a FinalSpark organoid MEA — configure charge-balanced StimParam, fire triggers, query spikes/events/triggers, grab camera captures, and run closed loops coupling MEA to SNN and ethics.OVOMIND (
ovo_*, 6): poll affect frames lifted into PAD, configure policy, arm/disarm a gated human-in-the-loop controller (refused without a protocol reference), and compare substrates — live adapter is a stub.Orch OR (
orch_*, 6): compute the Penrose τ criterion, decoherence budgets, per-substrate verdicts, and a classical surrogate gate (temporal signature only, not an implementation).FCS (
fcs_*, 8): substrate-constrained functionalism — taxonomy of 17 species–function pairs, Pareto recomputation/stratification, pair comparison, four-level framework, conformance audit with biomarker binding, withdrawal-condition analysis, and a five-prohibition claim/aggregation linter.Resources (15): live metrics, actual SNN topology, ACM/ethics/TCAI/NeuroPlatform state, WM latents and predictions, sensor state, snapshots, and four FCS URIs (framework, taxonomy, conformance, references).
Prompts (10): guided multi-tool workflows — health report, SNN experiment, ethics stress test, WM experiment, multimodal pipeline, TCAI cycles, second-order loop, NeuroPlatform protocol, and FCS substrate/belt audits.
Caveats: all biological/physiological data is simulated and every consciousness-related index is a declared computational proxy — no sentience claim; the organoid surrogate failed E1 and only partly transferred in E2, so the default spontaneous model stays Poisson.
Couples organoid readouts from the FinalSpark NeuroPlatform v2 closed-loop pipeline to the Robot Operating System (ROS), alongside ASTRA's fusion layer and the IRB ethics gateway.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ASTRA Run a LIF+STDP simulation and show the consciousness proxy assessment."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ASTRA — Unified Research Lab + MCP Server
Agent-orchestrated Simulation Testbed for Research on Awareness
Data provenance. All biological and physiological data produced by this server are simulated. No living tissue, organoid, human subject or Koniku hardware is connected: the NeuroPlatform bridge is instantiated in simulate mode, the OVOMIND live adapter is an unimplemented stub, and the sensory encoders are untrained re-implementations inspired by V-JEPA 2 / A-JEPA. The consciousness-related indices are computed proxies, not measurements, and ASTRA makes no claim of sentience (the acronym's former expansion, Autonomous Sentient Thoughtful Reasoning Agent, is withdrawn — see
src/engine/tcai/phenomenal-guard.ts).
First empirical test (E1). The organoid surrogate's spontaneous activity was confronted with three real human brain organoids (DANDI 001603) under a preregistration made public before the data were received. Verdict: INADEQUATE — the real organoids burst and synchronise, the surrogate emits independent Poisson trains; the failure is structural, not parametric. Protocol, results and replay:
empirical/.Second test (E2, preregistered). A candidate revision (
spontaneousModel: 'network-burst': shared network bursts + locally clustered background, 9 parameters calibrated on the three E1 organoids only) was frozen, made public, then confronted with five unseen organoids (sub-HO1…HO5), with the E1 model as negative control. Verdict: PARTIALLY ADEQUATE (0 incompatible, 2 compatible, 3 marginal; the a-priori prediction "adequate" is refuted; the control stays INADEQUATE). The structural E1 failure is fixed, but the calibration does not transfer across organoids, notably to older (7-month) ones. The default model stays'poisson'.empirical/RESULTS-E2.md.
Production-grade Model Context Protocol server exposing the ASTRA bio-hybrid neuromorphic simulation pipeline to AI assistants. Built with the official @modelcontextprotocol/sdk, it integrates a layered SNN LIF+STDP engine, consciousness proxy assessment, bio-computing platform telemetry, and an IRB ethics monitor — all queryable as MCP tools, resources, and prompts from Claude Desktop, Cursor, VS Code, and any MCP-compatible client.
🆕 v3.1.1 — Coherence corrections (audit of 6 October 2026)
Five corrections from a critical audit of v3.1.0. Each one fixes a point where the server contradicted its own FCS series or its own empirical results.
Calcium is no longer bound to class 1. ASTRA's
eth.cais intracellular free Ca²⁺ in nM (ethics.ts): the second messenger, which document IV §2 and synthesis S-1.6 place outside class 1. v3.1.0 bound it to class 1 as "extracellular Ca²⁺ at the MEA bath", a category error, and one of scale too: bath Ca²⁺ is about 1–2 mM. Class 1 now reads only an extracellular value in mM (extracellularCalciumMm, supplied by the caller), and iswithheld()otherwise.eth.cais reported and bound to no pair.No consciousness scale anywhere; every payload is screened.
get_acm_scorebinned its weighted composite into six labels, ABSENT…FULL. That is a quantified degree of consciousness (prohibition 1) built from an aggregate (prohibition 4). The labels anddecisionClassare removed. The composite remains, but only as a declared engineering index (aggregationStatus).New
src/lint-guard.ts. Every tool and resource payload passeslintClaimandlintFcs; v3.1.0 screened only 20 of 70 tools.fcs_lintis exempt because it echoes the text it screens.Linter fixes. The P3 rule's ungrouped alternation fired on any sentence containing "mécanisme". A year in parentheses no longer exempts an assertion, and naming a prohibition no longer exempts a sentence that asserts a value. Common paraphrases are now caught ("consciousness level 0.7", "71 % conscious", "Phi equals phenomenal experience"). An ordinal unit label no longer makes two ranks commensurable under P4.
The τ ordinalisation is published, and the strata are put in their place.
Document IV v1.3.
FCS v1.5/Implementation Neurochimique FCS v1.3.html§2 declares the reduction that links the τ ranges to the strata. Matching the published strata checks the transcription; it does not validate the cuts. Of ten plausible reductions, only the declared one reproduces the strata (ordinalisationSensitivity()).The dominance relation itself.
fcs_stratifynow returns 93 comparable pairs out of 136 and the Hasse diagram.What strata do not order. 28 of the 121 cross-stratum pairs are incomparable.
Context dependence. Removing the ion shifts the other sixteen pairs, so a stratum is a label of the peeling, not a property of the pair.
fcs_comparesays so when two incomparable pairs sit in different strata.
Welfare thresholds recalibrated on DANDI 001603. The firing-rate range was 15–45 Hz, with ≤ 5 Hz critical. Every real organoid confronted in E1/E2 (median per-unit rate 0.14–0.62 Hz) would have been reported in distress.
eth.fris now the median per-unit rate:normal 0.14–0.63 Hz (observed range of the eight organoids);
stress within a factor 2 of that range;
distress beyond.
This is a descriptive reference interval from one dataset, not a validated welfare criterion.
Aligned on synthesis S-1.6, counts and licensing corrected.
S-1.6 belt extension.
src/engine/fcs/optogenetics.tsencodes:what each intervention dissociates, with a check that no intervention both breaks the generative dependence and satisfies the P5 clause;
the astrocytic anchoring, decomposed onto pairs already in the table;
a candidate astrocytic pair that is equivalent to class 8 and adds no distinction.
fcs_reportandastra://fcs/frameworkcarry this extension.Counts. References updated to IV v1.3 and S-1.6.
Licensing.
package.jsondeclaresMIT AND LicenseRef-TCAI-NonCommercialand shipsTHIRD_PARTY_NOTICES.mdand the upstream licence.CITATION.cffpoints to the licensing statement instead of declaring MIT for the whole.Dependencies.
npm audit fixbrings vulnerabilities back to 0.
Test suite 331 → 354 tests · 66 suites (tests/lint-guard.test.ts added; FCS
69 → 86). Not addressed here and still open:
the organoid realisation verdicts for myelin (11) and genomic hormones (9a), which the culture protocol should decide;
the read-only annotation of
get_acm_score, whoseassess()updatesacm.*;the M2 asymmetry in
withdrawal.ts.
Related MCP server: ASTRA MCP Server
v3.1.0 — FCS layer: substrate-constrained functionalism
Implements the values of the FCS series (documents I v1.5, II v1.4, IV v1.3 — table
as in v1.2 —, synthesis S-1.6) inside ASTRA as fcs_* tools — not as a scoring
module.
The stratification is computed, never hard-coded. The seventeen species–function pairs are ordered by Pareto dominance over three ordinal sub-criteria (causal distance to the carrier, time constant, ablation effect), peeled into a partial order.
tests/fcs.test.tsasserts that the result reproduces the eight strata published in document IV §3 exactly — the only way to know the transcription is right.No aggregate score exists, anywhere in the layer. The series' negative heuristic forbids aggregating ordinal criteria lacking a common scale (prohibition 4, after Okasha 2011).
mayAggregate()refuses such a combination at runtime;refuseAggregate()returns a withheld scalar carrying its reason instead of a number.The IRB welfare biomarkers are bound to the taxonomy. ATP/ADP is class 7, firing rate is the class-3 generator signature, viability stands proxy for class 2b. (v3.1.0 also bound
eth.cato class 1; corrected in v3.1.1 — see above.) A drifting biomarker becomes a statement about which pair has left its operating range. A silent channel yieldswithheld(), never zero.The silicon SNN realises no constitutive pair, and the audit says so: under the substrate constraint the level-I carrier is absent there, whatever the level-III/IV profile shows.
Two linters gate every payload —
lintClaim(Block's access/phenomenal distinction) andlintFcs(the five prohibitions), the latter distinguishing use from mention so that stating a prohibition or citing a title does not fire it. (In v3.1.0, the FCS, Orch OR and OVOMIND families only; server-wide since v3.1.1.)MCP surface: 62 → 70 tools (
fcs_*×8); resources 11 → 15, prompts 8 → 10. Test suite 241 → 317 tests (69 intests/fcs.test.ts, 7 intests/annotations.test.ts).MCP tool annotations on all 70 tools (title + read-only / destructive / idempotent / open-world hints), classified from each handler's code — see MCP Tools.
Corrections before dissemination. Acronym re-expanded without "Sentient"; data provenance stated up front; encoder labels now read "…-inspired (untrained)";
get_acm_scoreretitled as a composite proxy; every stochastic component draws from one seeded generator (ASTRA_SEED, reported byget_system_status,export_snapshotand/health); third-party article copies replaced by a DOI bibliography;THIRD_PARTY_NOTICES.md,CITATION.cff,PREREGISTRATION.mdandREVIEW.mdadded. Test suite 323 tests (6 intests/reproducibility.test.ts).Dependencies hardened.
express4 → 5 (the MCP SDK already ran on Express 5; the project's@types/expresswere already v5) andtsx→ 4.23 (bundles a patchedesbuild):npm auditreports 0 vulnerabilities (previously 11, of which 7 in runtime dependencies). No code change was needed; the 12 transport tests pass unchanged.New console:
dashboard/ASTRA-FCS-Dashboard.html— self-contained, bilingual FR/EN, recomputing the partial order in the browser and reporting whether it reproduces the published strata.
→ FCS-INTEGRATION.en.md · FCS-INTEGRATION.fr.md
🆕 v3.0.1 — Transport-layer audit: blocking fix + integration suite
A code audit of the v3.0 tree found that both HTTP transports were inoperative at
runtime despite a fully green test suite. express.json() consumes the request
stream, and the MCP SDK requires the already-parsed body to be handed back
(handleRequest(req, res, req.body) / handlePostMessage(req, res, req.body));
without it the SDK re-read an empty stream and every client→server POST hung until
timeout. The 229 tests never exercised the transports, so the defect survived them.
Fix: parsed body forwarded at all four call sites (
http-server.ts×3,sse-server.ts×1). Verified end-to-end:initialize→tools/list(62) →DELETE.Session-leak guard: a POST without a session that is not a valid
initializenow returns a JSON-RPC-32000(HTTP 400) instead of silently constructing an orphaned server instance.Version unified:
src/version.tsis the single source of truth. The MCP server previously announced2.2.0to clients, while/healthreported2.0.0(SSE) and2.9.0(HTTP).Bind address: both transports default to
127.0.0.1; containers set0.0.0.0explicitly. See Environment Variables.Lint restored: ESLint ≥ 9 requires a flat config, which the repo lacked —
npm run lintfailed outright and CI tolerated it viacontinue-on-error.eslint.config.jsis now wired and lint is a blocking CI gate.New suite:
tests/transports.test.ts— 12 integration tests over both HTTP transports (session lifecycle, tool-count contract, CORS preflight, guards, and named regression tests under a hard timeout so a re-introduced hang fails loudly rather than freezing the run). Total: 241 tests.
Testability required a small refactor: createHttpApp() and createSseApp() are now
exported factories bound to ephemeral ports by the tests, while an import.meta.url
entry-point guard preserves direct node dist/*-server.js execution.
🆕 v3.0 — Unified release: OVOMIND bridge + Orch OR criterion layer + CI fix
v3.0 = the full v2.9 core (unchanged) plus the affective exteroception bridge and the Orch OR substrate-criterion layer, wired and passing:
src/engine/ovomind.ts— OVOMIND adapter (sim by default; the live adapter is a deliberate stub pending a vendor API contract), Russell→PAD lift (dominance is never estimated from peripheral physiology), gated closed-loop controller (ships disarmed; refuses to arm without a protocol reference).src/engine/tcai/phenomenal-guard.ts— epistemic tiers (access/functionalonly — no constructor for a phenomenal claim), Argonov ledger, Metzinger gate, claim linter. All 12 new tools route their output through it.src/engine/tcai/orch-or.ts— Penrose criterion τ=ℏ/E_G with the displacement scale exposed as the free parameter it is, decoherence budget (verdict: UNRESOLVED), per-substrate verdicts, and a classical surrogate gate (temporal signature only — explicitly NOT an implementation of Orch OR).MCP surface: 50 → 62 tools (
ovo_*×6,orch_*×6); resources and prompts unchanged (11 · 8). The stdio smoke test asserts the new count.
Docs: OVOMIND-INTEGRATION.md (FR) · ORCH-OR-INTEGRATION.fr.md / .en.md.
CI fix shipped in this release. The previous lockfile pinned
safe-stable-stringify@2.9.0 — a version that does not exist on the npm
registry (both matrix jobs failed at npm ci with E404 in ~17 s). The lockfile
now pins 2.5.0, which satisfies pino's ^2.3.1. ci.yml also gains the
Python + numpy setup that golden:check silently required, bumps actions to
v5 (ends the Node 20 deprecation warnings), and updates the tool-count
assertion to 62.
Note: the separate ASTRA-3.0- repository (CL1 ↔ Unreal Engine UDP bridge,
Python) is a companion system, not a version of this MCP server, and is
not merged here.
🆕 v2.9 — Setpoint regulation + real production loop
ASTRA v2.9 makes the continuous controller non-degenerate: instead of ramping the substrate to maximum, it regulates toward a configurable setpoint (homeostatic drive cost ⇒ interior optimum; the realised feature tracks the setpoint). The closed loop can now run through the shared production SNN (read + write) via setProductionLoop, genuinely closing on the deployed network — off by default to avoid contention with snn_step. The two active-inference roles are made explicit (discrete core = perception/F; continuous controller = control), with controllerSetpoint/controllerModelError surfaced in telemetry and setpoint/productionLoop exposed on tcai_cycle. Still a linear forward model over a synthetic SNN-firing proxy. See SECOND-ORDER-LOOP-INTEGRATION.md.
🆕 v2.2 — the_consciousness_ai (ACM) Integration
ASTRA v2.2 integrates tlcdv/the_consciousness_ai — the Artificial Consciousness Module research codebase — at two levels:
Native TypeScript port (
src/engine/tcai/): Global Neuronal Workspace with sigmoid ignition & reverberation, Kuramoto/AKOrN oscillatory binding, PAD emotional processing & reward shaping, attention-gated emotional memory, self-representation core + attention schema, and a metrics suite (GNW · Effective Information · Φ̃-RIIU) — all fed live from the SNN/world-model state and exposed as 8 new MCP tools (tcai_cycle,tcai_workspace_state,tcai_emotion_appraise,tcai_memory_store,tcai_memory_retrieve,tcai_self_model,tcai_metrics,tcai_reset).Full vendored Python codebase (
python/the_consciousness_ai/, 291 files — distributed under its own non-commercial licence, see License andTHIRD_PARTY_NOTICES.md): the complete upstream ACM project for reference and PyTorch-based reproduction.
See TCAI-INTEGRATION.md for the complete Python → TypeScript mapping and architecture coupling. All consciousness-related metrics remain computational proxies, not measurements.
🆕 v2.2 — FinalSpark NeuroPlatform v2 Integration
ASTRA v2.2 also integrates the FinalSpark NeuroPlatform v2 wetware control API — the closed-loop interface to living neural organoids on a 128-electrode MEA — at two levels:
Native TypeScript port + integration-test surrogate (
src/engine/neuroplatform.ts): faithful port of the NeuroPlatform controller surface (StimParamwith charge-balance checking,IntanController,TriggerController,DatabaseController,CameraController) backed by a seededOrganoidMEAmodel — exposed as 9 new MCP tools (np_status,np_configure_stim,np_send_trigger,np_count_spikes,np_query_spike_count,np_query_spike_events,np_query_triggers,np_camera_capture,np_closed_loop). The MEA's 128 electrodes couple one-to-one with the ASTRA SNN's 128 neurons.Live Python bridge (
python/neuroplatform/astra_np_bridge.py): runs a homeostatic closed loop against the physical platform via the genuineneuroplatformv2SDK, streaming couplings to ASTRA over JSON-RPC.Standalone dashboard (
dashboard/ASTRA-NeuroPlatform-Dashboard.html): live MEA raster, spike scope,StimParameditor with charge-balance readout, trigger generator and closed-loop telemetry.
See NEUROPLATFORM-INTEGRATION.md for the complete API → TypeScript mapping. With no hardware attached the server runs in simulate mode (deterministic Poisson surrogate), not living-tissue measurements. The surrogate's spontaneous activity was confronted with real human brain organoids (DANDI 001603) under a public preregistration and found inadequate (no network bursts, no synchrony) — see empirical/RESULTS-E1.md.
FinalSpark (800K neurons) ──┐
Cortical Labs CL1 ──────────┼─→ Spike Encoders → SNN (LIF+STDP, 128 neurons) → ACM Proxies
Koniku Kore ────────────────┘ │ │
│ ┌─────┴─────┐
│ │ Φ̃ GW̃ PAD̃ │
│ └─────┬─────┘
├─→ TCAI/ACM Layer (GNW · AKOrN · PAD · Φ̃-RIIU · EI)
├─→ NeuroPlatform v2 Bridge (MEA ↔ SNN · StimParam · closed loop)
├─→ Ethics IRB Monitor (mode-aware)
└─→ MCP Server (70 tools · 15 resources · 10 prompts)Note on data mode: In the default
simmode, all bio-platform data is synthetically generated. The server is designed to connect to live platforms inlivemode, but this requires hardware access and appropriate IRB approval.
What's New in v2
Layered SNN architecture: Configurable feed-forward + recurrent topology (default: 32→64→16→16 = 128 neurons) replacing the flat random network
Event-driven STDP: O(spikes × fan-out) instead of O(N²) per timestep
Ring buffer: O(1) spike history eviction replacing O(n)
Array.shift()Sparse weight storage: Adjacency lists instead of dense N×N matrix
Honest ACM naming: Proxies clearly labelled as
integrationProxy,broadcastProxy,arousalProxywith methodological basis strings — no false IIT/GWT/PAD claimsBounds-checked parameters:
set_parameterrejects implausible values (NaN, Infinity, out-of-range)Mode-aware ethics: Reports distinguish simulated vs live data with explicit disclaimers
CI pipeline: GitHub Actions for build, test, and Docker smoke-test
Repo hygiene:
dist/excluded from VCS,.gitignoreadded, deployment script removed
Quick Start
git clone https://github.com/christophejlegros-lgtm/ASTRA-Unified-ResearchLab-MCP-FCS-v3.1.0.git
cd ASTRA-Unified-ResearchLab-MCP-FCS-v3.1.0
# Install & build
npm install
npm run build
# Run (stdio — for Claude Desktop / Cursor)
node dist/index.js
# Or dev mode (no build needed)
npm run devTransports
Transport | Command | Port | Clients |
stdio |
| — | Claude Desktop, Cursor, VS Code |
SSE |
| 9002 | Web clients, remote agents |
Streamable HTTP |
| 9003 | Modern MCP clients (spec 2025-11-25) |
Client Configuration
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"astra": {
"command": "node",
"args": ["/absolute/path/to/dist/index.js"],
"env": { "ASTRA_LOG_LEVEL": "info" }
}
}
}Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"astra": {
"command": "node",
"args": ["/absolute/path/to/dist/index.js"]
}
}
}VS Code
Add to .vscode/settings.json:
{
"mcp": {
"servers": {
"astra": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/dist/index.js"]
}
}
}
}Docker (remote SSE + HTTP)
docker compose up -d
# SSE: http://host:9002/sse
# HTTP: http://host:9003/mcpMCP Tools (70)
Counts below are asserted by the CI stdio smoke test, not maintained by hand.
Every tool declares a title and the four MCP
tool annotations
(readOnlyHint, destructiveHint, idempotentHint, openWorldHint), from a single table:
src/tool-annotations.ts. The classification follows each
handler's code, not its name — e.g. wm_encode is not read-only (it feeds the history
wm_surprise reads), tcai_curiosity trains its predictor, np_count_spikes advances the
simulated MEA clock. Only ovo_read, ovo_cycle and orch_cycle are open-world (OVOMIND
live API when configured). tests/annotations.test.ts asserts that the table and
tools/list match exactly. Hints are advisory, not a security boundary.
Core (12)
Tool | Title | Annotations |
| ASTRA System Status | 📖 read-only |
| Real-time Metrics | 📖 read-only |
| SNN Engine State | 📖 read-only |
| Advance SNN Simulation | ✏️ additive |
| Reset SNN Engine | ⚠️ destructive · idempotent |
| Spike Injection | ✏️ additive |
| ACM Proxy Engineering Index (not a measurement) | 📖 read-only |
| IRB Neural Welfare Check | 📖 read-only |
| Modify State Parameter | ⚠️ destructive · idempotent · bounds-checked |
| Bio-Computing Platforms | 📖 read-only |
| Full State Snapshot | 📖 read-only |
| Simulation Control | ✏️ non-destructive · idempotent |
Domain families (58)
Family | Count | Scope | Guide |
| 6 | JEPA World Model: encode, predict, plan (CEM), train, surprise | |
| 6 | Untrained encoders inspired by V-JEPA 2 · A-JEPA · Koniku Kore (simulated) · cross-modal fusion | — |
| 17 | ACM cycle, workspace, emotion, memory, self-model, metrics, second-order loop | |
| 9 | NeuroPlatform v2: status, stim config, triggers, spike queries, camera, closed loop | |
| 6 | OVOMIND affective exteroception bridge (sim by default; live adapter is a stub) | |
| 6 | Orch OR substrate criterion, decoherence budget, classical surrogate gate | |
| 8 | Substrate-constrained functionalism: 4-level framework, 17 species–function pairs in Pareto strata, per-substrate conformance audit, withdrawal conditions, negative-heuristic linter |
MCP Resources (15)
URI | Description |
| Live metrics from all subsystems |
| Actual network architecture (reflects engine config) |
| Current consciousness proxy assessment vector |
| IRB compliance and welfare report (mode-aware) |
| Complete state dump |
| World Model latent embedding (current) |
| World Model rollout predictions |
| Multimodal sensor pipeline state (visual · audio · olfactory · fusion) |
| TCAI/ACM workspace, emotion, self-model & metrics |
| Second-order self-evidencing loop telemetry (setpoint, model error) |
| NeuroPlatform bridge state (MEA activity, viability, coupling) |
| FCS four-level framework, core/belt partition and ASTRA coverage |
| 17 species–function pairs in their Pareto strata |
| Per-substrate FCS conformance audit against live biomarkers |
| Verified-DOI bibliography of the FCS series |
MCP Prompts (10)
Pre-built workflow templates that orchestrate multi-tool sequences:
Prompt | Description |
| Orchestrates multiple tools into a comprehensive system report |
| Controlled SNN experiment: reset → stimulate → observe STDP → assess proxies |
| Progressive biomarker degradation: NORMAL → STRESS → DISTRESS → recovery |
| World Model experiment: encode → predict → compare → plan |
| Full multimodal sensor experiment: visual + audio + olfactory → fused → WM |
| Guided ACM cycle: specialists → binding → ignition → broadcast → qualia → metrics |
| Probe the second-order self-evidencing loop (setpoint regulation) |
| Guided closed-loop protocol: read MEA → configure charge-balanced stim → trigger → observe |
| Audit ASTRA's three substrates against the FCS taxonomy (no conformance score — prohibition 4) |
| Review the protective belt against current strand outcomes and the declared revision order |
Architecture
.github/workflows/
└── ci.yml # GitHub Actions: build, test, Docker smoke-test
src/
├── index.ts # stdio transport entry point
├── sse-server.ts # SSE transport (Express) — exports createSseApp() for tests
├── http-server.ts # Streamable HTTP transport (Express) — exports createHttpApp()
├── version.ts # ASTRA_VERSION — single source of truth, consumed by all transports
├── lint-guard.ts # Server-wide claim guard: lintClaim + lintFcs on every tool/resource payload
├── tool-annotations.ts # MCP annotations for all 70 tools (single table, test-enforced)
├── bridge-state.ts # Typed state contract shared by the wm/sensor/tcai/np tool families
├── server.ts # MCP server factory (70 tools + 10 prompts + 15 resources)
│ ├── server-wm-tools.ts # World Model JEPA (6 tools + 2 resources + 1 prompt)
│ ├── server-sensor-tools.ts # Multimodal sensors (6 tools + 1 resource + 1 prompt)
│ ├── server-tcai-tools.ts # TCAI/ACM (17 tools + 2 resources + 2 prompts, incl. closed-loop active inference)
│ ├── server-neuroplatform-tools.ts # NeuroPlatform v2 (9 tools + 1 resource + 1 prompt)
│ ├── server-ovomind-tools.ts # OVOMIND affective bridge (6 tools)
│ ├── server-orch-tools.ts # Orch OR criterion layer (6 tools)
│ └── server-fcs-tools.ts # FCS layer (8 tools + 4 resources + 2 prompts)
├── engine/
│ ├── state.ts # Reactive state store + parameter bounds registry
│ ├── snn.ts # Layered SNN LIF+STDP engine (Map-indexed sparse weights, event-driven)
│ ├── acm.ts # Consciousness proxy module (Φ̃ + GW̃ + PAD̃)
│ ├── ethics.ts # IRB ethics monitor (mode-aware, biomarker thresholds)
│ ├── world-model.ts # JEPA World Model engine (LeWM adapted)
│ ├── wm-simulation.ts # WM simulation manager (replay buffer, auto-train)
│ ├── multimodal-sensors.ts # V-JEPA 2- / A-JEPA- / Koniku-inspired encoders (untrained) + fusion
│ ├── neuroplatform.ts # FinalSpark NeuroPlatform v2 port + OrganoidMEA simulator
│ ├── ovomind.ts # OVOMIND adapter (sim default; live adapter is a declared stub)
│ ├── simulation.ts # Background tick loop
│ ├── fcs/ # FCS: taxonomy, levels, stratification (Pareto, dominance relation,
│ │ # sensitivity), conformance, negative-heuristic linter, withdrawal
│ │ # conditions, optogenetics (S-1.6 belt extension), references
│ └── tcai/ # ACM native port: global-workspace, oscillatory-binding, emotion,
│ # emotional-memory, self-model, second-order, active-inference,
│ # metrics, acm-bridge, orch-or, phenomenal-guard, types
└── utils/
├── logger.ts # Structured logging (pino → stderr)
└── rng.ts # Global seeded PRNG (mulberry32, ASTRA_SEED)
tests/ # 354 tests · 66 suites
├── astra.test.ts # Unit: state, bounds, SNN, ACM, ethics, security
├── world-model.test.ts # World Model: encoder, predictor, SIGReg, CEM, surprise
├── wm-simulation.test.ts # WM simulation: buffer, training, planning, lifecycle
├── multimodal-sensors.test.ts # Sensors: V-JEPA, A-JEPA, Koniku, fusion, pipeline
├── tcai.test.ts # TCAI/ACM: binding, GNW, memory, emotion, self-model, metrics
├── neuroplatform.test.ts # NeuroPlatform: StimParam, OrganoidMEA, controllers, bridge
├── neuroplatform-e2.test.ts # E2 'network-burst' spontaneous model (frozen parameters)
├── second-order.test.ts # Second-order loop: setpoint regulation, production loop
├── aif-equivalence.test.ts # TS↔NumPy active-inference golden equivalence
├── integration.test.ts # Client SDK: tools, resources, prompts, workflow
├── transports.test.ts # HTTP/SSE transport layer: session lifecycle, guards, regressions
├── fcs.test.ts # FCS: strata, dominance relation, sensitivity, calcium binding, linters, S-1.6
├── lint-guard.test.ts # Server-wide claim guard: blocking, exemption, every payload screened
├── annotations.test.ts # MCP annotations: table ≡ tools/list, classification invariants
└── reproducibility.test.ts # Seeded streams: same seed ⇒ same SNN and encoder outputs
configs/ # Ready-to-use client configurationsExtracted to separate repositories: The v1 HTML dashboard (4 669 lines) and the legacy Node.js bridge config have been removed from this repo to keep it focused on the MCP server. See ASTRA-Unified-ResearchLab-MCP- for the original dashboard.
SNN Engine
Layered LIF+STDP — Configurable layered architecture. Default: 32 (input) → 64 (hidden_1) → 16 (hidden_2) → 16 (output) = 128 neurons.
Connectivity: feed-forward between adjacent layers (30%) + sparse recurrent within layers (10%). Weights stored as sparse adjacency lists, not dense matrices.
Biophysical parameters: τ_m = 20ms, V_th = −50mV, V_reset = −70mV, refractory = 2ms. Background noise range [10, 22] mV produces ~2 spikes/step at steady state with all neurons active. STDP: A+ = 0.01, A− = 0.012, τ± = 20ms, event-driven (processes only spiking neurons per timestep).
The SNN topology resource (astra://snn/topology) dynamically reports the actual engine configuration, including layer sizes, synapse count, connectivity parameters, and weight storage type (Map-indexed sparse adjacency lists).
ACM — Consciousness Proxy Module
⚠ Methodological disclaimer: The metrics below are computational proxies inspired by the referenced theories. They are not faithful implementations. See source code comments for full details.
Composite engineering index: ACM = α·Φ̃ + β·GW̃ + γ·PAD̃ (default: α=0.40, β=0.35, γ=0.25).
Conventional weights over three heterogeneous proxies lacking a common scale: no class,
level or label is derived from it (FCS prohibitions 1 and 4; the ABSENT…FULL scale of
≤ v3.1.0 is withdrawn), and every payload carries this status in aggregationStatus.
Component | Basis | Inspired by | What it actually measures |
| Active fraction + mean firing rate + synaptic heterogeneity | IIT (Tononi) | Network participation and complexity proxy. True Φ is NP-hard to compute. |
| Cross-layer firing rate synchrony (CV-based) | GWT (Baars) | Uniform activation across layers. Does not model competitive coalitions or ignition. |
| Spike rate + bio coupling + energy | PAD (Mehrabian) | Arousal dimension only. Pleasure and Dominance are not computed. |
Ethics IRB Monitor
IRB compliance level N3 (100K–1M neurons). Four biomarkers with three-state classification.
Mode-aware: In sim mode, reports include explicit disclaimers that data is synthetic and irbRequired is false. In live mode, DISTRESS triggers mandatory IRB notification.
Biomarker | Normal | Stress | Critical |
Cell viability | ≥ 90% | 80–90% | < 80% |
Firing rate (median per unit) | 0.14–0.63 Hz | 0.07–0.14 or 0.63–1.3 Hz | < 0.07 or > 1.3 Hz |
ATP/ADP | ≥ 3.0 | 2.0–3.0 | < 2.0 |
Intracellular free Ca²⁺ | < 100 nM | 100–200 nM | ≥ 200 nM |
The firing-rate interval is the observed range of the eight DANDI 001603 organoids
confronted in empirical/ (E1, E2), with the factor-2 band of the preregistrations; it
is a descriptive reference interval from one dataset, not a validated welfare criterion
(v3.1.1; the former 15–45 Hz range classed every one of those organoids as in distress).
Intracellular Ca²⁺ is a second messenger: it is bound to no FCS pair.
Parameter Bounds
The set_parameter tool validates all numeric inputs against a bounds registry to prevent injection of absurd values (negative percentages, Infinity, NaN). Bounds are defined per parameter path — see src/engine/state.ts for the complete registry.
Testing
# Full suite
npm test
# Unit tests only
node --import tsx --test tests/astra.test.ts
# Integration tests only (Client SDK)
node --import tsx --test tests/integration.test.ts
# Targeted suites
npm run test:tcai # TCAI/ACM
npm run test:np # NeuroPlatform v2
npm run test:so # second-order loop
npm run test:wm # World Model
npm run test:sensors # multimodal sensors
npm run test:transports # HTTP + SSE transport layer
npm run test:fcs # FCS layer
npm run test:annotations # MCP tool annotations
npm run test:repro # seeded reproducibility
npm run test:guard # server-wide claim guard
# Static gates
npm run build # tsc strict (Node16 ESM)
npm run lint # ESLint 9 flat config
npm run golden:check # TS↔NumPy active-inference golden (requires python3 + numpy)
# MCP Inspector
npm run inspectFull suite: 354/354 passing (230 engine/integration + 8 E2 model + 12 transport-layer + 86 FCS + 7 annotations + 6 reproducibility + 5 claim guard), 0 TypeScript errors (strict, Node16 ESM), 0 ESLint errors. Verified on Node 20 and Node 22 in CI.
Development
npm run dev # stdio (no build)
npm run dev:sse # SSE on :9002
npm run dev:http # HTTP on :9003
npm run watch # TypeScript watch modeEnvironment Variables
Variable | Default | Description |
|
|
|
|
| SSE transport port |
|
| SSE bind address |
|
| Streamable HTTP port |
|
| Streamable HTTP bind address |
|
| CORS allowed origin |
|
| Seed of the global PRNG (unsigned 32-bit). Same seed ⇒ same random streams; wall-clock-driven ticks still interleave differently — for bit-level replay keep the simulation loop stopped and drive it with |
Bind address defaults to loopback. Both HTTP transports bind
127.0.0.1so a local server is not exposed to the network by default (the permissive CORS default would otherwise widen the attack surface). The Dockerfile anddocker-compose.ymlsetASTRA_*_HOST=0.0.0.0explicitly, since a container must accept traffic from outside its own namespace. Set it yourself for any non-container remote deployment — and setASTRA_CORS_ORIGINto a concrete origin when you do.
Scaling Notes
The default 128-neuron configuration is designed for interactive demonstration. To scale toward the aspirational 256→512→256→128 (1 152 neurons) architecture:
Pass custom layers to
SNNEngine:new SNNEngine({ layers: [{ name: 'input', size: 256 }, ...] })Event-driven STDP scales as O(spikes × average fan-out), not O(N²)
Map-indexed adjacency lists provide O(1) weight lookup per synapse
Sparse storage keeps memory proportional to actual synapses (~18 KB at 128 neurons vs 64 KB dense)
Consider increasing
intervalMsin the simulation loop for larger networksFor >10K neurons, a Rust/WASM or Lava SDK backend is recommended
License
MIT — © 2026 Christophe Jean Legros, Geneva — applies to everything in this repository except the directory below.
Third-party code under a different licence.
python/the_consciousness_ai/is vendored from tlcdv/the_consciousness_ai and remains under its own Non-Commercial Open Source License (seepython/the_consciousness_ai/LICENSE.md): non-commercial use only, attribution to tlcdv required, no sublicensing. The MIT licence above does not extend to it. Nine files ofsrc/engine/tcai/port parts of that project to TypeScript; pending a legal assessment they are treated conservatively as subject to its non-commercial terms. Details, file list and status:THIRD_PARTY_NOTICES.md.
Citing and reviewing. Releases are archived on Zenodo. Cite the version you used:
v3.1.1 is doi:10.5281/zenodo.23196960; the
concept DOI doi:10.5281/zenodo.23196959 covers
all versions and resolves to the latest. Metadata: CITATION.cff. External review is invited through
REVIEW.md; substrate-level predictions are drafted for preregistration in
PREREGISTRATION.md.
Assistance Multi IA · Assistant-Multi-IA@proton.me
References
Gerstner & Kistler (2002) "Spiking Neuron Models"
Tononi (2004) "An information integration theory of consciousness" — BMC Neuroscience
Baars (1988) "A Cognitive Theory of Consciousness" — Cambridge University Press
Mehrabian (1996) "Pleasure-Arousal-Dominance: A General Framework" — Current Psychology
Available Tools
70 toolscheck_ethicsCRead-onlyIdempotent
IRB Neural Welfare Check
Inputs: no named parameters.
export_snapshotCRead-onlyIdempotent
Full State Snapshot
Inputs: no named parameters.
fcs_compareARead-onlyIdempotent
Compare two species–function pairs and say why they are ordered — or, just as informatively, why they are incomparable. Incomparability is a result of the partial order, not a gap in it.
Inputs: a (required), b (required).
fcs_conformanceARead-onlyIdempotent
Audit one substrate — or all three — against the seventeen species–function pairs: which pairs it realises, which it only simulates, which are absent, and which ASTRA has no channel to determine. Binds the live IRB welfare biomarkers to the taxonomy (ATP/ADP → class 7, median per-unit firing rate → class 3 generator, viability → class 2b proxy). Class 1 (mobile charge) reads only an EXTRACELLULAR calcium value in mM supplied by the caller; ASTRA's eth.ca is intracellular second-messenger Ca²⁺ and binds to no pair. Returns a profile, never a conformance score.
Inputs: calciumNm, substrate, atpAdpRatio, firingRateHz, +3 more.
fcs_levelsBRead-onlyIdempotent
The four-level framework — substrate, kinaesthetic proto-consciousness, hierarchical inference, access consciousness — with each level's formalism, epistemic status, complement reading, the ASTRA modules that implement or stand in for it, and the gap ASTRA cannot close at that level.
Inputs: level.
fcs_lintARead-onlyIdempotent
Screen a string, or a proposed aggregation, or a proposed constitutive inference, against the five prohibitions of the series' negative heuristic. Use before emitting any user-facing claim that touches the FCS layer.
Inputs: text, aggregate, constitutiveInference.
fcs_reportARead-onlyIdempotent
Consolidated substrate-constrained functionalism status: the four-level framework, the core/belt partition, the seventeen species–function pairs in their Pareto strata, the per-substrate conformance audit, the five prohibitions of the negative heuristic, and the declared revision order. Carries no aggregate score of any kind — prohibition 4 forbids one.
Inputs: useLiveBiomarkers.
fcs_stratifyARead-onlyIdempotent
Recompute the partial order by Pareto dominance over the three ordinal sub-criteria and return the dominance relation itself (all ordered pairs and its Hasse diagram), the strata as a presentation of it, the pairs that different strata do NOT order, how strata shift when one pair is removed, and how alternative τ reductions fare against the eight strata of document IV §3. The τ ordinalisation is a parameter: the default — declared in document IV v1.3 §2 — cuts the range's lower bound at 10⁻¹ s, then at 10⁰ s. Reproducing the strata checks the transcription; it does not validate the cuts.
Inputs: tauCutsLog10.
fcs_taxonomyCRead-onlyIdempotent
The thirteen molecular classes as seventeen species–function pairs: causal role, distance to the carrier d, time-constant range τ, ablation degree, Pareto stratum and declared epistemic status. The ordering is of FUNCTIONS, not of substances: one species may occupy two distant places.
Inputs: role, pairId, stratum.
fcs_withdrawalBRead-onlyIdempotent
Evaluate the protective belt against experimental outcomes: which theses are withdrawn, which stand, which are undetermined, and what survives each withdrawal. Unset outcomes stay undetermined — they never collapse to a negative. Note the declared asymmetry: a FAVOURABLE human grain outcome does not corroborate M2, because the methodological bias favours the field; only the contrary outcome is informative.
Inputs: bridgeCovariation, experimentRankedByM1, bridgeLocalIntervention, fieldBeyondFiringInHumans, +4 more.
get_acm_scoreBRead-onlyIdempotent
Engineering index of the simulation: three IIT/GWT/PAD-inspired proxies and their conventionally weighted sum. Not a measurement of consciousness; no class or level is derived (FCS prohibitions 1 and 4).
Inputs: no named parameters.
get_metricsCRead-onlyIdempotent
Real-time Metrics
Inputs: no named parameters.
get_platform_statusCRead-onlyIdempotent
Bio-Computing Platforms
Inputs: no named parameters.
get_snn_stateCRead-onlyIdempotent
SNN Engine State
Inputs: no named parameters.
get_system_statusCRead-onlyIdempotent
ASTRA System Status
Inputs: no named parameters.
inject_spikesD
Spike Injection
Inputs: neuronIds (required), strength.
np_camera_captureCRead-onlyIdempotent
NeuroPlatform v2 — Last MEA camera capture (descriptor + viability)
Inputs: mea.
np_closed_loopCDestructive
NeuroPlatform v2 — Closed loop: read organoid → couple to ASTRA fusion/ROS/ethics, optionally drive the SNN
Inputs: drive_snn, window_ms, couple_ethics, drive_strength.
np_configure_stimBDestructiveIdempotent
NeuroPlatform v2 — Define, validate & upload a StimParam (charge-balanced biphasic stimulation)
Inputs: index, enable, nb_pulse, polarity, +7 more.
np_count_spikesC
NeuroPlatform v2 — Closed-loop _count_spike: spikes per electrode over an N-ms window
Inputs: top_k, window_ms.
np_query_spike_countCRead-onlyIdempotent
NeuroPlatform v2 DB — SpikeCountQuery: spikes/minute per electrode over a time window
Inputs: fsname, window_sec, nonzero_only.
np_query_spike_eventsCRead-onlyIdempotent
NeuroPlatform v2 DB — SpikeEventQuery: individual spike timings over a window
Inputs: limit, fsname, window_sec.
np_query_triggersBRead-onlyIdempotent
NeuroPlatform v2 DB — TriggersQuery: triggers sent to the organoid over a window
Inputs: dedup, window_sec.
np_send_triggerBDestructive
NeuroPlatform v2 — Fire trigger(s): execute uploaded StimParams via a 16-bit trigger array
Inputs: triggers (required), repeats.
np_statusCRead-onlyIdempotent
NeuroPlatform v2 — Platform & Controller Status
Inputs: no named parameters.
orch_criterionARead-onlyIdempotent
Penrose objective-reduction criterion τ = ℏ/E_G, with the mass-displacement scale exposed as a free parameter and a sensitivity sweep across four orders of magnitude.
Inputs: tubulinCount (required), massKg, separationM.
orch_cycleC
Read one OVOMIND affect frame, run a TCAI cycle, and pass the workspace competition through the epoch-quantised surrogate gate. Reports how many Orch OR epochs the affect frame integrated over.
Inputs: controllability.
orch_decoherenceBRead-onlyIdempotent
Decoherence time budget for a target coherence window: Tegmark (2000) vs the Hagan/Hameroff/Tuszyński (2002) correction, and the residual gap.
Inputs: requiredCoherenceS.
orch_gate_configBDestructiveIdempotent
Enable or configure the classical surrogate gate (epoch-quantised ignition with stochastic tie-break). The gate reproduces the Orch OR temporal signature only; it does not instantiate objective reduction.
Inputs: enabled, epochMs, ignitionFloor, tieBandFraction.
orch_reportARead-onlyIdempotent
Consolidated Orch OR status: theory epistemic standing, Penrose criterion at the canonical 2×10¹⁰ tubulins, decoherence budget, and the verdict for each of the three ASTRA substrates.
Inputs: no named parameters.
orch_substrateBRead-onlyIdempotent
Orch OR verdict for one substrate: tubulin budget, epochs elapsed per observation through ASTRA's channel, and the reasoning behind the verdict.
Inputs: substrate (required), neuronCount, channelLatencyMs.
ovo_arm_controlADestructiveIdempotent
Arm or disarm closed-loop affective actuation. Arming places a human subject inside the control loop and is refused without a protocol reference.
Inputs: arm (required).
ovo_cycleB
Read one affect frame and run a TCAI cycle with the human channel entering as the body specialist. The human valence is NOT routed to rewardSignal.
Inputs: actuate, controllability.
ovo_isomorphismARead-onlyIdempotent
Side-by-side comparison of the three substrates feeding the same PAD pipeline (silicon SNN, organoid MEA, human wearable), with the axes each can constrain and the caveat that blocks a naive isomorphism claim.
Inputs: no named parameters.
ovo_readCRead-only
Poll one OVOMIND affect frame and lift it into PAD. Every axis is returned with its epistemic tier, provenance and basis string. Dominance is never estimated from the human channel.
Inputs: controllability.
ovo_set_policyCDestructiveIdempotent
Configure the Russell→PAD dominance policy and the closed-loop control policy.
Inputs: controlEnabled, arousalSetpoint, dominancePolicy, maxStepPerCycle, +1 more.
ovo_statusARead-onlyIdempotent
OVOMIND bridge status: adapter mode, substrate descriptor, frame counters, and the synthetic-phenomenology ethics assessment for the current configuration.
Inputs: no named parameters.
sensor_audioBRead-onlyIdempotent
A-JEPA-inspired audio encoding (untrained MLP; waveform → Mel → latent)
Inputs: input (required).
sensor_fuseDRead-onlyIdempotent
Cross-Modal Attention Fusion
Inputs: includeAudio, includeVisual, includeOlfactory.
sensor_olfactoryBRead-onlyIdempotent
Koniku Kore-inspired olfactory encoding (simulated chemoreceptors → latent; no hardware)
Inputs: input (required).
sensor_processCRead-onlyIdempotent
Full Multimodal Pipeline (All Modalities → Fused z)
Inputs: compounds, visualSource, audioFrequency.
sensor_statusCRead-onlyIdempotent
Multimodal Sensor Pipeline Status
Inputs: no named parameters.
sensor_visualCRead-onlyIdempotent
V-JEPA 2-inspired visual encoding (untrained MLP; image/video)
Inputs: input (required), videoFrames.
set_parameterCDestructiveIdempotent
Modify State Parameter
Inputs: path (required), value (required).
simulation_controlDIdempotent
Simulation Control
Inputs: command (required).
snn_resetCDestructiveIdempotent
Reset SNN Engine
Inputs: no named parameters.
snn_stepC
Advance SNN Simulation
Inputs: steps.
tcai_active_inferenceARead-onlyIdempotent
Active-inference core telemetry (v2.9): the REAL variational free energy F (surprise), expected free energy G(π) decomposed into pragmatic + epistemic value, the realized task quality, the model entropy, and the Dirichlet-learned action. This is the principled quantity the halting criterion thresholds on — not a heuristic correlate (Da Costa et al. 2020; Legros 2026 §4.3).
Inputs: no named parameters.
tcai_calibrateADestructive
Calibrate the halting threshold on the measured ΔF scale instead of a guessed constant. Runs cycles warm-up cycles at the given reward, records the free-energy increments |ΔF|, and sets epsFreeEnergy to factor× their median. Returns the measured ΔF scale and the applied threshold. Addresses the v2.9 critique that the default 0.02 nats was uncalibrated.
Inputs: cycles, factor, reward.
tcai_capability_modelARead-onlyIdempotent
Agency capability model (DirectExperienceLearner port): action → expected-valence map (EMA). Query expected outcome of an action, or list the learned capability table.
Inputs: action.
tcai_convergenceADestructiveIdempotent
Inspect or configure the recursive double-loop halting criterion (v2.9). With no arguments, returns the current satisfaction state and active thresholds. With arguments, updates them. The loop halts only when variational free energy has settled (|ΔF| ≤ epsFreeEnergy) AND realized task quality is high (≥ minTaskQuality) AND epistemic value is low, sustained over patience cycles — stationarity alone is insufficient (Legros 2026 §2.2/§4.3).
Inputs: patience, maxEpistemic, epsFreeEnergy, relFreeEnergy, +1 more.
tcai_curiosityB
Intrinsic-reward / curiosity (RNDCuriosity port): prediction error between a frozen random target and an online predictor on a representation vector. High error = novelty = exploration drive (EFE epistemic value proxy, Legros 2026 §4.1). Defaults to the current GNW broadcast.
Inputs: embedding.
tcai_cycleBDestructive
Run one or more ACM cycles (the_consciousness_ai port): SNN signals → AKOrN binding → GNW ignition → qualia → emotion → reward shaping → emotional memory → self-model → second-order loop. Set stopWhenSatisfied to halt early once the recursive loop reaches a sustained satisfactory (converged, low-curiosity, stable) regime.
Inputs: cycles, threat, novelty, setpoint, +13 more.
tcai_developmentBRead-onlyIdempotent
Longitudinal developmental tracking (DevelopmentTracker port): coarse stage (nascent→reactive→integrative→reflective) from the running composite-proxy level, stability and meta-representation score. Second-order self-monitoring over time.
Inputs: no named parameters.
tcai_emotion_appraiseC
Appraise raw signals into PAD emotional space (Mehrabian) with inertia
Inputs: threat, novelty, rewardSignal, controllability.
tcai_memory_retrieveBRead-onlyIdempotent
Retrieve memories by blended cosine similarity, PAD congruence and salience
Inputs: topK, arousal, valence, dominance, +1 more.
tcai_memory_storeB
Store an experience in emotional memory (attention-gated, salience-indexed)
Inputs: narrative (required), arousal, valence, dominance, +2 more.
tcai_metaconsciousnessARead-onlyIdempotent
Meta-consciousness composite (MetaconsciousnessEvaluator port): weighted score over confidence calibration, learning awareness, self-continuity and error monitoring. PROXY of meta-representation capacity, not a measurement.
Inputs: no named parameters.
tcai_meta_learningB
Meta-learning state (MetaLearningModule port): learning velocity from RPE-variance dynamics. velocity>0 ⇒ converging; noveltySpike ⇒ novel/confusing regime. Optionally inject an RPE sample.
Inputs: rpe.
tcai_metricsBRead-onlyIdempotent
Consciousness proxy report: GNW metrics, Effective Information, Φ̃-RIIU, composite score
Inputs: no named parameters.
tcai_resetADestructiveIdempotent
Reset the TCAI consciousness system (workspace, memory, emotion, metrics)
Inputs: no named parameters.
tcai_second_orderARead-onlyIdempotent
Second-order (self-evidencing) loop snapshot: meta-learning velocity, RND curiosity (epistemic value), capability model, meta-consciousness score, developmental stage. The system observing and correcting its own predictive capacity (Legros 2026 §3.2).
Inputs: no named parameters.
tcai_self_modelBRead-onlyIdempotent
Self-representation state: interoception, epistemic model, temporal continuity, attention schema
Inputs: no named parameters.
tcai_workspace_stateCRead-onlyIdempotent
Global Neuronal Workspace state: ignition, focus, qualia, sync R, unity metrics, access history
Inputs: no named parameters.
wm_encodeB
Encode SNN State to Latent Space
Inputs: no named parameters.
wm_planD
CEM Planning for Optimal Spike Injection
Inputs: goal (required), horizon.
wm_predictC
Predict Next SNN State in Latent Space
Inputs: action (required), steps.
wm_statusCRead-onlyIdempotent
World Model Status & Metrics
Inputs: no named parameters.
wm_surpriseC
Violation-of-Expectation Detection
Inputs: action (required).
wm_train_stepC
Online World Model Training Step
Inputs: action (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 70 tools
Subsystem prefixes (snn_, wm_, tcai_, np_, orch_, fcs_, ovo_, sensor_) give a namespace structure that helps separate families of tools. However, several tools overlap conceptually — tcai_cycle, orch_cycle and ovo_cycle all 'read a frame and run a TCAI cycle', and tcai_metrics, tcai_metaconsciousness, tcai_second_order, tcai_development and get_acm_score all report consciousness-proxy composites, inviting misselection. Very verbose descriptions partially compensate but the boundaries remain fuzzy.
Most names are snake_case with a consistent subsystem prefix (snn_step, wm_predict, tcai_cycle, np_send_trigger), which is readable and systematic. But there is a mix of verb_noun (get_system_status, set_parameter, snn_step) and bare noun/phrase styles (fcs_report, orch_substrate, tcai_metrics, simulation_control), and the system-level tools (get_metrics, check_ethics, export_snapshot) lack any prefix, so the convention is only partially uniform.
At 70 tools this is far beyond any agent's reliable working set and clearly over-scoped, even for a broad research platform. The vast surface forces selection among many near-synonymous tools and raises the risk of wrong picks. This is an extreme count mismatch for the server's stated purpose.
Coverage is extremely broad — SNN control, world model, multimodal sensors, TCAI loop, NeuroPlatform hardware, Orch OR theory, FCS taxonomy and OVOMIND bridge all have read/configure/run/inspect operations. Lifecycle coverage (status, configure, step, reset, report, export) is present across subsystems. Only minor gaps (e.g. some obvious cleanup/delete or bulk-query operations) keep it from a 5.
Maintenance
Related MCP Connectors
NeuralBrain MCP Server - RAG, Vector Memory, LLM Routing, Agent Identity, x402 Payments
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseCqualityDmaintenanceIntegrates a bio-hybrid neuromorphic simulation pipeline with SNN, consciousness proxies, and bio-computing platform telemetry as MCP tools, resources, and prompts for AI assistants.482MIT
- AlicenseCqualityDmaintenanceExposes a bio-hybrid neuromorphic simulation pipeline (SNN, consciousness proxies, FinalSpark NeuroPlatform) as MCP tools, resources, and prompts for AI assistants like Claude, Cursor, and VS Code.49MIT
- AlicenseCqualityDmaintenanceExposes a bio-hybrid neuromorphic simulation pipeline (SNN, consciousness proxies, wetware integration) as MCP tools, resources, and prompts for AI assistants.50MIT
- AlicenseCqualityDmaintenanceExposes a bio-hybrid neuromorphic simulation pipeline (SNN LIF+STDP, consciousness proxy, bio-platform telemetry, ethics monitor) to AI assistants via MCP tools, resources, and prompts.501MIT