Skip to main content
Con config dentro de define() controlas el comportamiento de runtime de tu función.
export default define({
  config: {
    path: "/clientes/:id",
    methods: ["GET", "POST"],
    timeout: 60000,
    mcp: true,
    cors: {
      origin: "https://app.jelou.ai",
      credentials: true,
    },
    cron: [
      { expression: "0 9 * * *", timezone: "America/Guayaquil" },
    ],
  },
  handler: async (input, ctx) => { /* ... */ },
});

Opciones generales

OpciónTipoPredeterminadoDescripción
pathstring"*"Patrón de ruta. Soporta segmentos :param.
methodsstring[]["GET","POST","PUT","PATCH","DELETE"]Métodos HTTP permitidos
timeoutnumber30000Timeout del handler en ms. Retorna 504 si se excede.
mcpbooleantrueExponer como herramienta MCP en /mcp

Rutas personalizadas

Usa :param para capturar segmentos de la URL en ctx.params:
config: { path: "/users/:id/emails" }
// GET /users/42/emails → ctx.params.id === "42"
El path por defecto es "*", que coincide con cualquier ruta.

CORS

OpciónTipoPredeterminadoDescripción
cors.originstring | string[]"*"Origen(es) permitido(s)
cors.methodsstring[]Todos los métodos estándarMétodos de preflight CORS
cors.headersstring[]Headers comunesHeaders de petición permitidos
cors.credentialsbooleanfalsePermitir credenciales en CORS
cors.maxAgenumber86400Tiempo de caché de preflight en segundos
config: {
  cors: {
    origin: ["https://app.example.com", "https://web.example.com"],
    credentials: true,
    maxAge: 3600,
  }
}
Por defecto todos los orígenes están permitidos ("*"). Restringe cors.origin si tu función solo debe ser llamada desde dominios específicos.

Cron

Define schedules recurrentes directamente en la configuración. Se sincronizan automáticamente en cada despliegue.
CampoTipoRequeridoDescripción
expressionstringCron estándar de 5 campos (min hora día mes díaSemana)
timezonestringNoZona horaria IANA (ej: "America/Guayaquil"). Default: UTC.
config: {
  cron: [
    { expression: "0 9 * * *", timezone: "America/Guayaquil" },
    { expression: "0 9 * * *", timezone: "America/Bogota" },
    { expression: "*/30 * * * *" }, // UTC por defecto
  ],
}
Máximo 10 schedules por función. Cuando un schedule se dispara, tu función recibe una petición con ctx.isCron === true.

Expresiones comunes

ExpresiónDescripción
0 9 * * *Todos los días a las 9:00 AM
0 9 * * 1-5Lunes a viernes a las 9:00 AM
*/30 * * * *Cada 30 minutos
0 0 1 * *Primer día de cada mes a medianoche
0 */2 * * *Cada 2 horas

AppConfig — configuración global de app()

Cuando usas app() para agrupar múltiples tools, el objeto config de nivel superior aplica valores por defecto a todos los tools:
export default app({
  config: { timeout: 30_000, cors: { origin: "*" }, mcp: true },
  tools: {
    rapido: define({ config: { timeout: 5_000 }, handler: async () => ({}) }),
    lento: define({ handler: async () => ({}) }),
  },
});

Combinación de config

CampoComportamiento
timeoutEl tool sobreescribe el global
methodsEl tool sobreescribe el global
corsEl tool sobreescribe el global
mcpEl tool sobreescribe el global
pathSiempre por tool
cronSiempre por tool
Para la guía completa de multi-tool, consulta Funciones multi-tool.

Rutas expuestas

Cada función desplegada sirve estas rutas automáticamente:
RutaDescripción
/__healthHealth check y metadata de la función
/mcpEndpoint MCP (a menos que config.mcp: false)
Tu rutaRuta del handler (default: * coincide con cualquier path)