Skip to content

Bump @modelcontextprotocol/sdk from 1.19.1 to 1.24.0#156

Open
dependabot[bot] wants to merge 1 commit intomasterfrom
dependabot/npm_and_yarn/modelcontextprotocol/sdk-1.24.0
Open

Bump @modelcontextprotocol/sdk from 1.19.1 to 1.24.0#156
dependabot[bot] wants to merge 1 commit intomasterfrom
dependabot/npm_and_yarn/modelcontextprotocol/sdk-1.24.0

Conversation

@dependabot
Copy link

@dependabot dependabot bot commented on behalf of github Dec 2, 2025

Bumps @modelcontextprotocol/sdk from 1.19.1 to 1.24.0.

Release notes

Sourced from @​modelcontextprotocol/sdk's releases.

1.24.0

Summary

This release brings us up to speed with the latest MCP spec 2025-11-25. Take a look at the latest spec as well as the release blog post.

What's Changed

New Contributors

Full Changelog: modelcontextprotocol/typescript-sdk@1.23.0...1.24.0

1.23.0

What's Changed

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by pcarleton, a new releaser for @​modelcontextprotocol/sdk since your current version.


Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

@dependabot dependabot bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Dec 2, 2025
@vercel
Copy link

vercel bot commented Dec 2, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
zapdev Error Error Dec 13, 2025 6:36am

@codecapyai
Copy link

codecapyai bot commented Dec 2, 2025

CodeCapy Review ₍ᐢ•(ܫ)•ᐢ₎

Codebase Summary

ZapDev is an AI-powered development platform that enables users to create web applications by conversing with AI agents in real-time sandboxes. It uses Next.js, React, TypeScript, and various supporting libraries to provide features such as live previews, file management, AI code generation, and sandbox creation using E2B and Inngest for background processing.

PR Changes

This pull request bumps the @modelcontextprotocol/sdk dependency from version 1.19.1 to 1.24.0. The new version includes various fixes and enhancements such as improved HTTP error response handling, better SSE event processing (including handling of empty data), adjustments for OAuth error messages, and other API improvements. Even though these changes are primarily at the SDK layer, they may affect how errors and real-time updates are processed and displayed in the user interface.

Setup Instructions

  1. Install pnpm globally: sudo npm install -g pnpm
  2. Clone the repository and navigate into it: cd zapdev
  3. Install dependencies: pnpm install
  4. Start the development server: pnpm dev
  5. Open your browser and navigate to http://localhost:3000 to begin testing.

Generated Test Cases

1: SDK API Error Handling on Chat Submission ❗️❗️❗️

Description: Tests how the UI displays errors resulting from failed API calls through the updated SDK. This ensures that when a message submission or similar action fails due to an HTTP error, the user sees a clear and informative error message. This is important because the new SDK version consumes HTTP error response bodies, potentially altering the displayed error content.

Prerequisites:

  • User is logged in
  • Test environment with the ability to simulate API errors (e.g., via network interception or test mock)

Steps:

  1. Log in to the application.
  2. Navigate to the chat or messaging section where an API call is triggered (for example, submitting a project description or chat message).
  3. Simulate a failure on the API call by intercepting the network request and returning an HTTP error response with a body (this could be done using a tool like Cypress or a browser dev tool override).
  4. Click the submit/send button to trigger the API request.

Expected Result: The UI should catch the error and display a clear error message to the user that includes relevant detail from the response body. The error notification should be visible, and the screen should not freeze or break.

2: Streamable SSE Event Handling with Empty Data ❗️❗️❗️

Description: Validates that the UI correctly handles SSE (Server-Sent Events) streams from the SDK when empty data events are encountered. This test confirms that the improvements in JSON parsing for SSE events prevent crashes or confusing error displays to the user.

Prerequisites:

  • Application is running in development mode
  • A live preview or real-time update page that uses SSE events is accessible

Steps:

  1. Start the application and log in if necessary.
  2. Navigate to a page that receives real-time updates via SSE (such as a live preview or dashboard).
  3. Simulate an SSE event with an empty data payload (this can be done using network interception tools or by configuring a mock endpoint).
  4. Observe the UI behavior once the empty event is processed.

Expected Result: The UI should handle the empty data gracefully without crashing. Any error message (if displayed) should be clear and non-disruptive, and the component should remain operational, allowing further updates to be received normally.

3: Successful AI Agent Interaction Flow ❗️❗️

Description: Ensures that the user’s complete journey when interacting with the AI agent remains seamless after the SDK update. This includes initiating a conversation, triggering code generation, and rendering the resultant output in the UI.

Prerequisites:

  • User is logged in
  • All required API keys and environment variables are properly configured
  • Network connectivity is normal so that API calls succeed

Steps:

  1. Log in to the application.
  2. Navigate to the main dashboard or project creation area where the AI-powered chat is available.
  3. Start a new conversation by entering a request (e.g., 'Generate a simple landing page').
  4. Wait for the AI agent to process the request; observe any visual indicators (like loading spinners) during processing.
  5. After processing, verify that the generated code or preview is displayed correctly in the UI.

Expected Result: The UI should transition smoothly through the interaction flow. It should display a loading indicator while processing, then render the generated code/preview once the API call succeeds. No new errors or unexpected behavior should be observed due to the SDK update.

