deepseek-ai/deepseek-harness · error
Tool "${rawName}" requires task-based execution, which this
Error message
Tool "${rawName}" requires task-based execution, which this bridge does not support What it means
Error "Tool "${rawName}" requires task-based execution, which this bridge does not support" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/mcp/mcp-client/src/tools.ts:313
* raw MCP tool name and sends an uncached `tools/call` request with it (never
* the public name), with abort signal and timeout, then maps the result to
* harness ContentBlocks. Owning the raw request prevents the SDK's internal
* per-page schema cache from pre-validating a different contract.
*
* When the MCP server returns `isError: true`, the executor throws so that
* the ToolRuntime's catch path produces an `isError` result for the model.
*/
function createExecutor(
client: Client,
ctx: Context,
rawName: string,
taskRequired: boolean,
opts: ToolBridgeOptions,
projections: WeakMap<ToolExecution, PreparedProjection>,
): ToolDefinition['execute'] {
return async (args: unknown, exec: ToolExecution) => {
if (taskRequired) {
throw new Error(`Tool "${rawName}" requires task-based execution, which this bridge does not support`)
}
// The agent loop passes `JSON.parse(model_arguments)` which is usually an
// object, but can be any JSON value if the model misbehaves (outputs a bare
// string/number/null). Fallback to {} lets the MCP server produce a
// specific "missing required param" error the model can learn from.
const argsObj = (typeof args === 'object' && args !== null ? args : {}) as Record<string, unknown>
const result = await callToolUncached(client, rawName, argsObj, exec, opts)
// The SDK may return a legacy `toolResult` shape; normalize to content array.
if (!Array.isArray(result.content)) {
const rendered: unknown = 'toolResult' in result
? JSON.stringify(result.toolResult)
: '(no output)'
const text = typeof rendered === 'string' ? rendered : '(no output)'
if (result.isError === true) throw new Error(text)
return {
content: [{ type: 'text', text }],
...result.structuredContent !== undefinedView on GitHub (pinned to b150a551b8)
Solutions
- Do not call tools that require task-based execution through this bridge.
When it happens
Trigger: Thrown at packages/mcp/mcp-client/src/tools.ts:313 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/8bbea8b919998409.
Report an issue: GitHub.