{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_57p74xxppcrp","handle":"nimbus-mcp","url":"https://wellknown.network/agents/nimbus-mcp","links":{"self":"https://wellknown.network/agents/nimbus-mcp/record.json","html":"https://wellknown.network/agents/nimbus-mcp","markdown":"https://wellknown.network/agents/nimbus-mcp/record.md","api":"https://wellknown.network/api/v1/agents/nimbus-mcp","status":"https://wellknown.network/api/v1/agents/nimbus-mcp/status","claim":"https://wellknown.network/agents/nimbus-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/nimbus-mcp/claim.json","badge":"https://wellknown.network/agents/nimbus-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/nimbus-mcp/history","tools":"https://wellknown.network/api/v1/agents/nimbus-mcp/tools"},"ard":{"identifier":"urn:air:nimbus-mcp.fly.dev:server:nimbus-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Nimbus BCI","summary":"AI agents build, train, and analyze BCI/EEG pipelines: data, models, experiments, live sessions.","description":"AI agents build, train, and analyze BCI/EEG pipelines: data, models, experiments, live sessions.","publisher":{"name":"nimbusbci","url":null},"homepage":"https://github.com/nimbusbci/nimbus-mcp","repository":"https://github.com/nimbusbci/nimbus-mcp","version":"0.8.1","license":"NIMBUS MCP SERVER — SOFTWARE LICENSE AGREEMENT\n        \n       …","protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://nimbus-mcp.fly.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"pypi:nimbus-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-05T17:08:17.029351Z","publishedAt":"2026-10-05T17:08:17.029351Z","registryName":"io.github.nimbusbci/nimbus-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","license":"pypi","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"pypi","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.938,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.938,"provenance":"derived"},{"slug":"ai.evaluation","name":"Evaluation & Benchmarks","confidence":0.54,"provenance":"derived"},{"slug":"documents.contracts","name":"Contracts & Legal","confidence":0.525,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":0.525,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.51,"provenance":"derived"}],"categories":["ai","commerce","communication","content","dev","documents","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-09T20:31:21.918Z","lastProbedAt":"2026-10-09T20:31:21.918Z","statusComputedAt":"2026-10-09T20:32:10.509Z","reliability30d":{"probes":19,"successRate":1,"p50Ms":158,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":19,"ok":19,"authBoundaryOk":0,"serviceOk":19,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T20:31:21.918Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":133,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."},{"name":"python.validate","description":"Statically check a python_model script (BYO model class) without running it.\n\nCompiles the source and verifies the contract — a class with\nfit(X, y, info) and p"}],"toolCount":40,"toolsHash":"2d7a733a3741e9da8fea7ea0b732b60c0d3c3c2a2cf46589b96cae3053d39c26","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.10.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T14:30:14.990Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":191,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."},{"name":"python.validate","description":"Statically check a python_model script (BYO model class) without running it.\n\nCompiles the source and verifies the contract — a class with\nfit(X, y, info) and p"}],"toolCount":40,"toolsHash":"2d7a733a3741e9da8fea7ea0b732b60c0d3c3c2a2cf46589b96cae3053d39c26","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.10.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:26:26.110Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":3485,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."},{"name":"python.validate","description":"Statically check a python_model script (BYO model class) without running it.\n\nCompiles the source and verifies the contract — a class with\nfit(X, y, info) and p"}],"toolCount":40,"toolsHash":"2d7a733a3741e9da8fea7ea0b732b60c0d3c3c2a2cf46589b96cae3053d39c26","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.10.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:25:33.669Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":190,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."},{"name":"python.validate","description":"Statically check a python_model script (BYO model class) without running it.\n\nCompiles the source and verifies the contract — a class with\nfit(X, y, info) and p"}],"toolCount":40,"toolsHash":"2d7a733a3741e9da8fea7ea0b732b60c0d3c3c2a2cf46589b96cae3053d39c26","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.10.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:24:00.813Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":114,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."}],"toolCount":39,"toolsHash":"aecbf78f9f20c652674c8582769da1f03932d60e8862b9aeb2603791de0f983d","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.9.2","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:21:54.121Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":212,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."}],"toolCount":39,"toolsHash":"aecbf78f9f20c652674c8582769da1f03932d60e8862b9aeb2603791de0f983d","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.9.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T06:23:38.166Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":120,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."}],"toolCount":39,"toolsHash":"58d10a566bae9269c7894ff8136255e035fe44038c534410c7de8a3575e29452","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.9.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:24:45.434Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":109,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."}],"toolCount":37,"toolsHash":"efee905d1d2e71f364fe037066a77592afd28a2c48fa4d886bedc410046a1362","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.8.3","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:28:24.516Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":111,"error":null,"detail":{"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."}],"toolCount":37,"toolsHash":"efee905d1d2e71f364fe037066a77592afd28a2c48fa4d886bedc410046a1362","serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"0.8.3","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T10:49:19.083Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":102,"error":null,"detail":{"serverName":"nimbus","capabilities":["logging","prompts","resources","tools"],"serverVersion":"4.0.11","protocolVersion":"2025-06-18"}}],"tools":[{"name":"account.whoami","description":"Who you are authenticated as: account email, plan (isPro / pioneer),\nthis month's free-run quota, and — with a hosted token — the token name\nand days until it e"},{"name":"catalog.nodes","description":"List Nimbus pipeline node types (data, preprocessing, features, models...).\n\nUse catalog.node_schema(node_type) for one node's full config schema and ports."},{"name":"catalog.node_schema","description":"Full config JSON schema + input/output ports for one node type."},{"name":"catalog.templates","description":"List built-in starter pipelines (MI/P300/SSVEP...).\ncatalog.template(id) returns the graph."},{"name":"catalog.template","description":"Full template incl. the 'train' execGraph needed by execution.run/pipeline.validate."},{"name":"catalog.datasets","description":"Curated public EEG datasets (MOABB packs) available to pipelines."},{"name":"catalog.leaderboard","description":"Public benchmark leaderboard: pipeline rankings per dataset.\n\nRankings are per-dataset under the canonical ``within_session`` protocol\n(see ``protocol``). Withi"},{"name":"pipeline.validate","description":"Validate a pipeline graph before running.\nExecGraphSnapshot: {nodes: [{id, type, config}], connections: [{from, to}]}.\nBuild it from catalog.template(id).train "},{"name":"pipeline.validate_node","description":"Validate one node's config object against its schema (catalog.node_schema)."},{"name":"execution.run","description":"Start a pipeline run (NON-BLOCKING). Returns executionId — poll with\nexecution.get() until status is completed/failed, then execution.results()."},{"name":"execution.cancel","description":"Cancel a running execution."},{"name":"execution.get","description":"Execution status summary (status: running/completed/failed/cancelled)."},{"name":"execution.list","description":"Recent executions. Optional status filter (running/completed/failed/cancelled)."},{"name":"execution.results","description":"Metrics for a completed run. Trimmed by default (accuracy, kappa, ITR,\nconfusion matrix, per-class); full=True returns the complete result object."},{"name":"calibration.start","description":"Start a guided subject calibration session (NON-BLOCKING; confirm-gated —\nthe device goes on a human's head). The Nimbus Studio app shows the cues on\nits calibr"},{"name":"calibration.status","description":"Live snapshot of a calibration session (phase, current trial, progress,\npaused). Once complete, carries the recorded upload — call\ncalibration.train to turn it "},{"name":"calibration.pause","description":"Pause a running calibration between trials (cues hold; resume anytime)."},{"name":"calibration.resume","description":"Resume a paused calibration session."},{"name":"calibration.train","description":"Train the subject's own classifier from a COMPLETED calibration session\n(NON-BLOCKING). Fetches the recorded upload, wires it into a train\npipeline as a custom_"},{"name":"experiment.run","description":"Run 1-25 pipelines as ONE paced experiment (NON-BLOCKING). Returns an\nexperimentId immediately; a background thread submits at most 2 runs at\na time (min(max_co"},{"name":"experiment.get","description":"Experiment snapshot: status (running/completed/failed), per-run rows\n({name, executionId, status, error?, metrics?}) and, once finished,\naggregates {metric: {me"},{"name":"execution.artifacts","description":"Trained artifacts (models/filters, e.g. *.pkl) saved by an execution."},{"name":"execution.download_artifact","description":"Download one artifact file to NIMBUS_EXPORT_DIR/executions/<id>/ and return its path."},{"name":"pipeline.export","description":"Export the pipeline as a standalone runnable Python bundle (zip saved locally)."},{"name":"bids.export_dataset","description":"Export a Nimbus dataset as a BIDS-layout zip saved to NIMBUS_EXPORT_DIR/bids/.\n\nContinuous sources (EDF/BDF uploads, stream recordings) export as BIDS-raw\n(EDF "},{"name":"bids.export_execution","description":"Export an execution's results as a BIDS-derivative zip (metrics.json,\nper-subject participants.tsv, protocol.json, full pipeline_snapshot.json,\npredictions.tsv "},{"name":"device.list","description":"EEG devices supported by this backend (OpenBCI, Muse, BrainBit, LSL, PiEEG...)."},{"name":"device.test","description":"Test a device connection WITHOUT starting a stream (safe, no confirm needed)."},{"name":"stream.start","description":"Connect an EEG device and START a live streaming session on the user's head.\nRequires confirm=True; call device.test first. Track with stream.status().\nIdle wat"},{"name":"stream.status","description":"Live snapshot of a streaming session (running, deviceConnected).\nPolling this also feeds the idle watchdog: each call resets the\nsession's idle timer (see strea"},{"name":"stream.stop","description":"Stop a streaming session and disconnect the device (always safe to call).\nAlso removes the session from the idle watchdog so it cannot fire after\nan explicit st"},{"name":"stream.telemetry","description":"Live snapshot of a streaming session: latest prediction + recent window,\nsignal quality (meanChannelQuality, snrDb, artifactProbability), indicators,\nrunning st"},{"name":"data.upload","description":"Upload an EEG file (.edf/.bdf/.mat/.csv/.txt/.tsv/.h5/.hdf5, <=500MB) to the\nbackend and get the registered path for a custom_data node.\n\nsampling_rate (Hz, e.g"},{"name":"data.inspect_dataset","description":"Exploratory summary of a public EEG dataset (MOABB pack): channels,\nsampling rate, trial/class balance, per-channel µV stats, band powers\nand a PSD overview.\n\nL"},{"name":"data.inspect_file","description":"Exploratory summary of an EEG file (.edf/.bdf/.mat/.csv/.tsv/.txt/.h5):\nchannels, sampling rate, trial/class balance, per-channel µV stats,\nband powers and a PS"},{"name":"project.create","description":"Create a project (container for one pipeline document). Returns projectId."},{"name":"project.list","description":"List projects owned by the current principal (agent work included)."},{"name":"project.save","description":"Save a pipeline graph into a project (visible on the studio canvas).\nHandles revision conflicts automatically (one retry)."},{"name":"project.load","description":"Load a project's saved pipeline (train graph + meta) for editing/re-running."},{"name":"python.validate","description":"Statically check a python_model script (BYO model class) without running it.\n\nCompiles the source and verifies the contract — a class with\nfit(X, y, info) and p"}],"package":{"name":"nimbus-mcp","registry":"pypi","observedAt":"2026-10-09T20:33:20.596Z","publishedAt":"2026-10-05T17:05:52.244495Z","latestVersion":"0.8.1"},"toolSurface":{"id":"ts_u8vubwhbct4v","endpointId":"ep_fkzn7gshn33e","hash":"2d7a733a3741e9da8fea7ea0b732b60c0d3c3c2a2cf46589b96cae3053d39c26","toolCount":40,"serverName":"nimbus","serverVersion":"0.10.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-09T01:25:33.660Z","lastSeenAt":"2026-10-09T20:31:21.943Z","observations":4,"toolNames":["account.whoami","catalog.nodes","catalog.node_schema","catalog.templates","catalog.template","catalog.datasets","catalog.leaderboard","pipeline.validate","pipeline.validate_node","execution.run","execution.cancel","execution.get","execution.list","execution.results","calibration.start","calibration.status","calibration.pause","calibration.resume","calibration.train","experiment.run","experiment.get","execution.artifacts","execution.download_artifact","pipeline.export","bids.export_dataset","bids.export_execution","device.list","device.test","stream.start","stream.status","stream.stop","stream.telemetry","data.upload","data.inspect_dataset","data.inspect_file","project.create","project.list","project.save","project.load","python.validate"],"distinctSurfaces":7},"endpointFacts":[{"id":"ep_fkzn7gshn33e","url":"https://nimbus-mcp.fly.dev/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T14:30:15.008Z","auth":{"observedAt":"2026-10-09T14:30:15.204Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-09T14:30:15.216Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"*.fly.dev","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-08-21T11:49:33.000Z","validTo":"2026-11-19T11:49:32.000Z","daysToExpiry":40,"sanCount":1,"fingerprint256":"25:9A:3B:9C:DA:F4:BA:BB:BE:5E:B7:81:BE:23:8A:52:12:15:DF:90:AF:E8:F5:15:17:99:30:F2:A6:A8:59:B4"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.nimbusbci/nimbus-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.nimbusbci%2Fnimbus-mcp","firstSeenAt":"2026-10-05T00:18:53.330Z","fetchedAt":"2026-10-07T22:19:35.616Z","normalizedAt":"2026-10-07T22:19:35.616Z"},{"source":"pypi","key":"nimbus-mcp","url":"https://pypi.org/project/nimbus-mcp/","firstSeenAt":"2026-10-04T11:21:42.764Z","fetchedAt":"2026-10-07T12:23:38.925Z","normalizedAt":"2026-10-07T12:23:38.925Z"}]},"firstSeenAt":"2026-10-04T11:21:42.764Z","updatedAt":"2026-10-09T20:33:20.596Z"}