ruvnet/ruflo · error
-32600
-32600
Error message
Invalid JSON-RPC version
What it means
handleHttpRequest() parsed the body and found message.jsonrpc !== '2.0'. Malformed-request guard (JSON-RPC -32600): the client sent a payload that is not a valid 2.0 JSON-RPC request (wrong version field or a non-RPC body routed here), so it is rejected before method dispatch.
Source
Thrown at v3/@claude-flow/mcp/src/transport/http.ts:429
ip: req.ip,
path: req.path,
error: authResult.error,
});
res.status(401).json({
jsonrpc: '2.0',
id: null,
error: { code: -32001, message: 'Unauthorized' },
});
return;
}
} else if (requiresAuth && !this.config.auth) {
this.logger.warn('No authentication configured - running in development mode');
}
const message = req.body;
if (message.jsonrpc !== '2.0') {
res.status(400).json({
jsonrpc: '2.0',
id: message.id || null,
error: { code: -32600, message: 'Invalid JSON-RPC version' },
});
return;
}
if (!message.method) {
res.status(400).json({
jsonrpc: '2.0',
id: message.id || null,
error: { code: -32600, message: 'Missing method' },
});
return;
}
const sseSessionId = typeof req.query.sessionId === 'string' ? req.query.sessionId : undefined;
const sseResponse = sseSessionId ? this.sseClients.get(sseSessionId) : undefined;View on GitHub (pinned to fa13ee4ad6)
Solutions
- Set the JSON-RPC version field to "2.0" in the request payload.
- Validate the request against the JSON-RPC 2.0 schema before sending.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/@claude-flow/mcp/src/transport/http.ts:429 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/9d4036e24dd19d62.
Report an issue: GitHub.