Raw Changes Analyzed
File: package.json
Changes:
@@ -105,7 +105,7 @@
   },
   "devDependencies": {
     "@eslint/eslintrc": "^3.3.1",
-    "@modelcontextprotocol/sdk": "^0.6.0",
+    "@modelcontextprotocol/sdk": "^1.24.0",
     "@tailwindcss/postcss": "^4.1.16",
     "@types/node": "^24.10.1",
     "@types/prismjs": "^1.26.5",

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 2, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

@codecapyai
Copy link

codecapyai bot commented Dec 2, 2025

🚀 Launching Scrapybara desktop...

@codecapyai
Copy link

codecapyai bot commented Dec 2, 2025

❌ Something went wrong:

status_code: 500, body: {'detail': 'Error creating instance: HTTPSConnectionPool(host=\'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\', port=443): Max retries exceeded with url: /api/v1/namespaces/scrapybara-instances/services (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fbe84574f50>: Failed to resolve \'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\' ([Errno -2] Name or service not known)"))'}

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Dec 2, 2025

Greptile Overview

Greptile Summary

Updates @modelcontextprotocol/sdk from 0.6.0 to 1.24.0, bringing the project up to MCP spec 2025-11-25. This major version bump includes:

  • New Tasks API (SEP-1686) for long-running operations
  • Improved SSE (Server-Sent Events) reconnection behavior and error handling
  • OAuth enhancements including client credentials flow and invalid_target error support
  • Better TypeScript types for tool callbacks and Zod v4 compatibility
  • Various bug fixes for HTTP error handling, JSON parsing, and header normalization

The existing MCP server implementation in mcp/playwright-server.ts uses only core APIs (Server, StdioServerTransport, server.tool()) that remain backward-compatible. The update should be safe to merge with minimal risk.

Confidence Score: 4/5

  • This PR is safe to merge with minimal risk; the major version bump is backward-compatible with existing usage patterns
  • Score of 4 reflects that this is a major version bump (0.6.0 → 1.24.0) which typically carries higher risk, but analysis shows the existing MCP server implementation only uses stable core APIs that remain compatible. The SDK update brings important bug fixes and new features without breaking existing functionality. Deducting 1 point to recommend testing the MCP server after merge to verify runtime compatibility.
  • No files require special attention - the changes are limited to dependency version updates in package.json and lockfile

Important Files Changed

File Analysis

Filename Score Overview
package.json 4/5 Updated @modelcontextprotocol/sdk from ^0.6.0 to ^1.24.0, a major version bump that includes spec 2025-11-25 updates with new features like Tasks, improved SSE handling, and OAuth enhancements
pnpm-lock.yaml 5/5 Lockfile updated to reflect MCP SDK version bump and transitive dependency updates; no issues detected

Sequence Diagram

sequenceDiagram
    participant D as Dependabot
    participant P as package.json
    participant L as pnpm-lock.yaml
    participant M as MCP Server
    participant S as SDK

    D->>P: Bump `@modelcontextprotocol/sdk` ^0.6.0 → ^1.24.0
    D->>L: Update lockfile with new version
    Note over P,L: Major version bump<br/>Spec update 2025-11-25
    M->>S: Import Server, StdioServerTransport
    M->>S: Use server.tool() API
    Note over M,S: Existing API calls remain compatible<br/>No breaking changes detected
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 file reviewed, no comments

Edit Code Review Agent Settings | Greptile

@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/modelcontextprotocol/sdk-1.24.0 branch from 596d7dd to dce3df5 Compare December 3, 2025 08:34
@codecapyai
Copy link

codecapyai bot commented Dec 3, 2025

CodeCapy Review ₍ᐢ•(ܫ)•ᐢ₎

Codebase Summary

ZapDev is an AI-powered development platform that lets users create and manage web applications through real-time AI interactions in a live Next.js environment. The platform offers features such as real-time code generation, file management through a file explorer, and interactive project development.

PR Changes

This pull request bumps the @modelcontextprotocol/sdk dependency from version 1.19.1 to 1.24.0. The update includes several improvements including proper consumption of HTTP error response bodies, bug fixes to JSON parsing for SSE events, improved handling of task results, and updated API calls to better match the latest MCP specification.

Setup Instructions

  1. Install pnpm globally with: sudo npm install -g pnpm
  2. Change directory to the repository root: cd path/to/zapdev
  3. Install dependencies: pnpm install
  4. Start the development server: pnpm dev
  5. Open your browser and navigate to http://localhost:3000

Generated Test Cases

1: Verify Successful AI Code Generation Flow ❗️❗️❗️

Description: This test verifies that a user can successfully initiate a code generation request and view the generated code. It ensures that the new SDK integration (v1.24.0) works as intended without breaking the developer workflow.

Prerequisites:

  • User is logged in
  • Project has been created
  • Valid API keys and environment variables are set

Steps:

  1. Log in to the application using valid credentials.
  2. Navigate to the 'Create Project' page and create a new project.
  3. In the project dashboard, type a request for code generation in the AI chat interface.
  4. Click the 'Generate' button to send the code generation request.
  5. Wait for the response and observe the generated code displayed in the split-pane preview.

Expected Result: The user should see the generated code displayed correctly on the preview pane without any errors. The integration using the updated SDK (v1.24.0) should process the request smoothly.

2: Display HTTP Error Responses Correctly ❗️❗️❗️

Description: This test ensures that any HTTP errors resulting from the new SDK behavior are displayed clearly to the user. The SDK update now properly consumes HTTP error response bodies, so users should see meaningful error messages when something goes wrong.

Prerequisites:

  • User is logged in
  • Simulate a failure scenario (e.g., using a test mode or shutting off a backend service)
  • The test environment has been configured to simulate HTTP errors

Steps:

  1. Log in to the application and navigate to a feature that communicates with the backend (such as code generation).
  2. Trigger a condition that forces an HTTP error (for instance, by disconnecting the backend or using a deliberate error simulation mode).
  3. Observe the error handling in the UI.
  4. Check that the error message contains details from the HTTP response body.

Expected Result: An error message should be displayed to the user that clearly explains the error (with details from the HTTP response body). This confirms that the updated SDK is properly consuming and displaying error responses.

3: Ensure File Explorer and Navigation Layout Integrity ❗️❗️

Description: This test verifies that the file explorer and main navigation elements remain visually consistent and functional after the SDK update. It checks that the UI layout has not been inadvertently affected by the dependency bump.

Prerequisites:

  • User is logged in
  • A project is already created and contains files

Steps:

  1. Log into the application and navigate to an existing project.
  2. Open the file explorer and verify that the list of project files is loaded and displayed correctly.
  3. Navigate between different sections (e.g., project dashboard, AI chat, and file explorer) using the main navigation menu.
  4. Check for any visual layout issues or missing elements.

Expected Result: The file explorer should load all files without any layout or display issues. All navigation elements should be responsive and consistent with the overall UI design.

Raw Changes Analyzed
File: package.json
Changes:
@@ -105,7 +105,7 @@
   },
   "devDependencies": {
     "@eslint/eslintrc": "^3.3.1",
-    "@modelcontextprotocol/sdk": "^0.6.0",
+    "@modelcontextprotocol/sdk": "^1.24.0",
     "@tailwindcss/postcss": "^4.1.16",
     "@types/node": "^24.10.1",
     "@types/prismjs": "^1.26.5",

@codecapyai
Copy link

codecapyai bot commented Dec 3, 2025

🚀 Launching Scrapybara desktop...

@codecapyai
Copy link

codecapyai bot commented Dec 3, 2025

❌ Something went wrong:

status_code: 500, body: {'detail': 'Error creating instance: HTTPSConnectionPool(host=\'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\', port=443): Max retries exceeded with url: /api/v1/namespaces/scrapybara-instances/services (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7fbe84fca010>: Failed to resolve \'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\' ([Errno -2] Name or service not known)"))'}

@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/modelcontextprotocol/sdk-1.24.0 branch from dce3df5 to 8f2df24 Compare December 4, 2025 06:08
@codecapyai
Copy link

codecapyai bot commented Dec 4, 2025

CodeCapy Review ₍ᐢ•(ܫ)•ᐢ₎

Codebase Summary

ZapDev is an AI-powered development platform that enables users to create web applications by chatting with AI agents in real-time sandboxes. It features live previews, file explorers, conversational project development, and real-time code generation and testing.

PR Changes

This pull request bumps the @modelcontextprotocol/sdk dependency from version 1.19.1 to 1.24.0. The update includes important fixes and enhancements such as improved HTTP error consumption, better handling of empty data in SSE events, refined OAuth error messaging (including the new 'invalid_target' error), and updates to side-channel message delivery in task processing. These changes should improve error handling and overall reliability without disrupting the core user experience.

Setup Instructions

  1. Install pnpm globally using: sudo npm install -g pnpm
  2. Clone the repository and navigate to the project directory: cd
  3. Install project dependencies by running: pnpm install
  4. Start the development server with: pnpm dev
  5. Open your web browser and navigate to http://localhost:3000 to access the application.

Generated Test Cases

1: API Error Handling Display ❗️❗️❗️

Description: Tests that when an API call (carried out via the SDK) fails, the user is shown a clear and informative error message. This validates the fix for consuming HTTP error response bodies.

Prerequisites:

  • User is logged in
  • User is on a page that triggers an API request (e.g., initiating code generation or a similar action)

Steps:

  1. Navigate to the relevant page (e.g., the code generation or chat interaction interface).
  2. Trigger an API call by performing an action (for example, clicking the 'Generate Code' button).
  3. Simulate a failure scenario by disconnecting network or using a testing tool to force an API error response.
  4. Observe the error notification or alert that appears on screen.

Expected Result: The UI should display an error message with clear details about what went wrong, confirming that HTTP error responses are now properly handled.

2: SSE Event Reconnection in Chat ❗️❗️

Description: Verifies that the live chat conversation using Server-Sent Events recovers smoothly from a simulated connection disruption, reflecting the SDK improvements in SSE event handling.

Prerequisites:

  • User is logged in
  • User is on the live chat page

Steps:

  1. Start a new chat conversation by typing a message and clicking the 'Send' button.
  2. Observe the AI agent’s live response being appended to the conversation.
  3. Simulate a temporary network disruption (for example, by turning off the network adapter or using browser dev tools to throttle/block network connections).
  4. Restore the network connection and continue the conversation.
  5. Monitor for any interruptions and verify that the chat resumes and additional messages are displayed.

Expected Result: After the disruption, the chat should resume normally without losing context, and all subsequent messages should be received and displayed, confirming robust SSE reconnection behavior.

3: OAuth Invalid Target Error Handling ❗️❗️❗️

Description: Ensures the UI correctly displays OAuth error messages (such as the new 'invalid_target' error) when authentication fails, reflecting updates in SDK error handling.

Prerequisites:

  • User is on the sign-in page

Steps:

  1. Enter credentials that are expected to trigger an OAuth error (simulate conditions for an 'invalid_target' error).
  2. Click the 'Sign In' button to attempt authentication.
  3. Observe the error message displayed on screen.

Expected Result: An error message clearly stating the OAuth error (e.g., 'invalid_target') should appear, providing the user with feedback that the authentication did not succeed.

4: Project Creation and Data Persistence ❗️❗️❗️

Description: Validates that the project creation flow works as expected after the SDK update, and that user-created projects persist and display correctly.

Prerequisites:

  • User is logged in

Steps:

  1. Navigate to the dashboard or project creation page.
  2. Click on the 'Create New Project' button.
  3. Fill in the project details (e.g., project name and description) in the provided form.
  4. Submit the form by clicking the 'Create' button.
  5. Verify that the new project appears in the dashboard.
  6. Refresh the page to confirm the project data persists.

Expected Result: The newly created project should be visible in the user dashboard immediately after creation and remain present after a page refresh, indicating that data is saved correctly.

5: Side-Channel Task Message Receipt ❗️❗️

Description: Checks that during long-running background tasks (such as code generation), side-channel messages are delivered and displayed in the UI, confirming the update to task/result handling in the SDK.

Prerequisites:

  • User is logged in
  • User is within a project that supports background tasks (e.g., code generation tasks)

Steps:

  1. Initiate a background task by clicking a button that starts a long-running process (e.g., 'Generate Code' or 'Process Task').
  2. Monitor the UI for real-time side-channel messages or progress notifications.
  3. Wait until the task completes or reports interim progress messages.
  4. Review any notifications or status updates delivered via side-channel messaging.

Expected Result: The UI should display side-channel messages (e.g., progress notifications or status updates) that accurately reflect the task’s progress and eventual completion, verifying that task result delivery via the SDK works as intended.

Raw Changes Analyzed
File: package.json
Changes:
@@ -105,7 +105,7 @@
   },
   "devDependencies": {
     "@eslint/eslintrc": "^3.3.1",
-    "@modelcontextprotocol/sdk": "^0.6.0",
+    "@modelcontextprotocol/sdk": "^1.24.0",
     "@tailwindcss/postcss": "^4.1.16",
     "@types/node": "^24.10.1",
     "@types/prismjs": "^1.26.5",

File: pnpm-lock.yaml
Changes:
@@ -26,10 +26,10 @@ importers:
         version: 3.10.0(react-hook-form@7.68.0(react@19.2.1))
       '@inngest/agent-kit':
         specifier: ^0.13.1
-        version: 0.13.2(inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13))(zod@4.1.13)
+        version: 0.13.2(inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13))(zod@4.1.13)
       '@inngest/realtime':
         specifier: ^0.4.4
