app() você agrupa múltiplas operações relacionadas em um único deploy. Seus agentes de IA descobrem cada ferramenta individualmente via MCP, e cada uma tem sua própria rota HTTP.
Padrão: app() + múltiplos define() + .describe() em cada campo + config compartilhada + ctx.env.get() para secrets.
index.ts
Testes locais
Inicie o servidor comjelou dev e teste cada ferramenta:
400 com os detalhes do erro:
Por que funciona dessa forma
- Rotas automáticas — as chaves
createContact,searchContacts,deleteContactgeram/create-contact,/search-contacts,/delete-contact. - GET vs POST —
searchContactsusaconfig: { methods: ["GET"] }para receber parâmetros como query strings. As demais usam POST por padrão. descriptionimporta — cada ferramenta tem uma descrição específica que informa ao agente de IA exatamente o que ela faz e o que retorna. “Searches contacts by name or email” é muito melhor do que “Searches contacts”.- Config compartilhada —
corsetimeoutsão definidos uma vez noapp()e se aplicam a todas as ferramentas. Cada ferramenta pode sobrescrevê-los se necessário. - Secrets centralizados — as 3 ferramentas usam
ctx.env.get("CRM_API_KEY"). Você configura o secret uma vez comjelou secrets set. - MCP unificado —
curl http://localhost:3000/mcpretorna as 3 ferramentas como ferramentas independentes que o agente pode invocar.