{$i18n.t('Tools')} | {$WEBUI_NAME}
{$i18n.t('Tools')}

{#each $tools.filter((t) => query === '' || t.name .toLowerCase() .includes(query.toLowerCase()) || t.id.toLowerCase().includes(query.toLowerCase())) as tool}
TOOL
{#if tool?.meta?.manifest?.version}
v{tool?.meta?.manifest?.version ?? ''}
{/if}
{tool.name}
{tool.id}
{tool.meta.description}
{#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={() => {}} >
{/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; }} />
{$i18n.t('Made by OpenWebUI Community')}
{$i18n.t('Discover a tool')}
{$i18n.t('Discover, download, and explore custom tools')}
{ 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]); }} >
Please carefully review the following warnings:
  • Tools have a function calling system that allows arbitrary code execution.
  • Do not install tools from sources you do not fully trust.
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.