true, 'user' => [ 'id' => (int)$tokenRow['user_id'], 'email' => (string)($tokenRow['email'] ?? ''), 'tier' => (string)$tokenRow['tier'], ], 'privacy' => 'Tool calls process in memory by default. Use dbn.save_to_case to persist a result.', ]); } if ($resource === 'tools' && $method === 'GET' && !isset($segments[1])) { dbnToolsRespond(['ok' => true, 'tools' => DbnMcpRuntime::tools()]); } if ($resource === 'tools' && $method === 'POST' && isset($segments[1]) && ($segments[2] ?? '') === 'invoke') { $slug = urldecode((string)$segments[1]); $args = dbnToolsJsonInput(2_500_000); $result = DbnMcpRuntime::invoke($slug, $args, $tokenRow); dbnToolsRespond($result); } dbnToolsError('Unknown MCP user route.', 404, 'not_found', ['path' => $segments]); } catch (DbnToolsHttpException $e) { dbnToolsError($e->getMessage(), $e->status, $e->errorCode, $e->extra); } catch (Throwable $e) { error_log('[dbn-user-mcp] ' . $e->getMessage()); dbnToolsError('DBN MCP runtime failed.', 500, 'internal_error'); }