From 2a5e3089a8803ae4dd5a38ba4d1472102d8e0f8b Mon Sep 17 00:00:00 2001 From: Anderson Martinez Date: Wed, 27 May 2026 10:23:36 -0400 Subject: [PATCH 1/2] chore: update destructiveHint annotations for various tools --- src/tools/agent.ts | 2 ++ src/tools/crawl.ts | 1 + src/tools/download.ts | 1 + src/tools/export.ts | 1 + src/tools/function.ts | 1 + src/tools/map.ts | 1 + src/tools/performance.ts | 1 + src/tools/search.ts | 1 + src/tools/smartscraper.ts | 1 + 9 files changed, 10 insertions(+) diff --git a/src/tools/agent.ts b/src/tools/agent.ts index 75521f8..87413d3 100644 --- a/src/tools/agent.ts +++ b/src/tools/agent.ts @@ -948,6 +948,7 @@ export function registerAgentTools( annotations: { title: 'Load Browserless Skill', readOnlyHint: true, + destructiveHint: false, openWorldHint: false, }, run: async ({ params }) => renderSkill(params.id), @@ -973,6 +974,7 @@ export function registerAgentTools( annotations: { title: 'Browserless Agent', readOnlyHint: false, + destructiveHint: true, openWorldHint: true, }, run: async ({ diff --git a/src/tools/crawl.ts b/src/tools/crawl.ts index 465d655..dbc8087 100644 --- a/src/tools/crawl.ts +++ b/src/tools/crawl.ts @@ -237,6 +237,7 @@ export function registerCrawlTool( annotations: { title: 'Browserless Crawl', readOnlyHint: true, + destructiveHint: false, openWorldHint: true, }, validateUrl: (p) => validateHttpUrl(p.url), diff --git a/src/tools/download.ts b/src/tools/download.ts index f991286..23bad78 100644 --- a/src/tools/download.ts +++ b/src/tools/download.ts @@ -47,6 +47,7 @@ export function registerDownloadTool( annotations: { title: 'Browserless Download', readOnlyHint: false, + destructiveHint: true, openWorldHint: true, }, profileNotFoundMessage: (profile) => diff --git a/src/tools/export.ts b/src/tools/export.ts index 4248890..210a705 100644 --- a/src/tools/export.ts +++ b/src/tools/export.ts @@ -81,6 +81,7 @@ export function registerExportTool( annotations: { title: 'Browserless Export', readOnlyHint: true, + destructiveHint: false, openWorldHint: true, }, validateUrl: (p) => validateHttpUrl(p.url), diff --git a/src/tools/function.ts b/src/tools/function.ts index 85024c2..34570a7 100644 --- a/src/tools/function.ts +++ b/src/tools/function.ts @@ -143,6 +143,7 @@ export function registerFunctionTool( annotations: { title: 'Browserless Function', readOnlyHint: false, + destructiveHint: true, openWorldHint: true, }, profileNotFoundMessage: (profile) => diff --git a/src/tools/map.ts b/src/tools/map.ts index 1558602..9f7938c 100644 --- a/src/tools/map.ts +++ b/src/tools/map.ts @@ -61,6 +61,7 @@ export function registerMapTool( annotations: { title: 'Browserless Map', readOnlyHint: true, + destructiveHint: false, openWorldHint: true, }, validateUrl: (p) => validateHttpUrl(p.url), diff --git a/src/tools/performance.ts b/src/tools/performance.ts index 4b4230c..8a7ecb1 100644 --- a/src/tools/performance.ts +++ b/src/tools/performance.ts @@ -66,6 +66,7 @@ export function registerPerformanceTool( annotations: { title: 'Browserless Lighthouse Performance Audit', readOnlyHint: true, + destructiveHint: false, openWorldHint: true, }, validateUrl: (p) => validateHttpUrl(p.url), diff --git a/src/tools/search.ts b/src/tools/search.ts index 3a68271..e1c7b21 100644 --- a/src/tools/search.ts +++ b/src/tools/search.ts @@ -96,6 +96,7 @@ export function registerSearchTool( annotations: { title: 'Browserless Search', readOnlyHint: true, + destructiveHint: false, openWorldHint: true, }, run: async ({ client, params, log }) => { diff --git a/src/tools/smartscraper.ts b/src/tools/smartscraper.ts index fd6d289..6cc2bac 100644 --- a/src/tools/smartscraper.ts +++ b/src/tools/smartscraper.ts @@ -76,6 +76,7 @@ export function registerSmartScraperTool( annotations: { title: 'Browserless Smart Scraper', readOnlyHint: true, + destructiveHint: false, openWorldHint: true, }, validateUrl: (p) => validateHttpUrl(p.url), From 50ed64a339dbdd826d9c6ccc2d28983fc3d9b7ad Mon Sep 17 00:00:00 2001 From: Anderson Martinez Date: Wed, 27 May 2026 10:30:22 -0400 Subject: [PATCH 2/2] chore: update ChatGPT redirect URI patterns for consistency --- src/config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config.ts b/src/config.ts index 8f685c1..36abcb1 100644 --- a/src/config.ts +++ b/src/config.ts @@ -13,7 +13,8 @@ const DEFAULT_ALLOWED_REDIRECT_URI_PATTERNS = [ 'http://localhost:*', // Claude Desktop, VS Code, Windsurf, and anything else using a local loopback callback 'http://127.0.0.1:*', 'https://claude.ai/api/mcp/auth_callback', // Claude.ai web custom connectors - 'https://chatgpt.com/connector_platform_oauth_redirect', // ChatGPT MCP connector + 'https://chatgpt.com/connector/oauth/*', // ChatGPT / OpenAI Apps SDK connector (current per-connector callback id) + 'https://chatgpt.com/connector_platform_oauth_redirect', // ChatGPT MCP connector (legacy, still honored for already-published apps) 'cursor://anysphere.cursor-mcp/oauth/callback', // Cursor (private-use URI scheme registered by the desktop app) 'https://api.devin.ai/mcp/oauth/callback', // Devin prod 'https://api.beta.devin.ai/mcp/oauth/callback', // Devin beta