@olib-ai/owl-browser-mcp 2.0.7 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +290 -47
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20369,11 +20369,11 @@ var openapi_default = {
|
|
|
20369
20369
|
info: {
|
|
20370
20370
|
title: "Owl Browser API",
|
|
20371
20371
|
description: "REST API for browser automation with anti-detection capabilities",
|
|
20372
|
-
version: "1.0.
|
|
20372
|
+
version: "1.0.11"
|
|
20373
20373
|
},
|
|
20374
20374
|
servers: [
|
|
20375
20375
|
{
|
|
20376
|
-
url: "http://
|
|
20376
|
+
url: "http://localhost",
|
|
20377
20377
|
description: "Current server"
|
|
20378
20378
|
}
|
|
20379
20379
|
],
|
|
@@ -20486,6 +20486,82 @@ var openapi_default = {
|
|
|
20486
20486
|
}
|
|
20487
20487
|
}
|
|
20488
20488
|
},
|
|
20489
|
+
"/search": {
|
|
20490
|
+
get: {
|
|
20491
|
+
summary: "Browser Search",
|
|
20492
|
+
description: "One-shot web search tool. Creates a new context, navigates to the search engine, waits for results, extracts structured JSON search results (titles, URLs, snippets), and closes the context. Supports Google and DuckDuckGo with pagination.",
|
|
20493
|
+
tags: [
|
|
20494
|
+
"Navigation"
|
|
20495
|
+
],
|
|
20496
|
+
parameters: [
|
|
20497
|
+
{
|
|
20498
|
+
name: "query",
|
|
20499
|
+
in: "query",
|
|
20500
|
+
required: true,
|
|
20501
|
+
schema: {
|
|
20502
|
+
type: "string"
|
|
20503
|
+
},
|
|
20504
|
+
description: "The search query string (e.g., 'best restaurants in NYC', 'python tutorial')"
|
|
20505
|
+
},
|
|
20506
|
+
{
|
|
20507
|
+
name: "provider",
|
|
20508
|
+
in: "query",
|
|
20509
|
+
required: false,
|
|
20510
|
+
schema: {
|
|
20511
|
+
type: "string",
|
|
20512
|
+
enum: [
|
|
20513
|
+
"duckduckgo",
|
|
20514
|
+
"google"
|
|
20515
|
+
]
|
|
20516
|
+
},
|
|
20517
|
+
description: "Search engine provider. 'duckduckgo' uses DuckDuckGo HTML-lite, 'google' uses Google Search. Default: duckduckgo"
|
|
20518
|
+
},
|
|
20519
|
+
{
|
|
20520
|
+
name: "page",
|
|
20521
|
+
in: "query",
|
|
20522
|
+
required: false,
|
|
20523
|
+
schema: {
|
|
20524
|
+
type: "integer"
|
|
20525
|
+
},
|
|
20526
|
+
description: "Page number for paginated results (1-based). Default: 1. For Google: appends &start=((page-1)*10). For DuckDuckGo: appends &s=((page-1)*10)"
|
|
20527
|
+
},
|
|
20528
|
+
{
|
|
20529
|
+
name: "os",
|
|
20530
|
+
in: "query",
|
|
20531
|
+
required: false,
|
|
20532
|
+
schema: {
|
|
20533
|
+
type: "string",
|
|
20534
|
+
enum: [
|
|
20535
|
+
"windows",
|
|
20536
|
+
"macos",
|
|
20537
|
+
"linux"
|
|
20538
|
+
]
|
|
20539
|
+
},
|
|
20540
|
+
description: "Filter profiles by operating system. Options: 'windows', 'macos', 'linux'"
|
|
20541
|
+
},
|
|
20542
|
+
{
|
|
20543
|
+
name: "use_tor",
|
|
20544
|
+
in: "query",
|
|
20545
|
+
required: false,
|
|
20546
|
+
schema: {
|
|
20547
|
+
type: "boolean"
|
|
20548
|
+
},
|
|
20549
|
+
description: "Use TOR proxy for anonymous browsing. Each request gets a unique exit IP. Default: false"
|
|
20550
|
+
}
|
|
20551
|
+
],
|
|
20552
|
+
responses: {
|
|
20553
|
+
"200": {
|
|
20554
|
+
description: "Successful response with structured search results JSON"
|
|
20555
|
+
},
|
|
20556
|
+
"400": {
|
|
20557
|
+
description: "Bad request"
|
|
20558
|
+
},
|
|
20559
|
+
"401": {
|
|
20560
|
+
description: "Unauthorized"
|
|
20561
|
+
}
|
|
20562
|
+
}
|
|
20563
|
+
}
|
|
20564
|
+
},
|
|
20489
20565
|
"/api/execute/browser_create_context": {
|
|
20490
20566
|
post: {
|
|
20491
20567
|
summary: "Browser Create Context",
|
|
@@ -20500,29 +20576,47 @@ var openapi_default = {
|
|
|
20500
20576
|
schema: {
|
|
20501
20577
|
type: "object",
|
|
20502
20578
|
properties: {
|
|
20503
|
-
|
|
20504
|
-
type: "
|
|
20505
|
-
description: "
|
|
20506
|
-
},
|
|
20507
|
-
llm_use_builtin: {
|
|
20508
|
-
type: "boolean",
|
|
20509
|
-
description: "Use the built-in llama-server for LLM inference. When true, uses the bundled local model. Set to false to use an external LLM provider. Default: true"
|
|
20579
|
+
profile_path: {
|
|
20580
|
+
type: "string",
|
|
20581
|
+
description: "Path to a browser profile JSON file (or upload file via multipart/form-data). If the file exists, loads fingerprints, cookies, and settings. If not, creates a new profile and saves it to this path. Encrypted profiles (from browser_download_profile) are automatically detected and decrypted."
|
|
20510
20582
|
},
|
|
20511
|
-
|
|
20583
|
+
os: {
|
|
20512
20584
|
type: "string",
|
|
20513
|
-
description: "
|
|
20585
|
+
description: "Filter profiles by operating system. If set, only profiles matching this OS will be used. Options: 'windows', 'macos', 'linux'",
|
|
20586
|
+
enum: [
|
|
20587
|
+
"windows",
|
|
20588
|
+
"macos",
|
|
20589
|
+
"linux"
|
|
20590
|
+
]
|
|
20514
20591
|
},
|
|
20515
|
-
|
|
20592
|
+
gpu: {
|
|
20516
20593
|
type: "string",
|
|
20517
|
-
description: "
|
|
20594
|
+
description: "Filter profiles by GPU vendor/model. If set, only profiles with matching GPU will be used. Examples: 'nvidia', 'amd', 'intel'"
|
|
20518
20595
|
},
|
|
20519
|
-
|
|
20596
|
+
screen_size: {
|
|
20520
20597
|
type: "string",
|
|
20521
|
-
description: "
|
|
20598
|
+
description: "Screen resolution for the browser context. Format: 'WIDTHxHEIGHT'. If not set, a random screen size is selected from the monitor catalog.",
|
|
20599
|
+
enum: [
|
|
20600
|
+
"1920x1080",
|
|
20601
|
+
"2560x1440",
|
|
20602
|
+
"3440x1440",
|
|
20603
|
+
"3840x2160",
|
|
20604
|
+
"3840x1600",
|
|
20605
|
+
"5120x2160",
|
|
20606
|
+
"5120x1440"
|
|
20607
|
+
]
|
|
20522
20608
|
},
|
|
20523
|
-
|
|
20609
|
+
timezone: {
|
|
20524
20610
|
type: "string",
|
|
20525
|
-
description: "
|
|
20611
|
+
description: "Override browser timezone. IANA timezone format (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo'). If not set, falls back to: 1) proxy-detected timezone (if proxy configured with spoof_timezone), 2) VM profile timezone, 3) system default. This parameter works without proxy configuration."
|
|
20612
|
+
},
|
|
20613
|
+
resource_blocking: {
|
|
20614
|
+
type: "boolean",
|
|
20615
|
+
description: "Enable or disable resource blocking (ads, trackers, analytics). When enabled, blocks requests to known ad networks, trackers, and analytics services. Default: true (enabled)"
|
|
20616
|
+
},
|
|
20617
|
+
agent_signature: {
|
|
20618
|
+
type: "boolean",
|
|
20619
|
+
description: "Enable Web Bot Auth (RFC 9421) request signing for this context. When enabled, every outgoing HTTP request is signed with Ed25519 Signature, Signature-Input, and Signature-Agent headers. Requires OWL_WBA_ENABLED=true and OWL_WBA_CONTACTS set. Default: false"
|
|
20526
20620
|
},
|
|
20527
20621
|
proxy_type: {
|
|
20528
20622
|
type: "string",
|
|
@@ -20580,39 +20674,25 @@ var openapi_default = {
|
|
|
20580
20674
|
type: "string",
|
|
20581
20675
|
description: "Password for Tor control port authentication. Leave empty to use cookie authentication (default) or no auth"
|
|
20582
20676
|
},
|
|
20583
|
-
|
|
20677
|
+
llm_enabled: {
|
|
20584
20678
|
type: "boolean",
|
|
20585
|
-
description: "Enable or disable
|
|
20679
|
+
description: "Enable or disable LLM features for this context. When enabled, allows using AI-powered tools like browser_query_page, browser_summarize_page, and browser_nla. Default: true"
|
|
20586
20680
|
},
|
|
20587
|
-
|
|
20588
|
-
type: "
|
|
20589
|
-
description: "
|
|
20590
|
-
enum: [
|
|
20591
|
-
"windows",
|
|
20592
|
-
"macos",
|
|
20593
|
-
"linux"
|
|
20594
|
-
]
|
|
20681
|
+
llm_use_builtin: {
|
|
20682
|
+
type: "boolean",
|
|
20683
|
+
description: "Use the built-in llama-server for LLM inference. When true, uses the bundled local model. Set to false to use an external LLM provider. Default: true"
|
|
20595
20684
|
},
|
|
20596
|
-
|
|
20685
|
+
llm_endpoint: {
|
|
20597
20686
|
type: "string",
|
|
20598
|
-
description: "
|
|
20687
|
+
description: "External LLM API endpoint URL (e.g., 'https://api.openai.com/v1' for OpenAI). Only used when llm_use_builtin is false"
|
|
20599
20688
|
},
|
|
20600
|
-
|
|
20689
|
+
llm_model: {
|
|
20601
20690
|
type: "string",
|
|
20602
|
-
description: "
|
|
20691
|
+
description: "External LLM model name (e.g., 'gpt-4-vision-preview' for OpenAI). Only used when llm_use_builtin is false"
|
|
20603
20692
|
},
|
|
20604
|
-
|
|
20693
|
+
llm_api_key: {
|
|
20605
20694
|
type: "string",
|
|
20606
|
-
description: "
|
|
20607
|
-
enum: [
|
|
20608
|
-
"1920x1080",
|
|
20609
|
-
"2560x1440",
|
|
20610
|
-
"3440x1440",
|
|
20611
|
-
"3840x2160",
|
|
20612
|
-
"3840x1600",
|
|
20613
|
-
"5120x2160",
|
|
20614
|
-
"5120x1440"
|
|
20615
|
-
]
|
|
20695
|
+
description: "API key for the external LLM provider. Required when using external LLM endpoint"
|
|
20616
20696
|
}
|
|
20617
20697
|
}
|
|
20618
20698
|
}
|
|
@@ -20705,7 +20785,7 @@ var openapi_default = {
|
|
|
20705
20785
|
"/api/execute/browser_navigate": {
|
|
20706
20786
|
post: {
|
|
20707
20787
|
summary: "Browser Navigate",
|
|
20708
|
-
description: "Navigate the browser to a specified URL. This is a non-blocking operation that starts navigation and returns immediately. Use browser_wait_for_network_idle or browser_wait_for_selector to wait for the page to fully load. Supports HTTP, HTTPS, file, and data URLs.",
|
|
20788
|
+
description: "Navigate the browser to a specified URL. This is a non-blocking operation that starts navigation and returns immediately. Use browser_wait_for_network_idle or browser_wait_for_selector to wait for the page to fully load. Supports HTTP, HTTPS, file, and data URLs. When wait_until is set (load, networkidle, fullscroll, domcontentloaded) and the page declares WebMCP tools, the response includes a webmcp_tools array containing the full tool definitions (name, description, inputSchema). Use browser_webmcp_call_tool to execute any of these tools directly.",
|
|
20709
20789
|
tags: [
|
|
20710
20790
|
"General"
|
|
20711
20791
|
],
|
|
@@ -23113,7 +23193,7 @@ var openapi_default = {
|
|
|
23113
23193
|
},
|
|
23114
23194
|
template: {
|
|
23115
23195
|
type: "string",
|
|
23116
|
-
description: "Extraction template name for known site types. Available: 'google_search', 'wikipedia', 'amazon_product', 'github_repo', 'twitter_feed', 'reddit_thread'. Leave empty for auto-detection based on URL"
|
|
23196
|
+
description: "Extraction template name for known site types. Available: 'google_search', 'duckduckgo_search', 'wikipedia', 'amazon_product', 'github_repo', 'twitter_feed', 'reddit_thread'. Leave empty for auto-detection based on URL"
|
|
23117
23197
|
},
|
|
23118
23198
|
selector: {
|
|
23119
23199
|
type: "string",
|
|
@@ -26614,11 +26694,12 @@ var openapi_default = {
|
|
|
26614
26694
|
},
|
|
26615
26695
|
action: {
|
|
26616
26696
|
type: "string",
|
|
26617
|
-
description: "How to automatically handle this dialog type: 'accept' clicks OK/Yes, 'dismiss' clicks Cancel/No, 'accept_with_text' accepts and provides text input (for prompts)",
|
|
26697
|
+
description: "How to automatically handle this dialog type: 'accept' clicks OK/Yes, 'dismiss' clicks Cancel/No, 'accept_with_text' accepts and provides text input (for prompts), 'wait' holds the dialog for manual handling via browser_handle_dialog",
|
|
26618
26698
|
enum: [
|
|
26619
26699
|
"accept",
|
|
26620
26700
|
"dismiss",
|
|
26621
|
-
"accept_with_text"
|
|
26701
|
+
"accept_with_text",
|
|
26702
|
+
"wait"
|
|
26622
26703
|
]
|
|
26623
26704
|
},
|
|
26624
26705
|
prompt_text: {
|
|
@@ -28780,6 +28861,163 @@ var openapi_default = {
|
|
|
28780
28861
|
}
|
|
28781
28862
|
}
|
|
28782
28863
|
}
|
|
28864
|
+
},
|
|
28865
|
+
"/api/execute/browser_webmcp_get_tools": {
|
|
28866
|
+
post: {
|
|
28867
|
+
summary: "Browser Webmcp Get Tools",
|
|
28868
|
+
description: "Get all WebMCP tools declared by the current page via navigator.modelContext.registerTool() or declarative <form toolname> elements. Returns a JSON array of tool definitions with name, description, and inputSchema. Use after navigating to a page to discover available page-level tools.",
|
|
28869
|
+
tags: [
|
|
28870
|
+
"General"
|
|
28871
|
+
],
|
|
28872
|
+
requestBody: {
|
|
28873
|
+
required: true,
|
|
28874
|
+
content: {
|
|
28875
|
+
"application/json": {
|
|
28876
|
+
schema: {
|
|
28877
|
+
type: "object",
|
|
28878
|
+
properties: {
|
|
28879
|
+
context_id: {
|
|
28880
|
+
type: "string",
|
|
28881
|
+
description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
|
|
28882
|
+
}
|
|
28883
|
+
},
|
|
28884
|
+
required: [
|
|
28885
|
+
"context_id"
|
|
28886
|
+
]
|
|
28887
|
+
}
|
|
28888
|
+
}
|
|
28889
|
+
}
|
|
28890
|
+
},
|
|
28891
|
+
responses: {
|
|
28892
|
+
"200": {
|
|
28893
|
+
description: "Successful response"
|
|
28894
|
+
},
|
|
28895
|
+
"400": {
|
|
28896
|
+
description: "Bad request"
|
|
28897
|
+
},
|
|
28898
|
+
"401": {
|
|
28899
|
+
description: "Unauthorized"
|
|
28900
|
+
}
|
|
28901
|
+
}
|
|
28902
|
+
}
|
|
28903
|
+
},
|
|
28904
|
+
"/api/execute/browser_webmcp_call_tool": {
|
|
28905
|
+
post: {
|
|
28906
|
+
summary: "Browser Webmcp Call Tool",
|
|
28907
|
+
description: "Execute a WebMCP tool that was declared by the page. The tool's execute callback runs in the page's JavaScript context. For declarative form tools, this fills form fields with the input values and submits. Returns the tool's result as JSON. Timeout: 30 seconds.",
|
|
28908
|
+
tags: [
|
|
28909
|
+
"General"
|
|
28910
|
+
],
|
|
28911
|
+
requestBody: {
|
|
28912
|
+
required: true,
|
|
28913
|
+
content: {
|
|
28914
|
+
"application/json": {
|
|
28915
|
+
schema: {
|
|
28916
|
+
type: "object",
|
|
28917
|
+
properties: {
|
|
28918
|
+
context_id: {
|
|
28919
|
+
type: "string",
|
|
28920
|
+
description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
|
|
28921
|
+
},
|
|
28922
|
+
tool_name: {
|
|
28923
|
+
type: "string",
|
|
28924
|
+
description: "The name of the WebMCP tool to execute (as registered by the page via navigator.modelContext.registerTool)"
|
|
28925
|
+
},
|
|
28926
|
+
input: {
|
|
28927
|
+
type: "string",
|
|
28928
|
+
description: "JSON object containing input parameters for the tool, matching the tool's inputSchema"
|
|
28929
|
+
}
|
|
28930
|
+
},
|
|
28931
|
+
required: [
|
|
28932
|
+
"context_id",
|
|
28933
|
+
"tool_name"
|
|
28934
|
+
]
|
|
28935
|
+
}
|
|
28936
|
+
}
|
|
28937
|
+
}
|
|
28938
|
+
},
|
|
28939
|
+
responses: {
|
|
28940
|
+
"200": {
|
|
28941
|
+
description: "Successful response"
|
|
28942
|
+
},
|
|
28943
|
+
"400": {
|
|
28944
|
+
description: "Bad request"
|
|
28945
|
+
},
|
|
28946
|
+
"401": {
|
|
28947
|
+
description: "Unauthorized"
|
|
28948
|
+
}
|
|
28949
|
+
}
|
|
28950
|
+
}
|
|
28951
|
+
},
|
|
28952
|
+
"/api/execute/browser_webmcp_refresh_tools": {
|
|
28953
|
+
post: {
|
|
28954
|
+
summary: "Browser Webmcp Refresh Tools",
|
|
28955
|
+
description: "Trigger a re-scan of the page for declarative <form toolname> elements and return the updated tool list. Useful after SPA navigation or dynamic content changes that may have added new form-based tools.",
|
|
28956
|
+
tags: [
|
|
28957
|
+
"General"
|
|
28958
|
+
],
|
|
28959
|
+
requestBody: {
|
|
28960
|
+
required: true,
|
|
28961
|
+
content: {
|
|
28962
|
+
"application/json": {
|
|
28963
|
+
schema: {
|
|
28964
|
+
type: "object",
|
|
28965
|
+
properties: {
|
|
28966
|
+
context_id: {
|
|
28967
|
+
type: "string",
|
|
28968
|
+
description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
|
|
28969
|
+
}
|
|
28970
|
+
},
|
|
28971
|
+
required: [
|
|
28972
|
+
"context_id"
|
|
28973
|
+
]
|
|
28974
|
+
}
|
|
28975
|
+
}
|
|
28976
|
+
}
|
|
28977
|
+
},
|
|
28978
|
+
responses: {
|
|
28979
|
+
"200": {
|
|
28980
|
+
description: "Successful response"
|
|
28981
|
+
},
|
|
28982
|
+
"400": {
|
|
28983
|
+
description: "Bad request"
|
|
28984
|
+
},
|
|
28985
|
+
"401": {
|
|
28986
|
+
description: "Unauthorized"
|
|
28987
|
+
}
|
|
28988
|
+
}
|
|
28989
|
+
}
|
|
28990
|
+
},
|
|
28991
|
+
"/api/execute/browser_webmcp_get_all_tools": {
|
|
28992
|
+
post: {
|
|
28993
|
+
summary: "Browser Webmcp Get All Tools",
|
|
28994
|
+
description: "Get all WebMCP tools across all browser contexts. Returns a JSON object keyed by context_id, with each value being an array of tool definitions. Useful for discovering which pages have registered tools without querying each context individually.",
|
|
28995
|
+
tags: [
|
|
28996
|
+
"General"
|
|
28997
|
+
],
|
|
28998
|
+
requestBody: {
|
|
28999
|
+
required: true,
|
|
29000
|
+
content: {
|
|
29001
|
+
"application/json": {
|
|
29002
|
+
schema: {
|
|
29003
|
+
type: "object",
|
|
29004
|
+
properties: {}
|
|
29005
|
+
}
|
|
29006
|
+
}
|
|
29007
|
+
}
|
|
29008
|
+
},
|
|
29009
|
+
responses: {
|
|
29010
|
+
"200": {
|
|
29011
|
+
description: "Successful response"
|
|
29012
|
+
},
|
|
29013
|
+
"400": {
|
|
29014
|
+
description: "Bad request"
|
|
29015
|
+
},
|
|
29016
|
+
"401": {
|
|
29017
|
+
description: "Unauthorized"
|
|
29018
|
+
}
|
|
29019
|
+
}
|
|
29020
|
+
}
|
|
28783
29021
|
}
|
|
28784
29022
|
}
|
|
28785
29023
|
};
|
|
@@ -28867,7 +29105,12 @@ var MCP_TOOL_WHITELIST = /* @__PURE__ */ new Set([
|
|
|
28867
29105
|
"browser_set_viewport",
|
|
28868
29106
|
"browser_reset_viewport",
|
|
28869
29107
|
// HTTP client
|
|
28870
|
-
"http_request"
|
|
29108
|
+
"http_request",
|
|
29109
|
+
// WebMCP (page-declared tools management)
|
|
29110
|
+
"browser_webmcp_get_tools",
|
|
29111
|
+
"browser_webmcp_call_tool",
|
|
29112
|
+
"browser_webmcp_refresh_tools",
|
|
29113
|
+
"browser_webmcp_get_all_tools"
|
|
28871
29114
|
]);
|
|
28872
29115
|
function convertOpenAPIToMCPTools(schema) {
|
|
28873
29116
|
const tools = [];
|