
AI agents build, train, and analyze BCI/EEG pipelines: data, models, experiments, live sessions.
Listed on
- Official MCP Registry
- Smithery
- Glamavia MCP Toplist
First seen 4 Oct 2026. One server, whatever directories list it: each directory listing keeps its own page and history.
3
Directories
1 via MCP Toplist
37
Tools
From an anonymous probe
-
ToolBench grade
Not graded by Arcade
1
GitHub stars
From MCP Toplist
Tools
| Tool | Description | Behaviour |
|---|---|---|
| account.whoami | Who you are authenticated as: account email, plan (isPro / pioneer), this month's free-run quota, and — with a hosted token — the token name and days until it expires. Call this first when setup guidance appears or to check which credential a session uses. | Read-only |
| calibration.pause | Pause a running calibration between trials (cues hold; resume anytime). | Changes data |
| calibration.resume | Resume a paused calibration session. | Changes data |
| calibration.start | Start a guided subject calibration session (NON-BLOCKING; confirm-gated — the device goes on a human's head). The Nimbus Studio app shows the cues on its calibration dashboard automatically; poll calibration.status. Requires a Pro plan (hosted token or Pro session): calibration nodes and custom-data training are gated by the freemium node policy; local X-MCP-Key principals pass only when the desktop app flags the signed-in Pro session (MCP_LOCAL_IS_PRO). | Changes data |
| calibration.status | Live snapshot of a calibration session (phase, current trial, progress, paused). Once complete, carries the recorded upload — call calibration.train to turn it into the subject's own classifier. | Read-only |
| calibration.train | Train the subject's own classifier from a COMPLETED calibration session (NON-BLOCKING). Fetches the recorded upload, wires it into a train pipeline as a custom_data source, and starts the run. Requires a Pro plan (custom_data training is freemium-gated). The calibrate→train handoff requires a Postgres-backed backend (hosted or local dev); a desktop-local session completes and records, but its upload can't be resolved by MCP train today. | Changes data |
| catalog.datasets | Curated public EEG datasets (MOABB packs) available to pipelines. | Read-only |
| catalog.leaderboard | Public benchmark leaderboard: pipeline rankings per dataset. Rankings are per-dataset under the canonical ``within_session`` protocol (see ``protocol``). Within each dataset, ``rows`` are sorted desc by ``meanAccuracyPct`` (95% CI in ``ciLoPct``/``ciHiPct``). Use ``pipelineId`` as the template id hint for ``catalog.template`` when building a pipeline. ``updated`` marks each dataset's most recent run; ``packFingerprint`` identifies the exact dataset pack the scores came from. | Read-only |
| catalog.node_schema | Full config JSON schema + input/output ports for one node type. | Read-only |
| catalog.nodes | List Nimbus pipeline node types (data, preprocessing, features, models...). Use catalog.node_schema(node_type) for one node's full config schema and ports. | Read-only |
| catalog.template | Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate. | Read-only |
| catalog.templates | List built-in starter pipelines (MI/P300/SSVEP...). catalog.template(id) returns the graph. | Read-only |
| data.inspect_dataset | Exploratory summary of a public EEG dataset (MOABB pack): channels, sampling rate, trial/class balance, per-channel µV stats, band powers and a PSD overview. Look at the data BEFORE building pipelines: class balance drives stratification choices (imbalanced classes skew accuracy), and flatlined channels mean a montage/reference problem worth fixing first. subject is REQUIRED (the backend 400s without it) — get the subject list via catalog.datasets, e.g. "S01"; a comma-list like "S01,S03" loads a cohort. mode: training | evaluation | all. Units note: values are ASSUMED volts by the loader — a µV-native file reads 1e6x too large; set unitsScale in a pipeline's custom_data config when needed. | Read-only |
| data.inspect_file | Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5): channels, sampling rate, trial/class balance, per-channel µV stats, band powers and a PSD overview. The path shape picks the source: ABSOLUTE path → read the file from disk (only on a LOCAL backend: desktop app / MCP local mode — no upload needed); RELATIVE path (the one data.upload returns) → describe the uploaded file, which works on ANY backend (hosted or local). Look at the data BEFORE building pipelines: class balance drives stratification choices, and flatlined channels mean a montage/reference problem worth fixing first. Units note: values are ASSUMED volts by the loader — a µV-native CSV reads 1e6x too large; set unitsScale in a pipeline's custom_data config when needed. On a hosted backend absolute paths are refused and this returns guidance (upload the file first or switch to a local backend). | Read-only |
| data.upload | Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the backend and get the registered path for a custom_data node. sampling_rate (Hz, e.g. 250.0) is REQUIRED for plain CSV/TSV/TXT files without embedded metadata — the backend silently assumes 250 Hz otherwise, which mis-times epochs, filters and spectral features. format overrides extension-based detection (auto, mat, csv, tsv, txt, edf, bdf, h5, hdf5). | Changes data |
| device.list | EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...). | Read-only |
| device.test | Test a device connection WITHOUT starting a stream (safe, no confirm needed). | Read-only |
| execution.artifacts | Trained artifacts (models/filters, e.g. *.pkl) saved by an execution. | Read-only |
| execution.cancel | Cancel a running execution. | Destructive |
| execution.download_artifact | Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path. | Read-only |
| execution.get | Execution status summary (status: running/completed/failed/cancelled). | Read-only |
| execution.list | Recent executions. Optional status filter (running/completed/failed/cancelled). | Read-only |
| execution.results | Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR, confusion matrix, per-class); full=True returns the complete result object. | Read-only |
| execution.run | Start a pipeline run (NON-BLOCKING). Returns executionId — poll with execution.get() until status is completed/failed, then execution.results(). | Changes data |
| experiment.get | Experiment snapshot: status (running/completed/failed), per-run rows ({name, executionId, status, error?, metrics?}) and, once finished, aggregates {metric: {mean, std, best: {name, value}}} over completed runs only (std = population; None below 2 values). | Read-only |
| experiment.run | Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an experimentId immediately; a background thread submits at most 2 runs at a time (min(max_concurrent, 2)), retries queue-full up to 3 times per run, and polls each execution to completion. Poll experiment.get() for per-run status and, once finished, aggregated metrics. | Changes data |
| pipeline.export | Export the pipeline as a standalone runnable Python bundle (zip saved locally). | Read-only |
| pipeline.validate | Validate a pipeline graph before running. ExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}. Build it from catalog.template(id).train or from scratch using catalog.nodes(). | Read-only |
| pipeline.validate_node | Validate one node's config object against its schema (catalog.node_schema). | Read-only |
| project.create | Create a project (container for one pipeline document). Returns projectId. | Changes data |
| project.list | List projects owned by the current principal (agent work included). | Read-only |
| project.load | Load a project's saved pipeline (train graph + meta) for editing/re-running. | Read-only |
| project.save | Save a pipeline graph into a project (visible on the studio canvas). Handles revision conflicts automatically (one retry). | Changes data |
| stream.start | Connect an EEG device and START a live streaming session on the user's head. Requires confirm=True; call device.test first. Track with stream.status(). Idle watchdog: if no stream.status()/stream.telemetry() poll happens for idle_timeout_sec (default 900), the session is stopped and the device disconnected automatically — an abandoned stream never keeps running on the user's head. Any poll resets the timer; idle_timeout_sec=0 disables the watchdog. | Changes data |
| stream.status | Live snapshot of a streaming session (running, deviceConnected). Polling this also feeds the idle watchdog: each call resets the session's idle timer (see stream.start's idle_timeout_sec). | Read-only |
| stream.stop | Stop a streaming session and disconnect the device (always safe to call). Also removes the session from the idle watchdog so it cannot fire after an explicit stop. | Destructive |
| stream.telemetry | Live snapshot of a streaming session: latest prediction + recent window, signal quality (meanChannelQuality, snrDb, artifactProbability), indicators, running stats. Poll this while a session runs. Live telemetry requires a DEPLOYED model session (hub deploy / playback with a classifier); modelless hardware streams have no telemetry — use stream.status for those. Expect low confidence during filter/ASR warm-up (first seconds); quality < 0.5 or high artifactProbability means the signal is poor. 404 => session not active in this backend. Each poll also feeds the idle watchdog (see stream.start's idle_timeout_sec), keeping an actively watched session alive. | Read-only |
| Directory | Listing | Tier | First seen |
|---|---|---|---|
| Official MCP Registry | Nimbus BCI | - | 4 Oct 2026 |
| Smithery | Nimbus BCI | - | 5 Oct 2026 |
| Glama | Listed there according to MCP Toplist’s dataset; not collected by InvokeRank. | ||