RFC: MCP Profile for Low-Bandwidth Intent Inputs
This RFC proposes a standardized Model Context Protocol (MCP) profile designed specifically for low-bandwidth, discrete intent inputs, such as those generated by silent speech interfaces (ssi), electromyography (sEMG) arrays, brain-computer interfaces (bci), and discrete mechanical switches.
1. Abstract & Motivation
As AI agents move closer to real-time integration with user operating systems and devices, there is an increasing demand for physical input modalities that bypass traditional keyboards and high-bandwidth voice interfaces. Subvocal speech recognition (AlterEgo style) classifies subtle muscle contractions into a limited set of noisy shorthand abbreviations (e.g., clk for Click, gt for GoTo, typ for Type).
This document establishes a Low-Bandwidth Intent Profile for the Model Context Protocol. Standardizing these inputs as MCP tools and resources allows LLM-powered developer environments (e.g., Claude Desktop, Cursor) to natively ingest, query, and orchestrate biosensor inputs without custom, client-specific device drivers.
2. Low-Bandwidth Intent Profile Handshake
During the initial MCP connection negotiation (initialize request/response), both the client and the server declare capabilities. An SSI/sEMG server announces support for the low-bandwidth-intent profile as part of its capabilities structure:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-03-26",
"capabilities": {
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
},
"experimental": {
"low-bandwidth-intent": {
"supportedInputs": ["abbreviations", "phonetic_tokens"],
"hardwareFrequencyHz": 250
}
}
},
"serverInfo": {
"name": "SubvocalMiddlewareMCPServer",
"version": "1.0.0"
}
}
}
3. Tool Specifications
To orchestrate real-time stream state and buffer execution, the server exposes the following tools to the client:
A. get_pipeline_status
Retrieves physical sensor status metrics, z-score normalization configurations, and the currently active classification model (e.g., 1D CNN, GRU, or Transformer).
- Parameters: None
- Success Output Schema:
{
"content": [
{
"type": "text",
"text": "Subvocal Pipeline Status:\n- Hardware Source: Connected (SyntheticSignalGenerator)\n- Active Classifier: cnn (Pre-trained)\n- Buffer Size: 0 tokens\n- Total Actions Dispatched: 1"
}
]
}
B. get_buffer
Allows the AI client to query the active, uncommitted phrase buffer of classified command tokens. * Parameters: None * Success Output Schema:
{
"content": [
{
"type": "text",
"text": "[\n {\n \"text\": \"clk\",\n \"confidence\": 0.98,\n \"timestamp\": 1780826170.82\n }\n]"
}
]
}
C. inject_mock_token
Mainly used for automated integration testing, simulation, and software-fallback inputs. It injects a discrete classified token into the buffer.
* Parameters:
- token (string, required): The gesture abbreviation (e.g., gt, clk, typ).
- confidence (number, optional): Classifier confidence between 0.0 and 1.0.
* Success Output: "Successfully injected token 'clk' with confidence 0.95"
D. process_phrase
Triggers immediate phrase-timeout decoding, bypassing the physical cooldown period. The server merges the token buffer, queries context sources, invokes the LLM intent reconstructor, and returns the resulting structured Action.
* Parameters: None
* Success Output Schema:
{
"content": [
{
"type": "text",
"text": "Reconstructed and executed action:\n{\n \"action_type\": \"click\",\n \"params\": {\n \"arguments\": [],\n \"resolved_text\": \"CLICK\",\n \"confidence\": 0.9\n },\n \"intent_id\": \"b83c50ad-44b4-4b55-be28-a53c89694eb3\",\n \"timestamp\": 1780826182.25\n}"
}
]
}
4. Resource Specifications
To provide the client model with contextual telemetry and historical records, the profile exposes intent histories and real-time buffers as standardized MCP resources:
| Resource URI | MIME Type | Description |
|---|---|---|
subvocal://intent/history |
application/json |
A read-only list of recently executed high-level commands, intents, and action execution statuses. |
subvocal://pipeline/buffer |
application/json |
The real-time raw token queue showing pending commands before consolidation. |
5. Client Execution Flow & Best Practices
AI clients (such as developer shells, file browsers, and operating system agents) should implement the following control loop when interfacing with a Low-Bandwidth Intent MCP server:
┌───────────────────────┐
│ Client Agent Loop │
└───────────┬───────────┘
│
Poll / Read Resource
"subvocal://intent/history"
│
▼
Is there a new Intent Action logged?
/ \
YES NO
/ \
▼ ▼
1. Parse parameters Sleep & Repeat
2. Execute OS Action
3. Feed result back to model
- Passive Telemetry: Rather than polling execution loops continuously, clients are encouraged to subscribe to the
subvocal://intent/historyresource to receive push notifications when new commands are dispatched. - Context Enrichment: The client agent should populate its local OS context metrics so that the middleware's LLM intent reconstructor has access to high-fidelity target windows (such as active browser tabs or clipboard text) when translating shorthand sequences like
gt. - Safety Confirmations: For high-risk actions (e.g., file deletions, network writes), the client executor must prompt the user for confirmation before acting upon reconstructed intents.