Skip to main content
Glama

Plots.Dataset

plots.dataset
Idempotent

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.

Input Schema

NameRequiredDescriptionDefault
bandNoBand for kind=topomap: delta|theta|alpha|beta|gamma (default alpha).alpha
kindYesFigure type: psd | topomap | bandpower | spectrogram.
modeNoPack split to load: training | evaluation | all (source=dataset).all
pathNoUpload path (source=upload) or absolute local path (source=local).
saveNoAlso write the PNG to NIMBUS_EXPORT_DIR/plots/ and return its path.
sourceYes"dataset" (MOABB pack), "upload" (path from data.upload), or "local" (absolute path, local backend only).
datasetNoMOABB dataset id, e.g. "BNCI2014_001" (source=dataset).
subjectNoSubject id, e.g. "S01" (source=dataset).
channel_idxNo0-based channel for kind=spectrogram (default 0).

Output Schema

NameRequiredDescriptionDefault
okYes
metaNoFigure sidecar. foundation.compare includes results/best/skipped (also as a JSON text content block).
titleNo
mimeTypeNo
savedPathNoSet when save=true.
sizeBytesNoSet when save=true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / meta / description
      Added value: +"Figure sidecar. foundation.compare includes results/best/skipped (also as a JSON text content block)."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "meta": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "mimeType": {
      +      "type": "string"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "savedPath": {
      +      "description": "Set when save=true.",
      +      "type": "string"
      +    },
      +    "sizeBytes": {
      +      "description": "Set when save=true.",
      +      "type": "integer"
      +    },
      +    "title": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  3. Added

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is largely covered. The description usefully adds rendering behavior (Welch PSD with channel mean bold, dB heatmap, time-frequency for one channel), but it never mentions that the optional save flag writes a PNG to disk, which is the one side effect behind readOnlyHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with the core purpose before the kind enumeration. The parentheticals earn their place by disambiguating kinds, though the prose is compressed enough that the kind-to-source mapping takes a moment to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, an output schema, and full schema coverage, the description needs to carry only the framing: what kinds exist and which sources are valid. It does that adequately; only the save side effect and the distinction from other plots.* tools are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema's terse "Figure type: psd | topomap | bandpower | spectrogram" by explaining what each kind actually renders. It also groups the valid sources (MOABB packs, uploads, local files), adding meaning to the source parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource (render a figure over an EEG data source) and enumerates the four figure kinds with a parenthetical description of each, so an agent knows exactly what it produces. It identifies its non-plot sibling (data.inspect_dataset) as its companion, though it does not distinguish itself from the other plots.* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"The visual companion to data.inspect_dataset" and "sources are the same ones inspect uses" imply when to reach for it versus inspection, but there is no explicit when-to-use/when-not, and nothing routes the agent between plots.dataset, plots.erp, plots.confusion, and plots.leaderboard. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.