-        version: 0.4.4(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)
+        version: 0.4.4(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)
       '@opentelemetry/api':
         specifier: ^1.9.0
         version: 1.9.0
@@ -149,7 +149,7 @@ importers:
         version: 7.0.0-dev.20251203.1
       '@uploadthing/react':
         specifier: ^7.3.3
-        version: 7.3.3(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(uploadthing@7.7.4(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17))
+        version: 7.3.3(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(uploadthing@7.7.4(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17))
       '@vercel/speed-insights':
         specifier: ^1.2.0
         version: 1.3.1(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)
@@ -197,7 +197,7 @@ importers:
         version: 4.4.1
       inngest:
         specifier: ^3.46.0
-        version: 3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13)
+        version: 3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13)
       input-otp:
         specifier: ^1.4.2
         version: 1.4.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
@@ -269,7 +269,7 @@ importers:
         version: 3.3.1
       uploadthing:
         specifier: ^7.7.4
-        version: 7.7.4(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17)
+        version: 7.7.4(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17)
       vaul:
         specifier: ^1.1.2
         version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
@@ -284,8 +284,8 @@ importers:
         specifier: ^3.3.1
         version: 3.3.1
       '@modelcontextprotocol/sdk':
-        specifier: ^0.6.0
-        version: 0.6.1
+        specifier: ^1.24.0
+        version: 1.24.0(zod@4.1.13)
       '@tailwindcss/postcss':
         specifier: ^4.1.16
         version: 4.1.17
@@ -531,8 +531,8 @@ packages:
       react: ^18.0.0 || ^19.0.0 || ^19.0.0-0
       react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-0
 
-  '@clerk/shared@3.27.3':
-    resolution: {integrity: sha512-OJqWwlQGi6XMVWJVtY1YmOESAkEAflDrynFSjwQQ/sC8c4hmUukIq07XTOlcv6j4u1i4akhtNwy40B1qiRrLdg==}
+  '@clerk/shared@3.37.0':
+    resolution: {integrity: sha512-1CSKRebdxqihbqWj1kpmdBn6ChDYTMqGlPJQc1btbJ/OW57v7CR8i/vjhgHUOLavAF1Zl40h7Yi+9rjA5bYNHQ==}
     engines: {node: '>=18.17.0'}
     peerDependencies:
       react: ^18.0.0 || ^19.0.0 || ^19.0.0-0
@@ -543,8 +543,8 @@ packages:
       react-dom:
         optional: true
 
-  '@clerk/types@4.92.0':
-    resolution: {integrity: sha512-+bUiHjqVXEHJIOOhshIy3uYDF/c4/yNc2BPfgPTXxxsbz/2wG0XUx0PL+mxUPiruPZOD+D63AtmORuFW3yBa2w==}
+  '@clerk/types@4.101.4':
+    resolution: {integrity: sha512-IZSonY7jXtctBcYg2vLswHOe00WkbBrnEmJAGNHU/r1KJ3MLnH5t4GMPFeRv/1yUtQ1tZAkvPO68gcRkS5QQlw==}
     engines: {node: '>=18.17.0'}
 
   '@connectrpc/connect-web@2.0.0-rc.3':
