Route only the dependencies your agent uses into scoped synthetic instances.
Firedrill does not require your agent to move into a cloud sandbox. Connect the real application through a small adapter and give it only the synthetic interfaces it needs.There are two kinds of access:
Operator access lets your CLI, SDK, or coding agent prepare simulations and read reports.
Tool access lets the agent under simulation call allowed operations on its current synthetic instances.
Never pass your operator credential to the agent under simulation.
Add Tool bindings to your recipe. Each binding selects an exact build, optional dataset, unsigned decimal-string seed, allowed operations, and an alias.The runner prepares isolated instances for the case. A native SDK callback receives context.tools[alias]; it can invoke semantic operations or explicitly export a connection for the application’s MCP/HTTP client.Command and HTTP adapters receive the run’s scoped Tool connections in the target invocation envelope. Your adapter routes the real dependency seam through those URLs. It does not replace the application’s reasoning with expected results.See the exact TypeScript, Python, and command adapter examples.
A Tool’s semantic HTTP or MCP operation interface is not automatically a drop-in copy of a vendor’s complete REST API. Use the release’s declared routes and schemas. Never silently fall back to a live provider when a synthetic operation is unsupported.
Start an instance with firedrill tools start. Its ready output shows the connection endpoints and a complete command for issuing a narrowly scoped credential.To inspect the current instance first:
firedrill tools get INSTANCE_ID --json
Use the actual returned ID, current epoch, and one of its allowed operation IDs. For example, after setting FD_INSTANCE_ID, FD_EPOCH, and FD_OPERATION_ID from that response:
Add tool-connection.json to your ignore rules and protect it as a credential. Use the exact returned endpoint and token in the target’s test-only MCP configuration. For semantic HTTP, select --audience http instead. A connection does not start the agent.HTTP semantic calls send operationId and arguments to the issued endpoint with its derived bearer token and a saved Idempotency-Key. An HTTP 200 response alone is not proof that the semantic operation succeeded; inspect its outcome.
A Tool connection has its own expiry and cannot outlive its parent authority or instance. Extending the instance does not renew its connections.Snapshot restore advances the instance epoch and invalidates earlier grants. Obtain fresh bindings instead of editing a stale grant.
Use identities returned by your own instance’s connection list. If a one-time credential response was lost, reconcile metadata, revoke that grant explicitly, and issue a replacement only as a deliberate action.
Open a current instance in the web app. If the Tool has a supported browser app, its preview and Open Tool action access the same seeded state. An ended instance retains history but no active browser connection.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Firedrill","description":"Simulate AI agents across scenarios, configurations, and repeated trials","colors":{"primary":"#3157D5","light":"#5272DE","dark":"#5272DE"},"logo":{"light":"https://mintcdn.com/firedrill/sWeyeTM66Pjv8_YB/logo/light.svg?fit=max\u0026auto=format\u0026n=sWeyeTM66Pjv8_YB\u0026q=85\u0026s=608d25ab5f97ad95a8d3e8c9ced0cb6d","dark":"https://mintcdn.com/firedrill/sWeyeTM66Pjv8_YB/logo/dark.svg?fit=max\u0026auto=format\u0026n=sWeyeTM66Pjv8_YB\u0026q=85\u0026s=fa12225848791186ced26f7609685612"},"favicon":"https://mintcdn.com/firedrill/sWeyeTM66Pjv8_YB/favicon.svg?fit=max\u0026auto=format\u0026n=sWeyeTM66Pjv8_YB\u0026q=85\u0026s=cae3a93e3c384028863580e7ed05f4f9","api":{"playground":{"display":"none"}},"navbar":{"links":[{"href":"https://firedrill.run","label":"Firedrill"},{"href":"https://firedrill.run/agents","label":"For agents"}],"primary":{"type":"button","label":"Open Firedrill","href":"https://app.firedrill.run"}},"seo":{"metatags":{"canonical":"https://docs.firedrill.run"}},"fonts":{"family":"Inter","weight":450},"styling":{"eyebrows":"breadcrumbs","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Open Firedrill","icon":"arrow-up-right-from-square","href":"https://app.firedrill.run"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"firedrill","hasAudioNarration":false,"actualSubdomain":"firedrill","customDomains":["docs.firedrill.run"],"gitSource":{"type":"github","owner":"firedrill-tools","repo":"firedrill-developer-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ad70e01d6c125375d923afd","collectionId":"8a442383-941c-43b0-8344-f7f7828b9c25","liveDeploymentHistoryId":"6ad70e01d6c125375d923afd","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ad70e01d6c125375d923afd","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API reference","count":80},{"language":"default","tag":"Control API","count":78},{"language":"default","tag":"Documentation","count":44},{"language":"default","tag":"tools","count":18},{"language":"default","tag":"Simulations and evidence","count":10},{"language":"default","tag":"tool-lifecycle","count":10},{"language":"default","tag":"Synthetic Tools","count":8},{"language":"default","tag":"reports","count":8},{"language":"default","tag":"Core concepts","count":6},{"language":"default","tag":"assessment","count":6}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/connect-agent","slug":"/guides/connect-agent","pageMetadata":{"title":"Connect your agent to synthetic Tools","description":"Route only the dependencies your agent uses into scoped synthetic instances.","href":"/guides/connect-agent"},"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: \"Route only the dependencies your agent uses into scoped synthetic instances.\"\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={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Firedrill does not require your agent to move into a cloud sandbox. Connect the real application through a small adapter and give it only the synthetic interfaces it needs.`}),`\n`,_jsx(_components.p,{children:`There are two kinds of access:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Operator access`}),` lets your CLI, SDK, or coding agent prepare simulations and read reports.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Tool access`}),` lets the agent under simulation call allowed operations on its current synthetic instances.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Never pass your operator credential to the agent under simulation.`}),`\n`,_jsx(Heading,{level:`2`,id:`during-a-simulation`,children:`During a simulation`}),`\n`,_jsx(_components.p,{children:`Add Tool bindings to your recipe. Each binding selects an exact build, optional dataset, unsigned decimal-string seed, allowed operations, and an alias.`}),`\n`,_jsxs(_components.p,{children:[`The runner prepares isolated instances for the case. A native SDK callback receives `,_jsx(_components.code,{children:`context.tools[alias]`}),`; it can invoke semantic operations or explicitly export a connection for the application’s MCP/HTTP client.`]}),`\n`,_jsx(_components.p,{children:`Command and HTTP adapters receive the run’s scoped Tool connections in the target invocation envelope. Your adapter routes the real dependency seam through those URLs. It does not replace the application’s reasoning with expected results.`}),`\n`,_jsxs(_components.p,{children:[`See the exact `,_jsx(_components.a,{href:`/sdk/typescript`,children:`TypeScript`}),`, `,_jsx(_components.a,{href:`/sdk/python`,children:`Python`}),`, and `,_jsx(_components.a,{href:`/guides/run-first-drill`,children:`command adapter`}),` examples.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`A Tool’s semantic HTTP or MCP operation interface is not automatically a drop-in copy of a vendor’s complete REST API. Use the release’s declared routes and schemas. Never silently fall back to a live provider when a synthetic operation is unsupported.`})}),`\n`,_jsx(Heading,{level:`2`,id:`for-manual-exploration`,children:`For manual exploration`}),`\n`,_jsxs(_components.p,{children:[`Start an instance with `,_jsx(_components.code,{children:`firedrill tools start`}),`. Its ready output shows the connection endpoints and a complete command for issuing a narrowly scoped credential.`]}),`\n`,_jsx(_components.p,{children:`To inspect the current instance first:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`firedrill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tools`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` INSTANCE_ID`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --json`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Use the actual returned ID, current `,_jsx(_components.code,{children:`epoch`}),`, and one of its allowed operation IDs. For example, after setting `,_jsx(_components.code,{children:`FD_INSTANCE_ID`}),`, `,_jsx(_components.code,{children:`FD_EPOCH`}),`, and `,_jsx(_components.code,{children:`FD_OPERATION_ID`}),` from that response:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`firedrill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tools`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` connections`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$FD_INSTANCE_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --epoch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$FD_EPOCH`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --purpose`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` manual`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --audience`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mcp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --allow`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$FD_OPERATION_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --ttl-seconds`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1800`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --idempotency-key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` manual-mcp-001`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tool-connection.json`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Add `,_jsx(_components.code,{children:`tool-connection.json`}),` to your ignore rules and protect it as a credential. Use the exact returned endpoint and token in the target’s test-only MCP configuration. For semantic HTTP, select `,_jsx(_components.code,{children:`--audience http`}),` instead. A connection does not start the agent.`]}),`\n`,_jsxs(_components.p,{children:[`HTTP semantic calls send `,_jsx(_components.code,{children:`operationId`}),` and `,_jsx(_components.code,{children:`arguments`}),` to the issued endpoint with its derived bearer token and a saved `,_jsx(_components.code,{children:`Idempotency-Key`}),`. An HTTP 200 response alone is not proof that the semantic operation succeeded; inspect its outcome.`]}),`\n`,_jsx(Heading,{level:`2`,id:`lifetime-reset-and-revocation`,children:`Lifetime, reset, and revocation`}),`\n`,_jsx(_components.p,{children:`A Tool connection has its own expiry and cannot outlive its parent authority or instance. Extending the instance does not renew its connections.`}),`\n`,_jsx(_components.p,{children:`Snapshot restore advances the instance epoch and invalidates earlier grants. Obtain fresh bindings instead of editing a stale grant.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`firedrill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tools`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` connections`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` INSTANCE_ID`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`firedrill`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tools`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` connections`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` revoke`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` INSTANCE_ID`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` CONNECTION_ID`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --idempotency-key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` revoke-connection-001`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Use identities returned by your own instance’s connection list. If a one-time credential response was lost, reconcile metadata, revoke that grant explicitly, and issue a replacement only as a deliberate action.`}),`\n`,_jsx(Heading,{level:`2`,id:`browser-access`,children:`Browser access`}),`\n`,_jsxs(_components.p,{children:[`Open a current instance in the `,_jsx(_components.a,{href:`/guides/tool-apps`,children:`web app`}),`. If the Tool has a supported browser app, its preview and `,_jsx(_components.strong,{children:`Open Tool`}),` action access the same seeded state. An ended instance retains history but no active browser connection.`]})]})}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":"Connect your agent to synthetic Tools","description":"Route only the dependencies your agent uses into scoped synthetic instances.","href":"/guides/connect-agent"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"During a simulation","slug":"during-a-simulation","depth":2,"children":[]},{"title":"For manual exploration","slug":"for-manual-exploration","depth":2,"children":[]},{"title":"Lifetime, reset, and revocation","slug":"lifetime-reset-and-revocation","depth":2,"children":[]},{"title":"Browser access","slug":"browser-access","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"firedrill","siteName":"Firedrill","title":"Connect your agent to synthetic Tools - Firedrill","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-18T11:28:24.819Z","originalFileLocation":"guides/connect-agent.md"},"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=\"Route only the dependencies your agent uses into scoped synthetic instances.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Firedrill\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_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/firedrill/4doC3Wuxr0HFEQEu/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connect your agent to synthetic Tools - Firedrill\">\u003cmeta data-mint-head property=\"og:description\" content=\"Route only the dependencies your agent uses into scoped synthetic instances.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Firedrill\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.firedrill.run/guides/connect-agent\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://firedrill.mintlify.app/_mintlify/api/og/v2?division=Synthetic+Tools\u0026amp;title=Connect+your+agent+to+synthetic+Tools\u0026amp;description=Route+only+the+dependencies+your+agent+uses+into+scoped+synthetic+instances.\u0026amp;theme=211def18583054cfab550cb1\u0026amp;signature=c1bd65adfaf4069c11ccf12fda4f0b519f5f282e7f365fc326f31bd58f226487\">\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=\"Connect your agent to synthetic Tools - Firedrill\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Route only the dependencies your agent uses into scoped synthetic instances.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://firedrill.mintlify.app/_mintlify/api/og/v2?division=Synthetic+Tools\u0026amp;title=Connect+your+agent+to+synthetic+Tools\u0026amp;description=Route+only+the+dependencies+your+agent+uses+into+scoped+synthetic+instances.\u0026amp;theme=211def18583054cfab550cb1\u0026amp;signature=c1bd65adfaf4069c11ccf12fda4f0b519f5f282e7f365fc326f31bd58f226487\">\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/firedrill/4doC3Wuxr0HFEQEu/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Firedrill\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3157D5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.firedrill.run/guides/connect-agent\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/connect-agent.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.firedrill.run/#organization\",\"name\":\"Firedrill\",\"url\":\"https://docs.firedrill.run\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/firedrill/sWeyeTM66Pjv8_YB/logo/light.svg?fit=max\u0026auto=format\u0026n=sWeyeTM66Pjv8_YB\u0026q=85\u0026s=608d25ab5f97ad95a8d3e8c9ced0cb6d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.firedrill.run#website\",\"name\":\"Firedrill\",\"url\":\"https://docs.firedrill.run\",\"publisher\":{\"@id\":\"https://docs.firedrill.run/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.firedrill.run/guides/connect-agent#webpage\",\"url\":\"https://docs.firedrill.run/guides/connect-agent\",\"name\":\"Connect your agent to synthetic Tools\",\"description\":\"Route only the dependencies your agent uses into scoped synthetic instances.\",\"dateModified\":\"2026-10-18T11:28:24.819Z\",\"isPartOf\":{\"@id\":\"https://docs.firedrill.run#website\"},\"breadcrumb\":{\"@id\":\"https://docs.firedrill.run/guides/connect-agent#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.firedrill.run/guides/connect-agent#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Synthetic Tools\",\"item\":\"https://docs.firedrill.run/guides/install-tools\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Connect your agent to synthetic Tools\",\"item\":\"https://docs.firedrill.run/guides/connect-agent\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.firedrill.run/guides/connect-agent#article\",\"headline\":\"Connect your agent to synthetic Tools\",\"name\":\"Connect your agent to synthetic Tools\",\"description\":\"Route only the dependencies your agent uses into scoped synthetic instances.\",\"url\":\"https://docs.firedrill.run/guides/connect-agent\",\"mainEntityOfPage\":{\"@id\":\"https://docs.firedrill.run/guides/connect-agent#webpage\"},\"dateModified\":\"2026-10-18T11:28:24.819Z\",\"publisher\":{\"@id\":\"https://docs.firedrill.run/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.firedrill.run#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Firedrill\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Firedrill","nav":{"global":{"anchors":[{"anchor":"Open Firedrill","icon":"arrow-up-right-from-square","href":"https://app.firedrill.run"}]},"tabs":[{"tab":"Documentation","icon":"book-open","groups":[{"group":"Get started","pages":[{"title":"Firedrill","href":""},{"title":"Run your first simulation","href":"/quickstart"},{"title":"AI agent examples by framework and stack","sidebarTitle":"Framework examples","href":"/guides/examples"},{"title":"How Firedrill works","href":"/concepts/how-it-works"},{"title":"Choose your workflow","href":"/reference/choose-a-workflow"}]},{"group":"Coding agents","pages":[{"title":"Coding-agent setup","href":"/guides/coding-agents"},{"title":"Operator MCP","href":"/guides/control-mcp"},{"title":"Connect your agent's real entry point","href":"/guides/example-agents"}]},{"group":"Simulations and evidence","pages":[{"title":"Simulate your application","href":"/guides/simulate-and-test"},{"title":"Run your first simulation","href":"/guides/run-first-drill"},{"title":"Repeat and coordinate simulations","href":"/guides/simulations"},{"title":"Vary scenario inputs","href":"/guides/scenario-matrices"},{"title":"Save and reuse scenarios","href":"/guides/reusable-scenarios"},{"title":"Score meaning and enforce exact requirements","href":"/guides/scoring"},{"title":"Compare target and model configurations","href":"/guides/model-benchmarks"},{"title":"Capture a browser workflow","href":"/guides/browser-testing"},{"title":"Attach logs, files, and media","href":"/guides/capture"},{"title":"Results and evidence","href":"/guides/results"}]},{"group":"Synthetic Tools","pages":[{"title":"Start synthetic Tools","description":"Choose one or many controlled dependencies, starting data, and a lifetime.","href":"/guides/install-tools"},{"title":"Connect your agent to synthetic Tools","href":"/guides/connect-agent"},{"title":"Tool browser apps","description":"Inspect and manually use a synthetic Tool's actual instance data.","href":"/guides/tool-apps"},{"title":"Starting data","href":"/guides/starting-data"},{"title":"Save and reuse datasets","href":"/guides/saved-datasets"},{"title":"Control state and time","href":"/guides/control-state-time"},{"title":"Tool lifetime and history","href":"/guides/sessions"},{"title":"Author a synthetic Tool","href":"/guides/create-tool-package"}]},{"group":"Automation","pages":[{"title":"Run simulations in CI","href":"/guides/ci"},{"title":"Pull-request simulations","href":"/guides/pull-request-ci"},{"title":"Command and HTTP agents","href":"/guides/callbacks"}]},{"group":"Web app and access","pages":[{"title":"Use the web app","href":"/guides/web-app"},{"title":"Projects and environments","href":"/guides/projects-builds"},{"title":"Team access and machine credentials","href":"/guides/team"},{"title":"Security and data boundaries","href":"/guides/security"}]},{"group":"Core concepts","pages":[{"title":"Synthetic Tools","href":"/concepts/tools"},{"title":"Isolated state","href":"/concepts/world-state"},{"title":"Scenarios","href":"/concepts/scenarios"},{"title":"Tool access","href":"/concepts/actors-personas"},{"title":"Scenarios, batches, and runs","href":"/concepts/drills-runs"},{"title":"Evidence and reset","href":"/concepts/evidence-reset"}]},{"group":"Files and reference","pages":[{"title":"Simulation files","href":"/guides/project-files"},{"title":"Project structure","href":"/reference/project-structure"},{"title":"Tool contract","href":"/reference/tool-contract"},{"title":"Glossary","href":"/reference/glossary"},{"title":"Troubleshooting","href":"/reference/troubleshooting"}]}]},{"tab":"CLI","icon":"square-terminal","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"SDKs","icon":"code","pages":[{"title":"SDKs","href":"/sdk/overview"}]},{"tab":"API reference","icon":"brackets-curly","pages":[{"title":"API reference","href":"/api-reference/overview"}]}]},"basePath":"","title":"Connect your agent to synthetic Tools - Firedrill","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}