ruvnet/ruflo · error
[mcp] tool call failed
Error message
[mcp] tool call failed
What it means
Log warning in executeToolCalls: an individual tool invocation failed (non-abort error); the error message is captured so the failure can be reported back to the model or caller instead of crashing the whole batch.
Source
Thrown at ruflo/src/ruvocal/src/lib/server/textGeneration/mcp/toolInvocation.ts:310
});
} catch (err) {
const errMsg = err instanceof Error ? err.message : String(err);
const errName = err instanceof Error ? err.name : "";
const isAbortError =
abortSignal?.aborted ||
errName === "AbortError" ||
errName === "APIUserAbortError" ||
errMsg === "Request was aborted." ||
errMsg === "This operation was aborted";
const message = isAbortError ? "Aborted by user" : errMsg;
if (isAbortError) {
logger.debug(
{ server: mappingEntry.server, tool: mappingEntry.tool },
"[mcp] tool call aborted by user"
);
} else {
logger.warn(
{ server: mappingEntry.server, tool: mappingEntry.tool, err: message },
"[mcp] tool call failed"
);
}
results.push({ index, error: message, uuid: p.uuid, paramsClean: p.paramsClean });
updatesQueue.push({
type: MessageUpdateType.Tool,
subtype: MessageToolUpdateType.Error,
uuid: p.uuid,
message,
});
}
});
// kick off and stream as they finish
Promise.allSettled(tasks).then(() => updatesQueue.close());
for await (const update of updatesQueue.iterator()) {View on GitHub (pinned to fa13ee4ad6)
Solutions
- Check the tool arguments against the tool's input schema and confirm the MCP server implements the tool; the server-side error detail is included in the logged cause.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at ruflo/src/ruvocal/src/lib/server/textGeneration/mcp/toolInvocation.ts:310 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/56b831e294fb6f8d.
Report an issue: GitHub.