Skip to main content
Glama

start_stream

Begin EEG acquisition by opening a board and starting background buffering into a ring buffer, so subsequent read_window calls retrieve buffered samples until stop_stream ends the session.

Instructions

Open a board and begin buffering EEG in the background.

Data flows into a ring buffer from a background thread as soon as this returns, so a subsequent read_window will have samples waiting. The session keeps running until stop_stream is called.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
boardNoBoard name ('synthetic', 'cyton', 'muse_2', ...) or numeric id. Call list_boards to see the options.synthetic
paramsNoBrainFlow connection settings, e.g. {"serial_port": "COM3"} for a Cyton, {"mac_address": "..."} for a Muse, or {"file": "rec.csv", "master_board": "cyton"} for PLAYBACK_FILE_BOARD.
channelsNoOptional subset of BrainFlow EEG row indices. Defaults to all.
session_idYesName you will pass to every later call for this stream.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior3/5

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

No annotations are provided, so the description carries the behavioral transparency burden. It does disclose non-obvious behaviors: data flows into a ring buffer from a background thread immediately, the session persists asynchronously, and read_window will have samples waiting. However, it doesn't disclose error conditions (e.g., invalid board name, connection failure), resource implications, or whether this mutates any persistent state. The key asynchronous behaviors are covered, but the failure/cleanup story is incomplete.

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

Conciseness5/5

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

The description is compact and front-loaded. The opening line states the core action, and immediately telegraphs the async/pre-buffering behavior. Every sentence earns its place: the ring buffer behavior, the read_window implication, and the stop_stream lifecycle note all add value without repetition. There is zero wasted verbiage.

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

Completeness5/5

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

For a tool with 100% schema parameter coverage and an output schema present, the description covers the essential behavioral context well. It explains the background-thread buffering semantics, the prerequisite relationship with read_window, and the termination contract with stop_stream. Given the tool's moderate complexity (4 params, all documented) and the presence of an output schema, this is complete enough for an agent to use it correctly.

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 description coverage is 100%, so parameters are well-documented in the schema itself. The description adds lifecycle context around session_id (referenced as a persistent name for later calls) and implies the board/params relationship. The session_id semantics ('Name you will pass to every later call') is enriched by the description's context about the session keeping running. This meets the baseline 3 and adds a bit more value by explaining the session_id's cross-call role.

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

Purpose5/5

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

The description clearly states what the tool does: opens a board and begins buffering EEG in the background. It uses specific verbs (open, begin buffering) with a specific resource (board/EEG). It distinguishes itself from siblings like start_replay (which is for playback) and stop_stream (which is the inverse), and clarifies it's distinct from start_recording.

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

Usage Guidelines5/5

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

The description explicitly explains when this tool is needed (before read_window calls) and what happens upon invocation (samples will be waiting), plus the lifecycle is made clear ('session keeps running until stop_stream is called'). It also references list_boards for board options via the schema, providing a clear alternative/discovery path.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AImplifier/eeg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server