@@ -1264,12 +1264,15 @@ packages:
   '@js-sdsl/ordered-map@4.4.2':
     resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==}
 
-  '@modelcontextprotocol/sdk@0.6.1':
-    resolution: {integrity: sha512-OkVXMix3EIbB5Z6yife2XTrSlOnVvCLR1Kg91I4pYFEsV9RbnoyQVScXCuVhGaZHOnTZgso8lMQN1Po2TadGKQ==}
-
-  '@modelcontextprotocol/sdk@1.19.1':
-    resolution: {integrity: sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==}
+  '@modelcontextprotocol/sdk@1.24.0':
+    resolution: {integrity: sha512-D8h5KXY2vHFW8zTuxn2vuZGN0HGrQ5No6LkHwlEA9trVgNdPL3TF1dSqKA7Dny6BbBYKSW/rOBDXdC8KJAjUCg==}
     engines: {node: '>=18'}
+    peerDependencies:
+      '@cfworker/json-schema': ^4.1.1
+      zod: ^3.25 || ^4.0
+    peerDependenciesMeta:
+      '@cfworker/json-schema':
+        optional: true
 
   '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3':
     resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==}
@@ -3451,6 +3454,14 @@ packages:
       ajv:
         optional: true
 
+  ajv-formats@3.0.1:
+    resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==}
+    peerDependencies:
+      ajv: ^8.0.0
+    peerDependenciesMeta:
+      ajv:
+        optional: true
+
   ajv-keywords@5.1.0:
     resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
     peerDependencies:
@@ -3623,8 +3634,8 @@ packages:
     resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
     engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
 
-  body-parser@2.2.0:
-    resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
+  body-parser@2.2.1:
+    resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==}
     engines: {node: '>=18'}
 
   botid@1.5.10:
@@ -3653,6 +3664,11 @@ packages:
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
     hasBin: true
 
+  browserslist@4.28.1:
+    resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+    hasBin: true
+
   bs-logger@0.2.6:
     resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
     engines: {node: '>= 6'}
@@ -3694,6 +3710,9 @@ packages:
   caniuse-lite@1.0.30001748:
     resolution: {integrity: sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==}
 
+  caniuse-lite@1.0.30001759:
+    resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==}
+
   canonicalize@1.0.8:
     resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==}
 
@@ -3806,9 +3825,9 @@ packages:
     resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
     engines: {node: '>= 0.6'}
 
-  content-disposition@1.0.0:
-    resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
-    engines: {node: '>= 0.6'}
+  content-disposition@1.0.1:
+    resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==}
+    engines: {node: '>=18'}
 
   content-type@1.0.5:
     resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
@@ -4066,6 +4085,9 @@ packages:
   electron-to-chromium@1.5.233:
     resolution: {integrity: sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==}
 
+  electron-to-chromium@1.5.264:
+    resolution: {integrity: sha512-1tEf0nLgltC3iy9wtlYDlQDc5Rg9lEKVjEmIHJ21rI9OcqkvD45K1oyNIRA4rR1z3LgJ7KeGzEBojVcV6m4qjA==}
+
   embla-carousel-react@8.6.0:
     resolution: {integrity: sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==}
     peerDependencies:
@@ -4343,8 +4365,8 @@ packages:
     resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
     engines: {node: '>= 0.10.0'}
 
-  express@5.1.0:
-    resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
+  express@5.2.1:
+    resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==}
     engines: {node: '>= 18'}
 
   extend@3.0.2:
@@ -4408,9 +4430,9 @@ packages:
     resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
     engines: {node: '>= 0.8'}
 
-  finalhandler@2.1.0:
-    resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
-    engines: {node: '>= 0.8'}
+  finalhandler@2.1.1:
+    resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==}
+    engines: {node: '>= 18.0.0'}
 
   find-my-way-ts@0.1.6:
     resolution: {integrity: sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==}
@@ -4654,6 +4676,10 @@ packages:
     resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
     engines: {node: '>= 0.8'}
 
+  http-errors@2.0.1:
+    resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==}
+    engines: {node: '>= 0.8'}
+
   https-proxy-agent@5.0.1:
     resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
     engines: {node: '>= 6'}
@@ -4670,10 +4696,6 @@ packages:
     resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
     engines: {node: '>=0.10.0'}
 
-  iconv-lite@0.6.3:
-    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
-    engines: {node: '>=0.10.0'}
-
   iconv-lite@0.7.0:
     resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==}
     engines: {node: '>=0.10.0'}
@@ -5100,6 +5122,9 @@ packages:
   jose@5.10.0:
     resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==}
 
+  jose@6.1.3:
+    resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==}
+
   jotai@2.15.2:
     resolution: {integrity: sha512-El86CCfXNMEOytp20NPfppqGGmcp6H6kIA+tJHdmASEUURJCYW4fh8nTHEnB8rUXEFAY1pm8PdHPwnrcPGwdEg==}
     engines: {node: '>=12.20.0'}
@@ -5273,8 +5298,8 @@ packages:
   lines-and-columns@1.2.4:
     resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
 
-  loader-runner@4.3.0:
-    resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
+  loader-runner@4.3.1:
+    resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==}
     engines: {node: '>=6.11.5'}
 
   locate-path@5.0.0:
@@ -5475,9 +5500,9 @@ packages:
     resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
     engines: {node: '>= 0.6'}
 
-  mime-types@3.0.1:
-    resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
-    engines: {node: '>= 0.6'}
+  mime-types@3.0.2:
+    resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
+    engines: {node: '>=18'}
 
   mime@1.6.0:
     resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
@@ -5598,6 +5623,9 @@ packages:
   node-releases@2.0.23:
     resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==}
 
+  node-releases@2.0.27:
+    resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+
   normalize-path@3.0.0:
     resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
     engines: {node: '>=0.10.0'}
@@ -5769,8 +5797,8 @@ packages:
     resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
     engines: {node: '>= 6'}
 
-  pkce-challenge@5.0.0:
-    resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
+  pkce-challenge@5.0.1:
+    resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==}
     engines: {node: '>=16.20.0'}
 
   pkg-dir@4.2.0:
@@ -5902,8 +5930,8 @@ packages:
     resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
     engines: {node: '>= 0.8'}
 
-  raw-body@3.0.1:
-    resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==}
+  raw-body@3.0.2:
+    resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
     engines: {node: '>= 0.10'}
 
   react-day-picker@9.11.3:
@@ -6283,8 +6311,8 @@ packages:
     resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==}
     engines: {node: '>= 0.8'}
 
-  std-env@3.9.0:
-    resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+  std-env@3.10.0:
+    resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==}
 
   stop-iteration-iterator@1.1.0:
     resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
@@ -6435,8 +6463,8 @@ packages:
       uglify-js:
         optional: true
 
-  terser@5.44.0:
-    resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==}
+  terser@5.44.1:
+    resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==}
     engines: {node: '>=10'}
     hasBin: true
 
@@ -6634,6 +6662,12 @@ packages:
     peerDependencies:
       browserslist: '>= 4.21.0'
 
