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 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),