accueil / serveurs / Dev & Code / io.github.nimbusbci/nimbus-mcp
io.github.nimbusbci/nimbus-mcp
serveur MCP (Model Context Protocol) · nimbus 0.14.11
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.nimbusbci/nimbus-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.nimbusbci/nimbus-mcp » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 60 outils
- account.whoami≈ 177 tokens
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. In anonymous Local Free mode there is no account: the response says so (mode/tier) instead of demanding a login.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "account.whoami", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - bids.export_dataset≈ 356 tokens
Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/. Continuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw (EDF byte-passthrough; recordings converted HDF5→EDF with events.tsv). Epoched sources (MOABB packs, trial-table uploads) export as BIDS-derivatives (data passthrough + descriptive trial_index/label/session/run events — no fabricated onsets). The zip embeds nimbus_export_manifest.json with sha256s.
Paramètres, retour & exemple (3)
Paramètreskind· ? · optionnel
Optional explicit source kind: pack|upload|recording (default auto).dataset· string · requis
Dataset id — a MOABB pack id (e.g. "BNCI2014_001"), an upload path (as returned by data.upload), or a recording name. Auto-detected.subjects· ? · optionnel
Pack exports only — subject filter (e.g. ["S01", "S03"]) to bound zip size; default exports all installed subjects.
Exemple d'appel{"name": "bids.export_dataset", "arguments": {"dataset": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - bids.export_execution≈ 179 tokens
Export an execution's results as a BIDS-derivative zip (metrics.json, per-subject participants.tsv, protocol.json, full pipeline_snapshot.json, predictions.tsv when stored, provenance/execution.json) saved to NIMBUS_EXPORT_DIR/bids/.
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
Run whose results to export (from execution.run).
Exemple d'appel{"name": "bids.export_execution", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calibration.pause≈ 131 tokens
Pause a running calibration between trials (cues hold; resume anytime).
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
The calibration run to pause.
Exemple d'appel{"name": "calibration.pause", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calibration.resume≈ 123 tokens
Resume a paused calibration session.
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
The calibration run to resume.
Exemple d'appel{"name": "calibration.resume", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calibration.start≈ 694 tokens
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).
Paramètres, retour & exemple (14)
Paramètresname· ? · optionnel
Display name recorded on the execution.port· ? · optionnel
Serial/COM port for wired devices.classes· ? · optionnel
Override class list [{id,label,cue}] (MI default: left/right hand).confirm· boolean · optionnel
MUST be true — explicit user go-ahead for a session on their head.ip_port· ? · optionnel
Port for network devices.paradigm· string · optionnel
mi | p300 | sart | target_hit.source_id· ? · optionnel
LSL source id.ip_address· ? · optionnel
Device IP for network/wifi devices.device_type· ? · optionnel
Device id from device.list (omit → template default synthetic).mac_address· ? · optionnel
Bluetooth MAC (BT devices).stream_name· ? · optionnel
LSL stream name (LSL devices).serial_number· ? · optionnel
Device serial (some BLE stacks).connection_type· ? · optionnel
Device selector when several exist (e.g. serial vs wifi).trials_per_class· ? · optionnel
Override the template's trial count (minimum 5).
Exemple d'appel{"name": "calibration.start", "arguments": {"name": "texte", "port": "texte", "classes": "texte", "confirm": true, "ip_port": "texte", "paradigm": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calibration.status≈ 169 tokens
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.
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
The calibration run to inspect (from calibration.start).
Exemple d'appel{"name": "calibration.status", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calibration.train≈ 438 tokens
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 resolves on every backend, desktop-local included; only recordings made before the desktop execution-linkage build resolve no upload — rerun calibration.start for those.
Paramètres, retour & exemple (5)
Paramètresname· ? · optionnel
Display name recorded on the training run.paradigm· string · optionnel
Paradigm of the recording (mi | p300 | sart | target_hit); mi and p300 have default train templates.template_id· ? · optionnel
Train template to use (e.g. from catalog.templates); required for sart/target_hit (mi defaults to mi_headband_csp_lda, p300 to p300_hardware_xdawn_lda).train_graph· ? · optionnel
Explicit train graph instead of a template; its first data node (custom_data/public_data) is rewired onto the recording.execution_id· string · requis
The COMPLETED calibration run (from calibration.start).
Exemple d'appel{"name": "calibration.train", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - catalog.datasets≈ 150 tokens
Curated public EEG datasets (MOABB packs) available to pipelines.
Paramètres, retour & exemple (1)
Paramètresonly_on_disk· boolean · optionnel
Only return datasets whose data packs are present on this backend (True by default; False also lists known-but-missing sets).
Exemple d'appel{"name": "catalog.datasets", "arguments": {"only_on_disk": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - catalog.leaderboard≈ 375 tokens
Public benchmark leaderboard: pipeline rankings per dataset. Two tracks: the top-level ``within_session`` block (curated suite pipelines) and ``crossSubject`` (leave-one-subject-out — curated pipelines plus BYO ``python_model`` submissions; BYO rows carry ``kind: "byo"`` and an ``owner`` name). Within each dataset, ``rows`` sort desc by ``meanAccuracyPct`` (95% CI in ``ciLoPct``/``ciHiPct``). ``packFingerprint`` identifies the exact dataset pack behind the scores; ``updated`` marks each dataset's most recent run. The ``pretrainedFewTrial`` efficiency track means: accuracy at a protocol-fixed 100-trials-per-subject budget — the frozen-backbone / few-parameter rows that matter when calibration data is scarce (``paramsTrained`` shown per row so cost is readable next to accuracy). ``submittableDatasets`` is the set open for ``leaderboard.submit``; a dataset can appear under ``crossSubject`` and still be closed for new submissions.
Paramètres, retour & exemple (1)
Paramètresdataset_id· ? · optionnel
Optional dataset id. When set, every track is filtered to that dataset. Omit it for the full board.
Exemple d'appel{"name": "catalog.leaderboard", "arguments": {"dataset_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - catalog.node_schema≈ 136 tokens
Full config JSON schema + input/output ports for one node type.
Paramètres, retour & exemple (1)
Paramètresnode_type· string · requis
Node id from catalog.nodes (e.g. "csp", "nimbus_lda").
Exemple d'appel{"name": "catalog.node_schema", "arguments": {"node_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - catalog.nodes≈ 178 tokens
List Nimbus pipeline node types (data, preprocessing, features, models...). Use catalog.node_schema(node_type) for one node's full config schema and ports.
Paramètres, retour & exemple (1)
Paramètrescategory· ? · optionnel
Optional filter — e.g. "data", "preprocessing", "features", "models" (exact category ids from the unfiltered list).
Exemple d'appel{"name": "catalog.nodes", "arguments": {"category": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - catalog.template≈ 140 tokens
Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate.
Paramètres, retour & exemple (1)
Paramètrestemplate_id· string · requis
Template id from catalog.templates (e.g. "mi_csp_lda").
Exemple d'appel{"name": "catalog.template", "arguments": {"template_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - catalog.templates≈ 108 tokens
List built-in starter pipelines (MI/P300/SSVEP...). catalog.template(id) returns the graph.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "catalog.templates", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - data.delete_upload≈ 198 tokens
Delete an uploaded file from your account (disk + registry). Requires confirm=True. Pass the path returned by data.upload (file.path). Only your own uploads can be deleted; missing paths return not-found.
Paramètres, retour & exemple (2)
Paramètrespath· string · requis
Upload path from data.upload (e.g. user_…/file.csv).confirm· boolean · optionnel
MUST be true to delete — the explicit user go-ahead.
Exemple d'appel{"name": "data.delete_upload", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - data.inspect_dataset≈ 369 tokens
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.
Paramètres, retour & exemple (3)
Paramètresmode· string · optionnel
Which split to summarize — training | evaluation | all.dataset· string · requis
Dataset id from catalog.datasets (e.g. "BNCI2014_001").subject· ? · optionnel
REQUIRED subject code ("S01") or comma-list cohort ("S01,S03").
Exemple d'appel{"name": "data.inspect_dataset", "arguments": {"dataset": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - data.inspect_file≈ 363 tokens
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).
Paramètres, retour & exemple (1)
Paramètrespath· string · requis
ABSOLUTE filesystem path (`~` is expanded; local backends only) or the RELATIVE upload path returned by data.upload (works on any backend).
Exemple d'appel{"name": "data.inspect_file", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - data.upload≈ 338 tokens
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 — uploads without it are rejected (no silent 250 Hz assumption). format overrides extension-based detection (auto, mat, csv, tsv, txt, edf, bdf, h5, hdf5).
Paramètres, retour & exemple (4)
Paramètresformat· ? · optionnel
Override extension-based detection (auto|mat|csv|tsv|txt|edf|bdf|h5|hdf5).file_path· string · requis
Local file to upload (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB).dataset_name· ? · optionnel
Optional label for the uploaded dataset.sampling_rate· ? · optionnel
Hz for headerless CSV/TSV/TXT (REQUIRED there, e.g. 250.0).
Exemple d'appel{"name": "data.upload", "arguments": {"file_path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - device.list≈ 102 tokens
EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "device.list", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - device.test≈ 404 tokens
Test a device connection WITHOUT starting a stream (safe, no confirm needed).
Paramètres, retour & exemple (9)
Paramètresport· ? · optionnel
Serial/COM port for wired devices.ip_port· ? · optionnel
Port for network devices.source_id· ? · optionnel
LSL source id.ip_address· ? · optionnel
Device IP for network/wifi devices.device_type· string · requis
Device id from device.list (e.g. "brainbit", "muse").mac_address· ? · optionnel
Bluetooth MAC (BT devices).stream_name· ? · optionnel
LSL stream name (LSL devices).serial_number· ? · optionnel
Device serial (some BLE stacks).connection_type· ? · optionnel
Device-specific selector when several exist (e.g. serial vs wifi).
Exemple d'appel{"name": "device.test", "arguments": {"device_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.artifacts≈ 131 tokens
Trained artifacts (models/filters, e.g. *.pkl) saved by an execution.
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
Run whose artifacts to list.
Exemple d'appel{"name": "execution.artifacts", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.cancel≈ 126 tokens
Cancel a running execution.
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
The run to terminate (from execution.run/execution.list).
Exemple d'appel{"name": "execution.cancel", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.download_artifact≈ 174 tokens
Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path.
Paramètres, retour & exemple (2)
Paramètresexecution_id· string · requis
Run that produced the artifact.artifact_name· string · requis
File name from execution.artifacts (e.g. "nimbus_lda.pkl").
Exemple d'appel{"name": "execution.download_artifact", "arguments": {"execution_id": "texte", "artifact_name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.get≈ 134 tokens
Execution status summary (status: running/completed/failed/cancelled).
Paramètres, retour & exemple (1)
Paramètresexecution_id· string · requis
The run to check (from execution.run/execution.list).
Exemple d'appel{"name": "execution.get", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.list≈ 169 tokens
Recent executions. Optional status filter (running/completed/failed/cancelled).
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnel
Maximum number of runs to return (default 20).status· ? · optionnel
Filter by run status: running/completed/failed/cancelled.
Exemple d'appel{"name": "execution.list", "arguments": {"limit": 1, "status": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.results≈ 183 tokens
Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR, confusion matrix, per-class); full=True returns the complete result object.
Paramètres, retour & exemple (2)
Paramètresfull· boolean · optionnel
Return the backend's complete result object (all fields).execution_id· string · requis
The completed run to fetch metrics for.
Exemple d'appel{"name": "execution.results", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - execution.run≈ 397 tokens
Start a pipeline run (NON-BLOCKING). Returns executionId — poll with execution.get() until status is completed/failed, then execution.results(). If an identical graph is already running for you, the run still starts but the response carries a ``warning`` + ``duplicateOf`` ids (cancel one with execution.cancel to avoid paying twice).
Paramètres, retour & exemple (5)
Paramètresname· ? · optionnel
Display name for the run (shown in the Runs list).layout· ? · optionnel
Optional canvas positions {nodes: {id: {x, y}}}; a deterministic grid is synthesized when omitted.subject· ? · optionnel
Optional dataset subject code (e.g. "S01") recorded with the run.description· ? · optionnel
Optional longer description of the experiment.train_graph· object · requis
Pipeline graph {nodes: [{id, type, config}], connections: [{from, to}]} as built by catalog.template/pipeline.validate.
Exemple d'appel{"name": "execution.run", "arguments": {"train_graph": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - experiment.get≈ 376 tokens
Experiment snapshot: status (running/completed/failed), per-run rows ({name, executionId, status, error?, metrics?, evaluationKind?}) and, once finished, aggregates over completed runs only: per-metric {mean, std, best, n}, plus ``pooledExecutionIds`` / ``pooledRunNames`` / ``kindBreakdown`` (per-subject vs LOSO etc. — each row has kind, n, mean, std, executionIds, runNames; #470). Pooled headline means are unchanged; kindBreakdown labels what was pooled. std is population; None below 2 values. kindBreakdown is always present when aggregates exist (including single-kind experiments). PORTABILITY: experiment records are stored on the Nimbus server under your account, so any entry point (local stdio, hosted gateway, another machine) signed in with the same account/token can read them; the serving process and the local ~/.nimbus/experiments store remain as fast-path caches. Experiments run before server-side storage landed exist only in the origin machine's local store and read as unknown elsewhere (#518).
Paramètres, retour & exemple (1)
Paramètresexperiment_id· string · requis
The experiment to inspect (from experiment.run).
Exemple d'appel{"name": "experiment.get", "arguments": {"experiment_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - experiment.run≈ 369 tokens
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. PORTABILITY: the experiment record is written through to the Nimbus server under your account (at start and at completion), so experiment.get works from ANY entry point — local stdio, hosted gateway, another machine — signed in with the same account/token. If the server is unreachable when the experiment starts it still runs and polls locally, but other entry points cannot read it until a write-through succeeds (#518).
Paramètres, retour & exemple (2)
Paramètresruns· array · requis
1-25 entries, each {name: str, train_graph: {nodes, connections}} (same graph shape as execution.run's train_graph).max_concurrent· integer · optionnel
Parallel submissions cap, clamped to 1-2 (default 2).
Exemple d'appel{"name": "experiment.run", "arguments": {"runs": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - foundation.compare≈ 532 tokens
Run every available pretrained backbone on YOUR data and see which wins — a ranked bar chart with CI whiskers, params, and wall time per backbone. Backbones that can't process your data (window size, channel count) are noted, not silently skipped. Each backbone embeds your trials frozen (the exact foundation_features preprocessing), a LDA is cross-validated on the embeddings. Returns a PNG image PLUS a JSON text block (and structuredContent.meta.results) with per-backbone accuracy, CI, embed dim, params, and time — pick the foundation_features backbone by measurement, not vibes.
Paramètres, retour & exemple (5)
Paramètresmode· string · optionnel
Pack split to load: training | evaluation | all (source=dataset).path· ? · optionnel
Upload path (source=upload) or absolute local path (source=local).source· string · requis
"dataset" (MOABB pack), "upload" (path from data.upload), or "local" (absolute path, local backend only).dataset· ? · optionnel
MOABB dataset id, e.g. "BNCI2014_001" (source=dataset).subject· ? · optionnel
Subject id, e.g. "S01" (source=dataset).
Exemple d'appel{"name": "foundation.compare", "arguments": {"source": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "meta": {}, "title": "texte", "mimeType": "texte", "savedPath": "texte", "sizeBytes": 1}} - leaderboard.mine≈ 100 tokens
List your leaderboard submissions (newest first), all datasets.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "leaderboard.mine", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - leaderboard.status≈ 172 tokens
Fetch one of your leaderboard submissions (owner-only). Returns status (queued | scoring | done | failed), metrics when done (meanAccuracyPct + CI, same shape as leaderboard rows), or the error that failed it.
Paramètres, retour & exemple (1)
Paramètressubmission_id· string · requis
The submissionId returned by leaderboard.submit.
Exemple d'appel{"name": "leaderboard.status", "arguments": {"submission_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - leaderboard.submit≈ 940 tokens
Submit a BYO python_model to a leaderboard track for server-side scoring. Nimbus scores it server-side under the track's fixed protocol — you submit code, never results. Poll ``leaderboard.status`` with the returned ``submissionId``; scoring takes minutes (classical) to tens of minutes (deep). Requirements must be plain PyPI names/specs (max 20, no URLs). Identical code resubmission is idempotent per track (``deduplicated: true``). Verification contract (tier model X10): ``verification="verified"`` (default) is the server-side-scored submission above — on the hosted backend it is Pro-only; free accounts get a structured tier response. ``verification="unverified_local"`` names the designed Account-Free lane for locally-computed results; the backend has no unverified submission kind yet (see the response it returns — nothing is stored, and no row is faked). Anonymous callers get a structured login prompt: a submission needs an identity. Local (desktop/dev) backends keep their existing server-side quota behaviour.
Paramètres, retour & exemple (11)
Paramètrescode· ? · optionnel
Python source defining a class with fit(X, y, info) and predict(X) (<=256KB; validate first with python.validate). Required unless backbone_repo is set.name· string · requis
Display name on the board (<=100 chars).track· string · optionnel
"cross_subject" (default — full-data leave-one-subject-out, seed 42) or "pretrained_few_trial" (efficiency track: LOSO with a protocol-fixed 100-trials-per-subject cap; code that imports torch must declare its trained parameter count as a class attribute — PARAMS_TRAINED = <int> — which becomes the row's paramsTrained and is cross-checked when computable).class_name· ? · optionnel
Contract class to instantiate; omit to auto-detect.dataset_id· string · requis
A dataset id from catalog.leaderboard ``submittableDatasets`` (e.g. "BNCI2014_001"). A dataset can appear under crossSubject and still be closed for submission (BNCI2014_008 is scored there and is not in the open set).requirements· ? · optionnel
Optional PyPI requirements (e.g. ["sklearn>=1.4"]).verification· string · optionnel
"verified" (default; server-side scored, Pro on the hosted backend) or "unverified_local" (Account-Free locally-computed lane; see the tool description for its current backend status).backbone_kind· ? · optionnel
Checkpoint family for the BYO backbone lane — one of the zoo's supported kinds (e.g. "cbramod", "labram").backbone_repo· ? · optionnel
HF 'org/name' repo id for the BYO backbone lane.backbone_license· ? · optionnel
License declared for the backbone checkpoint.backbone_revision· ? · optionnel
Full 40-char commit SHA pinning the backbone.
Exemple d'appel{"name": "leaderboard.submit", "arguments": {"name": "texte", "dataset_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - pipeline.export≈ 177 tokens
Export the pipeline as a standalone runnable Python bundle (zip saved locally).
Paramètres, retour & exemple (2)
Paramètresname· ? · optionnel
Optional name recorded inside the bundle.train_graph· object · requis
Pipeline graph {nodes, connections} to export.
Exemple d'appel{"name": "pipeline.export", "arguments": {"train_graph": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - pipeline.validate≈ 174 tokens
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().
Paramètres, retour & exemple (1)
Paramètrestrain_graph· object · requis
The graph to validate ({nodes, connections}).
Exemple d'appel{"name": "pipeline.validate", "arguments": {"train_graph": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - pipeline.validate_node≈ 276 tokens
Validate one node's config (schema + semantic checks). Catches the same value errors as pipeline.validate for a single node (inverted bandpass, CSP components vs channel count when dataset is set).
Paramètres, retour & exemple (3)
Paramètresconfig· object · requis
The node's config object to check.dataset· ? · optionnel
Optional MOABB pack id (e.g. "BNCI2014_001") so CSP/Nyquist checks can use channel count and sampling rate. Omitted → those context checks are skipped; inverted-band checks still run.node_type· string · requis
Node type id from catalog.nodes (e.g. "csp", "bandpass_filter").
Exemple d'appel{"name": "pipeline.validate_node", "arguments": {"config": {}, "node_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - plots.confusion≈ 372 tokens
Confusion-matrix figure for one execution: heatmap with trial counts + per-class accuracy bars, rendered as a PNG the assistant can see. Use it right after execution.results to eyeball WHICH classes are confused, not just the accuracy number.
Paramètres, retour & exemple (3)
Paramètressave· boolean · optionnel
Also write the PNG to NIMBUS_EXPORT_DIR/plots/ and return its path.matrix· string · optionnel
"eval" (held-out, default) or "train" (fit-set / cross-validation). CV and evaluation-plan runs often have no eval matrix — use "train".execution_id· string · requis
Run to plot (from execution.run / execution.results).
Exemple d'appel{"name": "plots.confusion", "arguments": {"execution_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "meta": {}, "title": "texte", "mimeType": "texte", "savedPath": "texte", "sizeBytes": 1}} - plots.dataset≈ 587 tokens
Figure over an EEG data source — the visual companion to data.inspect_dataset. kind=psd (Welch, channel mean bold), kind=bandpower (channel × band dB heatmap), kind=topomap (band-power scalp map), kind=spectrogram (time-frequency for one channel). Sources are the same ones inspect uses: MOABB packs, uploads, local files.
Paramètres, retour & exemple (9)
Paramètresband· string · optionnel
Band for kind=topomap: delta|theta|alpha|beta|gamma (default alpha).kind· string · requis
Figure type: psd | topomap | bandpower | spectrogram.mode· string · optionnel
Pack split to load: training | evaluation | all (source=dataset).path· ? · optionnel
Upload path (source=upload) or absolute local path (source=local).save· boolean · optionnel
Also write the PNG to NIMBUS_EXPORT_DIR/plots/ and return its path.source· string · requis
"dataset" (MOABB pack), "upload" (path from data.upload), or "local" (absolute path, local backend only).dataset· ? · optionnel
MOABB dataset id, e.g. "BNCI2014_001" (source=dataset).subject· ? · optionnel
Subject id, e.g. "S01" (source=dataset).channel_idx· integer · optionnel
0-based channel for kind=spectrogram (default 0).
Exemple d'appel{"name": "plots.dataset", "arguments": {"kind": "texte", "source": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "meta": {}, "title": "texte", "mimeType": "texte", "savedPath": "texte", "sizeBytes": 1}} - plots.erp≈ 503 tokens
ERP butterfly figure from epoched data: one subplot per class, all channel means (thin) + across-channel mean (bold), time-locked to the trial event. Shows whether class-conditioned evoked structure exists BEFORE training anything.
Paramètres, retour & exemple (7)
Paramètresmode· string · optionnel
Pack split to load: training | evaluation | all (source=dataset).path· ? · optionnel
Upload path (source=upload) or absolute local path (source=local).save· boolean · optionnel
Also write the PNG to NIMBUS_EXPORT_DIR/plots/ and return its path.source· string · requis
"dataset" (MOABB pack), "upload" (path from data.upload), or "local" (absolute path, local backend only).dataset· ? · optionnel
MOABB dataset id, e.g. "BNCI2014_001" (source=dataset).subject· ? · optionnel
Subject id, e.g. "S01" (source=dataset).max_channels· integer · optionnel
Channels drawn per class subplot (default 16, max 64).
Exemple d'appel{"name": "plots.erp", "arguments": {"source": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "meta": {}, "title": "texte", "mimeType": "texte", "savedPath": "texte", "sizeBytes": 1}} - plots.leaderboard≈ 432 tokens
Leaderboard bar chart for one dataset: accuracy with 95% CI whiskers, best first; BYO python_model submissions highlighted in a distinct color. The visual companion to catalog.leaderboard. On the pretrained_few_trial track the figure also includes the classical LOSO baseline as a muted side panel for comparison.
Paramètres, retour & exemple (3)
Paramètressave· boolean · optionnel
Also write the PNG to NIMBUS_EXPORT_DIR/plots/ and return its path.track· string · optionnel
"within_session" (curated 5-fold), "crossSubject" (LOSO, curated + BYO submissions), or "pretrained_few_trial" (the efficiency track: LOSO at the protocol's fixed per-subject trial budget — the figure also includes the classical LOSO baseline as a muted side panel for comparison).dataset_id· string · requis
Dataset to chart, e.g. "BNCI2014_001" (see catalog.leaderboard).
Exemple d'appel{"name": "plots.leaderboard", "arguments": {"dataset_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "meta": {}, "title": "texte", "mimeType": "texte", "savedPath": "texte", "sizeBytes": 1}} - project.create≈ 169 tokens
Create a project (container for one pipeline document). Returns projectId.
Paramètres, retour & exemple (2)
Paramètresname· string · requis
Project display name (e.g. "MI CSP-LDA sweep").description· ? · optionnel
Optional longer description shown in the studio.
Exemple d'appel{"name": "project.create", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - project.delete≈ 206 tokens
Delete a project (and its saved pipeline document) from the studio workspace. Requires confirm=True: this removes the project from the user's project list. Executions already run from it are not affected. Find ids with project.list.
Paramètres, retour & exemple (2)
Paramètresconfirm· boolean · optionnel
MUST be true to delete — the explicit user go-ahead.project_id· string · requis
Project to delete (from project.create/project.list).
Exemple d'appel{"name": "project.delete", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - project.list≈ 99 tokens
List projects owned by the current principal (agent work included).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "project.list", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - project.load≈ 131 tokens
Load a project's saved pipeline (train graph + meta) for editing/re-running.
Paramètres, retour & exemple (1)
Paramètresproject_id· string · requis
Project whose pipeline document to load.
Exemple d'appel{"name": "project.load", "arguments": {"project_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - project.save≈ 366 tokens
Save a pipeline graph into a project (visible on the studio canvas). Always pass expected_revision from the last project.load (or a prior save/create response). When it does not match the current server revision, the save fails with a conflict — it does NOT silently overwrite concurrent edits. Omitting it is rejected so a stale single-writer convenience path cannot wipe another client's work.
Paramètres, retour & exemple (5)
Paramètresname· ? · optionnel
Optional pipeline name stored on the document.subject· ? · optionnel
Optional dataset subject code (e.g. "S01") for this pipeline.project_id· string · requis
Target project (from project.create/project.list).train_graph· object · requis
Pipeline graph {nodes, connections} to persist.expected_revision· integer · requis
Optimistic-concurrency base from project.load / a prior save. Required.
Exemple d'appel{"name": "project.save", "arguments": {"project_id": "texte", "train_graph": {}, "expected_revision": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.export_stats≈ 236 tokens
Paired pre/post analysis for one assignment's recorded sessions: per-block aggregates (descriptive + CSV), paired t / Wilcoxon / dz (per-statistic minimums: paired t and Cohen's dz need ≥ 3 completed sessions, Wilcoxon needs ≥ 5), specificity notes, the adaptive-threshold trajectory, and a pre/post figure (base64 PNG — render or save it to look at the effect). An assignment with no recordings yet returns the empty payload with a note, never an error.
Paramètres, retour & exemple (1)
Paramètresassignment_id· string · requis
The assignment to analyze (from start_assignment).
Exemple d'appel{"name": "protocol.export_stats", "arguments": {"assignment_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.list≈ 94 tokens
Every saved protocol id at its latest version.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "protocol.list", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.pause≈ 158 tokens
Pause a running protocol session (blocks freeze; the session and device stay alive — resume with protocol.resume). Simulated and playback sessions only while paused: no data is recorded.
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
The deploy session to pause.
Exemple d'appel{"name": "protocol.pause", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.resume≈ 222 tokens
Resume a paused protocol session (restarts the server-driven device loop). Live-hardware resume requires a Pro plan; simulated sessions are free. Pass the session's channel count (start_assignment reports it).
Paramètres, retour & exemple (3)
Paramètreschunk_size· integer · optionnel
Samples per streamed chunk (default 125).n_channels· integer · optionnel
Session channel count (the built-in template opens 4).session_id· string · requis
The deploy session to resume.
Exemple d'appel{"name": "protocol.resume", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.save≈ 202 tokens
Validate and persist the NEXT VERSION of a protocol document (confirm-gated: each call appends a version row; accidental calls clutter the version history). Edits create a new version — the assignment pins the version it runs.
Paramètres, retour & exemple (2)
Paramètresspec· object · requis
Wire-format protocol document (validate first to iterate).confirm· boolean · optionnel
MUST be true to write.
Exemple d'appel{"name": "protocol.save", "arguments": {"spec": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.session_status≈ 199 tokens
Live snapshot of a protocol deploy session: the scheduler block / session progress + threshold state (under ``protocol``) beside the telemetry window (recent indicators, quality, stats).
Paramètres, retour & exemple (2)
Paramètreswindow· integer · optionnel
How many recent predictions to include (1-200, default 50).session_id· string · requis
The deploy session to inspect (from start_assignment).
Exemple d'appel{"name": "protocol.session_status", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.start_assignment≈ 636 tokens
Enroll a subject and prepare their neurofeedback deploy session (confirm-gated — a session runs on a human). Creates the assignment (yoked sham arms REQUIRE yoked_donor_upload_id: a recorded simulated session's upload — mint one by running an active-arm session and data.upload-ing its recording), then persists the protocol graph as a deployable execution. Requires a Pro plan for LIVE hardware sessions; simulated-source sessions (the default template) are free. Graph source: execution_id reuses THAT run's stored graph (it must contain a protocol_session node; no device is pre-connected — the deploy session's data source stays yours). Without execution_id the built-in template graph is cloned — simulated source → bandpass → bandpower_indicator → protocol_session stamped with the protocol refs — and a simulated device is connected to the returned session id. The session starts when a client opens {statusUrl} (the deploy WS), sends init_deployment with modelExecutionId={executionId}, then start; the Studio app shows the feedback panel automatically. Poll protocol.session_status; stop with protocol.stop (the recording's block annotations + assignment progression are written on stop).
Paramètres, retour & exemple (7)
Paramètresarm· string · requis
active | sham.confirm· boolean · optionnel
MUST be true — explicit go-ahead for a session on a human.protocol_id· string · requis
Saved protocol id (protocol.save).execution_id· ? · optionnel
Optional completed execution whose stored graph carries a protocol_session node; default clones the template.subject_label· string · requis
Subject identifier (e.g. "S01").protocol_version· integer · requis
Immutable version the assignment pins.yoked_donor_upload_id· ? · optionnel
Donor recording upload (required when the arm's blocks resolve to yoked — the backend validates coverage).
Exemple d'appel{"name": "protocol.start_assignment", "arguments": {"arm": "texte", "protocol_id": "texte", "subject_label": "texte", "protocol_version": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.stop≈ 175 tokens
Stop a protocol session (always safe to call): stops streaming, saves the block-annotated recording, advances the assignment when the scheduler reached its natural end, and disconnects the device (best-effort — a failed disconnect is reported, never raised).
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
The deploy session to stop.
Exemple d'appel{"name": "protocol.stop", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - protocol.validate≈ 221 tokens
Validate a neurofeedback protocol document WITHOUT saving it. Returns {valid: true, spec} on success, or {valid: false, errors: [...]} with the per-violation list (loc/msg) when the document is invalid — the verdict is data, never an exception.
Paramètres, retour & exemple (1)
Paramètresspec· object · requis
Wire-format protocol document (camelCase): id, name, indicator {name, transform}, armDefaults, blocks [{id, kind: assessment|training, durationSec, feedback?}], threshold, sessions, breakCriteria.
Exemple d'appel{"name": "protocol.validate", "arguments": {"spec": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - python.validate≈ 260 tokens
Statically check a python_model script (BYO model class) without running it. Compiles the source and verifies the contract — a class with fit(X, y, info) and predict(X); optional predict_proba(X) unlocks confidence panels. Never executes the code, so it is safe against the hosted backend. Use it before execution.run to catch syntax errors, missing methods, or the wrong class name cheaply.
Paramètres, retour & exemple (2)
Paramètrescode· string · requis
Python source of the model class (<=256KB UTF-8).class_name· ? · optionnel
Contract class to instantiate; omit to auto-detect the first class defining fit+predict.
Exemple d'appel{"name": "python.validate", "arguments": {"code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stats.grouped≈ 488 tokens
Cluster-aware group statistics across executions. REQUIREMENT (read first): each execution must have been run with an evaluation plan that STORED per-SUBJECT accuracies for at least 3 subjects — e.g. leave-one-subject-out (LOSO) or grouped CV over >= 3 subjects. Session groups within one subject (multi-session single-subject runs) are refused with ``nimbus.stats.non_subject_groups`` — those are not independent subjects. A plain single-subject CV run with no subject/session grouping stores no group stats and fails with ``nimbus.stats.insufficient_groups``. What it does: pools the per-subject accuracies each run's evaluation plan stored, then reports the between-group summary — mean accuracy with a t-interval and a one-sample t-test vs chance. Responses label ``groupKind``, real ``groupKeys`` (subject ids like S01 when stamped or recoverable), ``perGroup`` (key + accuracy pairs), ``overall.pooledExecutionIds``, and ``kindBreakdown`` / ``overall.kindBreakdown`` (per_subject vs loso etc. with n + mean — #470; between-group pooled mean is unchanged).
Paramètres, retour & exemple (2)
Paramètreschance· ? · optionnel
Chance level in [0, 1]; default 1/nClasses per execution.execution_ids· array · requis
1–25 executions (from execution.run) to pool. Runs without subject group stats are reported with nulls but do not fail the request — unless NONE qualifies (``nimbus.stats.insufficient_groups``) or only session groups are present (``nimbus.stats.non_subject_groups``).
Exemple d'appel{"name": "stats.grouped", "arguments": {"execution_ids": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stream.start≈ 675 tokens
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.
Paramètres, retour & exemple (14)
Paramètresport· ? · optionnel
Serial/COM port for wired devices.confirm· boolean · optionnel
MUST be true to start — the explicit user go-ahead for a live session on their head; anything else is refused with zero requests.ip_port· ? · optionnel
Port for network devices.source_id· ? · optionnel
LSL source id.chunk_size· integer · optionnel
Samples per streamed chunk (default 125).ip_address· ? · optionnel
Device IP for network/wifi devices.n_channels· integer · optionnel
Channel count to open (default 8).session_id· ? · optionnel
Optional existing session to resume/reuse.device_type· string · requis
Device id from device.list (e.g. "brainbit").mac_address· ? · optionnel
Bluetooth MAC (BT devices).stream_name· ? · optionnel
LSL stream name (LSL devices).serial_number· ? · optionnel
Device serial (some BLE stacks).connection_type· ? · optionnel
Device-specific selector (e.g. serial vs wifi).idle_timeout_sec· integer · optionnel
Watchdog: stop+disconnect after this many seconds without a status poll (default 900; 0 disables).
Exemple d'appel{"name": "stream.start", "arguments": {"device_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stream.status≈ 158 tokens
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).
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
The streaming session to inspect.
Exemple d'appel{"name": "stream.status", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stream.stop≈ 151 tokens
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.
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
The streaming session to stop.
Exemple d'appel{"name": "stream.stop", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stream.telemetry≈ 334 tokens
Live snapshot of a streaming session: latest prediction + recent window, signal quality (meanChannelQuality, snrDb, artifactProbability), indicators, running stats. Poll this while a session runs. Works with OR without a deployed model: modelless hardware streams (no classifier) report live signal quality + focus/relaxation band-power indicators with latestPrediction null; deployed sessions additionally carry predictions and confidence stats. 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.
Paramètres, retour & exemple (2)
Paramètreswindow· integer · optionnel
How many recent predictions/chunks to include (default 50).session_id· string · requis
The streaming session to read telemetry for.
Exemple d'appel{"name": "stream.telemetry", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».