MCP Tools: Automation
Create and manage AI agents, agent memory and learnings, agent chains (beta).
Technical reference, generated automatically from the live tool registry.
Agents
Create/manage AI agents, agent memory and learnings, agent chains (beta)
list_agents
read-only
List all agents in this workspace with their status, assigned tools, and skill count. Use get_agent for full details of a specific agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
enabled_only | boolean | no |
get_agent
read-only
Get full details of a subagent including system prompt and configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | yes | Agent slug (e.g. sales-researcher) |
create_agent
action
Create a new subagent for this workspace. The agent gets its own system prompt, model, and tool access controls.
Example: Create a ‘Lead Qualifier’ agent that only has access to research + qualification tools, with a specialized prompt for evaluating company fit.
Trigger types:
- keyword: { type: ‘keyword’, pattern: ‘qualify *’ } — invoked when message matches pattern
- event: { type: ‘event’, event: ‘lead_replied’ } — invoked on system event
- schedule: { type: ‘schedule’, cron: ‘0 9 * * 1’ } — runs on schedule
- channel: { type: ‘channel’, channel_id: ‘uuid’ } — default agent for a channel
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Agent display name |
slug | string | yes | URL-safe slug (e.g. lead-qualifier) |
description | string | yes | What this agent does |
system_prompt | string | yes | Agent system prompt — defines personality, expertise, and behavior |
avatar_emoji | string | no | |
model | string | no | |
temperature | number | no | |
max_tokens | number | no | |
allowed_tools | string[] | no | |
denied_tools | string[] | no | |
custom_tool_ids | string[] | no | |
max_tool_iterations | number | no | |
context_instructions | string | no | |
triggers | object[] | no |
update_agent
destructive
Update a subagent configuration. Can change prompt, tools, triggers, or model.
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | yes | Agent slug to update |
name | string | no | |
description | string | no | |
system_prompt | string | no | |
model | string | no | |
temperature | number | no | |
allowed_tools | string[] | no | |
denied_tools | string[] | no | |
custom_tool_ids | string[] | no | |
triggers | object[] | no | |
context_instructions | string | no | |
enabled | boolean | no |
delete_agent
destructive
Delete a subagent from this workspace.
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | yes | Agent slug to delete |
invoke_agent
action
Invoke a subagent with a message. The agent runs with its own system prompt and tool access, then returns the result.
| Parameter | Type | Required | Description |
|---|---|---|---|
slug | string | yes | Agent slug to invoke |
message | string | yes | Message to send to the agent |
context | object | no |
get_agent_memories
read-only
Get agent learnings and memories. These are data-driven insights the system has learned from campaign outcomes, reply patterns, and user feedback. Use this to understand what works for this workspace.
| Parameter | Type | Required | Description |
|---|---|---|---|
category | enum(campaign_learning \ | icp_insight \ | copy_pattern \ |
agent_id | string | no | |
min_confidence | number | no | |
limit | number | no |
store_agent_memory
action
Store a new learning/insight for the agent. Use this when you discover something about the workspace, their ICP, messaging patterns, objections, or preferences.
| Parameter | Type | Required | Description |
|---|---|---|---|
category | enum(campaign_learning \ | icp_insight \ | copy_pattern \ |
content | string | yes | The insight to remember |
confidence | number | no | |
agent_id | string | no | |
source | string | no |
reinforce_memory
action
Reinforce an existing memory with new evidence. Increases confidence score.
| Parameter | Type | Required | Description |
|---|---|---|---|
memory_id | string | yes | Memory ID to reinforce |
evidence | object | no |
weaken_memory
action
Weaken a memory when contradicting evidence is found. Decreases confidence.
| Parameter | Type | Required | Description |
|---|---|---|---|
memory_id | string | yes | Memory ID to weaken |
create_agent_chain
action
Create a chain of agents that run in sequence, passing outputs between them. Each agent can use different MCP tools (Trigify, CRM, Apollo, Email Outreach, etc.). Chains are saved as triggers and can run on schedule or on events. Beta feature — use for custom workflows that don’t fit the standard pipeline. IMPORTANT: Always call list_agents first to get real agent IDs. If agents don’t exist, create them with create_agent before creating the chain.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Chain name (e.g., “Trigify → Enrich → Email Outreach”) |
steps | object[] | yes | Ordered agent steps — minimum 2 agents |
trigger_type | enum(schedule \ | event \ | manual) |
schedule | string | no | |
event_name | string | no |
run_agent_chain
action
Manually run an agent chain. Pass optional context data that the first agent receives. Set dry_run=true for a safe test run — opted-in side-effect tools (send_linkedin_message, add_leads_to_heyreach_campaign, bulk_enroll_whatsapp) will no-op and return their would-be payload.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | Chain trigger ID (from create_agent_chain) |
context | object | no | |
dry_run | boolean | no |
list_agent_chains
read-only
List all agent chains in this workspace.
No parameters.
get_chain_history
read-only
Get execution history for agent chains — shows each run with steps, quality scores, tool calls, and any issues. Use this to debug and optimize chains. Reads the new agent_chain_runs tables first; falls back to audit_log for runs predating the migration.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_name | string | no | |
hours | number | no | |
limit | number | no |
submit_chain_feedback
action
Submit human feedback on a chain step — used to improve agent performance. The feedback is stored in agent memory and influences future runs.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | Chain execution ID (from get_chain_history) |
step_index | number | yes | Which step to give feedback on (1-based) |
rating | enum(good \ | bad \ | needs_improvement) |
feedback | string | yes | What was wrong or right, what should change |
agent_id | string | no |
add_chain_step
action
Add a step to an existing chain. By default appends to the end; set insert_after to insert at a specific position (1-based).
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | Chain trigger ID |
agent_id | string | yes | Workspace agent that will run this step |
message_template | string | no | |
output_key | string | no | |
insert_after | number | no |
delete_chain_step
destructive
Remove a step from a chain by 1-based position. Remaining steps shift down.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
position | number | yes | 1-based step position to remove |
set_chain_step_condition
destructive
Attach (or clear) a condition on a chain step. The step only runs when the condition evaluates true against the accumulated chain context. Optionally jump to else_jump_to (1-based) when false. Pass condition: null to clear an existing condition.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
position | number | yes | 1-based step position |
condition | object | no | |
else_jump_to | number | no |
list_chain_templates
read-only
List battle-tested chain templates available for one-click install. Each template has a stable slug; pass it to install_chain_template to deploy.
No parameters.
install_chain_template
action
Install a battle-tested chain template into this workspace. Missing agents that the template references are auto-created from the agent template registry. Idempotent: re-installing the same template returns the existing chain id unless force=true.
| Parameter | Type | Required | Description |
|---|---|---|---|
template_slug | string | yes | Stable slug from list_chain_templates (e.g. “post-engagers-to-leads-view”) |
name_override | string | no | |
force | boolean | no |
set_chain_step_parallel_group
destructive
Tag a step with a parallel_group. Adjacent steps sharing the same group run concurrently via Promise.all. Pass parallel_group: null to make the step sequential again.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
position | number | yes | |
parallel_group | string | no |
update_chain_step
destructive
Edit message_template and/or output_key on an existing chain step. To change the agent on a step, delete it and add a new one (this preserves the audit trail).
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
position | number | yes | |
message_template | string | no | |
output_key | string | no |
set_chain_enabled
destructive
Activate or deactivate a chain. When disabled, scheduled fires are skipped, event triggers do not match, and manual runs are still allowed (so users can test before re-enabling). Equivalent to the on/off switch on the chain detail page.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
enabled | boolean | yes |
set_chain_step_retry
destructive
Configure retry policy on a chain step. Transient failures (rate limits, 5xx, agent timeouts) are retried with exponential backoff before the step is recorded as failed. Set max_attempts: 1 (or pass null) to disable retries. Capped at 5 attempts and 30s backoff per attempt.
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
position | number | yes | 1-based step position |
retry | object | no | |
continue_on_failure | boolean | no |
set_chain_max_concurrency
destructive
Set how many runs of this chain can be in flight at once. Default 1 — schedule fires that arrive while a previous run is still going are silently dropped. Set higher for chains that are genuinely safe to run in parallel (e.g. per-lead reply triage). Set 0 to disable the lock entirely (advanced).
| Parameter | Type | Required | Description |
|---|---|---|---|
chain_id | string | yes | |
max_concurrent_runs | number | yes |
diagnose_chain_run
action
Self-debug a failed or low-quality chain run. Returns a structured diagnosis: which step failed, the error, the resolved prompt + actual output, and a list of suggested fixes (add retry, edit prompt, gate with a condition, swap agent). Use this when a user asks “why did my chain fail?” — the response gives Command Center the context to either explain the failure or apply a fix via set_chain_step_retry / update_chain_step / set_chain_step_condition.
| Parameter | Type | Required | Description |
|---|---|---|---|
run_id | string | yes | agent_chain_runs.id |
Triggers
Event-driven automation triggers (events, schedules, keywords, thresholds)
list_triggers
read-only
List all automation triggers for this workspace. Triggers fire agents automatically based on events, schedules, keywords, or thresholds.
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_id | string | no |
create_trigger
action
Create a new automation trigger. Types:
- event: fires on system events (lead_replied, meeting_booked, etc.)
- schedule: fires on cron schedule
- keyword: fires when keyword detected in message
- threshold: fires when metric crosses threshold
- pipeline: fires at pipeline step completion
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_id | string | yes | Agent to invoke when trigger fires |
name | string | yes | Trigger name |
trigger_type | enum(event \ | schedule \ | webhook \ |
config | object | yes | Trigger configuration (varies by type) |
action_type | enum(invoke_agent \ | send_notification \ | update_record \ |
action_config | object | no | |
cooldown_minutes | number | no | |
max_fires_per_day | number | no |
update_trigger
destructive
Update an existing trigger configuration.
| Parameter | Type | Required | Description |
|---|---|---|---|
trigger_id | string | yes | Trigger ID |
name | string | no | |
config | object | no | |
action_config | object | no | |
enabled | boolean | no | |
cooldown_minutes | number | no | |
max_fires_per_day | number | no |
delete_trigger
destructive
Delete an automation trigger.
| Parameter | Type | Required | Description |
|---|---|---|---|
trigger_id | string | yes | Trigger ID to delete |
get_trigger_log
read-only
View recent trigger execution history. Shows when triggers fired, results, and errors.
| Parameter | Type | Required | Description |
|---|---|---|---|
trigger_id | string | no | |
limit | number | no |
Calendar
Calendar integrations (Calendar, Calendar), booking events, meeting outcomes
list_calendar_integrations
read-only
List connected calendar integrations with sync status, last sync time, and error state. Use setup_calendar to connect a new calendar.
No parameters.
setup_calendar
action
Configure a calendar integration (Calendar or Calendar). Provide API key and booking URL to enable automatic meeting tracking.
| Parameter | Type | Required | Description |
|---|---|---|---|
provider | enum(cal_com \ | calendly \ | google_calendar \ |
api_key | string | no | |
booking_url | string | no | |
event_type_id | string | no | |
duration_minutes | number | no | |
sync_direction | enum(inbound \ | outbound \ | bidirectional) |
sync_calendar
action
Sync calendar events from the configured provider. Pulls new bookings and updates lead statuses.
| Parameter | Type | Required | Description |
|---|---|---|---|
provider | enum(cal_com \ | calendly \ | google_calendar \ |
list_calendar_events
read-only
List calendar events (meetings) with their linked leads.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | enum(scheduled \ | confirmed \ | cancelled \ |
upcoming_only | boolean | no | |
lead_id | string | no | |
limit | number | no |
update_meeting_outcome
destructive
Record meeting outcome after it has occurred.
| Parameter | Type | Required | Description |
|---|---|---|---|
event_id | string | yes | Calendar event ID |
status | enum(completed \ | no_show \ | cancelled) |
notes | string | no | |
rating | number | no |
Calendar Booking
Provider-agnostic check_calendar_availability + book_meeting that any agent can call. Dispatches to Calendar / Calendar via the adapter SDK.
check_calendar_availability
read-only
Returns ISO 8601 start times of bookable slots on a sender’s connected calendar (Calendar or Calendar) for the next N days. Use this BEFORE proposing or booking any specific time.
| Parameter | Type | Required | Description |
|---|---|---|---|
sender_id | string | yes | UUID of the sender whose calendar to check. |
days_ahead | number | yes | How many days ahead to scan. Recommend 7. Max 14. |
time_zone | string | no |
book_meeting
action
Books a meeting on a sender’s connected calendar. Calendar confirms directly. Calendar returns either a confirmed booking (paid Scheduling API plan) or a one-time scheduling link (free plan) — caller should embed the link in the next outbound reply when kind=‘link_only’. Use ONLY a slot returned by check_calendar_availability.
| Parameter | Type | Required | Description |
|---|---|---|---|
sender_id | string | yes | UUID of the sender whose calendar to book. |
start_iso | string | yes | ISO 8601 start time of the meeting. |
attendee_name | string | yes | Lead’s full name. |
attendee_email | string | yes | Lead’s email — required for the calendar invite. |
attendee_phone | string | no | |
attendee_time_zone | string | no | |
attendee_language | enum(de \ | en) | no |
notes | string | no |
get_booking_link
read-only
Returns the public scheduling link to send to a lead so they can self-book. Use this when the lead prefers picking their own time over confirming a specific slot. Prefers the per-sender link (senders.metadata.calendar_link); falls back to the workspace’s connected Calendar / Calendar booking URL — preferring whichever provider the sender is configured for.
| Parameter | Type | Required | Description |
|---|---|---|---|
sender_id | string | yes | UUID of the sender to look up. |
Skills
Reusable agent capabilities (objection handler, meeting scheduler, etc.)
list_skills
read-only
List available skills for agents. Skills are reusable prompt+tool bundles that give agents specific capabilities (e.g., meeting-scheduler, objection-handler, campaign-optimizer).
| Parameter | Type | Required | Description |
|---|---|---|---|
scope | enum(org \ | public \ | builtin) |
tags | string[] | no | |
search | string | no |
get_agent_skills
read-only
Get skills assigned to a specific agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_id | string | yes | Agent ID |
assign_skill
action
Assign a skill to an agent, giving it that capability.
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_id | string | yes | Agent ID |
skill_id | string | yes | Skill ID |
config | object | no |
remove_skill
destructive
Remove a skill from an agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_id | string | yes | Agent ID |
skill_id | string | yes | Skill ID |
add_skill_example
action
Add a training example for a skill. The agent will learn from these examples.
| Parameter | Type | Required | Description |
|---|---|---|---|
skill_slug | string | yes | Which skill to train (e.g. “objection-handler”) |
example | string | yes | The training example (e.g. “When they say price is too high, respond with ROI calculation”) |
create_skill
action
Create a new custom skill for this workspace.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Skill name |
slug | string | yes | URL-safe identifier |
description | string | yes | What this skill does |
system_prompt_extension | string | yes | Instructions appended to agent prompt when skill is active |
required_tools | string[] | no | |
trigger_patterns | string[] | no | |
trigger_events | string[] | no | |
tags | string[] | no | |
is_public | boolean | no |
Background Jobs
Queue and track long-running jobs in the background worker
enqueue_job
action
Queue a long-running job to the background worker. Use for tasks that take >5 minutes: pipeline runs with many companies, deep research on 50+ leads, long agent chains, bulk operations. Returns a job_id for tracking.
| Parameter | Type | Required | Description |
|---|---|---|---|
type | enum(pipeline_run \ | deep_research \ | agent_chain \ |
payload | object | yes | Job-specific parameters. For pipeline_run: { playbook_id, limit }. For deep_research: { company_ids } or { company_names }. For agent_chain: { chain_id, input }. For playbook_optimize: { playbook_id, auto_apply }. For bulk_outreach: { lead_ids, sequence_id }. |
priority | number | no |
get_job_status
read-only
Check the status of a background job by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | yes |
list_jobs
read-only
List recent background jobs (imports, bulk actions, pipeline runs) with their status and progress.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | enum(pending \ | processing \ | done \ |
limit | number | no |
cancel_job
action
Cancel a pending background job. Cannot cancel running jobs.
| Parameter | Type | Required | Description |
|---|---|---|---|
job_id | string | yes |
bulk_agent_run
action
Run a workspace agent on multiple companies in the background. The prompt template supports placeholders: {{company_name}}, {{domain}}, {{industry}}, {{company_id}}, {{location}}, {{employee_count}}. Returns a batch_id for tracking progress. Use get_batch_status to monitor.
| Parameter | Type | Required | Description |
|---|---|---|---|
agent_id | string | yes | Workspace agent ID (get from list_agents) |
prompt_template | string | yes | Message template for the agent. Use {{company_name}}, {{domain}}, etc. |
company_ids | string[] | yes | Company IDs to process |
playbook_id | string | no |
get_batch_status
read-only
Check the status and progress of a pipeline batch (enrichment, agent run, etc.).
| Parameter | Type | Required | Description |
|---|---|---|---|
batch_id | string | yes |
list_active_batches
read-only
List active pipeline batches (running enrichments, agent runs, etc.) for a playbook.
| Parameter | Type | Required | Description |
|---|---|---|---|
playbook_id | string | yes |
Autonomous Missions
Launch, monitor, and approve long-running autonomous missions
create_mission
action
Launch an autonomous mission: a long-running agent that plans and works toward a goal on the background worker, using read-only workspace tools (research, lead/company/pipeline analytics). It CANNOT send, enrol, or book — it pauses and asks for approval, and the platform executes any approved action. Use for open-ended work like “analyse why playbook X underperforms and draft a fix” or “research 20 lookalikes of our converts and propose a segment”. Returns a mission_id; poll with get_mission.
| Parameter | Type | Required | Description |
|---|---|---|---|
goal | string | yes | What the mission should accomplish. Be specific about the deliverable. |
list_missions
read-only
List this workspace’s autonomous missions (newest first) with their status. Filter by status to find ones awaiting approval.
| Parameter | Type | Required | Description |
|---|---|---|---|
status | enum(running \ | waiting_approval \ | done \ |
limit | number | no |
get_mission
read-only
Get a mission’s full state: goal, status, living plan, recent event trace, registered deliverables (artifacts), and — if it is waiting_approval — exactly what it is asking to do so you can decide_mission.
| Parameter | Type | Required | Description |
|---|---|---|---|
mission_id | string | yes | Mission ID from create_mission or list_missions. |
decide_mission
action
Resolve a mission that is waiting_approval: approve, reject, or request edits to what it proposed. Approving an action lets the PLATFORM execute it (e.g. the proposed outbound step) and resumes the mission; reject/edit resumes it with your guidance. Only valid when the mission status is waiting_approval.
| Parameter | Type | Required | Description |
|---|---|---|---|
mission_id | string | yes | |
decision | enum(approve \ | reject \ | edit) |
note | string | no |