Formato de especificación de agentes
Los agentes de Tajo se definen en archivos markdown. Cada archivo contiene un frontmatter YAML (identidad, herramientas, restricciones) y un cuerpo markdown (instrucciones, estrategia, reglas). Este formato está inspirado en los patrones de agentes de producción que se usan en los sistemas de orquestación multiagente.
Estructura del archivo
---name: agent-namedescription: What this agent does (max 160 chars)version: 1.0.0temperature: 0.2max_tokens: 4096tools: - brevo_contacts - brevo_email_campaign_management - brevo_sms_campaignstriggers: - event: cart_abandoned - schedule: "0 */4 * * *"permissions: - contacts:read - email:send - sms:send---
# Agent Name
Instructions for the agent in natural language...Campos del frontmatter
Campos obligatorios
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Identificador único en kebab-case (por ejemplo, cart-recovery-agent) |
description | string | Lo que hace este agente (máx. 160 caracteres) |
version | string | Versión semántica (por ejemplo, 1.0.0) |
tools | array | Módulos del servidor MCP de Brevo a los que puede acceder este agente |
Campos de comportamiento
| Campo | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
temperature | float | 0.3 | Temperatura del LLM. Cuanto más baja, más determinista. Usa 0.1-0.2 para operaciones con datos y 0.3-0.5 para el diseño de campañas |
max_tokens | integer | 4096 | Longitud máxima de la respuesta por turno |
model | string | claude-sonnet-4-6 | Modelo LLM que se va a usar |
Campos de disparadores
| Campo | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
triggers | array | [] | Eventos, horarios o webhooks que activan este agente |
triggers[].event | string | - | Nombre del evento (por ejemplo, cart_abandoned, customer_created) |
triggers[].schedule | string | - | Expresión cron (por ejemplo, 0 9 * * * para las 9:00 de cada día) |
triggers[].webhook | string | - | Ruta del webhook (por ejemplo, /agents/cart-recovery/trigger) |
triggers[].conditions | array | [] | Condiciones de filtrado del disparador |
triggers[].debounce | string | - | Ventana de debounce (por ejemplo, 5m, 1h) |
Campos de permisos
| Campo | Tipo | Valor por defecto | Descripción |
|---|---|---|---|
permissions | array | [] | Ámbitos de permisos necesarios para el rastro de auditoría |
related_agents | array | [] | IDs de los agentes a los que este agente puede delegar |
escalation | string | - | Adónde derivar cuando el agente no tiene certeza (human, supervisor-agent) |
Herramientas: correspondencia con los servidores MCP de Brevo
El campo tools hace referencia a los nombres de los módulos del servidor MCP de Brevo. Cada módulo corresponde a un endpoint concreto de mcp.brevo.com:
tools: # Contacts & Segmentation - brevo_contacts # /v1/brevo_contacts/mcp - brevo_lists # /v1/brevo_lists/mcp - brevo_segments # /v1/brevo_segments/mcp - brevo_attributes # /v1/brevo_attributes/mcp
# Campaigns & Messaging - brevo_email_campaign_management # /v1/brevo_email_campaign_management/mcp - brevo_templates # /v1/brevo_templates/mcp - brevo_sms_campaigns # /v1/brevo_sms_campaigns/mcp - brevo_whatsapp_campaigns # /v1/brevo_whatsapp_campaigns/mcp
# Analytics - brevo_campaign_analytics # /v1/brevo_campaign_analytics/mcp
# Sales CRM - brevo_deals # /v1/brevo_deals/mcp - brevo_companies # /v1/brevo_companies/mcp - brevo_tasks # /v1/brevo_tasks/mcp - brevo_pipelines # /v1/brevo_pipelines/mcp - brevo_notes # /v1/brevo_notes/mcpTip
Usa el conjunto mínimo de herramientas que tu agente necesita. Menos herramientas significan mejor razonamiento de la IA y respuestas más rápidas. Consulta Servidor MCP de Brevo para ver todos los módulos disponibles.
Disparadores
Disparadores de eventos
Activan el agente cuando ocurre algo en tu sistema:
triggers: - event: cart_abandoned conditions: - cart_value: "> 50" - items_count: ">= 1" - time_since_activity: "> 30m" debounce: 5mDisparadores por horario
Ejecutan el agente de forma recurrente:
triggers: - schedule: "0 9 * * MON" # Every Monday at 9am timezone: "America/New_York" - schedule: "0 */4 * * *" # Every 4 hours - schedule: "0 0 1 * *" # First day of each monthDisparadores de webhook
Invocan el agente por HTTP:
triggers: - webhook: /agents/win-back/trigger method: POST authentication: api_keyCuerpo markdown: instrucciones
El cuerpo de la especificación del agente son instrucciones en lenguaje natural. Escríbelo como si estuvieras dando indicaciones a un profesional de marketing con experiencia:
Estructura
# Agent Name
Context paragraph, what this agent does and why.
## Strategy
Step-by-step approach the agent should follow.
## Decision Framework
Rules for making choices (e.g., which channel to use based on cart value).
## Rules
Hard constraints, things the agent must ALWAYS or NEVER do.
## Templates
References to Brevo template IDs, SMS copy, WhatsApp templates.
## Metrics
Events to track for measuring success.Cómo escribir instrucciones eficaces
Sé específico con la estrategia, no solo con los objetivos:
## BadRe-engage churned customers.
## GoodWhen a customer hasn't purchased in 90+ days:1. Check their last 3 orders for product category preferences2. Create a personalized discount based on AOV (10% if AOV > $100, 15% if < $100)3. Send email with subject line referencing their preferred category4. Wait 72 hours, if no open, send SMS with discount code5. Wait 7 days, if no purchase, mark as deep-churn and stop sequenceDefine las barreras de protección de forma explícita:
## Rules- NEVER send more than 3 messages per sequence- NEVER contact customers who unsubscribed- ALWAYS check if the customer converted before sending the next step- ALWAYS respect quiet hours (no SMS 9pm-9am local time)- If unsure about a decision, escalate to human reviewCadenas multiagente
Para flujos de trabajo complejos, compón varios agentes en una cadena. Cada agente se encarga de una fase y pasa el contexto al siguiente:
name: quarterly-retention-campaignsteps: - agent: customer-intelligence input: | Analyze customer segments for Q2 retention campaign. Goal: {task}
Identify: 1. At-risk customers (declining purchase frequency) 2. VIP customers (top 10% by LTV) 3. Win-back candidates (90+ days since last order)
- agent: campaign-designer input: | Design retention campaigns for these segments: {previous}
Create differentiated approaches per segment: - At-risk: gentle nudge with product recommendations - VIP: exclusive early access or loyalty reward - Win-back: aggressive discount with urgency
- agent: campaign-executor input: | Execute these campaigns via Brevo: {previous}
Use appropriate channels per segment preference. Set up A/B tests for subject lines. Schedule sends for optimal times.
- agent: campaign-reporter input: | Generate the retention campaign launch report: {previous}
Include: segments targeted, campaigns created, expected reach, A/B test configurations.Variables de la cadena
| Variable | Descripción |
|---|---|
{task} | El objetivo o la petición original |
{previous} | La salida del paso anterior |
{step_N} | La salida del paso N (empezando por 0) |
{artifacts_dir} | Directorio para los archivos de salida |
Especificaciones de agentes predefinidas
Campaign Orchestrator
---name: campaign-orchestratordescription: Design and execute multi-channel campaigns from natural language promptsversion: 2.0.0temperature: 0.3tools: - brevo_contacts - brevo_segments - brevo_email_campaign_management - brevo_templates - brevo_sms_campaigns - brevo_whatsapp_campaigns - brevo_campaign_analyticstriggers: - webhook: /agents/campaign/trigger method: POST---
# Campaign Orchestrator
You are a multi-channel marketing campaign specialist.Given a campaign brief, you design, build, and launchcampaigns across email, SMS, and WhatsApp via Brevo.
## Process1. Parse the campaign brief (audience, message, goal, timeline)2. Create or identify the target segment in Brevo3. Select the best channel(s) based on audience preference data4. Build campaign content using existing templates or creating new ones5. Configure send schedule and A/B tests6. Launch and report initial delivery metrics
## Channel Selection- Email: default for all campaigns- SMS: add for time-sensitive offers or cart recovery- WhatsApp: add for conversational campaigns or high-value segments
## Rules- ALWAYS preview campaigns before sending- NEVER send to unsubscribed contacts- ALWAYS set up tracking for campaign attribution- Maximum 2 A/B test variants per campaignCustomer Intelligence Agent
---name: customer-intelligencedescription: Autonomous segmentation, RFM scoring, and churn predictionversion: 1.5.0temperature: 0.2tools: - brevo_contacts - brevo_segments - brevo_attributes - brevo_lists - brevo_campaign_analyticstriggers: - schedule: "0 6 * * MON" timezone: "UTC"---
# Customer Intelligence Agent
You analyze customer data in Brevo to generate actionablesegments and insights for marketing teams.
## Weekly Analysis1. Pull contact activity data from campaign analytics2. Calculate RFM scores (Recency, Frequency, Monetary)3. Identify segment shifts (customers moving between tiers)4. Flag churn risks (declining engagement over 4+ weeks)5. Generate segment recommendations for upcoming campaigns
## Segment Definitions- Champions: R=5, F=5, M=5, recent, frequent, high-value- Loyal: R>=3, F>=4, M>=3, consistent buyers- At Risk: R<=2, F>=3, M>=3, were loyal, now fading- Hibernating: R=1, F>=2, M>=2, long gone, were once active- New: first purchase in last 30 days
## OutputProduce a markdown report with:- Segment sizes and week-over-week changes- Top 10 at-risk customers by LTV- Recommended actions per segment- Suggested campaign themes for the weekDespliegue
Ejecutar un agente mediante código
import { TajoAgent } from "@tajo/agent-sdk";
const agent = new TajoAgent({ specPath: "./agents/cart-recovery-agent.md", brevoToken: process.env.BREVO_MCP_TOKEN, model: "claude-sonnet-4-6", // Only connect the MCP servers listed in the agent's tools field autoConnectServers: true,});
const result = await agent.run( "Recover abandoned carts over $50 from the last 4 hours");
console.log(result.summary);console.log(result.toolCalls); // Full audit trailconsole.log(result.metrics); // Events trackedEjecutar con Claude Code
# Point to your agent spec and let Claude execute itclaude "Run the agent defined in ./agents/cart-recovery-agent.md for today's abandoned carts"Programar con cron
# Run the customer intelligence agent every Monday at 6am0 6 * * MON claude --print "Run ./agents/customer-intelligence.md weekly analysis" >> /var/log/tajo-agents.log 2>&1Próximos pasos
- Servidor MCP de Brevo, herramientas disponibles y configuración del servidor
- Crea tu primer agente, tutorial práctico
- Referencia de Skills, las Skills de Tajo que se combinan con los agentes
- Visión general de la arquitectura MCP, cómo encaja todo