NexityNetwork

mission-control

Monitor and manage AI agent squads via Mission Control dashboard. Send heartbeats, log activities, update tasks, track metrics, manage leads, and drop content.

NexityNetwork 0 1 Updated 3mo ago

Resources

21
GitHub

Install

npx skillscat add nexitynetwork/ultron

Install via the SkillsCat registry.

SKILL.md

Mission Control Integration

Your Mission Control dashboard tracks agent status, activities, tasks, metrics, and actions in real-time.

Environment Setup

Every request requires two auth mechanisms:

  1. x-webhook-secret header — shared secret for server auth
  2. workspace_code in request body — identifies which user this agent belongs to

Set your environment in OpenClaw config:

export MISSION_CONTROL_URL="https://your-ultron.vercel.app"
export WEBHOOK_SECRET="your-webhook-secret"

Or in ~/.openclaw/openclaw.json:

{
  "skills": {
    "mission-control": {
      "env": {
        "MISSION_CONTROL_URL": "https://your-ultron.vercel.app",
        "WEBHOOK_SECRET": "your-webhook-secret"
      }
    }
  }
}

API Endpoints

All endpoints are POST requests to $MISSION_CONTROL_URL/api/mc/*.

All requests must include:

  • Header: x-webhook-secret: $WEBHOOK_SECRET
  • Header: Content-Type: application/json
  • Body field: workspace_code (your workspace identifier)

1. Heartbeat (Agent Status)

Send heartbeat to show agent is alive:

curl -X POST "$MISSION_CONTROL_URL/api/mc/heartbeat" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "name": "Sentinel",
    "status": "active",
    "currentTask": "Building landing page"
  }'
Field Required Description
name Yes Agent name (must match an agent in the dashboard)
status Yes active, idle, sleeping
currentTask No What the agent is currently working on

2. Log Activity

Record what an agent is doing in the activity feed:

curl -X POST "$MISSION_CONTROL_URL/api/mc/activity" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "agent": "Sentinel",
    "action": "Deployed PR #42 to production",
    "detail": "Updated hero section with new copy"
  }'
Field Required Description
agent Yes Agent name (string)
action Yes Description of the action taken (string)
detail No Additional context (string)

Both agent and action are required or the call will fail.


3. Create Task

Add a task to the kanban board:

curl -X POST "$MISSION_CONTROL_URL/api/mc/task-create" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "title": "Implement feature X",
    "description": "Details about the feature",
    "status": "inbox",
    "assignee": "Sentinel",
    "priority": "P1"
  }'
Field Required Description
title Yes Task title
status Yes inbox, in_progress, review, done, blocked
assignee Yes Agent name or "owner"
priority Yes P0 (critical), P1 (normal), P2 (low)
description No Task details

WARNING: status must be exactly one of: inbox, in_progress, review, done, blocked. NOT "pending".
WARNING: priority must be exactly one of: P0, P1, P2. NOT "low"/"medium"/"high".


4. Update Task Status

Move a task through the workflow:

curl -X POST "$MISSION_CONTROL_URL/api/mc/task-update" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "title": "Implement feature X",
    "status": "in_progress"
  }'
Field Required Description
title Yes Exact task title to match (case-sensitive)
status Yes inbox, in_progress, review, done, blocked
assignee No Reassign to a different agent

Gotcha: Use in_progress (underscore), NOT in-progress (hyphen).


5. Get Tasks

Fetch tasks assigned to you:

curl -X POST "$MISSION_CONTROL_URL/api/mc/tasks" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "assignee": "Sentinel"
  }'
Field Required Description
assignee No Filter by agent name or "owner"
status No inbox, in_progress, review, done, blocked

Returns: { ok: true, tasks: [...] }
Omit status to get all tasks for your agent regardless of status.


6. Log Action (with prediction tracking)

Record agent actions with predictions and verification:

curl -X POST "$MISSION_CONTROL_URL/api/mc/actions" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "agent": "Specter",
    "action": "Sent 15 personalized outreach emails",
    "category": "outreach",
    "prediction": "60% open rate expected",
    "status": "pending"
  }'
Field Required Description
agent Yes Agent name
action Yes What was done
category Yes outreach, content, code, research, other
prediction No Expected outcome
status No pending, success, failure, partial, unknown (default: pending)
outcome No Actual result

All three of agent, action, and category are required or the call will fail.

Returns { ok: true, id: "uuid" } — save the id to update the action later.


7. Memory (Store & Search)

Store and retrieve long-term memories across runs using semantic search.

Add a memory:

curl -X POST "$MISSION_CONTROL_URL/api/mc/memory" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "action": "add",
    "agent": "Cortex",
    "text": "Competitor X launched new pricing tier at $29/mo, undercutting our $39 plan",
    "tags": ["competitor", "pricing"]
  }'
Field Required Description
action Yes Must be "add"
agent Yes Your agent name
text Yes The memory content (must be meaningful, non-empty)
tags No Array of category tags, e.g. ["research", "competitor"]

All three of action, agent, and text are required for adding a memory.

Search memories:

curl -X POST "$MISSION_CONTROL_URL/api/mc/memory" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "action": "search",
    "query": "competitor pricing",
    "limit": 5
  }'
Field Required Description
action Yes Must be "search"
query Yes Semantic search text
limit No Max results (default 10)

Get recent memories:

curl -X POST "$MISSION_CONTROL_URL/api/mc/memory" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "action": "recent",
    "agent": "Cortex",
    "limit": 10
  }'

8. Log Metric

Track numerical metrics (set or increment):

# Set a value
curl -X POST "$MISSION_CONTROL_URL/api/mc/metric" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "key": "emails_sent",
    "value": 147
  }'

# Increment a value
curl -X POST "$MISSION_CONTROL_URL/api/mc/metric" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "key": "emails_sent",
    "increment": 15
  }'
Field Required Description
key Yes Metric key (e.g., emails_sent, tweets_posted, revenue)
value One of Set the metric to this value
increment One of Increment the metric by this amount

9. Create Lead

Add a lead to the CRM:

curl -X POST "$MISSION_CONTROL_URL/api/mc/leads" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "name": "John Smith",
    "email": "john@acme.com",
    "company": "Acme Corp",
    "source": "linkedin"
  }'
Field Required Description
name Yes Lead name
source Yes Where the lead came from
email No Lead email
company No Company name
notes No Additional details

10. Content Drop

Drop content assets for review:

curl -X POST "$MISSION_CONTROL_URL/api/mc/content-drop" \
  -H "Content-Type: application/json" \
  -H "x-webhook-secret: $WEBHOOK_SECRET" \
  -d '{
    "workspace_code": "YOUR_WORKSPACE",
    "title": "Product Launch Tweet Thread",
    "description": "5-tweet thread about new feature release",
    "category": "twitter_thread",
    "createdBy": "Pulse"
  }'
Field Required Description
title Yes Content title
description Yes Full content body
category Yes tweet, twitter_thread, linkedin_post, blog_post, newsletter, instagram
createdBy Yes Agent that created it

Agent Behavior Rules

Every agent MUST follow this lifecycle on every run:

1. Send heartbeat on start

POST /api/mc/heartbeat
{"workspace_code": "...", "name": "YourName", "status": "active", "currentTask": "Starting work"}

2. Check for assigned tasks

POST /api/mc/tasks
{"workspace_code": "...", "assignee": "YourName"}

3. Log activity (at least one entry per run)

POST /api/mc/activity
{"workspace_code": "...", "agent": "YourName", "action": "What you did"}

4. Log actions with predictions

POST /api/mc/actions
{"workspace_code": "...", "agent": "YourName", "action": "What you did", "category": "research", "prediction": "Expected outcome"}

5. Update task status when working on a task

POST /api/mc/task-update
{"workspace_code": "...", "title": "Exact task title", "status": "in_progress"}

6. Store important findings in memory

POST /api/mc/memory
{"workspace_code": "...", "action": "add", "agent": "YourName", "text": "What you learned", "tags": ["topic"]}

7. Send heartbeat when done

POST /api/mc/heartbeat
{"workspace_code": "...", "name": "YourName", "status": "sleeping"}

CRITICAL REMINDERS

  • Every request body MUST include workspace_code
  • Activity: agent and action are REQUIRED fields
  • Actions: agent, action, and category are ALL REQUIRED
  • Memory add: action ("add"), agent, and text are ALL REQUIRED
  • Task status: must be inbox, in_progress, review, done, or blocked — NOT "pending"
  • Task priority: must be P0, P1, or P2 — NOT "low"/"medium"/"high"/"urgent"
  • Use in_progress (underscore), NOT in-progress (hyphen)

Agent Names

Default squad (customize in your dashboard settings):

  • Sentinel — Code & Infrastructure
  • Cortex — Research & Intelligence
  • Specter — Outreach & Growth
  • Striker — Sales & Deals
  • Pulse — Social & Content

Troubleshooting

Agent not showing on dashboard?

  • Check heartbeat is being sent with correct x-webhook-secret header
  • Verify MISSION_CONTROL_URL is correct
  • Ensure workspace_code maps to a valid user profile

Tasks not updating?

  • Use in_progress not in-progress
  • Ensure task title matches exactly (case-sensitive)
  • Status must be: inbox, in_progress, review, done, blocked
  • Check API response for errors

Getting 401 errors?

  • Verify WEBHOOK_SECRET matches the server's WEBHOOK_SECRET env var
  • Verify workspace_code exists in the profiles table

Activity not showing up?

  • Both agent and action fields are required
  • Check the API response — { ok: true } means it worked

Actions failing?

  • category is required — must be one of: outreach, content, code, research, other
  • agent and action are also required