Use this after a restrict_tools decision and before the upstream provider call.The helper preserves original tool ordering and returns a shallow copy when no tools are blocked.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Averta","colors":{"primary":"#0D5E42","light":"#0D5E42","dark":"#0A4D36"},"logo":{"light":"https://mintcdn.com/averta/bd5ycSrqzqw1gO4V/logo/light.svg?fit=max\u0026auto=format\u0026n=bd5ycSrqzqw1gO4V\u0026q=85\u0026s=63006ea72338853b9a0c08847ad7a3d1","dark":"https://mintcdn.com/averta/bd5ycSrqzqw1gO4V/logo/dark.svg?fit=max\u0026auto=format\u0026n=bd5ycSrqzqw1gO4V\u0026q=85\u0026s=db96852cd7e19b8b8c2266200459d3fe"},"favicon":"https://mintcdn.com/averta/bd5ycSrqzqw1gO4V/favicon.svg?fit=max\u0026auto=format\u0026n=bd5ycSrqzqw1gO4V\u0026q=85\u0026s=68582d6e10aa902950b36974de664941","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://dashboard.averta.io","label":"Dashboard"}],"primary":{"type":"button","label":"Get started","href":"https://www.averta.io/demo"}},"footer":{"socials":{"x":"https://x.com/AvertaAI","github":"https://github.com/AvertaAI","linkedin":"https://linkedin.com/company/averta-ai"}},"seo":{},"contextual":{"options":["copy","view","chatgpt","claude","cursor"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://www.averta.io/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"averta","hasAudioNarration":false,"actualSubdomain":"averta","customDomains":["docs.averta.io"],"gitSource":{"type":"github","owner":"eversmile12","repo":"averta-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21dce51f92707db5b6e684","collectionId":"caedd9ed-390a-4735-ad50-44342c56c8a0","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae954cc27a0cba11e48984d:success","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Guides","count":42},{"language":"default","tag":"OpenAI","count":9},{"language":"default","tag":"Anthropic","count":8},{"language":"default","tag":"Advanced","count":8},{"language":"default","tag":"Core Concepts","count":7},{"language":"default","tag":"Dashboard","count":6},{"language":"default","tag":"API Reference","count":4},{"language":"default","tag":"Get Started","count":4},{"language":"default","tag":"Decisions","count":3},{"language":"default","tag":"Overview","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"#topbar-cta-button span.absolute{border-radius:3px!important}:root{--rounded-lg: 3px !important;--rounded-xl: 3px !important;--rounded-2xl: 3px !important;--rounded-3xl: 3px !important}[class*=\"rounded-lg\"],[class*=\"rounded-xl\"],[class*=\"rounded-2xl\"],[class*=\"rounded-3xl\"]{border-radius:3px!important}"}],"page":{"pagePath":"custom/tool-exposure","slug":"/custom/tool-exposure","pageMetadata":{"title":"Tool exposure","description":"Filter provider tools after a low-level Averta decision.","href":"/custom/tool-exposure"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Filter provider tools after a low-level Averta decision.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`filter-tools-by-name`,children:`Filter tools by name`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`filterToolsByIdentity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"@averta-security/sdk-core\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` forwardedTools`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` filterToolsByIdentity`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` originalTools`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` decision`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`blockedTools`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` tool`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`name`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use this after a `,_jsx(_components.code,{children:`restrict_tools`}),` decision and before the upstream provider call.`]}),`\n`,_jsx(_components.p,{children:`The helper preserves original tool ordering and returns a shallow copy when no tools are blocked.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Tool exposure","description":"Filter provider tools after a low-level Averta decision.","href":"/custom/tool-exposure"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Filter tools by name","slug":"filter-tools-by-name","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"averta","siteName":"Averta","title":"Tool exposure - Averta","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-15T09:58:36.185Z","originalFileLocation":"custom/tool-exposure.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Filter provider tools after a low-level Averta decision.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Averta\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Tool exposure - Averta\">\u003cmeta data-mint-head property=\"og:description\" content=\"Filter provider tools after a low-level Averta decision.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Averta\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.averta.io/custom/tool-exposure\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://averta.mintlify.site/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Tool+exposure\u0026amp;description=Filter+provider+tools+after+a+low-level+Averta+decision.\u0026amp;theme=b123ee6aa37304d7abfe8c98\u0026amp;signature=4adce2c687be3da168dfdf6a99cb1e4184ada0c74e9c4cfff5420186146e2c70\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Tool exposure - Averta\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Filter provider tools after a low-level Averta decision.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://averta.mintlify.site/_mintlify/api/og/v2?division=Advanced\u0026amp;title=Tool+exposure\u0026amp;description=Filter+provider+tools+after+a+low-level+Averta+decision.\u0026amp;theme=b123ee6aa37304d7abfe8c98\u0026amp;signature=4adce2c687be3da168dfdf6a99cb1e4184ada0c74e9c4cfff5420186146e2c70\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/averta/0cYfIRPoJJ1ficv5/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Averta\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0D5E42\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.averta.io/custom/tool-exposure\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/custom/tool-exposure.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.averta.io/#organization\",\"name\":\"Averta\",\"url\":\"https://docs.averta.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/averta/bd5ycSrqzqw1gO4V/logo/light.svg?fit=max\u0026auto=format\u0026n=bd5ycSrqzqw1gO4V\u0026q=85\u0026s=63006ea72338853b9a0c08847ad7a3d1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.averta.io#website\",\"name\":\"Averta\",\"url\":\"https://docs.averta.io\",\"publisher\":{\"@id\":\"https://docs.averta.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.averta.io/custom/tool-exposure#webpage\",\"url\":\"https://docs.averta.io/custom/tool-exposure\",\"name\":\"Tool exposure\",\"description\":\"Filter provider tools after a low-level Averta decision.\",\"dateModified\":\"2026-05-15T09:58:36.185Z\",\"isPartOf\":{\"@id\":\"https://docs.averta.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.averta.io/custom/tool-exposure#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.averta.io/custom/tool-exposure#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced\",\"item\":\"https://docs.averta.io/custom/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tool exposure\",\"item\":\"https://docs.averta.io/custom/tool-exposure\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.averta.io/custom/tool-exposure#article\",\"headline\":\"Tool exposure\",\"name\":\"Tool exposure\",\"description\":\"Filter provider tools after a low-level Averta decision.\",\"url\":\"https://docs.averta.io/custom/tool-exposure\",\"mainEntityOfPage\":{\"@id\":\"https://docs.averta.io/custom/tool-exposure#webpage\"},\"dateModified\":\"2026-05-15T09:58:36.185Z\",\"publisher\":{\"@id\":\"https://docs.averta.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.averta.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Averta\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Averta","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://www.averta.io/blog"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Get Started","pages":[{"title":"What is Averta","href":""},{"title":"Installation","href":"/sdk/installation"},{"title":"Quickstart","href":"/quickstart"},{"title":"Choose an integration","href":"/choose-integration"}]},{"group":"Core Concepts","pages":[{"title":"How Averta works","href":"/concepts/overview"},{"title":"Checkpoints","href":"/concepts/checkpoints"},{"title":"Images and rich media","href":"/concepts/images-and-rich-media"},{"title":"Policies","href":"/concepts/policies"},{"title":"Decisions","href":"/concepts/decisions"},{"title":"Request context","href":"/concepts/request-context"},{"title":"Fail-closed behavior","href":"/concepts/fail-closed-behavior"}]},{"group":"OpenAI","pages":[{"title":"OpenAI","href":"/openai/overview"},{"title":"Quickstart","href":"/openai/quickstart"},{"title":"Responses API","href":"/openai/responses-api"},{"title":"Chat Completions","href":"/openai/chat-completions"},{"title":"Streaming","href":"/openai/streaming"},{"title":"Tools","href":"/openai/tools"},{"title":"Tool results","href":"/openai/tool-results"},{"title":"Output checks","href":"/openai/output-checks"},{"title":"Configuration","href":"/openai/configuration"}]},{"group":"Anthropic","pages":[{"title":"Anthropic","href":"/anthropic/overview"},{"title":"Quickstart","href":"/anthropic/quickstart"},{"title":"Messages API","href":"/anthropic/messages-api"},{"title":"Streaming","href":"/anthropic/streaming"},{"title":"Tool use","href":"/anthropic/tool-use"},{"title":"Tool results","href":"/anthropic/tool-results"},{"title":"Output checks","href":"/anthropic/output-checks"},{"title":"Current limits","href":"/anthropic/current-limits"}]},{"group":"Dashboard","pages":[{"title":"Dashboard overview","href":"/dashboard/overview"},{"title":"Events","href":"/dashboard/events"},{"title":"Policies","href":"/dashboard/policies"},{"title":"Tool exposure policy","href":"/dashboard/tool-exposure-policy"},{"title":"API keys","href":"/dashboard/api-keys"},{"title":"Settings","href":"/dashboard/settings"}]},{"group":"Advanced","pages":[{"title":"Custom integrations","href":"/custom/overview"},{"title":"Raw API integration","href":"/custom/raw-api"},{"title":"Decision client","href":"/custom/decision-client"},{"title":"Request checkpoint","description":"Use the low-level SDK to evaluate provider input before the upstream call.","href":"/custom/request-checkpoint"},{"title":"Tool exposure","href":"/custom/tool-exposure"},{"title":"Tool-call checkpoint","description":"Evaluate model-requested tool calls before your app executes them.","href":"/custom/tool-call-checkpoint"},{"title":"Tool results","href":"/custom/tool-results"},{"title":"Output checkpoint","href":"/custom/output-checkpoint"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"Tool exposure - Averta","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}