+  update-browserslist-db@1.2.1:
+    resolution: {integrity: sha512-R9NcHbbZ45RoWfTdhn1J9SS7zxNvlddv4YRrHTUaFdtjbmfncfedB45EC9IaqJQ97iAR1GZgOfyRQO+ExIF6EQ==}
+    hasBin: true
+    peerDependencies:
+      browserslist: '>= 4.21.0'
+
   uploadthing@7.7.4:
     resolution: {integrity: sha512-rlK/4JWHW5jP30syzWGBFDDXv3WJDdT8gn9OoxRJmXLoXi94hBmyyjxihGlNrKhBc81czyv8TkzMioe/OuKGfA==}
     engines: {node: '>=18.13.0'}
@@ -6851,6 +6885,11 @@ packages:
     peerDependencies:
       zod: ^3.24.1
 
+  zod-to-json-schema@3.25.0:
+    resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==}
+    peerDependencies:
+      zod: ^3.25 || ^4
+
   zod-validation-error@4.0.2:
     resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
     engines: {node: '>=18.0.0'}
@@ -7083,29 +7122,32 @@ snapshots:
 
   '@clerk/clerk-react@5.51.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
     dependencies:
-      '@clerk/shared': 3.27.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
-      '@clerk/types': 4.92.0
+      '@clerk/shared': 3.37.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+      '@clerk/types': 4.101.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
       react: 19.2.1
       react-dom: 19.2.1(react@19.2.1)
       tslib: 2.8.1
     optional: true
 
-  '@clerk/shared@3.27.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+  '@clerk/shared@3.37.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
     dependencies:
-      '@clerk/types': 4.92.0
+      csstype: 3.1.3
       dequal: 2.0.3
       glob-to-regexp: 0.4.1
       js-cookie: 3.0.5
-      std-env: 3.9.0
+      std-env: 3.10.0
       swr: 2.3.4(react@19.2.1)
     optionalDependencies:
       react: 19.2.1
       react-dom: 19.2.1(react@19.2.1)
     optional: true
 
-  '@clerk/types@4.92.0':
+  '@clerk/types@4.101.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
     dependencies:
-      csstype: 3.1.3
+      '@clerk/shared': 3.37.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+    transitivePeerDependencies:
+      - react
+      - react-dom
     optional: true
 
   '@connectrpc/connect-web@2.0.0-rc.3(@bufbuild/protobuf@2.9.0)(@connectrpc/connect@2.0.0-rc.3(@bufbuild/protobuf@2.9.0))':
@@ -7510,29 +7552,30 @@ snapshots:
   '@img/sharp-win32-x64@0.34.4':
     optional: true
 
-  '@inngest/agent-kit@0.13.2(inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13))(zod@4.1.13)':
+  '@inngest/agent-kit@0.13.2(inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13))(zod@4.1.13)':
     dependencies:
       '@dmitryrechkin/json-schema-to-zod': 1.0.1
       '@inngest/ai': 0.1.6
-      '@modelcontextprotocol/sdk': 1.19.1
+      '@modelcontextprotocol/sdk': 1.24.0(zod@4.1.13)
       eventsource: 3.0.7
       express: 4.21.2
-      inngest: 3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13)
+      inngest: 3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13)
       xxhashjs: 0.2.2
       zod: 4.1.13
     transitivePeerDependencies:
+      - '@cfworker/json-schema'
       - supports-color
 
   '@inngest/ai@0.1.6':
     dependencies:
       '@types/node': 22.18.8
       typescript: 5.9.3
 
-  '@inngest/realtime@0.4.4(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)':
+  '@inngest/realtime@0.4.4(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)':
     dependencies:
       '@standard-schema/spec': 1.0.0
       debug: 4.4.3
-      inngest: 3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@3.25.76)
+      inngest: 3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@3.25.76)
       react: 19.2.1
       zod: 3.25.76
     transitivePeerDependencies:
@@ -7776,26 +7819,22 @@ snapshots:
 
   '@js-sdsl/ordered-map@4.4.2': {}
 
-  '@modelcontextprotocol/sdk@0.6.1':
+  '@modelcontextprotocol/sdk@1.24.0(zod@4.1.13)':
     dependencies:
-      content-type: 1.0.5
-      raw-body: 3.0.1
-      zod: 3.25.76
-
-  '@modelcontextprotocol/sdk@1.19.1':
-    dependencies:
-      ajv: 6.12.6
+      ajv: 8.17.1
+      ajv-formats: 3.0.1(ajv@8.17.1)
       content-type: 1.0.5
       cors: 2.8.5
       cross-spawn: 7.0.6
       eventsource: 3.0.7
       eventsource-parser: 3.0.6
-      express: 5.1.0
-      express-rate-limit: 7.5.1(express@5.1.0)
-      pkce-challenge: 5.0.0
-      raw-body: 3.0.1
-      zod: 3.25.76
-      zod-to-json-schema: 3.24.6(zod@3.25.76)
+      express: 5.2.1
+      express-rate-limit: 7.5.1(express@5.2.1)
+      jose: 6.1.3
+      pkce-challenge: 5.0.1
+      raw-body: 3.0.2
+      zod: 4.1.13
+      zod-to-json-schema: 3.25.0(zod@4.1.13)
     transitivePeerDependencies:
       - supports-color
 
@@ -10070,12 +10109,12 @@ snapshots:
 
   '@uploadthing/mime-types@0.3.6': {}
 
-  '@uploadthing/react@7.3.3(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(uploadthing@7.7.4(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17))':
+  '@uploadthing/react@7.3.3(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(uploadthing@7.7.4(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17))':
     dependencies:
       '@uploadthing/shared': 7.1.10
       file-selector: 0.6.0
       react: 19.2.1
-      uploadthing: 7.7.4(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17)
+      uploadthing: 7.7.4(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17)
     optionalDependencies:
       next: 16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
 
@@ -10177,7 +10216,7 @@ snapshots:
 
   accepts@2.0.0:
     dependencies:
-      mime-types: 3.0.1
+      mime-types: 3.0.2
       negotiator: 1.0.0
 
   acorn-import-attributes@1.9.5(acorn@8.15.0):
@@ -10206,6 +10245,10 @@ snapshots:
     optionalDependencies:
       ajv: 8.17.1
 
+  ajv-formats@3.0.1(ajv@8.17.1):
+    optionalDependencies:
+      ajv: 8.17.1
+
   ajv-keywords@5.1.0(ajv@8.17.1):
     dependencies:
       ajv: 8.17.1
@@ -10439,16 +10482,16 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  body-parser@2.2.0:
+  body-parser@2.2.1:
     dependencies:
       bytes: 3.1.2
       content-type: 1.0.5
       debug: 4.4.3
-      http-errors: 2.0.0
-      iconv-lite: 0.6.3
+      http-errors: 2.0.1
+      iconv-lite: 0.7.0
       on-finished: 2.4.1
       qs: 6.14.0
-      raw-body: 3.0.1
+      raw-body: 3.0.2
       type-is: 2.0.1
     transitivePeerDependencies:
       - supports-color
@@ -10479,6 +10522,14 @@ snapshots:
       node-releases: 2.0.23
       update-browserslist-db: 1.1.3(browserslist@4.26.3)
 
