from browser_use import Tools, Agent, ActionResulttools = Tools()@tools.action(description='Ask human for help with a question')async def ask_human(question: str) -> ActionResult: answer = input(f'{question} > ') return ActionResult(extracted_content=f'The human responded with: {answer}')
agent = Agent(task='...', llm=llm, tools=tools)
description(required) - What the tool does, the LLM uses this to decide when to call it.
allowed_domains - List of domains where tool can run (e.g. ['*.example.com']), defaults to all domains
The Agent fills your function parameters based on their names, type hints, & defaults.
Common Pitfall: Parameter names must match exactly! Use browser_session: BrowserSession (not browser: Browser).
The agent injects special parameters by name matching, so using incorrect names will cause your tool to fail silently.
See Available Objects below for the correct parameter names.
The Python library can also import tools from an external MCP server.
This extends a Browser Use agent; it is different from running Browser Use as an MCP server.Install uv and Browser Use, and set BROWSER_USE_API_KEY for the agent’s model.
Warm the reference time server’s package cache before connecting:
tool_filter uses the server’s original names. prefix changes the names the agent sees and avoids collisions with built-in actions, which remain available.
Keep the connection open until the agent finishes, then disconnect it. Create a fresh client for a new run.The current client launches local stdio servers, has a roughly 10-second connection budget, and reads one tools/list response. It does not yet discover tools on later catalog pages or connect directly to HTTP/SSE endpoints.
Only run trusted servers: their subprocesses execute on your machine, and their tools may have side effects.
The time lookup itself needs no model key; running the agent above uses your configured model and may incur model charges.
You can use browser_session to directly interact with page elements using CSS selectors:
from browser_use import Tools, Agent, ActionResult, BrowserSessiontools = Tools()@tools.action(description='Click the submit button using CSS selector')async def click_submit_button(browser_session: BrowserSession): # Get the current page page = await browser_session.must_get_current_page() # Get element(s) by CSS selector elements = await page.get_elements_by_css_selector('button[type="submit"]') if not elements: return ActionResult(extracted_content='No submit button found') # Click the first matching element await elements[0].click() return ActionResult(extracted_content='Submit button clicked!')
Available methods on Page:
get_elements_by_css_selector(selector: str) - Returns list of matching elements
get_element_by_prompt(prompt: str, llm) - Returns element or None using LLM
must_get_element_by_prompt(prompt: str, llm) - Returns element or raises error
import jsonfrom pydantic import BaseModel, Fieldfrom browser_use import Toolstools = Tools()class Cars(BaseModel): name: str = Field(description='The name of the car, e.g. "Toyota Camry"') price: int = Field(description='The price of the car as int in USD, e.g. 25000')@tools.action(description='Save cars to file')def save_cars(cars: list[Cars]) -> str: with open('cars.json', 'w') as f: json.dump(cars, f) return f'Saved {len(cars)} cars to file'task = "find cars and save them to file"
@tools.action( description='Fill out banking forms', allowed_domains=['https://mybank.com'])def fill_bank_form(account_number: str) -> str: # Only works on mybank.com return f'Filled form for account {account_number}'
For a comprehensive example of custom tools with Playwright integration, see:
Playwright Integration ExampleThis shows how to create custom actions that use Playwright’s precise browser automation alongside Browser-Use.
from browser_use import Tools, ActionResult, Browser@tools.action('My action')def my_action(browser: Browser) -> ActionResult: # WRONG! # This will NOT receive the browser session pass
from browser_use import Tools, ActionResult, BrowserSession@tools.action('My action')async def my_action(browser_session: BrowserSession) -> ActionResult: # CORRECT! page = await browser_session.must_get_current_page() # Now you have access to the browser return ActionResult(extracted_content='Done')
Use browser_session: BrowserSession - not browser: Browser
Use async functions - recommended for consistency with browser operations
Return ActionResult - not plain strings (though strings work, ActionResult provides more control)
Parameter names must match exactly - see Available Objects for the full list of injectable parameters
Was this page helpful?
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Browser Use","description":"Browser Use Cloud hosts stealth browsers for AI agents: a custom Chromium you drive over CDP with Playwright, Puppeteer, or the browser-use library. From $0.02 per browser-hour, with residential proxies and CAPTCHA solving. These docs also cover the Cloud Agent API and the open-source browser-use Python library.","colors":{"primary":"#0F1011","light":"#F7F8F8","dark":"#F7F8F8"},"logo":{"light":"https://mintcdn.com/browseruse-0aece648/lNAyHi2yxyXHwQ6v/logo/light.svg?fit=max\u0026auto=format\u0026n=lNAyHi2yxyXHwQ6v\u0026q=85\u0026s=9ea94023eec71de8832c469f0d35b49e","dark":"https://mintcdn.com/browseruse-0aece648/lNAyHi2yxyXHwQ6v/logo/dark.svg?fit=max\u0026auto=format\u0026n=lNAyHi2yxyXHwQ6v\u0026q=85\u0026s=711fa3bb6b312e888023b697db9112be","href":"/cloud/quickstart"},"favicon":"https://mintcdn.com/browseruse-0aece648/SCqllIu8ldiHkXMM/favicon.svg?fit=max\u0026auto=format\u0026n=SCqllIu8ldiHkXMM\u0026q=85\u0026s=f66b99bbb2c66df4700d1d1dedcb9f02","api":{"playground":{"display":"interactive"},"examples":{"languages":["javascript","curl","python"]}},"appearance":{"default":"dark"},"background":{"color":{"light":"#FFFFFF","dark":"#08090A"}},"navbar":{"links":[{"href":"https://github.com/browser-use/browser-use","label":"GitHub"},{"href":"https://link.browser-use.com/discord","label":"Discord"}],"primary":{"type":"button","label":"Dashboard","href":"https://cloud.browser-use.com"}},"footer":{"socials":{"x":"https://x.com/browser_use","github":"https://github.com/browser-use/browser-use","linkedin":"https://linkedin.com/company/browser-use"}},"fonts":{"family":"Inter"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":"css-variables"},"latex":true},"integrations":{"posthog":{"apiKey":"phc_F8JMNjW1i2KbGUTaW1unnDdLSPCoyc52SGRU0JecaUh","apiHost":"https://eu.i.posthog.com"}},"contextual":{"options":["copy","chatgpt","claude","mcp","add-mcp","cursor","vscode"],"display":"header"},"markdown":{"instructions":["Concurrency in one line: new projects get 10 concurrent browsers at $0; a $100 one-time top-up (non-expiring credits, no subscription) unlocks 50 concurrent, so 50 browsers for one hour cost $1 plus traffic; $1,000 / $5,000 / $25,000 total paid unlocks 250 / 500 / 1,000. Details below and at https://docs.browser-use.com/cloud/guides/concurrency.md.","Use https://docs.browser-use.com/llms.txt and its linked .md pages for current documentation. The managed full bundle is https://docs.browser-use.com/.well-known/llms-full.txt and can be cached for up to 24 hours. Do not use the obsolete /cloud/llms*.txt or /open-source/llms*.txt static exports.","Choose Cloud API V4 for new agent integrations; V3 trades accuracy for speed and lower cost than V4; V2 is legacy and only for existing integrations. Keep V3 examples explicitly versioned. The open-source browser-use library and hosted browser-use-sdk have different APIs.","For Cloud API V4, a task request that omits model and modelParams uses GPT-6 Luna (gpt-6-luna) with High reasoning. Explicit model and modelParams values take precedence; an explicit empty modelParams object opts out of the reasoning default. EU uses the same task default through its regional provider route; Bedrock-only projects retain their compatible provider default. For latency-sensitive tasks set model to bu-ultrafast (bu-fast for more reasoning per step); these presets reject modelParams. See https://docs.browser-use.com/cloud/agent/ultrafast.md.","Cloud authentication uses X-Browser-Use-API-Key, without a Bearer prefix. Install or upgrade browser-use-sdk and use its explicit v4 import for V4. Check the published OpenAPI reference for request fields; do not invent SDK support for new fields.","Cloud concurrency and HTTP request rate are separate. Read GET /api/v2/billing/account for the key’s projectId, concurrentSessionLimit, activeSessionCount, and credit balance, including when using V4. Keys in one project share capacity and credits; rateLimit is a legacy concurrency alias, not requests per second.","Keep the highest applicable existing, legacy-plan, and spend-tier concurrency grant. Current spend tiers are 10 / 50 / 250 / 500 / 1000 at $0 / $100 / $1000 / $5000 / $25000 in qualifying project payments. Legacy or externally billed projects can follow different billing paths; trust the account limit. See https://docs.browser-use.com/cloud/guides/concurrency.md.","HTTP rate limits have two layers. Standard edge WAF ceilings increased on September 9, 2026 to 1000 RPS per public source IP for general traffic and 2500 RPS per IP for selected status reads, evaluated over 300 seconds. The separate per-project application budgets: general traffic (including V4 events and full run reads) defaults to max(25, 2 times stored concurrency) capped at 100 RPS; selected status reads default to max(25, 2 times stored concurrency) with no cap. The two are counted independently. Project overrides and account-specific edge rules can differ. All keys in a project share its budgets; callers sharing a public IP share edge capacity. See https://docs.browser-use.com/cloud/guides/concurrency.md.","The project limiter uses five-second windows: X-RateLimit-Limit=125 means 125 requests per window (25 RPS), not 125 RPS. Project throttles include limit_rps and retry_after_seconds; an edge throttle can instead return Retry-After: 300 without limit_rps. Honor the returned Retry-After. Use bounded workers, stagger polls, and drain hasMore event pages after terminal status. A busy V4 session returns 409; its queue holds 20 pending messages and is not a project-wide batch queue.","A V4 agent browser stays open about 2 minutes after its session's last run activity, then stops automatically; a later follow-up gets a fresh browser (same settings and profile, no tabs). Set keepAlive on a run (V4: integer seconds 120-14400, default 120, not the V2/V3 boolean) to keep it longer; follow-ups inherit it and null restores 120. Free-tier and ZDR runs always use 120. Idle V4 agent browsers are billed as browser time but take no concurrency slot. A follow-up that reuses the open browser emits browser.reattached instead of browser.ready. Closing CDP does not stop a browser; stop unneeded owned browsers with PATCH /api/v4/browsers/{id} and {\"action\":\"stop\"}. A client wait timeout does not cancel the server-side run.","Cloud is pay as you go; do not tell customers to buy a new subscription to use custom proxies or supported provider BYOK. Usage funding and model eligibility still apply. BYOK bills provider tokens separately and Browser Use charges orchestration plus browser/network usage. See https://docs.browser-use.com/cloud/guides/billing.md.","Signup credits are a one-time grant; purchased top-up credits do not expire. Check the API key’s project before diagnosing missing credits. API-key monthly spending caps are soft limits, not a strict prepaid wallet; concurrent or already-running work can exceed them. Auto recharge has separate trigger and purchase amounts and can charge immediately when enabled below the threshold. Use https://browser-use.com/pricing for current rates.","Box and Bux are retired. Do not recommend their SDKs, sandbox quotas, or subscription plans. Use the Cloud Agent or Browser Infrastructure guides.","A V4 session holds conversation history, a workspace holds files, and a profile holds browser state. These IDs and V3/V4 workspace namespaces are not interchangeable. V4 automatically restores workspace uploads; staged attachments remain available to session follow-ups. Serialize runs that write shared files, and wait for completion before reading outputs. See https://docs.browser-use.com/cloud/agent/workspaces.md.","API browser recording defaults to off. Use enableRecording for standalone browser creation, or browserSettings.record for an agent run. Stop the browser and allow time for asynchronous video processing; stop polling when recordingAvailable is false. Live preview is for an active browser. Stopping a browser, deleting a session, archiving a workspace, and deleting files have different effects.","Use model-specific reasoning values. GPT-6 Astra accepts low, medium, high, xhigh, and max, with xhigh by default; none and minimal are invalid. Use the public REST schema when installed SDK types lag new fields. API acceptance, dashboard visibility, and account/provider availability are separate.","For open-source browser-use, is_done only reports a terminal done action. is_successful is the agent-reported outcome; verify important external actions independently. Cloud timeout, API client timeout, model timeout, and task completion are separate concepts.","For failed requests, use https://docs.browser-use.com/cloud/guides/troubleshooting.md. Inspect the full error and project before retrying or adding credits. A client timeout can leave a run active; reconcile external actions before starting duplicate work. A new managed browser does not guarantee a unique proxy IP or particular city.","V4 secretBindings.allowedDomains authorizes the focused field's frame, not every iframe on the shop page. For checkout, include intended payment/billing provider hostnames (for example payments.bigcommerce.com). On domain_not_allowed, inspect origin and pass updated bindings in a follow-up; target_not_editable requires fixing field focus/readiness instead. See https://docs.browser-use.com/cloud/guides/secrets.md.","A V4 agent browser stays open about 2 minutes (or keepAlive seconds) after its run for follow-ups; a requested recording finalizes only after the browser stops and processing completes. Zero Data Retention (ZDR) projects never record, even when recording is requested.","If you hit an issue you cannot explain, email contact@browser-use.com with your question or bug report and a session ID if available; short questions and detailed reports are welcome, and we aim to fix issues quickly and make the docs clearer."]},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"browseruse-0aece648","hasAudioNarration":false,"actualSubdomain":"browseruse-0aece648","customDomains":["docs.browser-use.com"],"gitSource":{"type":"github","owner":"browser-use","repo":"sdk","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae626c7c23d1566bdfb8aaf","collectionId":"eb31ffb3-a1f9-4836-866a-0c58d5b7c545","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae626c7c23d1566bdfb8aaf"},"feedback":{"edits":false,"thumbs":true,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae626c7c23d1566bdfb8aaf","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Cloud","count":184},{"language":"default","tag":"Endpoints","count":127},{"language":"default","tag":"Open Source","count":57},{"language":"default","tag":"API v4","count":53},{"language":"default","tag":"Cloud SDK","count":51},{"language":"default","tag":"API v2","count":47},{"language":"default","tag":"API v3","count":33},{"language":"default","tag":"Sessions","count":29},{"language":"default","tag":"More","count":24},{"language":"default","tag":"Pillars","count":24}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* cyrillic-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrodmgPn.woff2) format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* cyrillic */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrMdmgPn.woff2) format('woff2');\n unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* symbols2 */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFg08vz7ehw.woff2) format('woff2');\n unicode-range: U+2000-2001, U+2004-2008, U+200A, U+23B8-23BD, U+2500-259F;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrgdmgPn.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrkdmgPn.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Geist Mono';\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/geistmono/v6/or3nQ6H-1_WfwkMZI_qYFrcdmg.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n:root{--gray-50:247 248 248;--gray-100:240 241 243;--gray-200:227 229 232;--gray-300:208 214 224;--gray-400:138 143 152;--gray-500:107 111 118;--gray-600:74 77 83;--gray-700:52 54 59;--gray-800:35 37 42;--gray-900:24 25 27;--gray-950:15 16 17;--bu-accent:#fe750e;--bu-fg:#0f1011;--bu-text:#3c4149;--bu-muted:#6b6f76;--bu-border:rgba(15, 16, 17, 0.09);--bu-border-strong:rgba(15, 16, 17, 0.18);--bu-surface:#f8f9fa;--bu-hover:rgba(15, 16, 17, 0.045);--bu-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--bu-mono:\"Geist Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--mint-background:transparent;--mint-foreground:#0f1011;--mint-token-keyword:#5b6068;--mint-token-function:#0f1011;--mint-token-constant:#0f1011;--mint-token-parameter:#3c4149;--mint-token-punctuation:#6b6f76;--mint-token-comment:#6e737b;--mint-token-string:#b93d0a;--mint-token-string-expression:#b93d0a;--mint-token-link:#b93d0a}html.dark{--bu-fg:#f7f8f8;--bu-text:#d0d6e0;--bu-muted:#8a8f98;--bu-border:rgba(255, 255, 255, 0.08);--bu-border-strong:rgba(255, 255, 255, 0.16);--bu-surface:#0f1011;--bu-hover:rgba(255, 255, 255, 0.055);--mint-foreground:#f7f8f8;--mint-token-keyword:#8a8f98;--mint-token-function:#ffffff;--mint-token-constant:#e6e8ea;--mint-token-parameter:#d0d6e0;--mint-token-punctuation:#8a8f98;--mint-token-comment:#7c818a;--mint-token-string:#ff9a52;--mint-token-string-expression:#ff9a52;--mint-token-link:#ff9a52}:is(pre, code)[language=bash],:is(pre, code)[language=sh],:is(pre, code)[language=shell],:is(pre, code)[language=shellscript],:is(pre, code)[language=zsh]{--mint-token-string:var(--mint-token-parameter)}html{--sidebar-width:18rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--bu-sans);font-feature-settings:\"cv01\",\"ss03\"}::selection{background:rgba(254,117,14,.28)}#page-title{color:var(--bu-fg);font-size:2rem;line-height:1.2;font-weight:590;letter-spacing:-.02em}#header .breadcrumb-item,#header .breadcrumb-item a,#header .eyebrow{color:var(--bu-muted)!important;font-size:13px;font-weight:450;letter-spacing:0;text-transform:none}#header .breadcrumb-item a:hover,#navbar .navbar-link a:hover,.code-block-copy-button button:hover svg,.toc-item a:hover,.toc-item[data-active]>a,[data-component-part=code-group-tab-bar] [role=tab]:hover,[data-component-part=code-group-tab-bar] [role=tab][aria-selected=true],[data-testid=copy-code-button]:hover svg{color:var(--bu-fg)!important}@media (max-width:1023px){#header .eyebrow,#header nav[aria-label=Breadcrumb]{display:none}}#header .prose{color:var(--bu-muted);font-size:1rem;line-height:1.6}.mdx-content{color:var(--bu-text);font-size:15px;line-height:1.6}.mdx-content :is(p, [data-as=\"p\"], li){font-size:15px;line-height:1.6}.mdx-content :is(h1, h2, h3, h4, strong, th){color:var(--bu-fg)}.mdx-content h2{font-size:1.375rem;line-height:1.3;font-weight:590;letter-spacing:-.012em}.mdx-content h3{font-size:1.0625rem;line-height:1.4;font-weight:590;letter-spacing:-.006em}.mdx-content h4{font-size:15px;font-weight:590}.mdx-content strong{font-weight:590}.mdx-content a:not(.card):not([class*=card]):not(.not-prose a){color:var(--bu-fg);font-weight:inherit;border-bottom:0;text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:var(--bu-border-strong);transition:color 120ms ease,text-decoration-color 120ms ease}.mdx-content a:not(.card):not([class*=card]):not(.not-prose a):hover{color:var(--bu-accent);text-decoration-color:var(--bu-accent)}.mdx-content :not(pre)>code{font-family:var(--bu-mono);font-size:.86em;font-weight:450;color:var(--bu-fg);background:var(--bu-hover);border:0;border-radius:4px;padding:.12em .32em;word-break:normal;overflow-wrap:normal}.mdx-content :not(pre)>code::after,.mdx-content :not(pre)>code::before{content:none}.mdx-content :is(ul, ol)>li::marker{color:var(--bu-muted)}.code-block,.code-group{border-radius:8px!important;border:1px solid var(--bu-border)!important;background:var(--bu-surface)!important;--tw-ring-color:transparent!important;box-shadow:none!important;padding:0!important}.code-group .code-block{border:0!important;background:0 0!important}.callout [data-component-part=callout-content] :is(strong, code, a),.codeblock-dark :is(.text-gray-50, .text-white, .text-gray-300){color:var(--bu-fg)!important}[data-component-part=code-block-root]{border-radius:0 0 8px 8px!important;background:0 0!important}.code-block>[data-component-part=code-block-root]{border-radius:8px!important}.code-block code,.code-block pre,.code-group code,.code-group pre{font-family:var(--bu-mono)!important;font-size:13px!important;line-height:22px!important}@media (max-width:639px){.code-block code,.code-block pre,.code-group code,.code-group pre{font-size:12px!important;line-height:20px!important}}.code-block-fade-overlay{--fade-color-light:#f8f9fa!important;--fade-color-dark:#0f1011!important}[data-component-part=code-group-tab-bar]{border-bottom:1px solid var(--bu-border);background:0 0;min-height:40px}[data-component-part=code-group-tab-bar] [role=tab]{color:var(--bu-muted)!important;font-size:13px;font-weight:500;margin-top:0!important;margin-bottom:0!important}[data-component-part=code-group-tab-bar] [role=tab]>div.absolute{background-color:var(--bu-fg)!important;height:1px;bottom:-5px}[data-component-part=code-group-tab-bar] [role=tab]>div:first-child{background:0 0!important;color:inherit!important}#ask-assistant-code-block-button,[data-floating-buttons] [aria-label*=ssistant]{display:none!important}.card,.code-block-copy-button button,[data-testid=copy-code-button]{background:0 0!important}.card{border-radius:10px!important;border:1px solid var(--bu-border)!important;transition:border-color 150ms ease,background-color 150ms ease}.card:hover{border-color:var(--bu-border-strong)!important;background:var(--bu-surface)!important}.code-block-copy-button svg,[data-component-part=card-icon],[data-testid=copy-code-button] svg{color:var(--bu-muted)!important}[data-component-part=card-icon] svg{background-color:var(--bu-muted)!important;width:20px!important;height:20px!important}.card:hover [data-component-part=card-icon] svg{background-color:var(--bu-fg)!important}[data-component-part=card-title]{color:var(--bu-fg)!important;font-weight:590!important;letter-spacing:-.006em;font-size:15px!important}[data-component-part=card-content]{color:var(--bu-muted)!important;font-size:14px!important;line-height:1.55!important}.callout{border-radius:8px!important;border:1px solid var(--bu-border)!important;background:var(--bu-surface)!important;padding:14px 16px!important}.callout [data-component-part=callout-content]{color:var(--bu-text)!important;font-size:14px;line-height:1.6}.callout[data-callout-type=warning] [data-component-part=callout-icon]{color:#f5a524}.callout[data-callout-type=danger] [data-component-part=callout-icon]{color:#f04438}.callout[data-callout-type=check] [data-component-part=callout-icon],.callout[data-callout-type=tip] [data-component-part=callout-icon]{color:#3ecf8e}.callout:is([data-callout-type=\"note\"], [data-callout-type=\"info\"]) [data-component-part=callout-icon]{color:var(--bu-muted)}.mdx-content table{font-size:14px;line-height:1.55;border-collapse:collapse}.mdx-content th{font-size:13px;font-weight:510;color:var(--bu-muted)!important;border-bottom:1px solid var(--bu-border-strong)!important}.mdx-content td{border-bottom:1px solid var(--bu-border)!important;vertical-align:top}.mdx-content td code,.mdx-content th{white-space:nowrap}.mdx-content td[data-numeric]{font-variant-numeric:tabular-nums;white-space:nowrap}.mdx-content table td{min-width:0}.mdx-content table :is(th, td):not(:first-child){padding-left:12px}.mdx-content [data-component-part=scroll-area-viewport]:has(table){-webkit-mask-image:linear-gradient(to right,#000 calc(100% - min(var(--scroll-area-overflow-x-end, 0px),48px)),transparent);mask-image:linear-gradient(to right,#000 calc(100% - min(var(--scroll-area-overflow-x-end, 0px),48px)),transparent)}:is(#sidebar-content, #mobile-nav) li>:is(a, button)>div:first-child>svg[style*=mask]{background-color:var(--bu-muted)!important;transition:background-color 120ms ease}:is(#sidebar-content, #mobile-nav) a[aria-current=page]>div:first-child>svg[style*=mask],:is(#sidebar-content, #mobile-nav) li>:is(a, button):hover>div:first-child>svg[style*=mask],:is(#sidebar-content, #mobile-nav) li[data-active]>a>div:first-child>svg[style*=mask]{background-color:var(--bu-fg)!important}#sidebar-content [data-component-part=scroll-area-viewport]{padding-right:12px}#sidebar-content li>a{padding-right:8px}#sidebar-content li>:is(a, button){column-gap:10px}#sidebar-content .sidebar-group-header{color:var(--bu-muted)!important;font-size:12px;font-weight:510;letter-spacing:0;text-transform:none}#sidebar-content li>a,#sidebar-content li>button{color:var(--bu-muted);font-size:14px;border-radius:6px;text-shadow:none!important}#sidebar-content li>a:hover,#sidebar-content li>button:hover{color:var(--bu-fg)!important;background:var(--bu-hover)}#sidebar-content a[aria-current=page],#sidebar-content li[data-active]>a{position:relative;color:var(--bu-fg)!important;background:var(--bu-hover)!important;font-weight:510}#sidebar-content a[aria-current=page]::before{content:\"\";position:absolute;left:0;top:50%;width:2px;height:14px;transform:translateY(-50%);border-radius:2px;background:var(--bu-accent)}#sidebar-content .method-nav-pill span{background:0 0!important;color:var(--bu-muted)!important;font-family:var(--bu-mono);font-weight:500}#table-of-contents .relative>span.rounded-full{display:none}#table-of-contents .toc{border-left:1px solid var(--bu-border)}.toc-item a{color:var(--bu-muted)!important;font-size:13px;text-shadow:none!important}.toc-item[data-active-deepest=true]::before{content:\"\";position:absolute;left:-1px;top:4px;bottom:4px;width:2px;border-radius:2px;background:var(--bu-fg)}#navbar .navbar-link a{border:0!important;background:0 0!important;color:var(--bu-muted)!important;padding:0 10px!important}#navbar a[href].link,#search-bar-entry,#theme-preference-menu-trigger,#topbar-cta-button a{border-radius:8px!important}#navbar a.link{height:32px!important;padding:0 12px!important}#topbar-cta-button a{background:var(--bu-accent)!important;height:32px!important;opacity:1!important}#topbar-cta-button a:hover{background:#ff8a33!important}#topbar-cta-button a span,#topbar-cta-button a svg{color:#0a0a0a!important;font-weight:500}#header #page-context-menu.ml-auto{align-self:flex-start;margin-top:4px}#page-context-menu button,#pagination a{border-radius:8px;border-color:var(--bu-border)!important}#page-context-menu-button{border-radius:8px 0 0 8px!important}#page-context-menu>button:last-child{border-radius:0 8px 8px 0!important}.chat-assistant-floating-input{display:none!important}#pagination a:hover{border-color:var(--bu-border-strong)!important}th{text-align:left}.method-pill{background:var(--bu-hover)!important;color:var(--bu-fg)!important;font-family:var(--bu-mono);font-weight:500!important}.tryit-button{background:var(--bu-fg)!important;color:var(--bu-surface)!important;border-radius:8px!important}.tryit-button svg{background-color:var(--bu-surface)!important}.method-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600;font-family:var(--bu-mono);letter-spacing:.02em;line-height:1.5}.method-get{background-color:rgba(34,197,94,.12);color:#16a34a}.dark .method-get{background-color:rgba(34,197,94,.15);color:#4ade80}.method-post{background-color:rgba(59,130,246,.12);color:#2563eb}.dark .method-post{background-color:rgba(59,130,246,.15);color:#60a5fa}.method-patch{background-color:rgba(234,179,8,.12);color:#ca8a04}.dark .method-patch{background-color:rgba(234,179,8,.15);color:#facc15}.method-delete{background-color:rgba(239,68,68,.12);color:#dc2626}.dark .method-delete{background-color:rgba(239,68,68,.15);color:#f87171}[data-radix-popper-content-wrapper] *{--tw-ring-color:transparent;--tw-ring-offset-color:transparent;--tw-ring-shadow:0 0 #0000;--tw-ring-offset-shadow:0 0 #0000}[data-radix-popper-content-wrapper] *,[data-radix-popper-content-wrapper] [data-highlighted]{outline:0;border-color:transparent;box-shadow:none}"}],"page":{"pagePath":"open-source/customize/tools/add","slug":"/open-source/customize/tools/add","pageMetadata":{"title":"Add Tools","description":"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.","icon":"plus","mode":"wide","href":"/open-source/customize/tools/add"},"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: \"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.\"\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`,em:`em`,li:`li`,ol:`ol`,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:`Examples:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`deterministic clicks`}),`\n`,_jsx(_components.li,{children:`file handling`}),`\n`,_jsx(_components.li,{children:`calling APIs`}),`\n`,_jsx(_components.li,{children:`human-in-the-loop`}),`\n`,_jsx(_components.li,{children:`browser interactions`}),`\n`,_jsx(_components.li,{children:`calling LLMs`}),`\n`,_jsx(_components.li,{children:`get 2fa codes`}),`\n`,_jsx(_components.li,{children:`send emails`}),`\n`,_jsxs(_components.li,{children:[`Playwright integration (see `,_jsx(_components.a,{href:`https://github.com/browser-use/browser-use/blob/main/examples/browser/playwright_integration.py`,children:`GitHub example`}),`)`]}),`\n`,_jsx(_components.li,{children:`…`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Simply add `,_jsx(_components.code,{children:`@tools.action(...)`}),` to your function.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Agent`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`tools `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`@tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`action`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(description`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Ask human for help with a question'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`async`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` ask_human`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-parameter, #a35200)`,\"--shiki-dark\":`var(--mint-token-parameter, #a35200)`},children:`question`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` str`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`) `}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`->`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` answer `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` input`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`f`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`question`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`}`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` > '`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` return`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(extracted_content`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`f`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'The human responded with: `}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`answer`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`}`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`agent `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Agent`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(task`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'...'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`, llm`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`llm, tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`tools)`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`description`})}),` `,_jsx(_components.em,{children:`(required)`}),` - What the tool does, the LLM uses this to decide when to call it.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`allowed_domains`})}),` - List of domains where tool can run (e.g. `,_jsx(_components.code,{children:`['*.example.com']`}),`), defaults to all domains`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The Agent fills your function parameters based on their names, type hints, \u0026 defaults.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Common Pitfall`}),`: Parameter names must match exactly! Use `,_jsx(_components.code,{children:`browser_session: BrowserSession`}),` (not `,_jsx(_components.code,{children:`browser: Browser`}),`).\nThe agent injects special parameters by `,_jsx(_components.strong,{children:`name matching`}),`, so using incorrect names will cause your tool to fail silently.\nSee `,_jsx(_components.a,{href:`#available-objects`,children:`Available Objects`}),` below for the correct parameter names.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`add-tools-from-an-mcp-server`,children:`Add Tools from an MCP Server`}),`\n`,_jsxs(_components.p,{children:[`The Python library can also import tools from an external MCP server.\nThis extends a Browser Use agent; it is different from `,_jsx(_components.a,{href:`/open-source/customize/integrations/mcp-server`,children:`running Browser Use as an MCP server`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Install `,_jsx(_components.a,{href:`https://docs.astral.sh/uv/getting-started/installation/`,children:`uv`}),` and Browser Use, and set `,_jsx(_components.code,{children:`BROWSER_USE_API_KEY`}),` for the agent’s model.\nWarm the reference time server’s package cache before connecting:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`uvx`}),_jsx(_components.span,{style:{color:`var(--mint-token-string, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string, #297a3a)`},children:` mcp-server-time==`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`2026.8.18`}),_jsx(_components.span,{style:{color:`var(--mint-token-string, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string, #297a3a)`},children:` --help`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`25`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`25`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` asyncio`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Agent`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ChatBrowserUse`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Tools`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`mcp`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`client `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` MCPClient`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`async`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` main`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`():`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` tools `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` client `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` MCPClient`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` server_name`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"time\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` command`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"uvx\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` args`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`[`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"mcp-server-time==2026.8.18\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`, `}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"--local-timezone=UTC\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`],`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` try`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` client`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`register_to_tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` tools, tool_filter`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`[`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"get_current_time\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`], prefix`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"time_\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` agent `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Agent`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` task`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`\"Use time_get_current_time to report the current UTC time.\"`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` llm`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`ChatBrowserUse`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`tools,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` agent`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`run`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` finally`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` client`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`disconnect`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`asyncio`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`run`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`main`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`())`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`tool_filter`}),` uses the server’s original names. `,_jsx(_components.code,{children:`prefix`}),` changes the names the agent sees and avoids collisions with built-in actions, which remain available.\nKeep the connection open until the agent finishes, then disconnect it. Create a fresh client for a new run.`]}),`\n`,_jsxs(_components.p,{children:[`The current client launches local stdio servers, has a roughly 10-second connection budget, and reads one `,_jsx(_components.code,{children:`tools/list`}),` response. It does not yet discover tools on later catalog pages or connect directly to HTTP/SSE endpoints.\nOnly run trusted servers: their subprocesses execute on your machine, and their tools may have side effects.\nThe time lookup itself needs no model key; running the agent above uses your configured model and may incur model charges.`]}),`\n`,_jsx(Heading,{level:`2`,id:`available-objects`,children:`Available Objects`}),`\n`,_jsx(_components.p,{children:`Your function has access to these objects:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`browser_session: BrowserSession`})}),` - Current browser session for CDP access`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`cdp_client`})}),` - Direct Chrome DevTools Protocol client`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`page_extraction_llm: BaseChatModel`})}),` - The LLM you pass into agent. This can be used to do a custom llm call here.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`file_system: FileSystem`})}),` - File system access`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`available_file_paths: list[str]`})}),` - Available files for upload/processing`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`has_sensitive_data: bool`})}),` - Whether action contains sensitive data`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`browser-interaction-examples`,children:`Browser Interaction Examples`}),`\n`,_jsxs(_components.p,{children:[`You can use `,_jsx(_components.code,{children:`browser_session`}),` to directly interact with page elements using CSS selectors:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`19`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Agent`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` BrowserSession`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`tools `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`@tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`action`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(description`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Click the submit button using CSS selector'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`async`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` click_submit_button`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-parameter, #a35200)`,\"--shiki-dark\":`var(--mint-token-parameter, #a35200)`},children:`browser_session`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` BrowserSession):`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:` # Get the current page`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` page `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_session`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`must_get_current_page`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:` # Get element(s) by CSS selector`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` elements `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` page`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`get_elements_by_css_selector`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'button[type=\"submit\"]'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` if`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` not`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` elements`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` return`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(extracted_content`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'No submit button found'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:` # Click the first matching element`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` elements`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`[`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`0`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`].`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`click`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` return`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(extracted_content`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Submit button clicked!'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Available methods on `,_jsx(_components.code,{children:`Page`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`get_elements_by_css_selector(selector: str)`}),` - Returns list of matching elements`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`get_element_by_prompt(prompt: str, llm)`}),` - Returns element or None using LLM`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`must_get_element_by_prompt(prompt: str, llm)`}),` - Returns element or raises error`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Available methods on `,_jsx(_components.code,{children:`Element`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`click()`}),` - Click the element`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`type(text: str)`}),` - Type text into the element`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`get_text()`}),` - Get element text content`]}),`\n`,_jsxs(_components.li,{children:[`See `,_jsx(_components.code,{children:`browser_use/actor/element.py`}),` for more methods`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`pydantic-input`,children:`Pydantic Input`}),`\n`,_jsx(_components.p,{children:`You can use Pydantic for the tool parameters:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`17`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`17`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` json`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` pydantic `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` BaseModel`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Field`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Tools`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`tools `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`class`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Cars`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`BaseModel`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` name`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` str`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` =`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Field`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(description`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'The name of the car, e.g. \"Toyota Camry\"'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` price`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` int`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` =`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` Field`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(description`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'The price of the car as int in USD, e.g. 25000'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`@tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`action`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(description`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Save cars to file'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` save_cars`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-parameter, #a35200)`,\"--shiki-dark\":`var(--mint-token-parameter, #a35200)`},children:`cars`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` list`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`[`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`Cars`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`]`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`) `}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`->`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` str`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` with`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` open`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'cars.json'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`, `}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'w'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` as`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` f`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` json`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`dump`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(cars, f)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` return`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` f`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Saved `}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`len`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(cars)`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`}`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` cars to file'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`task `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:` \"find cars and save them to file\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`domain-restrictions`,children:`Domain Restrictions`}),`\n`,_jsx(_components.p,{children:`Limit tools to specific domains:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`@tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`action`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` description`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Fill out banking forms'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:` allowed_domains`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`[`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'https://mybank.com'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` fill_bank_form`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-parameter, #a35200)`,\"--shiki-dark\":`var(--mint-token-parameter, #a35200)`},children:`account_number`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` str`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`) `}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`->`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:` str`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:` # Only works on mybank.com`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` return`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` f`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Filled form for account `}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`{`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`account_number`}),_jsx(_components.span,{style:{color:`var(--mint-token-constant, #171717)`,\"--shiki-dark\":`var(--mint-token-constant, #171717)`},children:`}`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`advanced-example`,children:`Advanced Example`}),`\n`,_jsxs(_components.p,{children:[`For a comprehensive example of custom tools with Playwright integration, see:\n`,_jsx(_components.strong,{children:_jsx(_components.a,{href:`https://github.com/browser-use/browser-use/blob/main/examples/browser/playwright_integration.py`,children:`Playwright Integration Example`})})]}),`\n`,_jsx(_components.p,{children:`This shows how to create custom actions that use Playwright’s precise browser automation alongside Browser-Use.`}),`\n`,_jsx(Heading,{level:`2`,id:`common-pitfalls`,children:`Common Pitfalls`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`The agent injects special parameters `,_jsx(_components.strong,{children:`by name`}),`, not by type. Using incorrect parameter names is the most common cause of tools failing silently.`]})}),`\n`,_jsxs(Heading,{level:`3`,id:`-wrong-using-browser-browser`,children:[`❌ Wrong: Using `,_jsx(_components.code,{children:`browser: Browser`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Browser`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`@tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`action`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'My action'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` my_action`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-parameter, #a35200)`,\"--shiki-dark\":`var(--mint-token-parameter, #a35200)`},children:`browser`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Browser) `}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`->`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult: `}),_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:`# WRONG!`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:` # This will NOT receive the browser session`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` pass`})}),`\n`]})})}),`\n`,_jsxs(Heading,{level:`3`,id:`-correct-using-browser_session-browsersession`,children:[`✅ Correct: Using `,_jsx(_components.code,{children:`browser_session: BrowserSession`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes css-variables css-variables`,style:{backgroundColor:`var(--mint-background)`,\"--shiki-dark-bg\":`var(--mint-background)`,color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`from`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_use `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`import`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` Tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`,`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` BrowserSession`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`@tools`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`action`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'My action'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`async`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` def`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` my_action`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:`(`}),_jsx(_components.span,{style:{color:`var(--mint-token-parameter, #a35200)`,\"--shiki-dark\":`var(--mint-token-parameter, #a35200)`},children:`browser_session`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`:`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` BrowserSession) `}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`->`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` ActionResult: `}),_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:`# CORRECT!`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` page `}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` await`}),_jsx(_components.span,{style:{color:`var(--mint-foreground)`,\"--shiki-dark\":`var(--mint-foreground)`},children:` browser_session`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`.`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:`must_get_current_page`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`var(--mint-token-comment, #666666)`,\"--shiki-dark\":`var(--mint-token-comment, #666666)`},children:` # Now you have access to the browser`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:` return`}),_jsx(_components.span,{style:{color:`var(--mint-token-function, #0068d6)`,\"--shiki-dark\":`var(--mint-token-function, #0068d6)`},children:` ActionResult`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`(extracted_content`}),_jsx(_components.span,{style:{color:`var(--mint-token-keyword, #bd2864)`,\"--shiki-dark\":`var(--mint-token-keyword, #bd2864)`},children:`=`}),_jsx(_components.span,{style:{color:`var(--mint-token-string-expression, #297a3a)`,\"--shiki-dark\":`var(--mint-token-string-expression, #297a3a)`},children:`'Done'`}),_jsx(_components.span,{style:{color:`var(--mint-token-punctuation, #171717)`,\"--shiki-dark\":`var(--mint-token-punctuation, #171717)`},children:`)`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`key-points`,children:`Key Points`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Use `,_jsx(_components.code,{children:`browser_session: BrowserSession`})]}),` - not `,_jsx(_components.code,{children:`browser: Browser`})]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Use `,_jsx(_components.code,{children:`async`}),` functions`]}),` - recommended for consistency with browser operations`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Return `,_jsx(_components.code,{children:`ActionResult`})]}),` - not plain strings (though strings work, `,_jsx(_components.code,{children:`ActionResult`}),` provides more control)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Parameter names must match exactly`}),` - see `,_jsx(_components.a,{href:`#available-objects`,children:`Available Objects`}),` for the full list of injectable parameters`]}),`\n`]})]})}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":{"codeStyling":{"theme":"css-variables"},"config":{},"pageMetadata":{"title":"Add Tools","description":"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.","icon":"plus","mode":"wide","href":"/open-source/customize/tools/add"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Add Tools from an MCP Server","slug":"add-tools-from-an-mcp-server","depth":2,"children":[]},{"title":"Available Objects","slug":"available-objects","depth":2,"children":[]},{"title":"Browser Interaction Examples","slug":"browser-interaction-examples","depth":2,"children":[]},{"title":"Pydantic Input","slug":"pydantic-input","depth":2,"children":[]},{"title":"Domain Restrictions","slug":"domain-restrictions","depth":2,"children":[]},{"title":"Advanced Example","slug":"advanced-example","depth":2,"children":[]},{"title":"Common Pitfalls","slug":"common-pitfalls","depth":2,"children":[{"title":"❌ Wrong: Using browser: Browser","slug":"-wrong-using-browser-browser","depth":3,"children":[]},{"title":"✅ Correct: Using browser_session: BrowserSession","slug":"-correct-using-browser_session-browsersession","depth":3,"children":[]},{"title":"Key Points","slug":"key-points","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"browseruse-0aece648","siteName":"Browser Use","title":"Add Tools - Browser Use","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T03:59:37.828Z","originalFileLocation":"open-source/customize/tools/add.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=\"dark\"}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=\"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Browser Use\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_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/browseruse-0aece648/8n47EHeVma6x-0_k/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add Tools - Browser Use\">\u003cmeta data-mint-head property=\"og:description\" content=\"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Browser Use\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.browser-use.com/open-source/customize/tools/add\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://browseruse-0aece648.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Add+Tools\u0026amp;description=Extend+agents+with+custom+Python+functions.+Add+API+calls%2C+file+operations%2C+or+any+custom+logic+as+agent+tools.\u0026amp;theme=39b08f52a109537219450e5f\u0026amp;signature=427adf95835aed71fe9cc49afdbd0d13f91cecefe724f17419fcf9cefed87299\">\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=\"Add Tools - Browser Use\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://browseruse-0aece648.mintlify.app/_mintlify/api/og/v2?division=Tools\u0026amp;title=Add+Tools\u0026amp;description=Extend+agents+with+custom+Python+functions.+Add+API+calls%2C+file+operations%2C+or+any+custom+logic+as+agent+tools.\u0026amp;theme=39b08f52a109537219450e5f\u0026amp;signature=427adf95835aed71fe9cc49afdbd0d13f91cecefe724f17419fcf9cefed87299\">\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/browseruse-0aece648/8n47EHeVma6x-0_k/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Browser Use\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F1011\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.browser-use.com/open-source/customize/tools/add\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/open-source/customize/tools/add.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.browser-use.com/#organization\",\"name\":\"Browser Use\",\"url\":\"https://docs.browser-use.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/browseruse-0aece648/lNAyHi2yxyXHwQ6v/logo/light.svg?fit=max\u0026auto=format\u0026n=lNAyHi2yxyXHwQ6v\u0026q=85\u0026s=9ea94023eec71de8832c469f0d35b49e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.browser-use.com#website\",\"name\":\"Browser Use\",\"url\":\"https://docs.browser-use.com\",\"publisher\":{\"@id\":\"https://docs.browser-use.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.browser-use.com/open-source/customize/tools/add#webpage\",\"url\":\"https://docs.browser-use.com/open-source/customize/tools/add\",\"name\":\"Add Tools\",\"description\":\"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.\",\"dateModified\":\"2026-10-16T03:59:37.828Z\",\"isPartOf\":{\"@id\":\"https://docs.browser-use.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.browser-use.com/open-source/customize/tools/add#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.browser-use.com/open-source/customize/tools/add#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Customize\",\"item\":\"https://docs.browser-use.com/open-source/customize/agent/basics\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tools\",\"item\":\"https://docs.browser-use.com/open-source/customize/tools/basics\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Add Tools\",\"item\":\"https://docs.browser-use.com/open-source/customize/tools/add\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.browser-use.com/open-source/customize/tools/add#article\",\"headline\":\"Add Tools\",\"name\":\"Add Tools\",\"description\":\"Extend agents with custom Python functions. Add API calls, file operations, or any custom logic as agent tools.\",\"url\":\"https://docs.browser-use.com/open-source/customize/tools/add\",\"mainEntityOfPage\":{\"@id\":\"https://docs.browser-use.com/open-source/customize/tools/add#webpage\"},\"dateModified\":\"2026-10-16T03:59:37.828Z\",\"publisher\":{\"@id\":\"https://docs.browser-use.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.browser-use.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Browser Use\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Browser Use","nav":{"global":null,"products":[{"product":"Cloud","icon":"cloud","color":{"light":"#0F1011","dark":"#F7F8F8"},"pages":[{"title":"Cloud","href":"/cloud/quickstart"}]},{"product":"Open Source","icon":"code","color":{"light":"#0F1011","dark":"#F7F8F8"},"groups":[{"group":"Get Started","pages":[{"title":"Browser Use Open Source","sidebarTitle":"Introduction","icon":"house","href":"/open-source/introduction"},{"title":"Which Browser Use do I need?","sidebarTitle":"Which product?","icon":"signpost","href":"/cloud/which-product"},{"title":"Human Quickstart","icon":"rocket","href":"/open-source/quickstart"},{"title":"Prompts for Vibecoders","icon":"sparkles","href":"/open-source/vibecoding"},{"title":"Supported Models","icon":"cpu","href":"/open-source/supported-models"},{"title":"Model Card: bu-2-0","icon":"id-card","href":"/open-source/bu-2-0-model-card"},{"title":"Browser Use CLI","icon":"terminal","href":"/open-source/browser-use-cli"},{"title":"Browser Use Terminal","icon":"square-terminal","href":"/open-source/browser-use-terminal"}]},{"group":"Customize","pages":[{"group":"Agent","icon":"bot","pages":[{"title":"Configuration","icon":"play","mode":"wide","href":"/open-source/customize/agent/basics"},{"title":"Prompting Guide","icon":"lightbulb","href":"/open-source/customize/agent/prompting-guide"},{"title":"Output Format","icon":"braces","mode":"wide","href":"/open-source/customize/agent/output-format"},{"title":"All Parameters","icon":"sliders-horizontal","mode":"wide","href":"/open-source/customize/agent/all-parameters"}]},{"group":"Browser","icon":"app-window","pages":[{"title":"Configuration","icon":"play","href":"/open-source/customize/browser/basics"},{"title":"Authentication","icon":"key-round","mode":"wide","href":"/open-source/customize/browser/authentication"},{"title":"Real Browser","icon":"monitor","href":"/open-source/customize/browser/real-browser"},{"title":"Remote Browser","icon":"cloud","mode":"wide","href":"/open-source/customize/browser/remote"},{"title":"All Parameters","icon":"sliders-horizontal","mode":"wide","href":"/open-source/customize/browser/all-parameters"}]},{"group":"Tools","icon":"wrench","pages":[{"title":"Overview","icon":"play","mode":"wide","href":"/open-source/customize/tools/basics"},{"title":"Available Tools","description":"Built-in tools — click, type, scroll, extract, navigate, and more. Full list of default agent actions.","icon":"list","mode":"wide","href":"/open-source/customize/tools/available"},{"title":"Add Tools","icon":"plus","mode":"wide","href":"/open-source/customize/tools/add"},{"title":"Remove Tools","description":"Exclude default tools to restrict agent capabilities.","icon":"minus","mode":"wide","href":"/open-source/customize/tools/remove"},{"title":"Response Format","icon":"corner-down-left","mode":"wide","href":"/open-source/customize/tools/response"}]},{"group":"Integrations","icon":"plug","pages":[{"title":"Browser Use toolsets for Claude","icon":"sparkle","sidebarTitle":"Claude","mode":"wide","href":"/open-source/customize/integrations/toolsets-for-claude"},{"title":"OpenAI browser automation with Browser Use","icon":"brain-circuit","sidebarTitle":"OpenAI","href":"/open-source/customize/integrations/openai"},{"title":"MCP Server","icon":"server","href":"/open-source/customize/integrations/mcp-server"}]},{"group":"Legacy","icon":"archive","pages":[{"group":"Actor","icon":"mouse-pointer-click","pages":[{"title":"Basics","icon":"play","mode":"wide","href":"/open-source/legacy/actor/basics"},{"title":"Examples","icon":"code","mode":"wide","href":"/open-source/legacy/actor/examples"},{"title":"All Parameters","icon":"sliders-horizontal","mode":"wide","href":"/open-source/legacy/actor/all-parameters"}]},{"group":"Sandbox","icon":"box","pages":[{"title":"Quickstart","icon":"rocket","href":"/open-source/legacy/sandbox/quickstart"},{"title":"Events","icon":"bell","href":"/open-source/legacy/sandbox/events"},{"title":"All Parameters","icon":"sliders-horizontal","href":"/open-source/legacy/sandbox/all-parameters"}]}]}]},{"group":"Examples","pages":[{"group":"Templates","icon":"layout-template","pages":[{"title":"Fast Agent","icon":"zap","mode":"wide","href":"/open-source/examples/templates/fast-agent"},{"title":"Follow up tasks","icon":"link","mode":"wide","href":"/open-source/examples/templates/follow-up-tasks"},{"title":"Parallel Agents","icon":"copy","href":"/open-source/examples/templates/parallel-browser"},{"title":"Playwright Integration","icon":"code","mode":"wide","href":"/open-source/examples/templates/playwright-integration"},{"title":"Sensitive Data","icon":"eye-off","mode":"wide","href":"/open-source/examples/templates/sensitive-data"},{"title":"Secure Setup","icon":"shield-check","mode":"wide","href":"/open-source/examples/templates/secure"},{"title":"More Examples","icon":"external-link","mode":"wide","href":"/open-source/examples/templates/more-examples"}]},{"group":"Apps","icon":"package","pages":[{"title":"Ad-Use (Ad Generator)","icon":"image","mode":"wide","href":"/open-source/examples/apps/ad-use"},{"title":"Vibetest-Use (Automated QA)","icon":"bug","mode":"wide","href":"/open-source/examples/apps/vibetest-use"},{"title":"News-Use (News Monitor)","icon":"newspaper","mode":"wide","href":"/open-source/examples/apps/news-use"},{"title":"Msg-Use (WhatsApp Sender)","icon":"message-square","mode":"wide","href":"/open-source/examples/apps/msg-use"}]},{"group":"Skills","icon":"wand-sparkles","pages":[{"title":"Overview","icon":"book-open","href":"/open-source/examples/skills/overview"},{"title":"browser-use","icon":"terminal","href":"/open-source/examples/skills/browser-use"},{"title":"cloud","icon":"cloud","href":"/open-source/examples/skills/cloud"},{"title":"open-source","icon":"code","href":"/open-source/examples/skills/open-source"},{"title":"qa","icon":"flask-conical","href":"/open-source/examples/skills/qa"},{"title":"remote-browser","icon":"server","href":"/open-source/examples/skills/remote-browser"},{"title":"x402","icon":"wallet","href":"/open-source/examples/skills/x402"}]}]},{"group":"Development","pages":[{"group":"Contribution","icon":"git-pull-request","pages":[{"title":"Local Development Setup","icon":"laptop","mode":"wide","href":"/open-source/development/setup/local-setup"},{"title":"Contribution Guide","icon":"handshake","mode":"wide","href":"/open-source/development/setup/contribution-guide"}]},{"group":"Advanced","icon":"settings","pages":[{"title":"Lifecycle Hooks","icon":"webhook","mode":"wide","href":"/open-source/customize/hooks"}]},{"group":"Monitoring","icon":"activity","pages":[{"title":"Observability","icon":"eye","mode":"wide","href":"/open-source/development/monitoring/observability"},{"title":"OpenLIT","icon":"chart-line","mode":"wide","href":"/open-source/development/monitoring/openlit"},{"title":"Telemetry","icon":"chart-column","mode":"wide","href":"/open-source/development/monitoring/telemetry"},{"title":"Costs","icon":"circle-dollar-sign","mode":"wide","href":"/open-source/development/monitoring/costs"}]},{"title":"Get Help","icon":"life-buoy","mode":"wide","href":"/open-source/development/get-help"}]}]}]},"basePath":"","title":"Add Tools - Browser Use","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":[],"chunks":[]}