{"record":{"id":"1a1db76b81ec8c0f","repo":"paperclipai/paperclip","slug":"no-tool-handler-registered-for-params-toolname","errorCode":null,"errorMessage":"No tool handler registered for \"${params.toolName}\"","messagePattern":"No tool handler registered for \"(.+?)\"","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/plugins/sdk/src/worker-rpc-host.ts","lineNumber":1941,"sourceCode":"    });\n  }\n\n  function stringOrNull(value: unknown): string | null {\n    return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n  }\n\n  function actorTypeOrSystem(value: unknown): PluginPerformActionActorContext[\"type\"] {\n    return value === \"user\" || value === \"agent\" || value === \"system\" ? value : \"system\";\n  }\n\n  function actionContextFromParams(params: PerformActionParams): PluginPerformActionContext {\n    const rawActor = params.actorContext && typeof params.actorContext === \"object\"\n      ? params.actorContext\n      : null;\n    const actor = Object.freeze({\n      type: actorTypeOrSystem(rawActor?.type),\n      userId: stringOrNull(rawActor?.userId),\n      agentId: stringOrNull(rawActor?.agentId),\n      runId: stringOrNull(rawActor?.runId),\n      companyId: stringOrNull(rawActor?.companyId),\n    });\n    return Object.freeze({\n      actor,\n      companyId: actor.companyId,\n    });\n  }\n\n  async function handlePerformAction(params: PerformActionParams): Promise<unknown> {\n    const handler = actionHandlers.get(params.key);\n    if (!handler) {\n      throw new Error(`No action handler registered for key \"${params.key}\"`);\n    }\n    return handler(\n      {\n        ...params.params,\n        ...(params.companyId === undefined ? {} : { companyId: params.companyId }),","sourceCodeStart":1923,"sourceCodeEnd":1959,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/packages/plugins/sdk/src/worker-rpc-host.ts#L1923-L1959","documentation":"Dispatch guard in the worker RPC host (handleExecuteTool): the host requested tool execution for params.toolName, but no tool handler was registered under that name by the plugin. The manifest may advertise a tool the plugin never implemented, so execution fails fast at dispatch.","triggerScenarios":"Thrown at packages/plugins/sdk/src/worker-rpc-host.ts:1890 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Register a tool handler for the tool name, or call a registered tool."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}