Goal
Hire and configure a new AI agent teammate from marketplace presets using conversational onboarding instead of forms.
Which Agent Types Use This
- custom (system/onboarding flows)
- Typically triggered by user selecting preset in marketplace UI
Hard Rules
- Jobs MUST start in
paused status — never auto-activate without preview approval.
- MUST generate preview draft before allowing activation.
- If no voice_profile_id provided, MUST prompt user to create one before agent activation.
- Never create agents without explicit user intent (no auto-hiring).
Steps
1. Check policy & capabilities
bolta.get_workspace_policy(workspace_id) → verify agent hiring allowed
bolta.get_my_capabilities(workspace_id) → verify Editor/Admin role
2. Load marketplace preset
bolta.list_agent_presets() → get available presets
- Find preset by
preset_id (e.g., "hype_man", "qa_bot", "analytics_pro")
- Extract default configuration:
agent_type (content_creator, reviewer, analytics, etc.)
default_persona (personality + behavioral guidelines)
recommended_model_tier (Sonnet/Opus for creators, Haiku for engagement)
default_job_templates (job types this agent excels at)
3. Gather business context (conversational)
- Load existing:
bolta.get_business_context(workspace_id)
- If missing or incomplete, conduct discovery conversation:
- "Tell me about your business" → business_context
- "What's your content strategy?" → content_goals
- "How often do you want to post?" → posting_frequency
- "Which platforms?" → platform_ids
- Store responses for agent configuration
4. Validate voice profile
- If
voice_profile_id provided:
bolta.get_voice_profile(voice_profile_id) → verify it exists
- If null:
- Prompt user: "This agent needs a voice profile to match your brand. Create one now?"
- Link to
bolta.voice.bootstrap flow
- BLOCK agent creation until voice exists
5. Create agent
bolta.create_agent({ workspace_id, type: preset.agent_type, name: user_chosen_name || preset.default_name, persona: custom_persona || preset.default_persona, model_tier: preset.recommended_model_tier, voice_profile_id, enabled_skills: preset.default_skills })
- Returns
agent_id
6. Create jobs (paused)
- For each job template in preset.default_job_templates:
bolta.create_job({ workspace_id, agent_id, run_instructions: fill_template(template, {business_context, content_goals}), schedule: derive_schedule(posting_frequency), status: "paused", metadata: {source: "agent_hiring"} })
- Collect
job_ids
7. Generate preview draft
- Use the newly created agent to generate a sample post:
bolta.draft_post({ workspace_id, agent_id, voice_profile_id, account_ids: platform_ids, prompt: "Create a sample post to demonstrate your voice and style", requested_action: "draft_only", metadata: {preview_draft: true} })
- Returns
preview_post_id
8. Return for user review
- Status:
paused (jobs not active yet)
- Show user:
- Agent name and persona
- Job schedule and instructions
- Preview draft (critical — user sees actual output before activation)
- Next step: "Review preview. If you like it, activate jobs. If not, adjust voice or persona."
Output
{
"agent_id": "uuid",
"job_ids": ["job-uuid1", "job-uuid2"],
"preview_post_id": "draft-uuid",
"status": "paused",
"next_step": "Review preview draft (ID: draft-uuid). If approved, call bolta.agent.activate_job."
}
Failure Handling
- If voice_profile_id missing and user declines creation: fail with clear message.
- If preview draft generation fails: agent still created but jobs remain paused, add warning.
- If job creation fails: agent created but incomplete, return partial job_ids + error details.
- Never auto-activate jobs on partial failures.
V2 Agent Context
Why conversational instead of forms?
Hiring an agent should feel like hiring a team member, not configuring software. The conversation:
- Gathers context naturally
- Lets the agent propose its own setup
- Adapts based on user's business
- Shows a preview before activation
Example conversation flow:
System: "You selected The Hype Man. Tell me about your business."
User: "B2B SaaS for project management."
System: "What's your content strategy?"
User: "Thought leadership on remote work."
System: "How often do you want to post?"
User: "3x/week on LinkedIn."
System: "Perfect. I'll set up The Hype Man to create 3x/week LinkedIn
thought pieces on remote work. Let me generate a sample post first..."
[Preview draft generated]
System: "Here's a sample. Like the voice? If yes, I'll activate the jobs."
Example Usage
Scenario: Hire Content Creator
{
"workspace_id": "uuid",
"preset_id": "hype_man",
"business_context": "B2B SaaS for project management",
"content_goals": "Thought leadership on remote work",
"posting_frequency": "3x/week",
"platform_ids": ["linkedin-uuid"],
"voice_profile_id": "uuid"
}
Result:
- Agent created (The Hype Man)
- 1 job created (3x/week LinkedIn content)
- Preview draft generated
- Jobs paused until user approves preview
1---2name: bolta-agent-hire3version: 2.0.04description: Create and onboard a new AI agent teammate from marketplace presets with conversational discovery and preview generation.5category: agent_lifecycle6roles_allowed: [Editor, Admin]7required_scopes: [team:manage, workspace:read]8safe_defaults:9 jobs_start_paused: true10 require_preview_approval: true11tools_required:12 - bolta.get_workspace_policy13 - bolta.get_my_capabilities14 - bolta.get_voice_profile15 - bolta.list_agent_presets16 - bolta.create_agent17 - bolta.create_job18 - bolta.draft_post19 - bolta.get_business_context20inputs_schema:21 type: object22 required: [workspace_id, preset_id]23 properties:24 workspace_id: { type: string }25 preset_id: { type: string, description: "Agent marketplace preset (e.g., 'hype_man', 'qa_bot')" }26 business_context: { type: string, description: "Business description from conversation" }27 content_goals: { type: string, description: "Content strategy from conversation" }28 posting_frequency: { type: string, description: "e.g., '3x/week', 'daily'" }29 platform_ids: { type: array, items: { type: string } }30 voice_profile_id: { type: string, description: "Existing voice profile or null to create new" }31 custom_persona: { type: string, description: "User-requested persona adjustments" }32outputs_schema:33 type: object34 properties:35 agent_id: { type: string }36 job_ids: { type: array, items: { type: string } }37 preview_post_id: { type: string }38 status: { type: string, enum: [paused, ready_to_activate] }39 next_step: { type: string }40organization: bolta.ai41author: Max Fritzhand42---4344## Goal45Hire and configure a new AI agent teammate from marketplace presets using conversational onboarding instead of forms.4647## Which Agent Types Use This48- **custom** (system/onboarding flows)49- Typically triggered by user selecting preset in marketplace UI5051## Hard Rules521. Jobs MUST start in `paused` status — never auto-activate without preview approval.532. MUST generate preview draft before allowing activation.543. If no voice_profile_id provided, MUST prompt user to create one before agent activation.554. Never create agents without explicit user intent (no auto-hiring).5657## Steps5859### 1. Check policy & capabilities60- `bolta.get_workspace_policy(workspace_id)` → verify agent hiring allowed61- `bolta.get_my_capabilities(workspace_id)` → verify Editor/Admin role6263### 2. Load marketplace preset64- `bolta.list_agent_presets()` → get available presets65- Find preset by `preset_id` (e.g., "hype_man", "qa_bot", "analytics_pro")66- Extract default configuration:67 - `agent_type` (content_creator, reviewer, analytics, etc.)68 - `default_persona` (personality + behavioral guidelines)69 - `recommended_model_tier` (Sonnet/Opus for creators, Haiku for engagement)70 - `default_job_templates` (job types this agent excels at)7172### 3. Gather business context (conversational)73- Load existing: `bolta.get_business_context(workspace_id)`74- If missing or incomplete, conduct discovery conversation:75 - "Tell me about your business" → business_context76 - "What's your content strategy?" → content_goals77 - "How often do you want to post?" → posting_frequency78 - "Which platforms?" → platform_ids79- Store responses for agent configuration8081### 4. Validate voice profile82- If `voice_profile_id` provided:83 - `bolta.get_voice_profile(voice_profile_id)` → verify it exists84- If null:85 - Prompt user: "This agent needs a voice profile to match your brand. Create one now?"86 - Link to `bolta.voice.bootstrap` flow87 - BLOCK agent creation until voice exists8889### 5. Create agent90- `bolta.create_agent({91 workspace_id,92 type: preset.agent_type,93 name: user_chosen_name || preset.default_name,94 persona: custom_persona || preset.default_persona,95 model_tier: preset.recommended_model_tier,96 voice_profile_id,97 enabled_skills: preset.default_skills98 })`99- Returns `agent_id`100101### 6. Create jobs (paused)102- For each job template in preset.default_job_templates:103 - `bolta.create_job({104 workspace_id,105 agent_id,106 run_instructions: fill_template(template, {business_context, content_goals}),107 schedule: derive_schedule(posting_frequency),108 status: "paused",109 metadata: {source: "agent_hiring"}110 })`111 - Collect `job_ids`112113### 7. Generate preview draft114- Use the newly created agent to generate a sample post:115 - `bolta.draft_post({116 workspace_id,117 agent_id,118 voice_profile_id,119 account_ids: platform_ids,120 prompt: "Create a sample post to demonstrate your voice and style",121 requested_action: "draft_only",122 metadata: {preview_draft: true}123 })`124- Returns `preview_post_id`125126### 8. Return for user review127- Status: `paused` (jobs not active yet)128- Show user:129 - Agent name and persona130 - Job schedule and instructions131 - **Preview draft** (critical — user sees actual output before activation)132- Next step: "Review preview. If you like it, activate jobs. If not, adjust voice or persona."133134## Output135```json136{137 "agent_id": "uuid",138 "job_ids": ["job-uuid1", "job-uuid2"],139 "preview_post_id": "draft-uuid",140 "status": "paused",141 "next_step": "Review preview draft (ID: draft-uuid). If approved, call bolta.agent.activate_job."142}143```144145## Failure Handling146- If voice_profile_id missing and user declines creation: fail with clear message.147- If preview draft generation fails: agent still created but jobs remain paused, add warning.148- If job creation fails: agent created but incomplete, return partial job_ids + error details.149- Never auto-activate jobs on partial failures.150151## V2 Agent Context152153**Why conversational instead of forms?**154155Hiring an agent should feel like hiring a team member, not configuring software. The conversation:1561. Gathers context naturally1572. Lets the agent propose its own setup1583. Adapts based on user's business1594. Shows a preview before activation160161**Example conversation flow:**162```163System: "You selected The Hype Man. Tell me about your business."164User: "B2B SaaS for project management."165166System: "What's your content strategy?"167User: "Thought leadership on remote work."168169System: "How often do you want to post?"170User: "3x/week on LinkedIn."171172System: "Perfect. I'll set up The Hype Man to create 3x/week LinkedIn 173thought pieces on remote work. Let me generate a sample post first..."174175[Preview draft generated]176177System: "Here's a sample. Like the voice? If yes, I'll activate the jobs."178```179180## Example Usage181182### Scenario: Hire Content Creator183```json184{185 "workspace_id": "uuid",186 "preset_id": "hype_man",187 "business_context": "B2B SaaS for project management",188 "content_goals": "Thought leadership on remote work",189 "posting_frequency": "3x/week",190 "platform_ids": ["linkedin-uuid"],191 "voice_profile_id": "uuid"192}193```194195**Result:**196- Agent created (The Hype Man)197- 1 job created (3x/week LinkedIn content)198- Preview draft generated199- Jobs paused until user approves preview