+  browserslist@4.28.1:
+    dependencies:
+      baseline-browser-mapping: 2.9.0
+      caniuse-lite: 1.0.30001759
+      electron-to-chromium: 1.5.264
+      node-releases: 2.0.27
+      update-browserslist-db: 1.2.1(browserslist@4.28.1)
+
   bs-logger@0.2.6:
     dependencies:
       fast-json-stable-stringify: 2.1.0
@@ -10516,6 +10567,8 @@ snapshots:
 
   caniuse-lite@1.0.30001748: {}
 
+  caniuse-lite@1.0.30001759: {}
+
   canonicalize@1.0.8: {}
 
   canvas-confetti@1.9.4: {}
@@ -10615,9 +10668,7 @@ snapshots:
     dependencies:
       safe-buffer: 5.2.1
 
-  content-disposition@1.0.0:
-    dependencies:
-      safe-buffer: 5.2.1
+  content-disposition@1.0.1: {}
 
   content-type@1.0.5: {}
 
@@ -10827,6 +10878,8 @@ snapshots:
 
   electron-to-chromium@1.5.233: {}
 
+  electron-to-chromium@1.5.264: {}
+
   embla-carousel-react@8.6.0(react@19.2.1):
     dependencies:
       embla-carousel: 8.6.0
@@ -11279,9 +11332,9 @@ snapshots:
       jest-mock: 30.2.0
       jest-util: 30.2.0
 
-  express-rate-limit@7.5.1(express@5.1.0):
+  express-rate-limit@7.5.1(express@5.2.1):
     dependencies:
-      express: 5.1.0
+      express: 5.2.1
 
   express@4.21.2:
     dependencies:
@@ -11319,23 +11372,24 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  express@5.1.0:
+  express@5.2.1:
     dependencies:
       accepts: 2.0.0
-      body-parser: 2.2.0
-      content-disposition: 1.0.0
+      body-parser: 2.2.1
+      content-disposition: 1.0.1
       content-type: 1.0.5
       cookie: 0.7.2
       cookie-signature: 1.2.2
       debug: 4.4.3
+      depd: 2.0.0
       encodeurl: 2.0.0
       escape-html: 1.0.3
       etag: 1.8.1
-      finalhandler: 2.1.0
+      finalhandler: 2.1.1
       fresh: 2.0.0
-      http-errors: 2.0.0
+      http-errors: 2.0.1
       merge-descriptors: 2.0.0
-      mime-types: 3.0.1
+      mime-types: 3.0.2
       on-finished: 2.4.1
       once: 1.4.0
       parseurl: 1.3.3
@@ -11413,7 +11467,7 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
-  finalhandler@2.1.0:
+  finalhandler@2.1.1:
     dependencies:
       debug: 4.4.3
       encodeurl: 2.0.0
@@ -11693,6 +11747,14 @@ snapshots:
       statuses: 2.0.1
       toidentifier: 1.0.1
 
+  http-errors@2.0.1:
+    dependencies:
+      depd: 2.0.0
+      inherits: 2.0.4
+      setprototypeof: 1.2.0
+      statuses: 2.0.2
+      toidentifier: 1.0.1
+
   https-proxy-agent@5.0.1:
     dependencies:
       agent-base: 6.0.2
@@ -11713,10 +11775,6 @@ snapshots:
     dependencies:
       safer-buffer: 2.1.2
 
-  iconv-lite@0.6.3:
-    dependencies:
-      safer-buffer: 2.1.2
-
   iconv-lite@0.7.0:
     dependencies:
       safer-buffer: 2.1.2
@@ -11762,7 +11820,7 @@ snapshots:
 
   inline-style-parser@0.2.7: {}
 
-  inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@3.25.76):
+  inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@3.25.76):
     dependencies:
       '@bufbuild/protobuf': 2.9.0
       '@inngest/ai': 0.1.6
@@ -11789,15 +11847,15 @@ snapshots:
       ulid: 2.4.0
       zod: 3.25.76
     optionalDependencies:
-      express: 5.1.0
+      express: 5.2.1
       next: 16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
       typescript: 5.9.3
     transitivePeerDependencies:
       - '@opentelemetry/core'
       - encoding
       - supports-color
 
