Contents
1. Pack JSON Schema 2. Required Fields 3. Agent Definitions 4. Testing Guide 5. Submission Process 6. Certification Levels 7. API Reference

1. Pack JSON Schema

Every MAMA pack is defined by a single JSON file. This file describes the pack metadata, agents, integrations, and configuration.

// pack.json
{
  "id": "pack_sales_pipeline_pro",
  "name": "Sales Pipeline Pro",
  "version": "1.0.0",
  "description": "End-to-end sales pipeline automation",
  "category": "Sales",
  "industryTags": ["SaaS", "Agency"],
  "author": "your-handle",
  "agents": [
    {
      "id": "lead_qualifier",
      "name": "Lead Qualifier",
      "model": "claude-haiku",
      "systemPrompt": "You are a lead qualification agent...",
      "tools": ["crm_read", "crm_write"],
      "schedule": "*/15 * * * *"
    }
  ],
  "integrations": ["HubSpot", "Slack"],
  "config": {
    "maxConcurrentAgents": 3,
    "costBudgetUsd": 5.0,
    "retryPolicy": "exponential"
  }
}

2. Required Fields

Field Type Status Description
id string Required Unique pack identifier. Use snake_case with pack_ prefix.
name string Required Human-readable pack name. Max 50 chars.
version string Required Semver version (e.g. "1.0.0").
description string Required What the pack does. 1-3 sentences.
category string Required Primary category (Sales, Finance, Legal, etc.).
industryTags string[] Optional Industry verticals: Real Estate, Healthcare, Legal, Finance, E-commerce, SaaS, Agency.
author string Required Author handle or org name.
agents Agent[] Required Array of agent definitions (see below).
integrations string[] Optional Required third-party integrations.
config object Optional Runtime configuration overrides.
certification string Auto Set during review: "official", "verified", or "community".

3. Agent Definitions

Each agent in the agents array describes a single autonomous worker.

Field Type Description
id string Unique agent ID within the pack.
name string Human-readable agent name.
model string LLM model: "claude-haiku", "claude-sonnet", "claude-opus".
systemPrompt string System prompt defining agent behavior.
tools string[] Tool access list (e.g. "crm_read", "email_send").
schedule string Cron expression for scheduled runs. Omit for on-demand.
maxTokens number Max output tokens per run. Default: 4096.

4. Testing Guide

Local Testing

Use the MAMA CLI to test your pack locally before submission:

# Install the MAMA CLI
npm install -g @oliwoods/mama-cli

# Validate pack schema
mama pack validate ./pack.json

# Run a dry-run (no real API calls)
mama pack test ./pack.json --dry-run

# Run with mock integrations
mama pack test ./pack.json --mock-integrations

# Run a single agent from the pack
mama agent run ./pack.json --agent lead_qualifier --mock

Test Checklist

Tip: Use mama pack lint ./pack.json to catch common issues like missing fields, invalid cron expressions, and overly broad tool access.

5. Submission Process

  1. Build your pack using the Pack Builder or manually create a pack.json.
  2. Test locally using the MAMA CLI.
  3. Submit via the Pack Builder form or POST to /api/marketplace/submit.
  4. Your pack enters the review queue. We review for security, quality, and best practices.
  5. Once approved, your pack appears in the marketplace with a certification badge.

Review typically takes 2-3 business days. You will receive a Slack notification when your pack is approved or if changes are needed.

6. Certification Levels

Badge Level Requirements
MAMA Official Gold Built and maintained by the MAMA team. Full test coverage, SLA-backed.
Verified Silver Community-built, reviewed and approved. Meets security and quality standards.
Community Bronze Community-built, basic validation passed. Use at your own discretion.

7. API Reference

Submit a Pack

POST /api/marketplace/submit
Content-Type: application/json

{
  "name": "My Pack",
  "description": "...",
  "category": "Sales",
  "agents": [...],
  "integrations": [...]
}

// Response
{
  "success": true,
  "submissionId": "sub_abc123",
  "status": "queued"
}

Marketplace Analytics

GET /api/marketplace/analytics

// Response
{
  "totalPacks": 42,
  "installsByPack": { ... },
  "mostPopularCategory": "Sales",
  "trendingPacks": [...]
}

Pack Health

GET /api/marketplace/health

// Response
{
  "packs": [
    {
      "name": "Sales",
      "uptimePercent": 99.7,
      "avgResponseMs": 340,
      "errorRate": 0.3
    }
  ]
}