---
title: "What's New in Zuplo - November 2025"
description: ""
canonicalUrl: "https://zuplo.com/changelog/2025/12/01/monthly-changelog"
pageType: "changelog"
date: "2025-12-01"
tags: "runtime, dev-portal, portal, cli"
---
November 2025 brings significant enhancements across the Zuplo platform, with a
major focus on MCP (Model Context Protocol) improvements, Dev Portal
authentication options, and developer experience upgrades. This month's
highlights include new MCP tool annotations support, Firebase authentication for
the Dev Portal, multipart form file upload support in the API Playground, and
powerful new CLI features.

Whether you're building AI-powered APIs with MCP, creating beautiful developer
portals, or managing your API gateway through the CLI, this release delivers
features that make your workflow faster and more powerful.

## Highlights

### MCP Server Enhancements

Zuplo's MCP Server capabilities received significant upgrades this month, making
it easier to build sophisticated AI-ready APIs.

#### Tool Annotations and Metadata Support

The MCP Server handler now supports tool annotations and `_meta` fields, giving
you fine-grained control over how AI systems discover and interact with your API
tools.

**Key capabilities:**

- **Tool annotations**: Add hints like `readOnlyHint`, `destructiveHint`,
  `idempotentHint`, and `openWorldHint` to help AI agents understand tool
  behavior
- **Custom metadata**: Include arbitrary `_meta` fields for additional context
- **Human-readable titles**: Use the `title` annotation to provide friendly
  names for your tools

**Configuration example:**

```json
{
  "paths": {
    "/weather": {
      "get": {
        "operationId": "getCurrentWeather",
        "x-zuplo-route": {
          "handler": {
            "export": "urlForwardHandler",
            "module": "$import(@zuplo/runtime)"
          },
          "mcp": {
            "type": "tool",
            "annotations": {
              "title": "Get Weather",
              "readOnlyHint": true,
              "openWorldHint": true
            },
            "_meta": {
              "category": "weather"
            }
          }
        }
      }
    }
  }
}
```

