Comportamiento por defecto
Cuando tu handler retorna un objeto plano, la plataforma responde con200 OK y Content-Type: application/json:
Response builder
Importaresponse desde @jelou/functions:
Status code personalizado
Headers personalizados
Múltiples headers de una vez
Encadenamiento completo
El builder es inmutable — cada método retorna una nueva instancia sin modificar la anterior:API
.json() y .noContent() son los métodos terminales — después de llamarlos obtienes un response final, no un builder. Los métodos .status(), .header() y .headers() retornan un nuevo builder encadenable.Ejemplos prácticos
- 201 Created
- 404 Not Found
- Cache headers
- 202 Accepted
- 204 No Content
Validación de output
Cuando usasresponse.json(body) con un schema output definido, la validación se aplica al body del response — exactamente igual que con objetos planos:
La validación de output nunca bloquea la respuesta. Si el body no coincide con el schema, se registra un warning en los logs pero el cliente recibe la respuesta con el status que configuraste.
Funciona en app() también
Comportamiento en MCP
Cuando tu función es invocada vía MCP (por un agente IA en Brain Studio), el response builder funciona diferente:- El body se emite como
structuredContentdel tool result - El status code y los headers se ignoran — MCP no tiene concepto de HTTP status
- También se envía el body como texto JSON para compatibilidad con clientes MCP que esperan
content[].text
Content-Type
El response builder siempre retornaapplication/json. Si intentas sobreescribir Content-Type, la plataforma lo fuerza de vuelta a application/json:
Limitaciones
Para necesidades más avanzadas (streaming, binarios, status dinámico basado en content-type), usa raw mode.
Mezclar con objetos planos
Puedes retornar objetos planos oresponse.json() desde el mismo handler — la plataforma detecta automáticamente cuál usas: