Quando usar app() vs define()?
Se o seu projeto tem um único handler, use
define(). Se você precisa agrupar múltiplas operações — por exemplo, enviar e ler e-mails do mesmo serviço — use app().
Exemplo básico
index.ts
Testes locais
Inicie o servidor comjelou functions dev e teste cada ferramenta na sua rota:
400 com detalhes:
API
AppConfig
Rotas geradas automaticamente
As chaves do seu objetotools são automaticamente convertidas para kebab-case para gerar rotas HTTP:
Para personalizar uma rota, use
config.path no define() individual:
Combinação de config
A config global doapp() se aplica a todas as ferramentas. Cada define() pode sobrescrever valores específicos:
fast tem um timeout de 5 segundos e slow herda os 30 segundos globais. Ambas compartilham a configuração de CORS.
Endpoint de health
No modo app,/__health retorna informações sobre todas as ferramentas:
Type guards
UseisEdgeApp() e isEdgeFunction() para identificar o tipo de export em tempo de execução:
Cron multi-tool
Cada ferramenta dentro deapp() pode ter seus próprios schedules de cron independentes. As requisições de cron são enviadas para a rota específica de cada ferramenta.
MCP multi-tool
Um único servidor MCP em/mcp registra automaticamente todas as ferramentas do app(). Para excluir uma ferramenta do registro MCP, use mcp: false na sua config:
publicTool via MCP. internalTool só é acessível via HTTP direto na sua rota /internal-tool.
Rotas expostas (modo app)
Problemas comuns
- 404 na rota da ferramenta
- Validação falha com 400
- Ferramenta não aparece no MCP
As chaves de
tools são convertidas para kebab-case. Se sua chave é sendEmail, a rota é /send-email, não /sendEmail.Verifique as rotas reais com o health check:Próximos passos
Testing
Aprenda a testar funções multi-tool com
createMockApp().MCP
Configure o servidor MCP unificado para seus agentes de IA.
Cron
Schedules independentes por ferramenta dentro de
app().