mcp-use 2.11.0-canary.9 → 2.11.0

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/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var{runBin}=await import("@mcp-use/cli");runBin(process.argv.slice(2),{frameworkVersion:"2.11.0-canary.9"});
2
+ var{runBin}=await import("@mcp-use/cli");runBin(process.argv.slice(2),{frameworkVersion:"2.11.0"});
@@ -794,7 +794,7 @@ ${cyan("=".repeat(80))}`),console.log(bold(cyan("[TRACE] Request Details"))),con
794
794
  `)}function styleStatus(status){let text2=String(status);return status>=500?magenta(text2):status>=400?red(text2):status>=300?yellow(text2):green(text2)}function isNoisyRequest(httpMethod,pathname){return httpMethod!=="GET"&&httpMethod!=="HEAD"?!1:pathname.endsWith("/favicon.ico")}function formatRequestLogLine(line){let{description,detail}=line;return[...line.prefix===void 0?[]:[bold(line.prefix)],methodStyle(description.method)(description.method),...detail?.subject===void 0?[]:[bold(sanitize(detail.subject))],line.pathname,styleStatus(line.status),...description.client===void 0?[]:[dim(`client=${sanitize(description.client)}`)],dim(`${line.durationMs}ms`),...line.suffix].join(" ")}function requestLogger(options={}){return options.enabled===!1?(_request,next)=>next():async(request,next)=>{let level=resolveLogLevel(options.level),startedAt=Date.now(),httpMethod=request.method,pathname=new URL(request.url).pathname;if(isNoisyRequest(httpMethod,pathname))return next();let requestHeaders={};level==="trace"&&request.headers.forEach((value,key)=>{requestHeaders[key]=value});let requestBody;if(httpMethod!=="GET"&&httpMethod!=="HEAD"){let parsedBody=getRequestBag(request).parsedBody;if(parsedBody!==void 0)requestBody=parsedBody;else try{requestBody=await request.clone().json(),(request.headers.get("content-type")??"").includes("application/json")&&(getRequestBag(request).parsedBody=requestBody)}catch{}}let description=describeRequest(httpMethod,pathname,options.mcpPath,requestBody),logLine=(status,detail2,suffix2=[])=>{console.log(formatRequestLogLine({prefix:options.prefix,description,detail:detail2,pathname,status,durationMs:Date.now()-startedAt,suffix:suffix2}))},response;try{response=await next()}catch(error3){throw logLine(500,void 0,[red(`ERROR ${sanitize(error3 instanceof Error?error3.message:String(error3))}`)]),error3}let streaming=description.streaming||response.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase()==="text/event-stream",detail=description.mcpRequest===void 0?void 0:formatDetail(description.mcpRequest),suffix=[];if(description.mcpRequest!==void 0&&detail!==void 0){let echoPayloads=level!=="info";echoPayloads&&detail.input!==void 0&&suffix.push(inlineJson(detail.input));let outcome=streaming?{errorMessage:null}:await extractResponseOutcome(response,request);echoPayloads&&description.mcpRequest.method==="tools/call"&&outcome.errorMessage===null&&outcome.result!==void 0&&suffix.push(dim("->"),inlineJson(compactToolResult(outcome.result))),outcome.errorMessage!==null?suffix.push(red(`ERROR ${sanitize(outcome.errorMessage)}`)):response.status>=400&&suffix.push(red(`ERROR (HTTP ${response.status})`))}logLine(response.status,detail,suffix);let oauthEndpoint=options.mcpPath!==void 0&&pathname.startsWith(pathUnderBase(options.mcpPath,"oauth/"));return level==="trace"&&!oauthEndpoint&&await printTraceDump(response,requestHeaders,requestBody,!streaming),response}}init_dist();init_fetch_app();import{trackBufferedResponse as trackBufferedResponse2}from"#mcp-use-buffered-response";function createMcpMount(factory,options={}){let{path="/mcp",handler:handlerOptions,authInfo:getAuthInfo}=options,legacyMode=handlerOptions?.legacy??"stateless",handler=createMcpHandler(factory,{legacy:"stateless",...handlerOptions});return{handler,fetch:async request=>{if(!matchesPath(request,path))return new Response("Not Found",{status:404});if(legacyMode==="stateless"){let method=request.method.toUpperCase();if(method==="GET"||method==="DELETE"||method==="HEAD")return new Response(null,{status:204})}let bag=getRequestBag(request),parsedBody=bag.parsedBody;if(parsedBody===void 0)try{parsedBody=await request.clone().json()}catch{}let capabilities=extractClientCapabilitiesFromBody(parsedBody);capabilities!==void 0&&stashClientCapabilities(request,capabilities);let authInfo=getAuthInfo?.(request)??bag.authInfo,response=await handler.fetch(request,{...parsedBody!==void 0&&{parsedBody},...authInfo!==void 0&&{authInfo}});return response.headers.get("content-type")?.toLowerCase().includes("application/json")?"Bun"in globalThis&&response.body!==null?new Response(await response.arrayBuffer(),{status:response.status,statusText:response.statusText,headers:response.headers}):trackBufferedResponse2(request,response):response}}}function object2(value,label){if(value===null||typeof value!="object"||Array.isArray(value))throw new TypeError(`${label} must be an object`);return value}function array2(value,label){if(!Array.isArray(value))throw new TypeError(`${label} must be an array`);return value}function nonBlank(value,label){if(typeof value!="string"||!value.trim())throw new TypeError(`${label} must be a non-blank string`)}function standard(json,validate){return{"~standard":{version:1,vendor:"mcp-use",jsonSchema:{input:()=>json,output:()=>json},async validate(value){try{return{value:await validate(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function prepareSettings(options){let readTool=options.readTool??"settings.read",updateTool=options.updateTool??"settings.update";if(nonBlank(readTool,"readTool"),nonBlank(updateTool,"updateTool"),readTool===updateTool)throw new TypeError("Settings read and update tools must have different names");object2(options.fields,"fields");let fields=Object.entries(options.fields).map(([name,field])=>[name,{...field}]);if(!fields.length)throw new TypeError("Settings require at least one field");let properties={};for(let[name,field]of fields){if(nonBlank(field.title,`Setting ${name} title`),field.description!==void 0&&typeof field.description!="string")throw new TypeError(`Setting ${name} description must be a string`);let outputProperty=field.schema["~standard"].jsonSchema.output({target:"draft-2020-12"}),property=field.schema["~standard"].jsonSchema.input({target:"draft-2020-12"});if(!["boolean","string","number","integer"].includes(String(property.type))||outputProperty.type!==property.type||["$ref","anyOf","oneOf","allOf"].some(key=>key in property)||property.enum!==void 0&&(property.type!=="string"||!Array.isArray(property.enum)||!property.enum.length||!property.enum.every(item=>typeof item=="string")))throw new TypeError(`Unsupported native setting ${name}: use boolean, string, string enum, number, or integer`);let wireProperty=structuredClone(property);delete wireProperty.default,Object.defineProperty(properties,name,{enumerable:!0,value:{...wireProperty,title:field.title,...field.description!==void 0&&{description:field.description}}})}let schema2={type:"object",properties,required:fields.map(([name])=>name),additionalProperties:!1},layout=options.layout===void 0?void 0:structuredClone(options.layout);if(layout!==void 0)for(let groupValue of array2(layout,"Settings layout")){let group=object2(groupValue,"Settings layout group");if(group.kind!=="group")throw new TypeError("Settings layout groups must have kind 'group'");nonBlank(group.title,"Settings layout group title");for(let itemValue of array2(group.items,"Settings layout group items")){let item=object2(itemValue,"Settings layout item");if(item.kind==="property"){if(nonBlank(item.property,"Settings layout property"),!Object.hasOwn(properties,item.property))throw new TypeError(`Settings layout references unknown setting: ${item.property}`)}else if(item.kind==="tool"){if(nonBlank(item.tool,"Settings layout action tool"),nonBlank(item.title,"Settings layout action title"),item.description!==void 0&&typeof item.description!="string")throw new TypeError("Settings layout action description must be a string")}else throw new TypeError("Settings layout items must have kind 'property' or 'tool'")}}let validateValues=async(value,partial2=!1)=>{let values=object2(value,partial2?"set":"values");for(let name of Object.keys(values))if(!Object.hasOwn(properties,name))throw new TypeError(`Unknown setting: ${name}`);if(partial2&&!Object.keys(values).length)throw new TypeError("Set at least one setting");let result={};for(let[name,field]of fields){if(!Object.hasOwn(values,name)){if(!partial2)throw new TypeError(`Missing effective setting: ${name}`);continue}let parsed=await field.schema["~standard"].validate(values[name]);if(parsed.issues!==void 0)throw new TypeError(`Invalid setting ${name}: ${parsed.issues.map(issue2=>issue2.message).join(", ")}`);if(parsed.value===void 0||!["string","boolean","number"].includes(typeof parsed.value)||typeof parsed.value=="number"&&!Number.isFinite(parsed.value))throw new TypeError(`Invalid primitive setting: ${name}`);if(!Object.is(parsed.value,values[name]))throw new TypeError(`Setting ${name} schema must not transform values`);Object.defineProperty(result,name,{enumerable:!0,value:parsed.value})}return result},emptySchema=standard({type:"object",additionalProperties:!1},value=>{if(Object.keys(object2(value,"arguments")).length)throw new TypeError("Settings read accepts empty arguments");return{}}),updateInput=standard({type:"object",properties:{set:{...schema2,required:[],minProperties:1}},required:["set"],additionalProperties:!1},async value=>{let input=object2(value,"arguments");if(Object.keys(input).some(key=>key!=="set"))throw new TypeError("Unknown settings update argument");return{set:await validateValues(input.set,!0)}}),readOutput=standard({type:"object",properties:{schema:{type:"object"},values:schema2,layout:{type:"array",items:{type:"object",properties:{kind:{const:"group"},title:{type:"string"},items:{type:"array",items:{type:"object"}}},required:["kind","title","items"]}}},required:["schema","values"]},async value=>{let output=object2(value,"settings result");return{...output,values:await validateValues(output.values)}}),updateOutput=standard({type:"object",properties:{values:schema2},required:["values"]},async value=>({values:await validateValues(object2(value,"settings result").values)}));return{capability:{readTool,updateTool},schema:schema2,layout,readDefinition:{name:readTool,inputSchema:emptySchema,outputSchema:readOutput,annotations:{readOnlyHint:!0}},updateDefinition:{name:updateTool,inputSchema:updateInput,outputSchema:updateOutput}}}init_dist();function createPrefixCompletion(values){let strings=values.map(String);return value=>{let prefix=String(value??"").toLowerCase();return strings.filter(candidate=>candidate.toLowerCase().startsWith(prefix))}}function completable2(schema2,complete){return typeof complete=="function"?completable(schema2,(value,context)=>complete(String(value??""),context)):completable(schema2,createPrefixCompletion(complete))}function normalizeCompletions(completions){let normalized=Object.create(null);for(let[variable,completer]of Object.entries(completions))completer!==void 0&&(normalized[variable]=Array.isArray(completer)?createPrefixCompletion(completer):completer);return normalized}init_dist();var inputSchema=fromJsonSchema2({type:"object",properties:{query:{type:"string"}},required:["query"]}),outputSchema=fromJsonSchema2({type:"object",properties:{items:{type:"array",items:ResourceLinkSchema["~standard"].jsonSchema.output({target:"draft-2020-12"})}},required:["items"]});function record2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)?value:{}}function prepareMentions(options){if(typeof options.name!="string"||!options.name.trim())throw new TypeError("Mention tool name must be a non-blank string");if(typeof options.search!="function")throw new TypeError("Mention search must be a callback");let{search:_search,...descriptor}=options;return{...descriptor,inputSchema,outputSchema,annotations:{readOnlyHint:!0,...options.annotations},_meta:{...options._meta,"openai/extensions":{...record2(options._meta?.["openai/extensions"]),"mentions/search":{}}}}}function finalizeMentionsMeta(definition,metadata){let rawUi=record2(definition._meta?.ui),visibility=definition.visibility!==void 0?[definition.visibility]:Array.isArray(rawUi.visibility)?rawUi.visibility:[];return{...metadata,ui:{...record2(metadata?.ui),visibility:[...new Set([...visibility,"app"])]}}}init_dist();var HTTP_METHODS=["get","put","post","delete","options","head","patch","trace"];function registerOpenAPITools(server,options){let operations=collectOperations(options.spec,options),names=createToolNames(operations),baseUrl=operations.length>0?resolveBaseUrl(options):void 0;for(let[index,operation]of operations.entries()){let name=names[index];if(name===void 0||baseUrl===void 0)continue;let inputBindings=createInputBindings(operation);server.tool({name,description:createToolDescription(operation),inputSchema:createToolInputSchema(options.spec,operation,inputBindings)},async params=>callOpenAPIOperation(operation,params,options,inputBindings,baseUrl))}}function collectOperations(spec,options){let collected=[];for(let[path,pathItemOrRef]of Object.entries(spec.paths??{})){let pathItem=resolveRef(spec,pathItemOrRef);if(pathItem===void 0||isReferenceObject(pathItem))continue;let pathParameters=resolveParameters(spec,pathItem.parameters);for(let method of HTTP_METHODS){let operationOrRef=pathItem[method];if(operationOrRef===void 0)continue;let operation=resolveRef(spec,operationOrRef);if(operation===void 0||isReferenceObject(operation))continue;let operationParameters=resolveParameters(spec,operation.parameters),requestBody=operation.requestBody===void 0?void 0:resolveRef(spec,operation.requestBody),item={method,path,operation,parameters:mergeParameters(pathParameters,operationParameters),...requestBody!==void 0&&!isReferenceObject(requestBody)&&{requestBody}};isIncluded(item,options)&&collected.push(item)}}return collected}function resolveParameters(spec,parameters){let resolved=[];for(let parameter of parameters??[]){let value=resolveRef(spec,parameter);value!==void 0&&!isReferenceObject(value)&&resolved.push(value)}return resolved}function mergeParameters(pathParameters,operationParameters){let merged=new Map;for(let parameter of[...pathParameters,...operationParameters])merged.set(`${parameter.in}:${parameter.name}`,parameter);return[...merged.values()]}function isIncluded(operation,options){if(options.tags?.length){let tags=new Set(operation.operation.tags??[]);if(!options.tags.some(tag=>tags.has(tag)))return!1}return!(options.exclude??[]).some(rule=>matchesExcludeRule(operation,rule))}function matchesExcludeRule(operation,rule){if(rule.method&&rule.method.toLowerCase()!==operation.method||rule.operationId&&!matchesPattern2(rule.operationId,operation.operation.operationId??"")||rule.path&&!matchesPattern2(rule.path,operation.path))return!1;if(rule.tags?.length){let tags=new Set(operation.operation.tags??[]);if(!rule.tags.some(tag=>tags.has(tag)))return!1}return!0}function matchesPattern2(pattern,value){return typeof pattern=="string"?pattern===value:(pattern.lastIndex=0,pattern.test(value))}function createToolNames(operations){let seen=new Map;return operations.map(operation=>{let baseName=slugifyToolName(operation.operation.operationId??`${operation.method}_${operation.path.replace(/[{}]/g,"").replace(/\//g,"_")}`),count=seen.get(baseName)??0;if(seen.set(baseName,count+1),count===0)return baseName;let suffix=`_${count+1}`;return`${baseName.slice(0,64-suffix.length)}${suffix}`})}function createToolDescription(operation){return[operation.operation.summary,operation.operation.description,`HTTP: ${operation.method.toUpperCase()} ${operation.path}`].filter(part=>!!part).join(`
795
795
 
796
796
  `)}function slugifyToolName(value){return value.trim().replace(/[^a-zA-Z0-9_-]+/g,"_").replace(/_+/g,"_").replace(/^_/,"").replace(/_$/,"").slice(0,64)||"openapi_tool"}function createToolInputSchema(spec,operation,inputBindings){let properties={},required2=[];for(let{parameter,inputName}of inputBindings.parameters){let parameterSchema=transformSchema(spec,parameter.schema??{});properties[inputName]={...parameterSchema,description:parameter.description??`${parameter.in} parameter`},(parameter.required||parameter.in==="path")&&required2.push(inputName)}let bodySchema=getJsonRequestBodySchema(operation.requestBody);bodySchema!==void 0&&inputBindings.bodyInputName!==void 0&&(properties[inputBindings.bodyInputName]=transformSchema(spec,bodySchema),operation.requestBody?.required&&required2.push(inputBindings.bodyInputName));let definitions=createSchemaDefinitions(spec),schema2={type:"object",properties,additionalProperties:!1,...required2.length>0&&{required:required2},...definitions!==void 0&&{$defs:definitions}};return fromJsonSchema2(schema2)}function createInputBindings(operation){let parameters=operation.parameters.filter(parameter=>parameter.in!=="cookie"),bodyInputName=getJsonRequestBodySchema(operation.requestBody)===void 0?void 0:"body",nameCounts=new Map;for(let parameter of parameters)nameCounts.set(parameter.name,(nameCounts.get(parameter.name)??0)+1);let usedNames=new Set(bodyInputName===void 0?[]:[bodyInputName]);return{parameters:parameters.map(parameter=>{let preferredName=(nameCounts.get(parameter.name)??0)>1||parameter.name===bodyInputName?`${parameter.name}_${parameter.in}`:parameter.name;return{parameter,inputName:claimInputName(preferredName,usedNames)}}),...bodyInputName!==void 0&&{bodyInputName}}}function claimInputName(preferredName,usedNames){let inputName=preferredName,suffix=2;for(;usedNames.has(inputName);)inputName=`${preferredName}_${suffix}`,suffix+=1;return usedNames.add(inputName),inputName}function createSchemaDefinitions(spec){let schemas=readRecord(spec.components?.schemas);if(schemas===void 0)return;let definitions={};for(let[name,schema2]of Object.entries(schemas))definitions[name]=transformSchemaNode(spec,schema2,new Set);return definitions}function transformSchema(spec,schema2){let transformed=transformSchemaNode(spec,schema2,new Set);return readRecord(transformed)??{}}function transformSchemaNode(spec,value,resolvingRefs){if(Array.isArray(value))return value.map(item=>transformSchemaNode(spec,item,resolvingRefs));let object5=readRecord(value);if(object5===void 0)return value;let ref=typeof object5.$ref=="string"?object5.$ref:void 0,siblings={};for(let[key,child]of Object.entries(object5))key!=="$ref"&&(key==="nullable"&&typeof child=="boolean"||isExclusiveBoundKey(key)&&typeof child=="boolean"||(siblings[key]=transformSchemaNode(spec,child,resolvingRefs)));for(let[boundKey,exclusiveKey]of EXCLUSIVE_BOUND_KEYS)object5[exclusiveKey]===!0&&typeof object5[boundKey]=="number"&&(siblings[exclusiveKey]=object5[boundKey],delete siblings[boundKey]);let transformed=siblings;if(ref!==void 0){let schemaRef=rewriteSchemaRef(spec,ref);if(schemaRef!==void 0)transformed={$ref:schemaRef,...siblings};else if(!resolvingRefs.has(ref)){let resolved=resolveRef(spec,{$ref:ref});if(resolved!==void 0){let nextRefs=new Set(resolvingRefs);nextRefs.add(ref),transformed={...readRecord(transformSchemaNode(spec,resolved,nextRefs))??{},...siblings}}}}return object5.nullable===!0?{anyOf:[transformed,{type:"null"}]}:transformed}var EXCLUSIVE_BOUND_KEYS=[["minimum","exclusiveMinimum"],["maximum","exclusiveMaximum"]];function isExclusiveBoundKey(key){return key==="exclusiveMinimum"||key==="exclusiveMaximum"}function rewriteSchemaRef(spec,ref){let prefix="#/components/schemas/";if(ref.startsWith(prefix))return resolveRef(spec,{$ref:ref})===void 0?void 0:`#/$defs/${ref.slice(prefix.length)}`}function getJsonRequestBodySchema(requestBody){let content=requestBody?.content;if(content!==void 0)return content["application/json"]?.schema??content["application/*+json"]?.schema??Object.entries(content).find(([mediaType])=>mediaType.includes("+json"))?.[1].schema}async function callOpenAPIOperation(operation,params,options,inputBindings,baseUrl){let fetchImpl=options.fetch??globalThis.fetch,url2=buildUrl(operation,params,inputBindings.parameters,baseUrl),headers=buildHeaders(inputBindings.parameters,params,options),bodyInputName=inputBindings.bodyInputName,body=bodyInputName===void 0||params[bodyInputName]===void 0?void 0:JSON.stringify(params[bodyInputName]);body!==void 0&&!hasHeader(headers,"content-type")&&(headers["content-type"]="application/json");let response=await fetchImpl(url2,{method:operation.method.toUpperCase(),headers,...body!==void 0&&{body}}),contentType=response.headers.get("content-type")??"";if(!response.ok)return{content:[{type:"text",text:await response.text()}],isError:!0};if(contentType.includes("application/json")||contentType.includes("+json")){let text2=await response.text();try{let data=JSON.parse(text2);return{content:[{type:"text",text:JSON.stringify(data)}],structuredContent:data}}catch{return{content:[{type:"text",text:text2}]}}}return{content:[{type:"text",text:await response.text()}]}}function buildUrl(operation,params,parameterBindings,baseUrl){let interpolatedPath=operation.path.replace(/{([^}]+)}/g,(_match,name)=>{let binding=parameterBindings.find(({parameter})=>parameter.in==="path"&&parameter.name===name);return encodeURIComponent(String(binding===void 0?"":params[binding.inputName]??""))}),url2=new URL(interpolatedPath.replace(/^\/+/,""),ensureTrailingSlash(baseUrl));for(let{parameter,inputName}of parameterBindings){if(parameter.in!=="query")continue;let value=params[inputName];value==null||value===""||appendQueryParam(url2,parameter.name,value)}return url2.toString()}function buildHeaders(parameterBindings,params,options){let headers={...options.headers??{}};for(let{parameter,inputName}of parameterBindings){if(parameter.in!=="header")continue;let value=params[inputName];value==null||value===""||(headers[parameter.name]=String(value))}return options.auth?.type==="bearer"&&options.auth.token&&(headers.authorization=`Bearer ${options.auth.token}`),options.auth?.type==="header"&&options.auth.value&&(headers[options.auth.name]=options.auth.value),headers}function resolveBaseUrl(options){let baseUrl=options.baseUrl??options.spec.servers?.[0]?.url;if(baseUrl===void 0||baseUrl.trim()==="")throw new Error("MCPServer.fromOpenAPI requires options.baseUrl or spec.servers[0].url");return baseUrl}function appendQueryParam(url2,name,value){if(Array.isArray(value)){for(let item of value)item!=null&&item!==""&&url2.searchParams.append(name,String(item));return}url2.searchParams.set(name,String(value))}function ensureTrailingSlash(url2){return url2.endsWith("/")?url2:`${url2}/`}function hasHeader(headers,name){return Object.keys(headers).some(headerName=>headerName.toLowerCase()===name)}function isReferenceObject(value){let object5=readRecord(value);return object5!==void 0&&typeof object5.$ref=="string"}function resolveRef(spec,value){if(!isReferenceObject(value))return value;if(!value.$ref.startsWith("#/"))return;let segments=value.$ref.slice(2).split("/").map(segment=>segment.replace(/~1/g,"/").replace(/~0/g,"~")),current=spec;for(let segment of segments){let object5=readRecord(current);if(object5===void 0||!(segment in object5))return;current=object5[segment]}return current}function readRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)?value:void 0}init_dist();init_dist();init_fetch_app();function isRecord(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function isLocalhost(url2){let hostname=url2.hostname.toLowerCase();return hostname==="localhost"||hostname.endsWith(".localhost")||hostname==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(hostname)}function parseAbsoluteUrl(value,name){let url2;try{url2=new URL(value)}catch{throw new Error(`${name} must be an absolute URL`)}if(url2.origin==="null"||url2.username!==""||url2.password!=="")throw new Error(`${name} must be an absolute URL without credentials`);return url2}function assertSecureHttpUrl(url2,name){if(url2.protocol!=="https:"&&!(url2.protocol==="http:"&&isLocalhost(url2)))throw new Error(`${name} must use HTTPS, or HTTP for localhost`)}function assertOAuthMetadata(metadata){if(metadata===null||typeof metadata!="object"||!("issuer"in metadata)||typeof metadata.issuer!="string")throw new TypeError("oauthMetadata must include a string issuer");assertSecureHttpUrl(parseAbsoluteUrl(metadata.issuer,"oauthMetadata.issuer"),"oauthMetadata.issuer")}init_dist();function invalidToken(message,cause){let error3=new OAuthError(OAuthErrorCode.InvalidToken,message);return cause!==void 0&&(error3.cause=cause),error3}function resolveConfiguredOAuthResource(options){let provider=options.provider,basePath=normalizeBasePath(options.basePath);if(provider.resource!==void 0)return validateOAuthResource(provider.resource,basePath);if(options.mcpUrl!==void 0)return validateOAuthResource(appendBasePath(requireAbsoluteOrigin(options.mcpUrl,"MCP_URL"),basePath),basePath)}function resolveLocalOAuthResource(listenOrigin,basePath){let listenOriginUrl=requireAbsoluteOrigin(listenOrigin,"listen origin");if(!isLocalhost(listenOriginUrl))throw new Error("OAuth listen origin must be localhost or a loopback address");return validateOAuthResource(appendBasePath(listenOriginUrl,normalizeBasePath(basePath)),basePath)}function validateOAuthResource(resource2,basePath){let normalizedBasePath=normalizeBasePath(basePath),url2=parseAbsoluteUrl(resource2,"OAuth resource");if(url2.search!==""||url2.hash!=="")throw new Error("OAuth resource must not include a query string or fragment");if(assertSecureHttpUrl(url2,"OAuth resource"),normalizePathname(url2.pathname)!==normalizedBasePath)throw new Error(`OAuth resource path must exactly match basePath (${normalizedBasePath})`);return url2.pathname=normalizedBasePath,url2}function wrapOAuthTokenVerifier(provider,expectedResource){let canonicalResource=normalizeResourceUrl(expectedResource),tokenVerifier=provider.createTokenVerifier(new URL(canonicalResource.href));if(tokenVerifier===null||typeof tokenVerifier!="object"||typeof tokenVerifier.verifyAccessToken!="function")throw new TypeError("OAuth provider createTokenVerifier must return an OAuthTokenVerifier");return{async verifyAccessToken(token){let authInfo=await tokenVerifier.verifyAccessToken(token);assertVerifiedAuthInfo(authInfo),assertResourceBinding(authInfo,canonicalResource);let mapped;try{mapped=provider.mapAuthInfo(authInfo)}catch(error3){throw invalidToken("Token identity mapping failed",error3)}return assertMappedExtra(mapped),{...authInfo,scopes:[...authInfo.scopes],extra:{...authInfo.extra,...mapped}}}}}function assertResourceBinding(authInfo,expectedResource){if(authInfo.resource===void 0)throw invalidToken("Token verifier did not return a validated protected resource");if(parseTokenResource(authInfo.resource).href!==normalizeResourceUrl(expectedResource).href)throw invalidToken("Token resource does not match the protected resource")}function parseTokenResource(value){if(!(value instanceof URL))throw invalidToken("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");let resource2=value;if(!/^https?:$/.test(resource2.protocol)||resource2.username!==""||resource2.password!==""||resource2.search!==""||resource2.hash!==""||resource2.protocol==="http:"&&!isLocalhost(resource2))throw invalidToken("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");return normalizeResourceUrl(resource2)}function normalizeResourceUrl(resource2){let normalized=new URL(resource2);return normalized.pathname=normalized.pathname==="/"?"/":normalized.pathname.replace(/\/+$/,""),normalized}function resolveOAuthMetadata(provider,resource2){let metadata=provider.oauthMetadata;if(typeof metadata!="function")return metadata;let resolved=metadata(new URL(resource2.href));return assertOAuthMetadata(resolved),resolved}function getOAuthProviderOptions(provider){return{oauthMetadata:provider.oauthMetadata,...provider.requiredScopes!==void 0&&{requiredScopes:[...provider.requiredScopes]},...provider.scopesSupported!==void 0&&{scopesSupported:[...provider.scopesSupported]},...provider.resourceName!==void 0&&{resourceName:provider.resourceName},...provider.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:provider.serviceDocumentationUrl}}}function assertVerifiedAuthInfo(authInfo){if(authInfo===null||typeof authInfo!="object"||typeof authInfo.token!="string"||authInfo.token.length===0||typeof authInfo.clientId!="string"||!Array.isArray(authInfo.scopes)||!authInfo.scopes.every(scope=>typeof scope=="string")||typeof authInfo.expiresAt!="number"||!Number.isFinite(authInfo.expiresAt)||authInfo.expiresAt<=Date.now()/1e3)throw invalidToken("Token verifier returned invalid authentication information")}function assertMappedExtra(mapped){if(mapped===null||typeof mapped!="object"||!("user"in mapped)||mapped.user===void 0||!isRecord(mapped.payload)||!Array.isArray(mapped.permissions)||!mapped.permissions.every(permission=>typeof permission=="string"))throw invalidToken("Token identity mapping must return user, payload, and string permissions")}function requireAbsoluteOrigin(value,name){let url2=parseAbsoluteUrl(value,name);if(url2.pathname!=="/"||url2.search!==""||url2.hash!==""||url2.username!==""||url2.password!=="")throw new Error(`${name} must be an absolute origin without a path`);return url2}function appendBasePath(origin,basePath){let resource2=new URL(origin.origin);return resource2.pathname=basePath,resource2}function normalizeBasePath(basePath){if(!basePath.startsWith("/")||basePath.includes("?")||basePath.includes("#"))throw new Error("basePath must be an absolute URL pathname");return normalizePathname(basePath)}function normalizePathname(pathname){if(pathname==="/")return"/";let end=pathname.length;for(;end>0&&pathname.charCodeAt(end-1)===47;)end--;return pathname.slice(0,end)}function oauthMetadata(provider,resource2){let options=getOAuthProviderOptions(provider),metadata=resolveOAuthMetadata(provider,resource2);return async(request,next)=>{let response=oauthMetadataResponse(request,{oauthMetadata:metadata,resourceServerUrl:resource2,...options.scopesSupported!==void 0&&{scopesSupported:[...options.scopesSupported]},...options.resourceName!==void 0&&{resourceName:options.resourceName},...options.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:options.serviceDocumentationUrl}});return response!==void 0?response:next()}}function authInfoFromRequest(request){return getRequestBag(request).authInfo}init_dist();import{createRemoteJWKSet,jwtVerify,errors}from"jose";var textEncoder=new TextEncoder,textDecoder=new TextDecoder("utf-8",{fatal:!0});function isBuilding(){return typeof process>"u"||process.env===void 0?!1:process.env.MCP_USE_PHASE==="build"}var DCR_CLIENT_TTL=365*24*60*60;var CIMD_MAX_BYTES=5*1024;var CIMD_CACHE_MS=300*1e3;var REFRESH_TTL=720*60*60;var UPSTREAM_TTL=1440*60*60,REMEMBER_TTL=365*24*60*60;init_policy();function resolveToolInputSchema(definition){return definition.inputSchema??definition.schema}init_dist();var META_KEY="openai/ui";function record3(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function validateEntrypointInput(definition){let entrypoints=definition.view?.entrypoints;if(!entrypoints?.length)return;let schema2=resolveToolInputSchema(definition),validate=schema2?fromJsonSchema2(schema2["~standard"].jsonSchema.input({target:"draft-2020-12"}))["~standard"].validate:void 0;for(let entrypoint of entrypoints){let payloads=entrypoint.type==="file"?entrypoint.extensions.map(extension=>({file:{name:`file${extension}`,resourceUri:"host-resource://opaque-handle"}})):[{}];if(entrypoint.type==="file"&&!validate)throw new TypeError(`Tool "${definition.name}" file entrypoint requires an inputSchema accepting { file: { name, resourceUri } }.`);for(let payload of payloads){let result=validate?.(payload);if(result&&("then"in result||result.issues))throw new TypeError(`Tool "${definition.name}" ${entrypoint.type} entrypoint launch arguments do not satisfy its inputSchema.`)}}}function buildEntrypointMeta(definition){let entrypoints=definition.view?.entrypoints;if(entrypoints===void 0)return definition._meta;let existing=definition._meta?.[META_KEY];return{...definition._meta,[META_KEY]:{...record3(existing)?existing:{},entrypoints:entrypoints.map(entry=>entry.type==="file"?{type:entry.type,extensions:[...entry.extensions]}:{type:entry.type})}}}var EVENT="mcp_use_sdk_event",ENDPOINT="https://eu.i.posthog.com/i/v0/e/",TOKEN="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",CONTENT=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,RESERVED=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),runtimeId;function getRuntimeId(){return runtimeId??=crypto.randomUUID(),runtimeId}var once=new Set,pending=new Set,identities=new Map;function hasControl(value){return[...value].some(character=>{let code=character.charCodeAt(0);return code<32||code===127})}function env(name){return typeof process>"u"?void 0:process.env?.[name]}function safeEnv(name){let value=env(name);return value!==void 0&&value.length>0&&value.length<=128&&!hasControl(value)?value:void 0}function canPersistTelemetryIdentity(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}function disabled(){if(env("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}function isUsageDisabled(){return disabled()}function clean(properties){return Object.fromEntries(Object.entries(properties).filter(([key,value])=>key.length>128||hasControl(key)||key.startsWith("$")||RESERVED.has(key)||CONTENT.test(key)||value===void 0?!1:typeof value=="string"?value.length<=128&&!hasControl(value):typeof value=="boolean"||typeof value=="number"&&Number.isFinite(value)))}async function identity(serverRoot){let projectId=safeEnv("MCP_USE_TELEMETRY_PROJECT_ID");if(projectId!==void 0)return{id:projectId,stability:"project"};if(serverRoot===void 0||!canPersistTelemetryIdentity())return{id:getRuntimeId(),stability:"process"};let existing=identities.get(serverRoot);if(existing!==void 0)return existing;let resolving=(async()=>{try{let fs=await import("fs/promises"),directory=`${serverRoot}/.mcp-use`,file=`${directory}/usage.json`,read=async()=>{try{let value=JSON.parse(await fs.readFile(file,"utf8"));if(typeof value=="object"&&value!==null&&"schemaVersion"in value&&value.schemaVersion===1&&"serverId"in value&&typeof value.serverId=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value.serverId))return value.serverId}catch{}},stored=await read();if(stored!==void 0)return{id:stored,stability:"server"};await fs.mkdir(directory,{recursive:!0,mode:448});let created=crypto.randomUUID();try{return await fs.writeFile(file,`${JSON.stringify({schemaVersion:1,serverId:created})}
797
- `,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.11.0-canary.9",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}init_dist();function schema(validateValue){return{"~standard":{version:1,vendor:"mcp-use",validate(value){try{return{value:validateValue(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function object3(value){if(typeof value!="object"||value===null||Array.isArray(value))throw new TypeError("params must be an object");return value}var listParams=schema(value=>{let cursor=object3(value).cursor;if(cursor!==void 0&&typeof cursor!="string")throw new TypeError("cursor must be a string");return cursor===void 0?{}:{cursor}}),uriParams=schema(value=>{let params=object3(value);if(typeof params.uri!="string")throw new TypeError("uri must be a string");if(params.cursor!==void 0&&typeof params.cursor!="string")throw new TypeError("cursor must be a string");return{uri:params.uri,...typeof params.cursor=="string"&&{cursor:params.cursor}}}),anyResult=schema(value=>object3(value));function decodePathSegment(value){try{return decodeURIComponent(value)}catch{return value}}function registerSkillsRuntime(server,snapshot){let skills=new Map(snapshot.skills.map(skill=>[skill.uri,skill]));for(let resource2 of snapshot.resources)server.registerResource(resource2.uri,resource2.uri,{title:resource2.name,mimeType:resource2.mimeType},async()=>({contents:[{uri:resource2.uri,mimeType:resource2.mimeType,...resource2.text!==void 0?{text:resource2.text}:{blob:resource2.blob}}]}));server.server.setRequestHandler("skills/list",{params:listParams,result:anyResult},async()=>({skills:snapshot.skills})),server.server.setRequestHandler("skills/get",{params:uriParams,result:anyResult},async({uri})=>{let skill=skills.get(uri);if(skill===void 0)throw new ProtocolError(INVALID_PARAMS,`Unknown skill: ${uri}`);return{skill}}),server.server.setRequestHandler("resources/directory/read",{params:uriParams,result:anyResult},async({uri})=>{let normalized=uri.replace(/\/$/,""),knownDirectories=new Set(snapshot.directories.map(item=>item.uri)),prefix=`${normalized}/`,children=new Map;for(let resource2 of snapshot.resources){if(!resource2.uri.startsWith(prefix))continue;let remainder=resource2.uri.slice(prefix.length),[name]=remainder.split("/");if(name===void 0||name==="")continue;let childUri=`${normalized}/${name}`;children.set(childUri,{uri:childUri,name:decodePathSegment(name),mimeType:remainder.includes("/")?"inode/directory":resource2.mimeType})}for(let directory of snapshot.directories){if(!directory.uri.startsWith(prefix))continue;let remainder=directory.uri.slice(prefix.length);remainder===""||remainder.includes("/")||children.set(directory.uri,{uri:directory.uri,name:directory.name,mimeType:"inode/directory"})}if(!knownDirectories.has(normalized))throw new ProtocolError(INVALID_PARAMS,`Unknown skill directory: ${uri}`);return{resources:[...children.values()].sort((left,right)=>left.uri.localeCompare(right.uri))}})}var SKILLS_EXTENSION_ID="io.modelcontextprotocol/skills",registerSkills=Symbol.for("mcp-use.registerSkills");var registerViews=Symbol("mcp-use/registerViews");init_fetch_app();function resolveAssetUrl(assetPath,origin){if(!assetPath.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(assetPath)}`);return`${origin}${assetPath}`}function viewAssetsBasePath(basePath,viewName){return`${pathUnderBase(basePath,`_mcp-use/views/${viewName}`)}/`}function resolveExternalAssetUrl(assetPath,assetsBase,basePath,viewName){return assetPath.startsWith("http://")||assetPath.startsWith("https://")||assetPath.startsWith("data:")?assetPath:assetPath.startsWith("/")?resolveAssetUrl(assetPath,assetsBase):`${assetsBase}${viewAssetsBasePath(basePath,viewName)}${assetPath.replace(/^\/+/,"")}`}function resolvePublicBase(assetsBase,basePath){return`${assetsBase}${pathUnderBase(basePath,"_mcp-use/public")}/`}function escapeInlineScript(code){return code.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}function escapeInlineStyle(css2){return css2.replaceAll(/<\/style/gi,"<\\/style")}function escapeHtml(value){return value.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;")}var VIEW_BOOTSTRAP_STYLE=`<style>
797
+ `,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.11.0",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}init_dist();function schema(validateValue){return{"~standard":{version:1,vendor:"mcp-use",validate(value){try{return{value:validateValue(value)}}catch(error3){return{issues:[{message:error3 instanceof Error?error3.message:String(error3)}]}}}}}}function object3(value){if(typeof value!="object"||value===null||Array.isArray(value))throw new TypeError("params must be an object");return value}var listParams=schema(value=>{let cursor=object3(value).cursor;if(cursor!==void 0&&typeof cursor!="string")throw new TypeError("cursor must be a string");return cursor===void 0?{}:{cursor}}),uriParams=schema(value=>{let params=object3(value);if(typeof params.uri!="string")throw new TypeError("uri must be a string");if(params.cursor!==void 0&&typeof params.cursor!="string")throw new TypeError("cursor must be a string");return{uri:params.uri,...typeof params.cursor=="string"&&{cursor:params.cursor}}}),anyResult=schema(value=>object3(value));function decodePathSegment(value){try{return decodeURIComponent(value)}catch{return value}}function registerSkillsRuntime(server,snapshot){let skills=new Map(snapshot.skills.map(skill=>[skill.uri,skill]));for(let resource2 of snapshot.resources)server.registerResource(resource2.uri,resource2.uri,{title:resource2.name,mimeType:resource2.mimeType},async()=>({contents:[{uri:resource2.uri,mimeType:resource2.mimeType,...resource2.text!==void 0?{text:resource2.text}:{blob:resource2.blob}}]}));server.server.setRequestHandler("skills/list",{params:listParams,result:anyResult},async()=>({skills:snapshot.skills})),server.server.setRequestHandler("skills/get",{params:uriParams,result:anyResult},async({uri})=>{let skill=skills.get(uri);if(skill===void 0)throw new ProtocolError(INVALID_PARAMS,`Unknown skill: ${uri}`);return{skill}}),server.server.setRequestHandler("resources/directory/read",{params:uriParams,result:anyResult},async({uri})=>{let normalized=uri.replace(/\/$/,""),knownDirectories=new Set(snapshot.directories.map(item=>item.uri)),prefix=`${normalized}/`,children=new Map;for(let resource2 of snapshot.resources){if(!resource2.uri.startsWith(prefix))continue;let remainder=resource2.uri.slice(prefix.length),[name]=remainder.split("/");if(name===void 0||name==="")continue;let childUri=`${normalized}/${name}`;children.set(childUri,{uri:childUri,name:decodePathSegment(name),mimeType:remainder.includes("/")?"inode/directory":resource2.mimeType})}for(let directory of snapshot.directories){if(!directory.uri.startsWith(prefix))continue;let remainder=directory.uri.slice(prefix.length);remainder===""||remainder.includes("/")||children.set(directory.uri,{uri:directory.uri,name:directory.name,mimeType:"inode/directory"})}if(!knownDirectories.has(normalized))throw new ProtocolError(INVALID_PARAMS,`Unknown skill directory: ${uri}`);return{resources:[...children.values()].sort((left,right)=>left.uri.localeCompare(right.uri))}})}var SKILLS_EXTENSION_ID="io.modelcontextprotocol/skills",registerSkills=Symbol.for("mcp-use.registerSkills");var registerViews=Symbol("mcp-use/registerViews");init_fetch_app();function resolveAssetUrl(assetPath,origin){if(!assetPath.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(assetPath)}`);return`${origin}${assetPath}`}function viewAssetsBasePath(basePath,viewName){return`${pathUnderBase(basePath,`_mcp-use/views/${viewName}`)}/`}function resolveExternalAssetUrl(assetPath,assetsBase,basePath,viewName){return assetPath.startsWith("http://")||assetPath.startsWith("https://")||assetPath.startsWith("data:")?assetPath:assetPath.startsWith("/")?resolveAssetUrl(assetPath,assetsBase):`${assetsBase}${viewAssetsBasePath(basePath,viewName)}${assetPath.replace(/^\/+/,"")}`}function resolvePublicBase(assetsBase,basePath){return`${assetsBase}${pathUnderBase(basePath,"_mcp-use/public")}/`}function escapeInlineScript(code){return code.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}function escapeInlineStyle(css2){return css2.replaceAll(/<\/style/gi,"<\\/style")}function escapeHtml(value){return value.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;")}var VIEW_BOOTSTRAP_STYLE=`<style>
798
798
  html,body,#root{background:transparent}
799
799
  html,body{margin:0}
800
800
  #root[data-mcp-use-loading]{display:flex;min-height:100vh;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:rgba(127,127,127,.9)}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ ${z("=".repeat(80))}`),console.log(Oe(z("[TRACE] Request Details"))),console.log
4
4
  `)}o(so,"printTraceDump");function io(e){let t=String(e);return e>=500?Jt(t):e>=400?oe(t):e>=300?P(t):Kt(t)}o(io,"styleStatus");function ao(e,t){return e!=="GET"&&e!=="HEAD"?!1:t.endsWith("/favicon.ico")}o(ao,"isNoisyRequest");function co(e){let{description:t,detail:n}=e;return[...e.prefix===void 0?[]:[Oe(e.prefix)],eo(t.method)(t.method),...n?.subject===void 0?[]:[Oe(H(n.subject))],e.pathname,io(e.status),...t.client===void 0?[]:[Ue(`client=${H(t.client)}`)],Ue(`${e.durationMs}ms`),...e.suffix].join(" ")}o(co,"formatRequestLogLine");function Ie(e={}){return e.enabled===!1?(t,n)=>n():async(t,n)=>{let r=Gr(e.level),s=Date.now(),i=t.method,a=new URL(t.url).pathname;if(ao(i,a))return n();let c={};r==="trace"&&t.headers.forEach((y,T)=>{c[T]=y});let d;if(i!=="GET"&&i!=="HEAD"){let y=v(t).parsedBody;if(y!==void 0)d=y;else try{d=await t.clone().json(),(t.headers.get("content-type")??"").includes("application/json")&&(v(t).parsedBody=d)}catch{}}let u=to(i,a,e.mcpPath,d),l=o((y,T,x=[])=>{console.log(co({prefix:e.prefix,description:u,detail:T,pathname:a,status:y,durationMs:Date.now()-s,suffix:x}))},"logLine"),p;try{p=await n()}catch(y){throw l(500,void 0,[oe(`ERROR ${H(y instanceof Error?y.message:String(y))}`)]),y}let f=u.streaming||p.headers.get("content-type")?.split(";",1)[0]?.trim().toLowerCase()==="text/event-stream",m=u.mcpRequest===void 0?void 0:Xr(u.mcpRequest),h=[];if(u.mcpRequest!==void 0&&m!==void 0){let y=r!=="info";y&&m.input!==void 0&&h.push(zt(m.input));let T=f?{errorMessage:null}:await ro(p,t);y&&u.mcpRequest.method==="tools/call"&&T.errorMessage===null&&T.result!==void 0&&h.push(Ue("->"),zt(oo(T.result))),T.errorMessage!==null?h.push(oe(`ERROR ${H(T.errorMessage)}`)):p.status>=400&&h.push(oe(`ERROR (HTTP ${p.status})`))}l(p.status,m,h);let g=e.mcpPath!==void 0&&a.startsWith(C(e.mcpPath,"oauth/"));return r==="trace"&&!g&&await so(p,c,d,!f),p}}o(Ie,"requestLogger");import{createMcpHandler as uo}from"@modelcontextprotocol/server";import{trackBufferedResponse as lo}from"#mcp-use-buffered-response";function Le(e,t={}){let{path:n="/mcp",handler:r,authInfo:s}=t,i=r?.legacy??"stateless",a=uo(e,{legacy:"stateless",...r});return{handler:a,fetch:o(async d=>{if(!pe(d,n))return new Response("Not Found",{status:404});if(i==="stateless"){let g=d.method.toUpperCase();if(g==="GET"||g==="DELETE"||g==="HEAD")return new Response(null,{status:204})}let u=v(d),l=u.parsedBody;if(l===void 0)try{l=await d.clone().json()}catch{}let p=_t(l);p!==void 0&&Ut(d,p);let f=s?.(d)??u.authInfo,m=await a.fetch(d,{...l!==void 0&&{parsedBody:l},...f!==void 0&&{authInfo:f}});return m.headers.get("content-type")?.toLowerCase().includes("application/json")?"Bun"in globalThis&&m.body!==null?new Response(await m.arrayBuffer(),{status:m.status,statusText:m.statusText,headers:m.headers}):lo(d,m):m},"fetch")}}o(Le,"createMcpMount");function A(e,t){if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError(`${t} must be an object`);return e}o(A,"object");function Yt(e,t){if(!Array.isArray(e))throw new TypeError(`${t} must be an array`);return e}o(Yt,"array");function L(e,t){if(typeof e!="string"||!e.trim())throw new TypeError(`${t} must be a non-blank string`)}o(L,"nonBlank");function se(e,t){return{"~standard":{version:1,vendor:"mcp-use",jsonSchema:{input:o(()=>e,"input"),output:o(()=>e,"output")},async validate(n){try{return{value:await t(n)}}catch(r){return{issues:[{message:r instanceof Error?r.message:String(r)}]}}}}}}o(se,"standard");function Xt(e){let t=e.readTool??"settings.read",n=e.updateTool??"settings.update";if(L(t,"readTool"),L(n,"updateTool"),t===n)throw new TypeError("Settings read and update tools must have different names");A(e.fields,"fields");let r=Object.entries(e.fields).map(([m,h])=>[m,{...h}]);if(!r.length)throw new TypeError("Settings require at least one field");let s={};for(let[m,h]of r){if(L(h.title,`Setting ${m} title`),h.description!==void 0&&typeof h.description!="string")throw new TypeError(`Setting ${m} description must be a string`);let g=h.schema["~standard"].jsonSchema.output({target:"draft-2020-12"}),y=h.schema["~standard"].jsonSchema.input({target:"draft-2020-12"});if(!["boolean","string","number","integer"].includes(String(y.type))||g.type!==y.type||["$ref","anyOf","oneOf","allOf"].some(x=>x in y)||y.enum!==void 0&&(y.type!=="string"||!Array.isArray(y.enum)||!y.enum.length||!y.enum.every(x=>typeof x=="string")))throw new TypeError(`Unsupported native setting ${m}: use boolean, string, string enum, number, or integer`);let T=structuredClone(y);delete T.default,Object.defineProperty(s,m,{enumerable:!0,value:{...T,title:h.title,...h.description!==void 0&&{description:h.description}}})}let i={type:"object",properties:s,required:r.map(([m])=>m),additionalProperties:!1},a=e.layout===void 0?void 0:structuredClone(e.layout);if(a!==void 0)for(let m of Yt(a,"Settings layout")){let h=A(m,"Settings layout group");if(h.kind!=="group")throw new TypeError("Settings layout groups must have kind 'group'");L(h.title,"Settings layout group title");for(let g of Yt(h.items,"Settings layout group items")){let y=A(g,"Settings layout item");if(y.kind==="property"){if(L(y.property,"Settings layout property"),!Object.hasOwn(s,y.property))throw new TypeError(`Settings layout references unknown setting: ${y.property}`)}else if(y.kind==="tool"){if(L(y.tool,"Settings layout action tool"),L(y.title,"Settings layout action title"),y.description!==void 0&&typeof y.description!="string")throw new TypeError("Settings layout action description must be a string")}else throw new TypeError("Settings layout items must have kind 'property' or 'tool'")}}let c=o(async(m,h=!1)=>{let g=A(m,h?"set":"values");for(let T of Object.keys(g))if(!Object.hasOwn(s,T))throw new TypeError(`Unknown setting: ${T}`);if(h&&!Object.keys(g).length)throw new TypeError("Set at least one setting");let y={};for(let[T,x]of r){if(!Object.hasOwn(g,T)){if(!h)throw new TypeError(`Missing effective setting: ${T}`);continue}let b=await x.schema["~standard"].validate(g[T]);if(b.issues!==void 0)throw new TypeError(`Invalid setting ${T}: ${b.issues.map(w=>w.message).join(", ")}`);if(b.value===void 0||!["string","boolean","number"].includes(typeof b.value)||typeof b.value=="number"&&!Number.isFinite(b.value))throw new TypeError(`Invalid primitive setting: ${T}`);if(!Object.is(b.value,g[T]))throw new TypeError(`Setting ${T} schema must not transform values`);Object.defineProperty(y,T,{enumerable:!0,value:b.value})}return y},"validateValues"),d=se({type:"object",additionalProperties:!1},m=>{if(Object.keys(A(m,"arguments")).length)throw new TypeError("Settings read accepts empty arguments");return{}}),u=se({type:"object",properties:{set:{...i,required:[],minProperties:1}},required:["set"],additionalProperties:!1},async m=>{let h=A(m,"arguments");if(Object.keys(h).some(g=>g!=="set"))throw new TypeError("Unknown settings update argument");return{set:await c(h.set,!0)}}),p=se({type:"object",properties:{schema:{type:"object"},values:i,layout:{type:"array",items:{type:"object",properties:{kind:{const:"group"},title:{type:"string"},items:{type:"array",items:{type:"object"}}},required:["kind","title","items"]}}},required:["schema","values"]},async m=>{let h=A(m,"settings result");return{...h,values:await c(h.values)}}),f=se({type:"object",properties:{values:i},required:["values"]},async m=>({values:await c(A(m,"settings result").values)}));return{capability:{readTool:t,updateTool:n},schema:i,layout:a,readDefinition:{name:t,inputSchema:d,outputSchema:p,annotations:{readOnlyHint:!0}},updateDefinition:{name:n,inputSchema:u,outputSchema:f}}}o(Xt,"prepareSettings");import{completable as Zt}from"@modelcontextprotocol/server";function $e(e){let t=e.map(String);return n=>{let r=String(n??"").toLowerCase();return t.filter(s=>s.toLowerCase().startsWith(r))}}o($e,"createPrefixCompletion");function po(e,t){return typeof t=="function"?Zt(e,(n,r)=>t(String(n??""),r)):Zt(e,$e(t))}o(po,"completable");function Qt(e){let t=Object.create(null);for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=Array.isArray(r)?$e(r):r);return t}o(Qt,"normalizeCompletions");import{ResourceLinkSchema as fo}from"@modelcontextprotocol/core";import{fromJsonSchema as en}from"@modelcontextprotocol/server";var mo=en({type:"object",properties:{query:{type:"string"}},required:["query"]}),ho=en({type:"object",properties:{items:{type:"array",items:fo["~standard"].jsonSchema.output({target:"draft-2020-12"})}},required:["items"]});function je(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}o(je,"record");function tn(e){if(typeof e.name!="string"||!e.name.trim())throw new TypeError("Mention tool name must be a non-blank string");if(typeof e.search!="function")throw new TypeError("Mention search must be a callback");let{search:t,...n}=e;return{...n,inputSchema:mo,outputSchema:ho,annotations:{readOnlyHint:!0,...e.annotations},_meta:{...e._meta,"openai/extensions":{...je(e._meta?.["openai/extensions"]),"mentions/search":{}}}}}o(tn,"prepareMentions");function nn(e,t){let n=je(e._meta?.ui),r=e.visibility!==void 0?[e.visibility]:Array.isArray(n.visibility)?n.visibility:[];return{...t,ui:{...je(t?.ui),visibility:[...new Set([...r,"app"])]}}}o(nn,"finalizeMentionsMeta");import{fromJsonSchema as go}from"@modelcontextprotocol/server";var yo=["get","put","post","delete","options","head","patch","trace"];function an(e,t){let n=wo(t.spec,t),r=xo(n),s=n.length>0?Lo(t):void 0;for(let[i,a]of n.entries()){let c=r[i];if(c===void 0||s===void 0)continue;let d=Po(a);e.tool({name:c,description:vo(a),inputSchema:Eo(t.spec,a,d)},async u=>Uo(a,u,t,d,s))}}o(an,"registerOpenAPITools");function wo(e,t){let n=[];for(let[r,s]of Object.entries(e.paths??{})){let i=N(e,s);if(i===void 0||K(i))continue;let a=rn(e,i.parameters);for(let c of yo){let d=i[c];if(d===void 0)continue;let u=N(e,d);if(u===void 0||K(u))continue;let l=rn(e,u.parameters),p=u.requestBody===void 0?void 0:N(e,u.requestBody),f={method:c,path:r,operation:u,parameters:To(a,l),...p!==void 0&&!K(p)&&{requestBody:p}};bo(f,t)&&n.push(f)}}return n}o(wo,"collectOperations");function rn(e,t){let n=[];for(let r of t??[]){let s=N(e,r);s!==void 0&&!K(s)&&n.push(s)}return n}o(rn,"resolveParameters");function To(e,t){let n=new Map;for(let r of[...e,...t])n.set(`${r.in}:${r.name}`,r);return[...n.values()]}o(To,"mergeParameters");function bo(e,t){if(t.tags?.length){let n=new Set(e.operation.tags??[]);if(!t.tags.some(r=>n.has(r)))return!1}return!(t.exclude??[]).some(n=>Ro(e,n))}o(bo,"isIncluded");function Ro(e,t){if(t.method&&t.method.toLowerCase()!==e.method||t.operationId&&!on(t.operationId,e.operation.operationId??"")||t.path&&!on(t.path,e.path))return!1;if(t.tags?.length){let n=new Set(e.operation.tags??[]);if(!t.tags.some(r=>n.has(r)))return!1}return!0}o(Ro,"matchesExcludeRule");function on(e,t){return typeof e=="string"?e===t:(e.lastIndex=0,e.test(t))}o(on,"matchesPattern");function xo(e){let t=new Map;return e.map(n=>{let r=Mo(n.operation.operationId??`${n.method}_${n.path.replace(/[{}]/g,"").replace(/\//g,"_")}`),s=t.get(r)??0;if(t.set(r,s+1),s===0)return r;let i=`_${s+1}`;return`${r.slice(0,64-i.length)}${i}`})}o(xo,"createToolNames");function vo(e){return[e.operation.summary,e.operation.description,`HTTP: ${e.method.toUpperCase()} ${e.path}`].filter(t=>!!t).join(`
5
5
 
6
6
  `)}o(vo,"createToolDescription");function Mo(e){return e.trim().replace(/[^a-zA-Z0-9_-]+/g,"_").replace(/_+/g,"_").replace(/^_/,"").replace(/_$/,"").slice(0,64)||"openapi_tool"}o(Mo,"slugifyToolName");function Eo(e,t,n){let r={},s=[];for(let{parameter:d,inputName:u}of n.parameters){let l=sn(e,d.schema??{});r[u]={...l,description:d.description??`${d.in} parameter`},(d.required||d.in==="path")&&s.push(u)}let i=cn(t.requestBody);i!==void 0&&n.bodyInputName!==void 0&&(r[n.bodyInputName]=sn(e,i),t.requestBody?.required&&s.push(n.bodyInputName));let a=So(e),c={type:"object",properties:r,additionalProperties:!1,...s.length>0&&{required:s},...a!==void 0&&{$defs:a}};return go(c)}o(Eo,"createToolInputSchema");function Po(e){let t=e.parameters.filter(a=>a.in!=="cookie"),n=cn(e.requestBody)===void 0?void 0:"body",r=new Map;for(let a of t)r.set(a.name,(r.get(a.name)??0)+1);let s=new Set(n===void 0?[]:[n]);return{parameters:t.map(a=>{let d=(r.get(a.name)??0)>1||a.name===n?`${a.name}_${a.in}`:a.name;return{parameter:a,inputName:ko(d,s)}}),...n!==void 0&&{bodyInputName:n}}}o(Po,"createInputBindings");function ko(e,t){let n=e,r=2;for(;t.has(n);)n=`${e}_${r}`,r+=1;return t.add(n),n}o(ko,"claimInputName");function So(e){let t=D(e.components?.schemas);if(t===void 0)return;let n={};for(let[r,s]of Object.entries(t))n[r]=W(e,s,new Set);return n}o(So,"createSchemaDefinitions");function sn(e,t){let n=W(e,t,new Set);return D(n)??{}}o(sn,"transformSchema");function W(e,t,n){if(Array.isArray(t))return t.map(c=>W(e,c,n));let r=D(t);if(r===void 0)return t;let s=typeof r.$ref=="string"?r.$ref:void 0,i={};for(let[c,d]of Object.entries(r))c!=="$ref"&&(c==="nullable"&&typeof d=="boolean"||Ao(c)&&typeof d=="boolean"||(i[c]=W(e,d,n)));for(let[c,d]of Co)r[d]===!0&&typeof r[c]=="number"&&(i[d]=r[c],delete i[c]);let a=i;if(s!==void 0){let c=Oo(e,s);if(c!==void 0)a={$ref:c,...i};else if(!n.has(s)){let d=N(e,{$ref:s});if(d!==void 0){let u=new Set(n);u.add(s),a={...D(W(e,d,u))??{},...i}}}}return r.nullable===!0?{anyOf:[a,{type:"null"}]}:a}o(W,"transformSchemaNode");var Co=[["minimum","exclusiveMinimum"],["maximum","exclusiveMaximum"]];function Ao(e){return e==="exclusiveMinimum"||e==="exclusiveMaximum"}o(Ao,"isExclusiveBoundKey");function Oo(e,t){let n="#/components/schemas/";if(t.startsWith(n))return N(e,{$ref:t})===void 0?void 0:`#/$defs/${t.slice(n.length)}`}o(Oo,"rewriteSchemaRef");function cn(e){let t=e?.content;if(t!==void 0)return t["application/json"]?.schema??t["application/*+json"]?.schema??Object.entries(t).find(([n])=>n.includes("+json"))?.[1].schema}o(cn,"getJsonRequestBodySchema");async function Uo(e,t,n,r,s){let i=n.fetch??globalThis.fetch,a=_o(e,t,r.parameters,s),c=Io(r.parameters,t,n),d=r.bodyInputName,u=d===void 0||t[d]===void 0?void 0:JSON.stringify(t[d]);u!==void 0&&!Ho(c,"content-type")&&(c["content-type"]="application/json");let l=await i(a,{method:e.method.toUpperCase(),headers:c,...u!==void 0&&{body:u}}),p=l.headers.get("content-type")??"";if(!l.ok)return{content:[{type:"text",text:await l.text()}],isError:!0};if(p.includes("application/json")||p.includes("+json")){let f=await l.text();try{let m=JSON.parse(f);return{content:[{type:"text",text:JSON.stringify(m)}],structuredContent:m}}catch{return{content:[{type:"text",text:f}]}}}return{content:[{type:"text",text:await l.text()}]}}o(Uo,"callOpenAPIOperation");function _o(e,t,n,r){let s=e.path.replace(/{([^}]+)}/g,(a,c)=>{let d=n.find(({parameter:u})=>u.in==="path"&&u.name===c);return encodeURIComponent(String(d===void 0?"":t[d.inputName]??""))}),i=new URL(s.replace(/^\/+/,""),jo(r));for(let{parameter:a,inputName:c}of n){if(a.in!=="query")continue;let d=t[c];d==null||d===""||$o(i,a.name,d)}return i.toString()}o(_o,"buildUrl");function Io(e,t,n){let r={...n.headers??{}};for(let{parameter:s,inputName:i}of e){if(s.in!=="header")continue;let a=t[i];a==null||a===""||(r[s.name]=String(a))}return n.auth?.type==="bearer"&&n.auth.token&&(r.authorization=`Bearer ${n.auth.token}`),n.auth?.type==="header"&&n.auth.value&&(r[n.auth.name]=n.auth.value),r}o(Io,"buildHeaders");function Lo(e){let t=e.baseUrl??e.spec.servers?.[0]?.url;if(t===void 0||t.trim()==="")throw new Error("MCPServer.fromOpenAPI requires options.baseUrl or spec.servers[0].url");return t}o(Lo,"resolveBaseUrl");function $o(e,t,n){if(Array.isArray(n)){for(let r of n)r!=null&&r!==""&&e.searchParams.append(t,String(r));return}e.searchParams.set(t,String(n))}o($o,"appendQueryParam");function jo(e){return e.endsWith("/")?e:`${e}/`}o(jo,"ensureTrailingSlash");function Ho(e,t){return Object.keys(e).some(n=>n.toLowerCase()===t)}o(Ho,"hasHeader");function K(e){let t=D(e);return t!==void 0&&typeof t.$ref=="string"}o(K,"isReferenceObject");function N(e,t){if(!K(t))return t;if(!t.$ref.startsWith("#/"))return;let n=t.$ref.slice(2).split("/").map(s=>s.replace(/~1/g,"/").replace(/~0/g,"~")),r=e;for(let s of n){let i=D(r);if(i===void 0||!(s in i))return;r=i[s]}return r}o(N,"resolveRef");function D(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}o(D,"readRecord");import{OAuthError as Pd,OAuthErrorCode as kd,bearerAuthChallengeResponse as Sd,getOAuthProtectedResourceMetadataUrl as Tn,oauthMetadataResponse as Cd,requireBearerAuth as Ad,verifyBearerToken as Od}from"@modelcontextprotocol/server";import{getOAuthProtectedResourceMetadataUrl as fa,oauthMetadataResponse as zo,requireBearerAuth as ma}from"@modelcontextprotocol/server";function q(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(q,"isRecord");function O(e){let t=e.hostname.toLowerCase();return t==="localhost"||t.endsWith(".localhost")||t==="[::1]"||/^127(?:\.\d{1,3}){3}$/.test(t)}o(O,"isLocalhost");function F(e,t){let n;try{n=new URL(e)}catch{throw new Error(`${t} must be an absolute URL`)}if(n.origin==="null"||n.username!==""||n.password!=="")throw new Error(`${t} must be an absolute URL without credentials`);return n}o(F,"parseAbsoluteUrl");function J(e,t){if(e.protocol!=="https:"&&!(e.protocol==="http:"&&O(e)))throw new Error(`${t} must use HTTPS, or HTTP for localhost`)}o(J,"assertSecureHttpUrl");function He(e){if(e===null||typeof e!="object"||!("issuer"in e)||typeof e.issuer!="string")throw new TypeError("oauthMetadata must include a string issuer");J(F(e.issuer,"oauthMetadata.issuer"),"oauthMetadata.issuer")}o(He,"assertOAuthMetadata");import{OAuthError as No,OAuthErrorCode as Do}from"@modelcontextprotocol/server";function M(e,t){let n=new No(Do.InvalidToken,e);return t!==void 0&&(n.cause=t),n}o(M,"invalidToken");function dn(e){let t=e.provider,n=Fe(e.basePath);if(t.resource!==void 0)return Ne(t.resource,n);if(e.mcpUrl!==void 0)return Ne(fn(pn(e.mcpUrl,"MCP_URL"),n),n)}o(dn,"resolveConfiguredOAuthResource");function un(e,t){let n=pn(e,"listen origin");if(!O(n))throw new Error("OAuth listen origin must be localhost or a loopback address");return Ne(fn(n,Fe(t)),t)}o(un,"resolveLocalOAuthResource");function Ne(e,t){let n=Fe(t),r=F(e,"OAuth resource");if(r.search!==""||r.hash!=="")throw new Error("OAuth resource must not include a query string or fragment");if(J(r,"OAuth resource"),mn(r.pathname)!==n)throw new Error(`OAuth resource path must exactly match basePath (${n})`);return r.pathname=n,r}o(Ne,"validateOAuthResource");function De(e,t){let n=qe(t),r=e.createTokenVerifier(new URL(n.href));if(r===null||typeof r!="object"||typeof r.verifyAccessToken!="function")throw new TypeError("OAuth provider createTokenVerifier must return an OAuthTokenVerifier");return{async verifyAccessToken(s){let i=await r.verifyAccessToken(s);Vo(i),qo(i,n);let a;try{a=e.mapAuthInfo(i)}catch(c){throw M("Token identity mapping failed",c)}return Bo(a),{...i,scopes:[...i.scopes],extra:{...i.extra,...a}}}}}o(De,"wrapOAuthTokenVerifier");function qo(e,t){if(e.resource===void 0)throw M("Token verifier did not return a validated protected resource");if(Fo(e.resource).href!==qe(t).href)throw M("Token resource does not match the protected resource")}o(qo,"assertResourceBinding");function Fo(e){if(!(e instanceof URL))throw M("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");let t=e;if(!/^https?:$/.test(t.protocol)||t.username!==""||t.password!==""||t.search!==""||t.hash!==""||t.protocol==="http:"&&!O(t))throw M("Token resource must be an absolute HTTPS URL, or HTTP URL for localhost");return qe(t)}o(Fo,"parseTokenResource");function qe(e){let t=new URL(e);return t.pathname=t.pathname==="/"?"/":t.pathname.replace(/\/+$/,""),t}o(qe,"normalizeResourceUrl");function ln(e,t){let n=e.oauthMetadata;if(typeof n!="function")return n;let r=n(new URL(t.href));return He(r),r}o(ln,"resolveOAuthMetadata");function ie(e){return{oauthMetadata:e.oauthMetadata,...e.requiredScopes!==void 0&&{requiredScopes:[...e.requiredScopes]},...e.scopesSupported!==void 0&&{scopesSupported:[...e.scopesSupported]},...e.resourceName!==void 0&&{resourceName:e.resourceName},...e.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:e.serviceDocumentationUrl}}}o(ie,"getOAuthProviderOptions");function Vo(e){if(e===null||typeof e!="object"||typeof e.token!="string"||e.token.length===0||typeof e.clientId!="string"||!Array.isArray(e.scopes)||!e.scopes.every(t=>typeof t=="string")||typeof e.expiresAt!="number"||!Number.isFinite(e.expiresAt)||e.expiresAt<=Date.now()/1e3)throw M("Token verifier returned invalid authentication information")}o(Vo,"assertVerifiedAuthInfo");function Bo(e){if(e===null||typeof e!="object"||!("user"in e)||e.user===void 0||!q(e.payload)||!Array.isArray(e.permissions)||!e.permissions.every(t=>typeof t=="string"))throw M("Token identity mapping must return user, payload, and string permissions")}o(Bo,"assertMappedExtra");function pn(e,t){let n=F(e,t);if(n.pathname!=="/"||n.search!==""||n.hash!==""||n.username!==""||n.password!=="")throw new Error(`${t} must be an absolute origin without a path`);return n}o(pn,"requireAbsoluteOrigin");function fn(e,t){let n=new URL(e.origin);return n.pathname=t,n}o(fn,"appendBasePath");function Fe(e){if(!e.startsWith("/")||e.includes("?")||e.includes("#"))throw new Error("basePath must be an absolute URL pathname");return mn(e)}o(Fe,"normalizeBasePath");function mn(e){if(e==="/")return"/";let t=e.length;for(;t>0&&e.charCodeAt(t-1)===47;)t--;return e.slice(0,t)}o(mn,"normalizePathname");function Ve(e,t){let n=ie(e),r=ln(e,t);return async(s,i)=>{let a=zo(s,{oauthMetadata:r,resourceServerUrl:t,...n.scopesSupported!==void 0&&{scopesSupported:[...n.scopesSupported]},...n.resourceName!==void 0&&{resourceName:n.resourceName},...n.serviceDocumentationUrl!==void 0&&{serviceDocumentationUrl:n.serviceDocumentationUrl}});return a!==void 0?a:i()}}o(Ve,"oauthMetadata");function hn(e){return v(e).authInfo}o(hn,"authInfoFromRequest");import{OAuthError as ba}from"@modelcontextprotocol/server";import{createRemoteJWKSet as xa,jwtVerify as va,errors as Ma}from"jose";import{OAuthClientMetadataSchema as Ja}from"@modelcontextprotocol/core";var La=new TextEncoder,$a=new TextDecoder("utf-8",{fatal:!0});function Be(){return typeof process>"u"||process.env===void 0?!1:process.env.MCP_USE_PHASE==="build"}o(Be,"isBuilding");var Qa=365*24*60*60;var ec=5*1024;var tc=300*1e3;import{deleteCookie as bc,getCookie as Rc,getSignedCookie as xc,setSignedCookie as vc}from"hono/cookie";var Ac=720*60*60;var Oc=1440*60*60,Uc=365*24*60*60;function ae(e){return e.inputSchema??e.schema}o(ae,"resolveToolInputSchema");import{fromJsonSchema as Zo}from"@modelcontextprotocol/server";var bn="openai/ui";function Qo(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(Qo,"record");function Rn(e){let t=e.view?.entrypoints;if(!t?.length)return;let n=ae(e),r=n?Zo(n["~standard"].jsonSchema.input({target:"draft-2020-12"}))["~standard"].validate:void 0;for(let s of t){let i=s.type==="file"?s.extensions.map(a=>({file:{name:`file${a}`,resourceUri:"host-resource://opaque-handle"}})):[{}];if(s.type==="file"&&!r)throw new TypeError(`Tool "${e.name}" file entrypoint requires an inputSchema accepting { file: { name, resourceUri } }.`);for(let a of i){let c=r?.(a);if(c&&("then"in c||c.issues))throw new TypeError(`Tool "${e.name}" ${s.type} entrypoint launch arguments do not satisfy its inputSchema.`)}}}o(Rn,"validateEntrypointInput");function xn(e){let t=e.view?.entrypoints;if(t===void 0)return e._meta;let n=e._meta?.[bn];return{...e._meta,[bn]:{...Qo(n)?n:{},entrypoints:t.map(r=>r.type==="file"?{type:r.type,extensions:[...r.extensions]}:{type:r.type})}}}o(xn,"buildEntrypointMeta");var es="mcp_use_sdk_event",ts="https://eu.i.posthog.com/i/v0/e/",ns="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",rs=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,os=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),vn;function We(){return vn??=crypto.randomUUID(),vn}o(We,"getRuntimeId");var Mn=new Set,ze=new Set,En=new Map;function Ke(e){return[...e].some(t=>{let n=t.charCodeAt(0);return n<32||n===127})}o(Ke,"hasControl");function Je(e){return typeof process>"u"?void 0:process.env?.[e]}o(Je,"env");function Pn(e){let t=Je(e);return t!==void 0&&t.length>0&&t.length<=128&&!Ke(t)?t:void 0}o(Pn,"safeEnv");function ss(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}o(ss,"canPersistTelemetryIdentity");function kn(){if(Je("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}o(kn,"disabled");function Sn(){return kn()}o(Sn,"isUsageDisabled");function is(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t.length>128||Ke(t)||t.startsWith("$")||os.has(t)||rs.test(t)||n===void 0?!1:typeof n=="string"?n.length<=128&&!Ke(n):typeof n=="boolean"||typeof n=="number"&&Number.isFinite(n)))}o(is,"clean");async function as(e){let t=Pn("MCP_USE_TELEMETRY_PROJECT_ID");if(t!==void 0)return{id:t,stability:"project"};if(e===void 0||!ss())return{id:We(),stability:"process"};let n=En.get(e);if(n!==void 0)return n;let r=(async()=>{try{let s=await import("fs/promises"),i=`${e}/.mcp-use`,a=`${i}/usage.json`,c=o(async()=>{try{let l=JSON.parse(await s.readFile(a,"utf8"));if(typeof l=="object"&&l!==null&&"schemaVersion"in l&&l.schemaVersion===1&&"serverId"in l&&typeof l.serverId=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(l.serverId))return l.serverId}catch{}},"read"),d=await c();if(d!==void 0)return{id:d,stability:"server"};await s.mkdir(i,{recursive:!0,mode:448});let u=crypto.randomUUID();try{return await s.writeFile(a,`${JSON.stringify({schemaVersion:1,serverId:u})}
7
- `,{flag:"wx",mode:384}),{id:u,stability:"server"}}catch{let l=await c();if(l!==void 0)return{id:l,stability:"server"}}}catch{}return{id:We(),stability:"process"}})();return En.set(e,r),r}o(as,"identity");function cs(e,t,n,r,s){let i=Pn("MCP_USE_TELEMETRY_VALIDATION_ID");if(kn()||Je("NODE_ENV")==="test"&&i===void 0||ze.size>=16)return;if(r.onceKey!==void 0){if(Mn.has(r.onceKey))return;Mn.add(r.onceKey)}let a=Math.max(0,Math.min(1,r.sampleRate??1));if(i===void 0&&Math.random()>=a)return;let c=(async()=>{try{let d=await s(),u=JSON.stringify({api_key:ns,event:es,properties:{...is(n),feature:e,action:t,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.11.0-canary.9",server_id:d.id,runtime_id:We(),identity_stability:d.stability,distinct_id:d.id,sample_rate:i===void 0?a:1,$process_person_profile:!1,$geoip_disable:!0,...i!==void 0&&{is_validation:!0,validation_run_id:i}}});await fetch(ts,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body:u})}catch{return}})();ze.add(c),c.then(()=>ze.delete(c))}o(cs,"capture");function ce(e,t,n={},r={}){cs(e,t,n,r,()=>as(r.serverRoot))}o(ce,"recordUsage");import{INVALID_PARAMS as Cn,ProtocolError as An}from"@modelcontextprotocol/server";function Ye(e){return{"~standard":{version:1,vendor:"mcp-use",validate(t){try{return{value:e(t)}}catch(n){return{issues:[{message:n instanceof Error?n.message:String(n)}]}}}}}}o(Ye,"schema");function Xe(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("params must be an object");return e}o(Xe,"object");var ds=Ye(e=>{let n=Xe(e).cursor;if(n!==void 0&&typeof n!="string")throw new TypeError("cursor must be a string");return n===void 0?{}:{cursor:n}}),On=Ye(e=>{let t=Xe(e);if(typeof t.uri!="string")throw new TypeError("uri must be a string");if(t.cursor!==void 0&&typeof t.cursor!="string")throw new TypeError("cursor must be a string");return{uri:t.uri,...typeof t.cursor=="string"&&{cursor:t.cursor}}}),Ge=Ye(e=>Xe(e));function us(e){try{return decodeURIComponent(e)}catch{return e}}o(us,"decodePathSegment");function Un(e,t){let n=new Map(t.skills.map(r=>[r.uri,r]));for(let r of t.resources)e.registerResource(r.uri,r.uri,{title:r.name,mimeType:r.mimeType},async()=>({contents:[{uri:r.uri,mimeType:r.mimeType,...r.text!==void 0?{text:r.text}:{blob:r.blob}}]}));e.server.setRequestHandler("skills/list",{params:ds,result:Ge},async()=>({skills:t.skills})),e.server.setRequestHandler("skills/get",{params:On,result:Ge},async({uri:r})=>{let s=n.get(r);if(s===void 0)throw new An(Cn,`Unknown skill: ${r}`);return{skill:s}}),e.server.setRequestHandler("resources/directory/read",{params:On,result:Ge},async({uri:r})=>{let s=r.replace(/\/$/,""),i=new Set(t.directories.map(d=>d.uri)),a=`${s}/`,c=new Map;for(let d of t.resources){if(!d.uri.startsWith(a))continue;let u=d.uri.slice(a.length),[l]=u.split("/");if(l===void 0||l==="")continue;let p=`${s}/${l}`;c.set(p,{uri:p,name:us(l),mimeType:u.includes("/")?"inode/directory":d.mimeType})}for(let d of t.directories){if(!d.uri.startsWith(a))continue;let u=d.uri.slice(a.length);u===""||u.includes("/")||c.set(d.uri,{uri:d.uri,name:d.name,mimeType:"inode/directory"})}if(!i.has(s))throw new An(Cn,`Unknown skill directory: ${r}`);return{resources:[...c.values()].sort((d,u)=>d.uri.localeCompare(u.uri))}})}o(Un,"registerSkillsRuntime");var Ze="io.modelcontextprotocol/skills",G=Symbol.for("mcp-use.registerSkills");var Y=Symbol("mcp-use/registerViews");function ls(e,t){if(!e.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(e)}`);return`${t}${e}`}o(ls,"resolveAssetUrl");function ps(e,t){return`${C(e,`_mcp-use/views/${t}`)}/`}o(ps,"viewAssetsBasePath");function Qe(e,t,n,r){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:")?e:e.startsWith("/")?ls(e,t):`${t}${ps(n,r)}${e.replace(/^\/+/,"")}`}o(Qe,"resolveExternalAssetUrl");function fs(e,t){return`${e}${C(t,"_mcp-use/public")}/`}o(fs,"resolvePublicBase");function _n(e){return e.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}o(_n,"escapeInlineScript");function ms(e){return e.replaceAll(/<\/style/gi,"<\\/style")}o(ms,"escapeInlineStyle");function et(e){return e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;")}o(et,"escapeHtml");var In=`<style>
7
+ `,{flag:"wx",mode:384}),{id:u,stability:"server"}}catch{let l=await c();if(l!==void 0)return{id:l,stability:"server"}}}catch{}return{id:We(),stability:"process"}})();return En.set(e,r),r}o(as,"identity");function cs(e,t,n,r,s){let i=Pn("MCP_USE_TELEMETRY_VALIDATION_ID");if(kn()||Je("NODE_ENV")==="test"&&i===void 0||ze.size>=16)return;if(r.onceKey!==void 0){if(Mn.has(r.onceKey))return;Mn.add(r.onceKey)}let a=Math.max(0,Math.min(1,r.sampleRate??1));if(i===void 0&&Math.random()>=a)return;let c=(async()=>{try{let d=await s(),u=JSON.stringify({api_key:ns,event:es,properties:{...is(n),feature:e,action:t,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.11.0",server_id:d.id,runtime_id:We(),identity_stability:d.stability,distinct_id:d.id,sample_rate:i===void 0?a:1,$process_person_profile:!1,$geoip_disable:!0,...i!==void 0&&{is_validation:!0,validation_run_id:i}}});await fetch(ts,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body:u})}catch{return}})();ze.add(c),c.then(()=>ze.delete(c))}o(cs,"capture");function ce(e,t,n={},r={}){cs(e,t,n,r,()=>as(r.serverRoot))}o(ce,"recordUsage");import{INVALID_PARAMS as Cn,ProtocolError as An}from"@modelcontextprotocol/server";function Ye(e){return{"~standard":{version:1,vendor:"mcp-use",validate(t){try{return{value:e(t)}}catch(n){return{issues:[{message:n instanceof Error?n.message:String(n)}]}}}}}}o(Ye,"schema");function Xe(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new TypeError("params must be an object");return e}o(Xe,"object");var ds=Ye(e=>{let n=Xe(e).cursor;if(n!==void 0&&typeof n!="string")throw new TypeError("cursor must be a string");return n===void 0?{}:{cursor:n}}),On=Ye(e=>{let t=Xe(e);if(typeof t.uri!="string")throw new TypeError("uri must be a string");if(t.cursor!==void 0&&typeof t.cursor!="string")throw new TypeError("cursor must be a string");return{uri:t.uri,...typeof t.cursor=="string"&&{cursor:t.cursor}}}),Ge=Ye(e=>Xe(e));function us(e){try{return decodeURIComponent(e)}catch{return e}}o(us,"decodePathSegment");function Un(e,t){let n=new Map(t.skills.map(r=>[r.uri,r]));for(let r of t.resources)e.registerResource(r.uri,r.uri,{title:r.name,mimeType:r.mimeType},async()=>({contents:[{uri:r.uri,mimeType:r.mimeType,...r.text!==void 0?{text:r.text}:{blob:r.blob}}]}));e.server.setRequestHandler("skills/list",{params:ds,result:Ge},async()=>({skills:t.skills})),e.server.setRequestHandler("skills/get",{params:On,result:Ge},async({uri:r})=>{let s=n.get(r);if(s===void 0)throw new An(Cn,`Unknown skill: ${r}`);return{skill:s}}),e.server.setRequestHandler("resources/directory/read",{params:On,result:Ge},async({uri:r})=>{let s=r.replace(/\/$/,""),i=new Set(t.directories.map(d=>d.uri)),a=`${s}/`,c=new Map;for(let d of t.resources){if(!d.uri.startsWith(a))continue;let u=d.uri.slice(a.length),[l]=u.split("/");if(l===void 0||l==="")continue;let p=`${s}/${l}`;c.set(p,{uri:p,name:us(l),mimeType:u.includes("/")?"inode/directory":d.mimeType})}for(let d of t.directories){if(!d.uri.startsWith(a))continue;let u=d.uri.slice(a.length);u===""||u.includes("/")||c.set(d.uri,{uri:d.uri,name:d.name,mimeType:"inode/directory"})}if(!i.has(s))throw new An(Cn,`Unknown skill directory: ${r}`);return{resources:[...c.values()].sort((d,u)=>d.uri.localeCompare(u.uri))}})}o(Un,"registerSkillsRuntime");var Ze="io.modelcontextprotocol/skills",G=Symbol.for("mcp-use.registerSkills");var Y=Symbol("mcp-use/registerViews");function ls(e,t){if(!e.startsWith("/"))throw new Error(`View manifest asset path must be origin-absolute (start with "/"); got ${JSON.stringify(e)}`);return`${t}${e}`}o(ls,"resolveAssetUrl");function ps(e,t){return`${C(e,`_mcp-use/views/${t}`)}/`}o(ps,"viewAssetsBasePath");function Qe(e,t,n,r){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:")?e:e.startsWith("/")?ls(e,t):`${t}${ps(n,r)}${e.replace(/^\/+/,"")}`}o(Qe,"resolveExternalAssetUrl");function fs(e,t){return`${e}${C(t,"_mcp-use/public")}/`}o(fs,"resolvePublicBase");function _n(e){return e.replaceAll(/<\/script/gi,"<\\/script").replaceAll("<!--","\\x3C!--")}o(_n,"escapeInlineScript");function ms(e){return e.replaceAll(/<\/style/gi,"<\\/style")}o(ms,"escapeInlineStyle");function et(e){return e.replaceAll("&","&amp;").replaceAll('"',"&quot;").replaceAll("<","&lt;").replaceAll(">","&gt;")}o(et,"escapeHtml");var In=`<style>
8
8
  html,body,#root{background:transparent}
9
9
  html,body{margin:0}
10
10
  #root[data-mcp-use-loading]{display:flex;min-height:100vh;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:rgba(127,127,127,.9)}
@@ -1,2 +1,2 @@
1
1
  var EVENT="mcp_use_sdk_event",ENDPOINT="https://eu.i.posthog.com/i/v0/e/",TOKEN="phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI",CONTENT=/(^|_)(arguments?|args|body|command|headers?|location|message|organization|path|query|response|secret|subject|token|uri|url|user_agent)(_|$)/i,RESERVED=new Set("feature action sdk_generation telemetry_schema_version sdk_package sdk_version server_id runtime_id identity_stability distinct_id validation_run_id is_validation".split(" ")),runtimeId;function getRuntimeId(){return runtimeId??=crypto.randomUUID(),runtimeId}var once=new Set,pending=new Set,identities=new Map;function hasControl(value){return[...value].some(character=>{let code=character.charCodeAt(0);return code<32||code===127})}function env(name){return typeof process>"u"?void 0:process.env?.[name]}function safeEnv(name){let value=env(name);return value!==void 0&&value.length>0&&value.length<=128&&!hasControl(value)?value:void 0}function canPersistTelemetryIdentity(){return typeof process>"u"||process.versions?.node===void 0?!1:!("Deno"in globalThis)}function disabled(){if(env("MCP_USE_ANONYMIZED_TELEMETRY")==="false")return!0;try{return globalThis.__MCP_USE_ANONYMIZED_TELEMETRY__===!1||typeof localStorage<"u"&&localStorage.getItem("MCP_USE_ANONYMIZED_TELEMETRY")==="false"}catch{return!1}}function isUsageDisabled(){return disabled()}function clean(properties){return Object.fromEntries(Object.entries(properties).filter(([key,value])=>key.length>128||hasControl(key)||key.startsWith("$")||RESERVED.has(key)||CONTENT.test(key)||value===void 0?!1:typeof value=="string"?value.length<=128&&!hasControl(value):typeof value=="boolean"||typeof value=="number"&&Number.isFinite(value)))}async function identity(serverRoot){let projectId=safeEnv("MCP_USE_TELEMETRY_PROJECT_ID");if(projectId!==void 0)return{id:projectId,stability:"project"};if(serverRoot===void 0||!canPersistTelemetryIdentity())return{id:getRuntimeId(),stability:"process"};let existing=identities.get(serverRoot);if(existing!==void 0)return existing;let resolving=(async()=>{try{let fs=await import("fs/promises"),directory=`${serverRoot}/.mcp-use`,file=`${directory}/usage.json`,read=async()=>{try{let value=JSON.parse(await fs.readFile(file,"utf8"));if(typeof value=="object"&&value!==null&&"schemaVersion"in value&&value.schemaVersion===1&&"serverId"in value&&typeof value.serverId=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value.serverId))return value.serverId}catch{}},stored=await read();if(stored!==void 0)return{id:stored,stability:"server"};await fs.mkdir(directory,{recursive:!0,mode:448});let created=crypto.randomUUID();try{return await fs.writeFile(file,`${JSON.stringify({schemaVersion:1,serverId:created})}
2
- `,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.11.0-canary.9",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}async function flushUsage(){await Promise.all([...pending])}export{flushUsage,isUsageDisabled,recordUsage};
2
+ `,{flag:"wx",mode:384}),{id:created,stability:"server"}}catch{let raced=await read();if(raced!==void 0)return{id:raced,stability:"server"}}}catch{}return{id:getRuntimeId(),stability:"process"}})();return identities.set(serverRoot,resolving),resolving}function capture(feature,action,properties,options,resolveIdentity){let validationId=safeEnv("MCP_USE_TELEMETRY_VALIDATION_ID");if(disabled()||env("NODE_ENV")==="test"&&validationId===void 0||pending.size>=16)return;if(options.onceKey!==void 0){if(once.has(options.onceKey))return;once.add(options.onceKey)}let rate=Math.max(0,Math.min(1,options.sampleRate??1));if(validationId===void 0&&Math.random()>=rate)return;let request=(async()=>{try{let resolvedIdentity=await resolveIdentity(),body=JSON.stringify({api_key:TOKEN,event:EVENT,properties:{...clean(properties),feature,action,sdk_generation:"v2",telemetry_schema_version:2,sdk_package:"mcp-use",sdk_version:"2.11.0",server_id:resolvedIdentity.id,runtime_id:getRuntimeId(),identity_stability:resolvedIdentity.stability,distinct_id:resolvedIdentity.id,sample_rate:validationId===void 0?rate:1,$process_person_profile:!1,$geoip_disable:!0,...validationId!==void 0&&{is_validation:!0,validation_run_id:validationId}}});await fetch(ENDPOINT,{method:"POST",headers:{"content-type":"application/json"},keepalive:!0,body})}catch{return}})();pending.add(request),request.then(()=>pending.delete(request))}function recordUsage(feature,action,properties={},options={}){capture(feature,action,properties,options,()=>identity(options.serverRoot))}async function flushUsage(){await Promise.all([...pending])}export{flushUsage,isUsageDisabled,recordUsage};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mcp-use",
3
3
  "type": "module",
