Files
langflow/agents-tools.html
github-merge-queue[bot] d09addf91d deploy: 8881abda0a
2025-10-16 15:19:58 +00:00

182 lines
46 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-Agents/agents-tools" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
<title data-rh="true">Configure tools for agents | Langflow Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.langflow.org/agents-tools"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Configure tools for agents | Langflow Documentation"><meta data-rh="true" name="description" content="By default, Langflow agents only include the functionality built-in to their base LLM."><meta data-rh="true" property="og:description" content="By default, Langflow agents only include the functionality built-in to their base LLM."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/agents-tools"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/agents-tools" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/agents-tools" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Configure tools for agents","item":"https://docs.langflow.org/agents-tools"}]}</script><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SLQFLQ3KPT"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SLQFLQ3KPT",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml">
<script>!function(){var e="analytics",t=window[e]=window[e]||[];if(!t.initialize)if(t.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{t.invoked=!0,t.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"],t.factory=function(n){return function(){if(window[e].initialized)return window[e][n].apply(window[e],arguments);var r=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(n)>-1){var i=document.querySelector("link[rel='canonical']");r.push({__t:"bpc",c:i&&i.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}return r.unshift(n),t.push(r),t}};for(var n=0;n<t.methods.length;n++){var r=t.methods[n];t[r]=t.factory(r)}t.load=function(n,r){var i=document.createElement("script");i.type="text/javascript",i.async=!0,i.setAttribute("data-global-segment-analytics-key",e),i.src="https://cdn.segment.com/analytics.js/v1/"+n+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a),t._loadOptions=r},t._writeKey="60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG",t.SNIPPET_VERSION="5.2.0",t.load("60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG"),t.page()}}()</script>
<script>window.__SCROLL_TRACKING_CONFIG__={selectors:[{selector:"h1, h2, h3, h4, h5, h6",eventName:"Docs.langflow.org - Heading Viewed",properties:{element_type:"heading"}},{selector:".ch-codeblock",eventName:"Docs.langflow.org - Codeblock Viewed",properties:{element_type:"code",language:"helper:codeLanguage"}}]}</script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@550;600&amp;display=swap">
<script>!function(){window.semaphore=window.semaphore||[],window.ketch=function(){window.semaphore.push(arguments)};var e=document.createElement("script");e.type="text/javascript",e.src="https://global.ketchcdn.com/web/v3/config/datastax/langflow_org_web/boot.js",e.defer=e.async=!0,document.getElementsByTagName("head")[0].appendChild(e)}()</script>
<script defer="true">!function(){const e=e=>{if(window.gtag&&e.purposes&&"analytics"in e.purposes&&"targeted_advertising"in e.purposes){const n=!0===e.purposes.analytics?"granted":"denied",t=!0===e.purposes.targeted_advertising?"granted":"denied",a={analytics_storage:n,ad_personalization:t,ad_storage:t,ad_user_data:t};window.gtag("consent","update",a)}};window.ketch&&window.ketch("on","consent",e)}()</script><link rel="stylesheet" href="/assets/css/styles.5b49702d.css">
<script src="/assets/js/runtime~main.64c9d228.js" defer="defer"></script>
<script src="/assets/js/main.ab32be25.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link" data-event="Docs.langflow.org - Social Clicked" data-platform="github"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link" data-event="Docs.langflow.org - Social Clicked" data-platform="x"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link" data-event="Docs.langflow.org - Social Clicked" data-platform="discord"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/">Get started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-overview">Flows</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/agents">Agents</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/agents">Use Langflow agents</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/agents-tools">Configure tools for agents</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/mcp-client">Model Context Protocol (MCP)</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api-keys-and-authentication">Develop</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/deployment-overview">Deploy</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-components">Components reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api-reference-api-examples">API reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/contributing-community">Contribute</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/release-notes">Release notes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/troubleshoot">Support</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-ad">
<a href="https://www.langflow.org/desktop" target="_blank" class="menu__link">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1645_37)">
<path d="M12 17H20C21.1046 17 22 16.1046 22 15V13M12 17H4C2.89543 17 2 16.1046 2 15V5C2 3.89543 2.89543 3 4 3H10M12 17V21M8 21H12M12 21H16M11.75 10.2917H13.2083L16.125 7.375H17.5833L20.5 4.45833H21.9583M16.125 11.75H17.5833L20.5 8.83333H21.9583M11.75 5.91667H13.2083L16.125 3H17.5833" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1645_37">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Get started in minutes</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Download Langflow Desktop</span>
</div>
</a>
</li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Agents</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Configure tools for agents</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Configure tools for agents</h1></header><style>[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }</style>
<!-- -->
<p>By default, <a href="/agents">Langflow agents</a> only include the functionality built-in to their base LLM.</p>
<p>You can attach tools to agents to provide access to additional, targeted functionality.
For example, tools can be used to create domain-specific agents, such as a customer support agent that can access a company&#x27;s knowledge base, a financial agent that can retrieve stock prices, or a math tutor agent that can use advanced math functions to solve complex equations.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="attach-tools">Attach tools<a href="#attach-tools" class="hash-link" aria-label="Direct link to Attach tools" title="Direct link to Attach tools"></a></h2>
<p>To attach a tool to an agent, you connect any component&#x27;s <strong>Tool</strong> output to the <strong>Agent</strong> component&#x27;s <strong>Tools</strong> input.</p>
<p>Some components emit <strong>Tool</strong> output by default.
For all other components, you must enable <strong>Tool Mode</strong> in the <a href="/concepts-components#component-menus">component&#x27;s header menu</a>.
Then, you can connect the tool to the agent.</p>
<p>You can connect multiple tools to one agent, and each tool can have multiple actions (functions) that the agent can call.</p>
<p>When you run your flow, the agent decides when to call on certain tools, if it determines that a tool can help it respond to the user&#x27;s prompt.</p>
<h3 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="edit-a-tools-actions">Edit a tool&#x27;s actions<a href="#edit-a-tools-actions" class="hash-link" aria-label="Direct link to Edit a tool&#x27;s actions" title="Direct link to Edit a tool&#x27;s actions"></a></h3>
<p>When you attach components to an agent as tools, each tool can have multiple actions (functions) that the agent can call.
Available actions are listed in each tool component&#x27;s <strong>Actions</strong> list.</p>
<p>You can change each action&#x27;s labels, descriptions, and availability to help the agent understand how to use the tool and prevent it from using irrelevant or undesired actions.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>If an agent seems to be using a tool incorrectly, try editing the actions metadata to clarify the tool&#x27;s purpose and disable unnecessary actions.</p><p>You can also try using a <strong>Prompt Template</strong> component to pass additional instructions or examples to the agent.</p></div></div>
<p>To view and edit a tool&#x27;s actions, click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings2" aria-hidden="true"><path d="M20 7h-9"></path><path d="M14 17H5"></path><circle cx="17" cy="17" r="3"></circle><circle cx="7" cy="7" r="3"></circle></svg> <strong>Edit Tool Actions</strong> on the tool component.</p>
<p>The following information is provided for each action:</p>
<ul>
<li>
<p><strong>Enabled</strong>: A checkbox that determines whether the action is available to the agent.
If selected, the action is enabled.
If not selected, the action is disabled.</p>
</li>
<li>
<p><strong>Name</strong>: A human-readable string name for the action, such as <code>Fetch Content</code>. This cannot be changed.</p>
</li>
<li>
<p><strong>Description</strong>: A human-readable description of the action&#x27;s purpose, such as <code>Fetch content from web pages recursively</code>.
To edit this value, double-click the action&#x27;s row to open the edit pane.
Changes are saved automatically when you click out of the field or close the dialog.</p>
</li>
<li>
<p><strong>Slug</strong>: An encoded name for the action, usually the same as the name but in snake case, such as <code>fetch_content</code>.
To edit this value, double-click the action&#x27;s row to open the edit pane.
Changes are saved automatically when you click out of the field or close the dialog.</p>
</li>
</ul>
<p>Some actions allow you to provide fixed values for their inputs.
Typically, you want to leave these blank so the agent can provide its own values.
However, you might use a fixed value if you&#x27;re trying to debug an agent&#x27;s behavior or your use case requires a fixed input for an action.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="use-an-agent-as-a-tool">Use an agent as a tool<a href="#use-an-agent-as-a-tool" class="hash-link" aria-label="Direct link to Use an agent as a tool" title="Direct link to Use an agent as a tool"></a></h2>
<p>To create multi-agent flows, you can set another <strong>Agent</strong> component to <strong>Tool Mode</strong>, and then attach that agent as a tool for your primary <strong>Agent</strong> component.</p>
<p>To try this for yourself, add an additional agent to the <strong>Simple Agent</strong> template:</p>
<ol>
<li>
<p>Create a flow based on the <strong>Simple Agent</strong> template.</p>
</li>
<li>
<p>Add a second <strong>Agent</strong> component to the flow.</p>
</li>
<li>
<p>Add your <strong>OpenAI API Key</strong> to both <strong>Agent</strong> components.</p>
</li>
<li>
<p>In the second <strong>Agent</strong> component, change the model to <code>gpt-4.1</code>, and then enable <strong>Tool Mode</strong>.</p>
</li>
<li>
<p>Click <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings2" aria-hidden="true"><path d="M20 7h-9"></path><path d="M14 17H5"></path><circle cx="17" cy="17" r="3"></circle><circle cx="7" cy="7" r="3"></circle></svg> <strong>Edit Tool Actions</strong> to <a href="#edit-a-tools-actions">edit the tool&#x27;s actions</a>.</p>
<p>For this example, change the action&#x27;s slug to <code>Agent-gpt-41</code>, and set the description to <code>Use the gpt-4.1 model for complex problem solving</code>.
This lets the primary agent know that this tool uses the <code>gpt-4.1</code> model, which could be helpful for tasks requiring a larger context window, such as large scrape and search tasks.</p>
<p>As another example, you could attach several specialized models to a primary agent, such as agents that are trained on certain tasks or domains, and then the primary agent would call each specialized agent as needed to respond to queries.</p>
<p>You can also enable and disable tools if you want to limit the available toolset.</p>
</li>
<li>
<p>Connect the new agent&#x27;s <strong>Toolset</strong> port to the existing agent&#x27;s <strong>Tools</strong> port.</p>
<p><img decoding="async" loading="lazy" alt="Agent as a tool" src="/assets/images/agent-example-agent-as-tool-0e0b6761f97ce60d6b2476dc4188d37c.png" width="4000" height="2600" class="img_ev3q"></p>
</li>
</ol>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="components-as-tools">Add custom components as tools<a href="#components-as-tools" class="hash-link" aria-label="Direct link to Add custom components as tools" title="Direct link to Add custom components as tools"></a></h2>
<p>An agent can use <a href="/components-custom-components">custom components</a> as tools.</p>
<ol>
<li>
<p>To add a custom component to an agent flow, click <strong>New Custom Component</strong> in the <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-component" aria-hidden="true"><path d="M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"></path><path d="M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z"></path><path d="M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z"></path><path d="M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"></path></svg> <strong>Core components</strong> or <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-blocks" aria-hidden="true"><rect width="7" height="7" x="14" y="3" rx="1"></rect><path d="M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3"></path></svg> <strong>Bundles</strong> menus.</p>
</li>
<li>
<p>Enter Python code into the <strong>Code</strong> pane to create the custom component.</p>
<p>If you don&#x27;t already have code for a custom component, you can use the following code snippet as an example before creating your own.</p>
<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Text Analyzer custom component</summary><div><div class="collapsibleContent_i85q"><p>This code creates a text analyzer component.</p><div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span>from langflow.custom import Component</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span>from langflow.io import MessageTextInput, Output</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span>from langflow.schema import Data</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span>import re</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span>class TextAnalyzerComponent(Component):</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> display_name = &quot;Text Analyzer&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> description = &quot;Analyzes and transforms input text.&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> documentation: str = &quot;http://docs.langflow.org/components/custom&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> icon = &quot;chart-bar&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> name = &quot;TextAnalyzerComponent&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> inputs = [</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> MessageTextInput(</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> name=&quot;input_text&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> display_name=&quot;Input Text&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> info=&quot;Enter text to analyze&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> value=&quot;Hello, World!&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> tool_mode=True,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> ),</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> ]</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> outputs = [</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> Output(display_name=&quot;Analysis Result&quot;, name=&quot;output&quot;, method=&quot;analyze_text&quot;),</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> ]</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> def analyze_text(self) -&gt; Data:</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> text = self.input_text</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> # Perform text analysis</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> word_count = len(text.split())</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> char_count = len(text)</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> sentence_count = len(re.findall(r&#x27;\w+[.!?]&#x27;, text))</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> # Transform text</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> reversed_text = text[::-1]</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> uppercase_text = text.upper()</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> analysis_result = {</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> &quot;original_text&quot;: text,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> &quot;word_count&quot;: word_count,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> &quot;character_count&quot;: char_count,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> &quot;sentence_count&quot;: sentence_count,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> &quot;reversed_text&quot;: reversed_text,</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> &quot;uppercase_text&quot;: uppercase_text</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> }</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> data = Data(value=analysis_result)</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> self.status = data</span></div></div><div><span class="ch-code-line-number">_<!-- -->50</span><div style="display:inline-block;margin-left:16px"><span> return data</span></div></div><br></code></div></div></div></div></details>
</li>
<li>
<p>Enable <strong>Tool Mode</strong> in the custom component.</p>
</li>
<li>
<p>Connect the custom component&#x27;s tool output to the <strong>Agent</strong> component&#x27;s <strong>Tools</strong> input.</p>
</li>
<li>
<p>Open the <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-play" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg> <strong>Playground</strong> and instruct the agent, <code>Use the text analyzer on this text: &quot;Agents really are thinking machines!&quot;</code></p>
<p>Based on your instruction, the agent should call the <code>analyze_text</code> action and return the result.
For example:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>gpt-4o</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Finished</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>0.6s</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Here is the analysis of the text &quot;Agents really are thinking machines!&quot;:</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Original Text: Agents really are thinking machines!</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Word Count: 5</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Character Count: 36</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Sentence Count: 1</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Reversed Text: !senihcam gnikniht era yllaer stnegA</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>Uppercase Text: AGENTS REALLY ARE THINKING MACHINES!</span></div></div><br></code></div></div>
</li>
</ol>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="make-any-component-a-tool">Make any component a tool<a href="#make-any-component-a-tool" class="hash-link" aria-label="Direct link to Make any component a tool" title="Direct link to Make any component a tool"></a></h2>
<p>If the component you want to use as a tool doesn&#x27;t have a <strong>Tool Mode</strong> button, add <code>tool_mode=True</code> to one of the component&#x27;s inputs, and connect the new <strong>Toolset</strong> output to the agent&#x27;s <strong>Tools</strong> input.</p>
<p>Langflow supports <strong>Tool Mode</strong> for the following data types:</p>
<ul>
<li><code>DataInput</code></li>
<li><code>DataFrameInput</code></li>
<li><code>PromptInput</code></li>
<li><code>MessageTextInput</code></li>
<li><code>MultilineInput</code></li>
<li><code>DropdownInput</code></li>
</ul>
<p>For example, the example code in <a href="#components-as-tools">Use custom components as tools</a> included <code>tool_mode=True</code> to the <code>MessageTextInput</code> input so the custom component could be used as a tool:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>inputs = [</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> MessageTextInput(</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> name=&quot;input_text&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> display_name=&quot;Input Text&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> info=&quot;Enter text to analyze&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> value=&quot;Hello, World!&quot;,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> tool_mode=True,</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span> ),</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>]</span></div></div><br></code></div></div>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="use-flows-as-tools">Use flows as tools<a href="#use-flows-as-tools" class="hash-link" aria-label="Direct link to Use flows as tools" title="Direct link to Use flows as tools"></a></h2>
<p>An agent can use your other flows as tools with the <a href="/components-logic#run-flow"><strong>Run Flow</strong> component</a>.</p>
<ol>
<li>Add a <strong>Run Flow</strong> component to your flow.</li>
<li>Select the flow you want the agent to use as a tool.</li>
<li>Enable <strong>Tool Mode</strong>.
The selected flow becomes an <a href="#edit-a-tools-actions">action</a> in the <strong>Run Flow</strong> component.</li>
<li>Connect the <strong>Run Flow</strong> component&#x27;s <strong>Tool</strong> output to the <strong>Agent</strong> component&#x27;s <strong>Tools</strong> input.</li>
<li>Open the <strong>Playground</strong>, and then ask the agent, <code>What tools are you using to answer my questions?</code>
Your flow should be visible in the response as an available tool.</li>
<li>Ask the agent a question that specifically uses the connected flow as a tool.
The connected flow returns an answer based on your question.</li>
</ol>
<p><img decoding="async" loading="lazy" alt="Run Flow component connected to an Agent component as a tool" src="/assets/images/agent-example-run-flow-as-tool-d9830a35be2ea5ac0fc76e1e3cc5692b.png" width="4000" height="2860" class="img_ev3q"></p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="see-also">See also<a href="#see-also" class="hash-link" aria-label="Direct link to See also" title="Direct link to See also"></a></h2>
<ul>
<li><a href="/components-agents">Agent components</a></li>
<li><a href="/mcp-client">Use Langflow as an MCP client</a></li>
<li><a href="/mcp-server">Use Langflow as an MCP server</a></li>
</ul></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/agents"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Use Langflow agents</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/mcp-client"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Use Langflow as an MCP client</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#attach-tools" class="table-of-contents__link toc-highlight">Attach tools</a><ul><li><a href="#edit-a-tools-actions" class="table-of-contents__link toc-highlight">Edit a tool&#39;s actions</a></li></ul></li><li><a href="#use-an-agent-as-a-tool" class="table-of-contents__link toc-highlight">Use an agent as a tool</a></li><li><a href="#components-as-tools" class="table-of-contents__link toc-highlight">Add custom components as tools</a></li><li><a href="#make-any-component-a-tool" class="table-of-contents__link toc-highlight">Make any component a tool</a></li><li><a href="#use-flows-as-tools" class="table-of-contents__link toc-highlight">Use flows as tools</a></li><li><a href="#see-also" class="table-of-contents__link toc-highlight">See also</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2025 Langflow</span>
<span id="preferenceCenterContainer"> ·&nbsp; <a href="https://langflow.org/preferences">Manage Privacy Choices</a></span>
</div></li></ul></div></div></div></footer><div style="position:fixed;right:21px;bottom:21px;z-index:100;display:flex;align-items:center;gap:10px;cursor:pointer"><div style="background-color:#f6f6f6;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,0.1)"><img src="/img/langflow-icon-black-transparent.svg" style="width:40px" alt="Search"></div></div></div>
</body>
</html>