에이전트 명세 형식
Tajo 에이전트는 마크다운 파일로 정의합니다. 각 파일은 YAML 프론트매터(신원, 도구, 제약)와 마크다운 본문(지침, 전략, 규칙)으로 구성됩니다. 이 형식은 멀티 에이전트 오케스트레이션 시스템에서 실제로 사용되는 에이전트 패턴에서 착안했습니다.
파일 구조
---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...프론트매터 필드
필수 필드
| 필드 | 타입 | 설명 |
|---|---|---|
name | string | kebab-case 형식의 고유 식별자 (예: cart-recovery-agent) |
description | string | 이 에이전트가 하는 일 (최대 160자) |
version | string | 시맨틱 버전 (예: 1.0.0) |
tools | array | 이 에이전트가 접근할 수 있는 Brevo MCP 서버 모듈 |
동작 필드
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
temperature | float | 0.3 | LLM temperature. 값이 낮을수록 결정적입니다. 데이터 작업에는 0.1-0.2, 캠페인 설계에는 0.3-0.5를 사용하세요 |
max_tokens | integer | 4096 | 턴당 최대 응답 길이 |
model | string | claude-sonnet-4-6 | 사용할 LLM 모델 |
트리거 필드
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
triggers | array | [] | 이 에이전트를 실행시키는 이벤트, 일정, 웹훅 |
triggers[].event | string | - | 이벤트 이름 (예: cart_abandoned, customer_created) |
triggers[].schedule | string | - | Cron 표현식 (예: 매일 오전 9시는 0 9 * * *) |
triggers[].webhook | string | - | 웹훅 경로 (예: /agents/cart-recovery/trigger) |
triggers[].conditions | array | [] | 트리거에 적용할 필터 조건 |
triggers[].debounce | string | - | 디바운스 구간 (예: 5m, 1h) |
권한 필드
| 필드 | 타입 | 기본값 | 설명 |
|---|---|---|---|
permissions | array | [] | 감사 추적을 위해 필요한 권한 스코프 |
related_agents | array | [] | 이 에이전트가 작업을 위임할 수 있는 에이전트 ID |
escalation | string | - | 에이전트가 판단하기 어려울 때 넘길 대상 (human, supervisor-agent) |
도구: Brevo MCP 서버와의 매핑
tools 필드는 Brevo MCP 서버 모듈 이름을 참조합니다. 각 모듈은 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
에이전트에 필요한 최소한의 도구만 사용하세요. 도구가 적을수록 AI의 추론이 정확해지고 응답도 빨라집니다. 사용 가능한 전체 모듈은 Brevo MCP 서버를 참고하세요.
트리거
이벤트 트리거
시스템에서 특정 상황이 발생하면 에이전트를 실행합니다.
triggers: - event: cart_abandoned conditions: - cart_value: "> 50" - items_count: ">= 1" - time_since_activity: "> 30m" debounce: 5m일정 트리거
정해진 주기로 에이전트를 실행합니다.
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 month웹훅 트리거
HTTP로 에이전트를 호출합니다.
triggers: - webhook: /agents/win-back/trigger method: POST authentication: api_key마크다운 본문: 지침
에이전트 명세의 본문은 자연어로 쓴 지침입니다. 숙련된 마케터에게 업무를 설명한다는 마음으로 작성하세요.
구조
# 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.효과적인 지침 작성법
목표만 적지 말고 전략을 구체적으로 명시하세요.
## 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 sequence가드레일을 명시적으로 정의하세요.
## 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 review멀티 에이전트 체인
복잡한 워크플로에서는 여러 에이전트를 체인으로 구성합니다. 각 에이전트가 한 단계를 담당하고 컨텍스트를 다음 단계로 넘깁니다.
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.체인 변수
| 변수 | 설명 |
|---|---|
{task} | 최초의 목표 또는 요청 |
{previous} | 직전 단계의 출력 |
{step_N} | N번째 단계의 출력 (0부터 시작) |
{artifacts_dir} | 파일 출력이 저장되는 디렉터리 |
미리 준비된 에이전트 명세
캠페인 오케스트레이터
---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 campaign고객 인텔리전스 에이전트
---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 week배포
프로그래밍 방식으로 에이전트 실행하기
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 trackedClaude 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"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>&1다음 단계
- Brevo MCP 서버, 사용 가능한 도구와 서버 설정
- 첫 에이전트 만들기, 실습 중심 튜토리얼
- 스킬 레퍼런스, 에이전트와 결합되는 Tajo Skills
- MCP 아키텍처 개요, 전체 구성 요소가 맞물리는 방식