4
- "version": "2.11.0-canary.9",
4
+ "version": "2.11.0",
5
5
  "description": "MCP framework and CLI built on the official v2 SDK",
6
6
  "author": "mcp-use, Inc.",
7
7
  "license": "MIT",
@@ -137,11 +137,11 @@
137
137
  "hono": "^4.13.7",
138
138
  "jose": "^6.1.3",
139
139
  "oauth4webapi": "^3.8.8",
140
- "@mcp-use/cli": "4.5.0-canary.4",
141
- "@mcp-use/inspector": "20.3.22-canary.8"
140
+ "@mcp-use/cli": "4.5.0",
141
+ "@mcp-use/inspector": "20.3.22"
142
142
  },
143
143
  "peerDependencies": {
144
- "@mcp-use/client": "^2.0.1 || ^2.1.0 || ^2.1.1 || ^2.1.2 || ^2.1.3 || ^2.1.4 || ^2.1.5 || ^2.2.0 || ^2.2.1 || ^2.2.2 || ^2.2.3 || ^2.2.4 || ^2.2.5 || ^2.3.0 || ^2.3.1 || ^2.3.2 || ^2.3.3 || ^2.3.4 || ^2.3.5 || ^2.4.0 || ^2.4.1 || ^2.4.2 || ^2.4.3 || ^2.4.4 || ^2.4.5-canary.0",
144
+ "@mcp-use/client": "^2.0.1 || ^2.1.0 || ^2.1.1 || ^2.1.2 || ^2.1.3 || ^2.1.4 || ^2.1.5 || ^2.2.0 || ^2.2.1 || ^2.2.2 || ^2.2.3 || ^2.2.4 || ^2.2.5 || ^2.3.0 || ^2.3.1 || ^2.3.2 || ^2.3.3 || ^2.3.4 || ^2.3.5 || ^2.4.0 || ^2.4.1 || ^2.4.2 || ^2.4.3 || ^2.4.4 || ^2.4.5",
145
145
  "react": "^19.0.0",
146
146
  "react-dom": "^19.0.0",
147
147
  "vite": "^8.0.0"
@@ -174,7 +174,7 @@
174
174
  "vitest": "^4.1.11",
175
175
  "zod": "^4.4.3",
176
176
  "vite": "8.0.16",
177
- "@mcp-use/client": "2.4.5-canary.1"
177
+ "@mcp-use/client": "2.4.5"
178
178
  },
179
179
  "publishConfig": {
180
180
  "access": "public"