See the
[MCP Server Tools documentation](https://zuplo.com/docs/mcp-server/tools) for
full configuration options.

#### New Operations Configuration

The MCP Server handler introduces a new `operations` array configuration that
provides explicit control over which API operations become MCP tools. This
replaces the deprecated `files`, `prompts`, and `resources` configuration
options.

```json
{
  "options": {
    "name": "my-mcp-server",
    "version": "1.0.0",
    "operations": [
      {
        "file": "./config/routes.oas.json",
        "id": "getCurrentWeather"
      },
      {
        "file": "./config/routes.oas.json",
        "id": "createTodo"
      }
    ]
  }
}
```

See the
[MCP Server Handler documentation](https://zuplo.com/docs/handlers/mcp-server)
for migration guidance.

---

### Dev Portal: Firebase Authentication

The Dev Portal now supports Firebase Authentication, giving you another powerful
option for managing user access to your API documentation and developer tools.

**Key capabilities:**

- **Multiple sign-in providers**: Support for Google, GitHub, Facebook, Twitter,
  Microsoft, Apple, Yahoo, email/password, and phone authentication
- **Easy configuration**: Simple setup with your Firebase project credentials
- **Custom redirect URLs**: Configure where users go after sign-in, sign-up, and
  sign-out

**Configuration example:**

```typescript
// zudoku.config.ts
import type { ZudokuConfig } from "zudoku";

const config: ZudokuConfig = {
  authentication: {
    type: "firebase",
    apiKey: "<your-api-key>",
    authDomain: "your-domain.firebaseapp.com",
    projectId: "your-project-id",
    appId: "1:296819355813:web:91d29f11cac6f073595d4c",
    providers: ["google", "github", "password"],
    redirectToAfterSignIn: "/docs",
    redirectToAfterSignUp: "/getting-started",
  },
};

export default config;
```

See the
[Firebase Authentication documentation](https://zuplo.com/docs/dev-portal/zudoku/configuration/authentication-firebase)
for setup instructions.

The Firebase authentication UI provides a seamless sign-in experience with
multiple provider options. It can be customized to match the styles of your Dev
Portal for a consistent look and feel.

---

### Dev Portal: Supabase UI Authentication

The Dev Portal now includes a native Supabase UI login experience, making it
even easier to integrate Supabase authentication with your API documentation.

**Key capabilities:**

- **Multiple OAuth providers**: Support for Google, GitHub, Discord, and 20+
  other providers supported by Supabase Auth
- **Email/password authentication**: Built-in support for traditional email and
  password sign-up and sign-in
- **Automatic route handling**: Authentication routes (`/signin`, `/signup`,
  `/signout`) are automatically created
- **Custom redirects**: Configure where users go after sign-in, sign-up, and
  sign-out

**Configuration example:**

```typescript
// zudoku.config.ts
import type { ZudokuConfig } from "zudoku";

const config: ZudokuConfig = {
  authentication: {
    type: "supabase",
    providers: ["google", "github"],
    supabaseUrl: "https://your-project.supabase.co",
    supabaseKey: "<your-anon-public-key>",
    redirectToAfterSignIn: "/dashboard",
    redirectToAfterSignUp: "/welcome",
    // Optional: disable email/password, use only OAuth
    onlyThirdPartyProviders: false,
  },
};

export default config;
```

See the
[Supabase Authentication documentation](https://zuplo.com/docs/dev-portal/zudoku/configuration/authentication-supabase)
for setup instructions.

---

### Dev Portal: API Playground File Uploads

The Dev Portal's API Playground now supports multipart form data and file
uploads, making it possible to test file upload endpoints directly from your
documentation.

**Key capabilities:**

- **Multipart form support**: Test endpoints that accept `multipart/form-data`
- **File upload UI**: Intuitive interface for selecting and uploading files
- **Mixed content**: Combine file uploads with other form fields

This enhancement makes it easy for developers to test complex API endpoints
without leaving your documentation.

![File upload in API Playground](/media/changelog/2025-12-01-monthly-changelog/image-4.png)

---

### Custom Code Examples in Dev Portal

You can now generate custom code examples for your API operations, giving your
developers tailored guidance in their preferred programming languages.

**Key capabilities:**

- **Custom templates**: Define your own code example templates
- **Multiple languages**: Support for additional programming languages beyond
  the defaults
- **Operation-specific examples**: Customize examples per endpoint

See the
[API Reference documentation](https://zuplo.com/docs/dev-portal/zudoku/configuration/api-reference)
for configuration options.

---

## CLI Updates

### Watch Mode for OpenAPI Commands

The `openapi overlay` and `openapi convert` CLI commands now support a `--watch`
flag that automatically re-applies changes when your input files change. This
dramatically speeds up development workflows when working with OpenAPI
specifications.

```bash
# Watch for changes and automatically re-apply overlay
npx zuplo openapi overlay \
  --input openapi.json \
  --overlay changes.json \
  --output result.json \
  --watch
```

See the
[OpenAPI Overlay documentation](https://zuplo.com/docs/cli/openapi-overlay) for
all available options.

### Zudoku Docs During Local Development

Running `zup dev` now automatically serves your Zudoku-powered Dev Portal
documentation alongside your API, providing a complete local development
experience.

---

## Dev Portal Updates

### Improved OpenAPI Schema Handling

The Dev Portal now handles `allOf` schemas more intelligently, providing cleaner
documentation for complex API schemas.

### Lazy Syntax Highlighting

For APIs with large numbers of operations, syntax highlighting is now applied
lazily, improving initial page load times and overall performance.

### Auth0 Prompt Configuration

You can now configure the `prompt` parameter for Auth0 authentication, including
the option to disable the "always prompt login" behavior.

```typescript
// zudoku.config.ts
const config: ZudokuConfig = {
  authentication: {
    type: "auth0",
    domain: "your-domain.auth0.com",
    clientId: "your-client-id",
    prompt: "login", // or "none", "consent", "select_account"
  },
};
```

### Remember Skip Login

A new "Remember skip login" checkbox option helps streamline the authentication
experience for returning users.

### llms.txt Support

The Dev Portal now supports generating `llms.txt` files and markdown output,
making your API documentation more accessible to AI systems and LLMs.

### Copy Page Button

A new "Copy page" button makes it easy for users to copy entire documentation
pages, improving the developer experience when sharing content.

![Copy Button](/media/changelog/2025-12-01-monthly-changelog/image-2.png)

---

## Portal & CLI Updates

### Route Description Editor

A new markdown editor for route descriptions makes it easier to add rich
documentation directly in the route configuration.

![Route description editor](/media/changelog/2025-12-01-monthly-changelog/image-3.png)

### Custom AI Providers

The AI Gateway now supports custom AI providers, giving you flexibility to
integrate with any AI service beyond the built-in providers.

### Source Control Dialog Updates

The source control integration dialogs received styling updates and usability
improvements for a more consistent experience across GitHub, GitLab, Bitbucket,
and Azure DevOps.

---

## Bug Fixes

- **Dev Portal**: Fixed an issue where the API Playground would set an undefined
  body for GET and HEAD requests
- **Dev Portal**: Fixed style issues with consecutive paragraphs in
  documentation
- **Dev Portal**: Fixed scroll overflow in the SyntaxHighlight component
- **Dev Portal**: Fixed infinite re-renders caused by `invalidateCache` not
  being memoized
- **Dev Portal**: Fixed server resolution hierarchy and "Other Endpoints" bug in
  OpenAPI docs
- **Dev Portal**: Fixed SSR data corruption with large JSON payloads
- **Portal**: Fixed MCP virtual server copy URL button functionality
- **Portal**: Fixed dialog select hover behavior
- **Portal**: Fixed import operation handling
- **Portal**: Fixed overflowing text in various UI components
- **Runtime**: Fixed deleting deployments when a branch is deleted
- **Runtime**: Fixed GitHub status labels for consistency
- **Runtime**: Fixed v2 routing for root pages

---

## Documentation Updates

This month we added or improved documentation for:

- [Firebase Authentication Setup](https://zuplo.com/docs/dev-portal/zudoku/configuration/authentication-firebase) -
  Complete guide for Firebase Auth integration
- [MCP Server Tools](https://zuplo.com/docs/mcp-server/tools) - Updated with
  annotations and metadata support
- [OpenAPI Overlays Guide](https://zuplo.com/docs/guides/openapi-overlays) -
  Comprehensive guide for using OpenAPI overlays
- [Supabase Authentication](https://zuplo.com/docs/dev-portal/zudoku/configuration/authentication-supabase) -
  Updated documentation