-  inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13):
+  inngest@3.46.0(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(typescript@5.9.3)(zod@4.1.13):
     dependencies:
       '@bufbuild/protobuf': 2.9.0
       '@inngest/ai': 0.1.6
@@ -11824,7 +11882,7 @@ snapshots:
       ulid: 2.4.0
       zod: 4.1.13
     optionalDependencies:
-      express: 5.1.0
+      express: 5.2.1
       next: 16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
       typescript: 5.9.3
     transitivePeerDependencies:
@@ -12367,6 +12425,8 @@ snapshots:
 
   jose@5.10.0: {}
 
+  jose@6.1.3: {}
+
   jotai@2.15.2(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.2.7)(react@19.2.1):
     optionalDependencies:
       '@babel/core': 7.28.4
@@ -12500,7 +12560,7 @@ snapshots:
 
   lines-and-columns@1.2.4: {}
 
-  loader-runner@4.3.0: {}
+  loader-runner@4.3.1: {}
 
   locate-path@5.0.0:
     dependencies:
@@ -12814,7 +12874,7 @@ snapshots:
     dependencies:
       mime-db: 1.52.0
 
-  mime-types@3.0.1:
+  mime-types@3.0.2:
     dependencies:
       mime-db: 1.54.0
 
@@ -12921,6 +12981,8 @@ snapshots:
 
   node-releases@2.0.23: {}
 
+  node-releases@2.0.27: {}
+
   normalize-path@3.0.0: {}
 
   npkill@0.12.2:
@@ -13099,7 +13161,7 @@ snapshots:
 
   pirates@4.0.7: {}
 
-  pkce-challenge@5.0.0: {}
+  pkce-challenge@5.0.1: {}
 
   pkg-dir@4.2.0:
     dependencies:
@@ -13222,10 +13284,10 @@ snapshots:
       iconv-lite: 0.4.24
       unpipe: 1.0.0
 
-  raw-body@3.0.1:
+  raw-body@3.0.2:
     dependencies:
       bytes: 3.1.2
-      http-errors: 2.0.0
+      http-errors: 2.0.1
       iconv-lite: 0.7.0
       unpipe: 1.0.0
 
@@ -13566,8 +13628,8 @@ snapshots:
       escape-html: 1.0.3
       etag: 1.8.1
       fresh: 2.0.0
-      http-errors: 2.0.0
-      mime-types: 3.0.1
+      http-errors: 2.0.1
+      mime-types: 3.0.2
       ms: 2.1.3
       on-finished: 2.4.1
       range-parser: 1.2.1
@@ -13757,7 +13819,7 @@ snapshots:
 
   statuses@2.0.2: {}
 
-  std-env@3.9.0:
+  std-env@3.10.0:
     optional: true
 
   stop-iteration-iterator@1.1.0:
@@ -13919,10 +13981,10 @@ snapshots:
       jest-worker: 27.5.1
       schema-utils: 4.3.3
       serialize-javascript: 6.0.2
-      terser: 5.44.0
+      terser: 5.44.1
       webpack: 5.102.1
 
-  terser@5.44.0:
+  terser@5.44.1:
     dependencies:
       '@jridgewell/source-map': 0.3.11
       acorn: 8.15.0
@@ -14019,7 +14081,7 @@ snapshots:
     dependencies:
       content-type: 1.0.5
       media-typer: 1.1.0
-      mime-types: 3.0.1
+      mime-types: 3.0.2
 
   typed-array-buffer@1.0.3:
     dependencies:
@@ -14159,15 +14221,21 @@ snapshots:
       escalade: 3.2.0
       picocolors: 1.1.1
 
-  uploadthing@7.7.4(express@5.1.0)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17):
+  update-browserslist-db@1.2.1(browserslist@4.28.1):
+    dependencies:
+      browserslist: 4.28.1
+      escalade: 3.2.0
+      picocolors: 1.1.1
+
+  uploadthing@7.7.4(express@5.2.1)(next@16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(tailwindcss@4.1.17):
     dependencies:
       '@effect/platform': 0.90.3(effect@3.17.7)
       '@standard-schema/spec': 1.0.0-beta.4
       '@uploadthing/mime-types': 0.3.6
       '@uploadthing/shared': 7.1.10
       effect: 3.17.7
     optionalDependencies:
-      express: 5.1.0
+      express: 5.2.1
       next: 16.0.7(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
       tailwindcss: 4.1.17
 
@@ -14290,7 +14358,7 @@ snapshots:
       '@webassemblyjs/wasm-parser': 1.14.1
       acorn: 8.15.0
       acorn-import-phases: 1.0.4(acorn@8.15.0)
-      browserslist: 4.26.3
+      browserslist: 4.28.1
       chrome-trace-event: 1.0.4
       enhanced-resolve: 5.18.3
       es-module-lexer: 1.7.0
@@ -14299,7 +14367,7 @@ snapshots:
       glob-to-regexp: 0.4.1
       graceful-fs: 4.2.11
       json-parse-even-better-errors: 2.3.1
-      loader-runner: 4.3.0
+      loader-runner: 4.3.1
       mime-types: 2.1.35
       neo-async: 2.6.2
       schema-utils: 4.3.3
@@ -14413,6 +14481,10 @@ snapshots:
     dependencies:
       zod: 3.25.76
 
+  zod-to-json-schema@3.25.0(zod@4.1.13):
+    dependencies:
+      zod: 4.1.13
+
   zod-validation-error@4.0.2(zod@4.1.13):
     dependencies:
       zod: 4.1.13

@codecapyai
Copy link

codecapyai bot commented Dec 4, 2025

🚀 Launching Scrapybara desktop...

@codecapyai
Copy link

codecapyai bot commented Dec 4, 2025

❌ Something went wrong:

status_code: 500, body: {'detail': 'Error creating instance: HTTPSConnectionPool(host=\'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\', port=443): Max retries exceeded with url: /api/v1/namespaces/scrapybara-instances/services (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f31fbfaa2d0>: Failed to resolve \'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\' ([Errno -2] Name or service not known)"))'}

@codecapyai
Copy link

codecapyai bot commented Dec 7, 2025

CodeCapy Review ₍ᐢ•(ܫ)•ᐢ₎

Codebase Summary

ZapDev is an AI-powered development platform that enables users to create and iterate on web applications via a real-time, conversational interface. The platform leverages Next.js, React, and a host of backend services including Convex, Clerk for authentication, and Inngest for background job processing, making it a robust tool for live code generation and project management.

PR Changes

This pull request bumps the @modelcontextprotocol/sdk package from version 1.19.1 to 1.24.0. The update includes a range of fixes and improvements such as proper handling of HTTP error response bodies, improved SSE event parsing (including handling of empty data without JSON parse errors), revised streaming and reconnection logic for SSE, updated tool registration signatures, and the introduction of a new 'invalid_target' OAuth error. These changes are expected to enhance error messaging and overall robustness of the UI flows that interact with the SDK.

Setup Instructions

  1. Install pnpm globally by running: sudo npm install -g pnpm
  2. Navigate to the repository directory and install dependencies by running: pnpm install
  3. Start the development server using: pnpm dev
  4. Open your browser and navigate to http://localhost:3000 to access the application

Generated Test Cases

1: HTTP Error Response Display ❗️❗️❗️

Description: Verifies that UI components correctly display detailed error messages when an HTTP error is returned. This ensures users are properly informed when an SDK-triggered API call fails.

Prerequisites:

  • User is logged in
  • A page that triggers an API call (e.g., code generation or task initiation) is accessible

Steps:

  1. Navigate to the page that initiates an API call (for instance, the code generation or task submission page).
  2. Simulate an HTTP error scenario (this could be done by triggering a network failure or using a test stub to force an error response).
  3. Observe the error message displayed on the UI.
  4. Check that the error details include relevant information, such as error codes or side-channel messages provided by the updated SDK.

Expected Result: The user sees a clear error message that includes all provided error details, and the UI gracefully handles the failure without crashing or freezing.

2: SSE Empty Data Handling ❗️❗️❗️

Description: Ensures that the UI does not crash or display unexpected behavior when an SSE event is received with empty data. This tests the robustness of the event handling logic with the updated SDK.

Prerequisites:

  • User is logged in
  • User is on a page that subscribes to server-sent events (e.g., a task status update page)

Steps:

  1. Navigate to the page where SSE events are expected (for example, the console or task progress view).
  2. Simulate an SSE event with empty data (using a testing utility or mock to dispatch an event with no payload).
  3. Monitor the UI response to ensure no JSON parse errors are thrown and that the event stream continues unaffected.

Expected Result: The UI remains stable, no crash or unhandled exceptions occur, and the SSE stream continues, silently discarding or handling the empty event.

3: Side-Channel Message Delivery in Task Flow ❗️❗️

Description: Validates that side-channel messages delivered as part of the updated task/result flow are correctly shown in the UI. This tests the integration of the new task/result endpoints and error message enhancements.

Prerequisites:

  • User is logged in
  • A task initiation workflow (such as AI code generation) is accessible

Steps:

  1. Trigger the initiation of a task that is expected to leverage side-channel messaging (e.g., generate code or run a background job).
  2. Allow the process to run, ensuring that the underlying SDK returns side-channel information as part of the task result.
  3. Observe the UI for notifications or updates that include the side-channel messages.

Expected Result: The user sees clear side-channel message notifications or updates in the UI, reflecting the additional information delivered by the updated SDK.

4: SSE Reconnection Behavior Verification ❗️❗️

Description: Verifies that the improved SSE reconnection logic functions as expected when a network interruption occurs, ensuring a seamless user experience with robust streaming.

Prerequisites:

  • User is logged in
  • User is on a page that uses SSE for live updates

Steps:

  1. Navigate to the live update page where SSE is in use (such as a real-time task progress view).
  2. Simulate a network interruption (e.g., by disabling the network briefly using browser developer tools or a testing environment).
  3. Restore the network connection and observe the UI’s behavior.
  4. Check for indicators like a spinner or reconnect message that confirm the reconnection attempt by the updated SDK.

Expected Result: The UI displays a proper reconnection indicator (e.g., a spinner or notification) without crashing, and seamlessly resumes live updates once reconnected.

5: OAuth 'invalid_target' Error Display ❗️❗️❗️

Description: Tests the UI's handling and display of the new 'invalid_target' OAuth error. This ensures that users receive clear feedback on OAuth issues as defined by the updated SDK.

Prerequisites:

  • User is on the authentication (login) page
  • Access to trigger an OAuth flow with invalid or misconfigured parameters

Steps:

  1. Navigate to the login or OAuth initiation page.
  2. Enter credentials or initiate an OAuth flow using deliberately misconfigured input to trigger an 'invalid_target' error.
  3. Observe the error message displayed on the screen.

Expected Result: The UI presents a clear and descriptive error message indicating an 'invalid_target' OAuth error, guiding the user to check their input or configuration.

Raw Changes Analyzed

@codecapyai
Copy link

codecapyai bot commented Dec 7, 2025

🚀 Launching Scrapybara desktop...

@codecapyai
Copy link

codecapyai bot commented Dec 7, 2025

❌ Something went wrong:

status_code: 500, body: {'detail': 'Error creating instance: HTTPSConnectionPool(host=\'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\', port=443): Max retries exceeded with url: /api/v1/namespaces/scrapybara-instances/services (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f61ca51a010>: Failed to resolve \'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\' ([Errno -2] Name or service not known)"))'}

Dependabot couldn't find the original pull request head commit, 8f2df24.
@dependabot dependabot bot force-pushed the dependabot/npm_and_yarn/modelcontextprotocol/sdk-1.24.0 branch from 526b29e to 22bf198 Compare December 13, 2025 06:33
@codecapyai
Copy link

codecapyai bot commented Dec 13, 2025

CodeCapy Review ₍ᐢ•(ܫ)•ᐢ₎

Codebase Summary

ZapDev is an AI-powered development platform that enables users to create web applications by conversing with AI agents in real-time sandboxes. It features a live preview, code generation, file explorer, and project management through a Next.js interface enhanced with various integrations including the Convex backend and Clerk authentication.

PR Changes

This pull request updates the @modelcontextprotocol/sdk dependency from version 1.19.1 to 1.24.0. The update brings improvements including proper consumption of HTTP error response bodies, fixes for JSON parse errors on SSE events with empty data, enhanced SSE reconnection behavior, and other bug fixes and feature enhancements as documented in the release notes. The UI should remain consistent while benefiting from more robust error handling and SSE stability.

Setup Instructions

Install pnpm globally with sudo npm install -g pnpm. Then, in the repository directory, run pnpm install to install dependencies. Start the development server by running pnpm dev. Open your browser and navigate to http://localhost:3000 to begin testing.

Generated Test Cases

1: Chat with AI Agent and Verify Response ❗️❗️❗️

Description: This test ensures that sending a message to the AI agent via the chat interface works properly, and that responses are correctly rendered after the SDK update, indicating that the integration with the new version is successful.

Prerequisites:

  • User is logged in
  • Dev environment is running and accessible at localhost

Steps:

  1. Open the web application in a browser by navigating to http://localhost:3000.
  2. Log in using valid credentials.
  3. Navigate to the chat interface or the home page where the chat functionality is available.
  4. Type a test query (e.g., 'Generate a simple React component') in the input field.
  5. Click the 'Send' button.
  6. Observe the chat window for a response from the AI agent.

Expected Result: The AI response should appear in the chat window with proper formatting. There should be no unexpected error messages, and the response must be generated in a timely manner.

2: Project Creation and File Explorer Refresh ❗️❗️❗️

Description: This test verifies that a new project can be successfully created using the UI and that the file explorer updates to show the newly generated files, ensuring that the updated SDK integration does not disrupt project creation.

Prerequisites:

  • User is logged in
  • The home dashboard or projects page is accessible

Steps:

  1. From the dashboard, click on the 'New Project' or 'Create Project' button.
  2. Fill in the required project details (e.g., project name, description).
  3. Click on the 'Submit' or 'Create' button.
  4. After submission, verify that the application navigates to the project details page.
  5. Check that the file explorer on the project details page displays a list of files or a preview of the project structure.

Expected Result: A new project is successfully created with all the expected files or folders visible in the file explorer. The UI should reflect the latest project without any errors or missing components.

3: Error Display During API Call ❗️❗️❗️

Description: This test checks that when an API call triggered by the updated SDK fails (for example, due to invalid inputs), the resulting error is properly caught and displayed to the user. This is crucial given the changes in handling HTTP error response bodies.

Prerequisites:

  • User is logged in
  • Access to a form or interface where an API call can be triggered (e.g., code generation or project update) is available

Steps:

  1. Navigate to a part of the application where an API call is made (for example, triggering code generation or project update).
  2. Intentionally input invalid data or trigger a known error condition (e.g., an input that doesn't meet validation criteria).
  3. Submit the form or trigger the action.
  4. Observe the UI for the error message.

Expected Result: An appropriate error message is displayed on the screen. The message should clearly indicate the nature of the error (such as 'Invalid target oauth error', if applicable) and should be styled consistently with other error messages in the application.

4: SSE Stream Handling and Reconnection Behavior ❗️❗️

Description: This test confirms that Server-Sent Events (SSE) for real-time updates (such as code generation status updates) behave correctly. It also checks that reconnection attempts after network interruptions are managed seamlessly by the updated SDK.

Prerequisites:

  • User is logged in
  • A project or code generation task that uses SSE updates is active

Steps:

  1. Navigate to a page or section where real-time updates are displayed (e.g., during a code generation process).
  2. Initiate an action that triggers SSE events (such as starting code generation).
  3. Simulate a network interruption (this can be done by temporarily disconnecting the network or using browser developer tools to throttle or block SSE requests).
  4. Restore the network connection.
  5. Monitor the UI during and after the interruption.

Expected Result: The UI should show appropriate loading indicators during the interruption and then automatically reconnect to the SSE stream. Once reconnected, the real-time updates should resume without requiring manual intervention from the user.

5: Navigation and Visual Layout Consistency ❗️❗️

Description: This test checks that the overall navigation and UI layout across different sections of the application remain consistent after the SDK update. It helps ensure that no inadvertent visual or navigational regressions were introduced.

Prerequisites:

  • User is logged in
  • The application is running
  • Familiarity with the main navigation elements (e.g., Home, Projects, Settings)

Steps:

  1. Open the web application in a browser (http://localhost:3000).
  2. Click on the 'Home' menu item and observe that the home page loads correctly.
  3. Navigate to 'Projects' and ensure that the project list or dashboard is properly displayed.
  4. Click on a specific project to view its details, including the file explorer.
  5. Use the browser back button or the application's navigation menu to return to the main dashboard.
  6. Navigate to another section such as 'Settings' if available and confirm the layout remains consistent.

Expected Result: Each navigation step leads to the correct page with no layout or visual component misalignments. The overall look and feel of the pages should remain consistent with the design specifications.

Raw Changes Analyzed

@codecapyai
Copy link

codecapyai bot commented Dec 13, 2025

🚀 Launching Scrapybara desktop...

@codecapyai
Copy link

codecapyai bot commented Dec 13, 2025

❌ Something went wrong:

status_code: 500, body: {'detail': 'Error creating instance: HTTPSConnectionPool(host=\'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\', port=443): Max retries exceeded with url: /api/v1/namespaces/scrapybara-instances/services (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f27a9bf8890>: Failed to resolve \'dd71ce9e4c14175cfb2d4b4d613159f4.sk1.us-west-1.eks.amazonaws.com\' ([Errno -2] Name or service not known)"))'}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants