{$i18n.t('Tools')} | {$WEBUI_NAME}
{$i18n.t('Tools')}
{filteredItems.length}
{#each filteredItems as tool}
TOOL
{#if tool?.meta?.manifest?.version}
v{tool?.meta?.manifest?.version ?? ''}
{/if}
{tool.name}
{tool.id}
{tool.meta.description}
{#if shiftKey} {:else} {#if tool?.meta?.manifest?.funding_url ?? false} {/if} { goto(`/workspace/tools/edit?id=${encodeURIComponent(tool.id)}`); }} shareHandler={() => { shareHandler(tool); }} cloneHandler={() => { cloneHandler(tool); }} exportHandler={() => { exportHandler(tool); }} deleteHandler={async () => { selectedTool = tool; showDeleteConfirm = true; }} onClose={() => {}} > {/if}
{/each}
ⓘ {$i18n.t( 'Admins have access to all tools at all times; users need tools assigned per model in the workspace.' )}
{ console.log(importFiles); showConfirm = true; }} />
{#if $config?.features.enable_community_sharing}
{$i18n.t('Made by OpenWebUI Community')}
{$i18n.t('Discover a tool')}
{$i18n.t('Discover, download, and explore custom tools')}
{/if} { deleteHandler(selectedTool); }} >
{$i18n.t('This will delete')} {selectedTool.name}.
{ const reader = new FileReader(); reader.onload = async (event) => { const _tools = JSON.parse(event.target.result); console.log(_tools); for (const tool of _tools) { const res = await createNewTool(localStorage.token, tool).catch((error) => { toast.error(error); return null; }); } toast.success($i18n.t('Tool imported successfully')); tools.set(await getTools(localStorage.token)); }; reader.readAsText(importFiles[0]); }} >
{$i18n.t('Please carefully review the following warnings:')}
  • {$i18n.t('Tools have a function calling system that allows arbitrary code execution')}.
  • {$i18n.t('Do not install tools from sources you do not fully trust.')}
{$i18n.t( 'I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.' )}