Quando usar app() vs define()?
| Padrão | Quando usar |
|---|---|
define() | Uma única operação com um endpoint HTTP |
app() | Múltiplas ferramentas relacionadas que você quer fazer deploy juntas |
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
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
cors | object | { origin: "*" } | Configuração global de CORS |
timeout | number | 30000 | Timeout em ms para todas as ferramentas |
methods | string[] | ["GET","POST","PUT","PATCH","DELETE"] | Métodos HTTP permitidos |
mcp | boolean | true | Registrar ferramentas no servidor MCP |
Rotas geradas automaticamente
As chaves do seu objetotools são automaticamente convertidas para kebab-case para gerar rotas HTTP:
| Chave | Rota |
|---|---|
sendEmail | /send-email |
readInbox | /read-inbox |
MyTool | /my-tool |
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:
| Campo | Comportamento |
|---|---|
timeout | Ferramenta sobrescreve o global |
methods | Ferramenta sobrescreve o global |
cors | Ferramenta sobrescreve o global |
mcp | Ferramenta sobrescreve o global |
path | Sempre por ferramenta |
cron | Sempre por ferramenta |
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)
| Rota | Descrição |
|---|---|
/__health | Health check com lista de ferramentas |
/mcp | Servidor MCP unificado (a menos que config.mcp: false globalmente) |
/<tool-key> | Rota de cada ferramenta (kebab-case ou config.path personalizado) |
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().