---
title: "Choose MCP response formats and inspect query plans"
excerpt: "Configurable MCP output and query plans, Endpoint error details in pipe_stats_rt, the end of the Classic migration period, and API and Branch fixes."
date: "2026-09-18"
---

# Choose MCP response formats and inspect query plans

Tinybird MCP `execute_query` and generated Pipe Endpoint tools now accept a `response_format` of `CSVWithNames`, `JSON`, or `Markdown`. `CSVWithNames` remains the default, so existing clients keep the same output. Agents can also pass `explain=true` and optional `explain_settings` to `execute_query` to inspect a query plan before running the query.

## The Classic migration period has ended

The migration period for Tinybird Classic has ended. We attempted to migrate all remaining Free and Developer Workspaces to Forward, but a small number had issues that prevented automatic migration. If yours is one of them, resolve the blocking issues and migrate it by October 16, 2026, the end of the final grace period.

- **Free plans**: Classic Workspaces that remain after the grace period will be deleted.
- **Developer plans**: Classic Workspaces will not be deleted, but Tinybird will stop providing Classic support and block access through the UI.

After migration, your data, Tokens, and Endpoint URLs remain unchanged. The new [After migrating from Classic](https://www.tinybird.co/docs/forward/guides/after-migrating-from-classic) guide explains what changed and how to use version-controlled projects, Tinybird Local, Cloud Branches, deployments, SDKs, and agent skills in Forward.

## Inspect Endpoint errors in pipe_stats_rt

The `tinybird.pipe_stats_rt` and `organization.pipe_stats_rt` Service Data Sources now expose an `error_message` column with the request error text. You can inspect error details alongside request statistics without querying the separate `tinybird.endpoint_errors` Service Data Source. The existing `error` flag remains unchanged, so current queries continue to work.

## Breaking changes

- **`tinybird.query_validator_log` has an updated schema**: `pipe_name` is now `resource_type` and `resource_name`, and `run_validation` is now `validation_time`. `fix_suggestion` now contains the preferred suggestion, and the `fix_suggestion_ai`, `workspace`, `database`, `host`, and `region` columns have been removed. Update queries that reference the previous column names.
- **Pipe control-plane requests now have a per-Workspace safety limit**: Pipe metadata and Data Sink configuration routes allow 150 requests per second with a burst of 300. Clients that exceed the limit receive HTTP 429 and must retry according to the `Retry-After` header. Published Endpoint requests, the Query API, and the Events API are unchanged.
- **New and changed Data Sources now validate TTL and partition-key compatibility**: Tinybird rejects TTLs finer than the partition key and partition keys finer than hourly. Adjust the TTL or partition key before deploying. Existing unchanged Data Sources receive a warning instead of blocking the deployment. Compatible tables use part-level TTL drops by default to reduce retention work.

## Improvements and bug fixes

- [API]: Published CSV Pipe Endpoints now accept `__tb__csv_header=false` to omit the column-name row. This lets clients concatenate compressed, paginated CSV responses without adding a header between pages. The response `Content-Type` includes `header=absent`, and the default CSV response remains unchanged.
- [Forward]: Branch creation now reuses the origin Workspace's trusted external ID for S3, DynamoDB, and Kafka Connections that use AWS IAM roles. Migrated Connections no longer require trust-policy changes before creating a Branch.
- [Forward]: Branch creation no longer blocks unchanged legacy TTL and partition configurations. Column reordering also no longer counts as a schema change during TTL validation.
- [All]: Free-plan Organizations now distinguish approaching and reached limits for daily requests, LLM usage, and storage on the Overview and billing pages.
- [All]: Copy Pipe query-analysis timeouts now report the actual 10-second analysis limit and recommend splitting complex SQL instead of suggesting a plan upgrade. Failed launches also record the request parameters, execution type, and mode in `jobs_log`.
- [API]: Empty Parquet uploads to the Analyze API now return the existing unsupported-file error instead of HTTP 500.
