Agent Skills: FeedMob Campaign Creator

|

UncategorizedID: feed-mob/agent-skills/feedmob-campaign-creator

Install this agent skill to your local

pnpm dlx add-skill https://github.com/feed-mob/agent-skills/tree/HEAD/skills/feedmob-campaign-creator

Skill Files

Browse the full folder contents for feedmob-campaign-creator.

Download Skill

Loading file tree…

skills/feedmob-campaign-creator/SKILL.md

Skill Metadata

Name
feedmob-campaign-creator
Description
|

FeedMob Campaign Creator

Create FeedMob campaigns through a guided 5-step workflow that ensures correct configuration and naming conventions.

Overview

This skill orchestrates the complete campaign creation process:

User Request
    ↓
1. Campaign Naming (auto-invoke feedmob-campaign-naming skill)
    ↓
2. Get Client Data (client_id, client_uuid)
    ↓
3. Get App Data (app_info_id)
    ↓
4. Preview Campaign (validate before creation)
    ↓
5. Create Campaign (if user confirms)
    ↓
Campaign Created ✅

Quick Start

Simplest case:

User: "Create a campaign for Kraken iOS in US, partner Jampp pays on install, integrated via AppsFlyer MMP"

Steps:
1. Auto-invoke feedmob-campaign-naming skill
2. Call get_client with client_name="Kraken"
3. Call get_apps with client_id from step 2
4. Call preview_campaign with all data
5. Show preview, ask user to confirm
6. Call create_campaign if confirmed

Workflow Steps

Step 1: Campaign Naming

Automatically invoke feedmob-campaign-naming skill to generate standardized campaign name.

Required information to gather:

  • Client name
  • Platform (iOS, Android, Web, CTV)
  • Geo (US, UK, JP, etc.)
  • Partner name
  • Payment model (CPI, CPA, CPS, etc.)
  • Integration type (Direct vs MMP)
  • Paid action type (install, purchase, signup, etc.)

Display generated name to user for confirmation. User can request regeneration if needed.

Step 2: Retrieve Client Data

Call MCP tool to get client information:

mcp__feedmob-reporting__get_clients
Parameters:
  - client_name: string (required)

Extract these 2 values from response:

  • client_id (number) - Required for Steps 3, 4, 5
  • client_uuid (string) - Required for Steps 4, 5

Error handling: If client not found, ask user to verify client name.

Step 3: Retrieve App Data

Call MCP tool to get app information:

mcp__feedmob-reporting__get_apps
Parameters:
  - client_id: number (required) - from Step 2

Display available apps to user in a table format:

| App Name | Platform | App Info ID | |----------|----------|-------------| | Kraken iOS App | iOS | 456 | | Kraken Android App | Android | 789 |

Selection logic:

  • If only one app matches the platform → auto-select
  • If multiple apps match → ask user to select

Extract these 2 values from selected app:

  • app_info_id (number) - Required for Steps 4, 5
  • os (string) - Platform value (iOS/Android/Web/CTV) - Required for Steps 4, 5

Step 4: Preview Campaign

Before previewing, ask user for the agency parameter:

Is this an agency campaign?
- true (Agency campaign - MMP integration, name has "_Agency" suffix)
- false (Direct campaign - Direct integration, no "_Agency" suffix)

Important: Verify the campaign name from Step 1 matches the agency selection:

  • If agency=true: Campaign name must end with _Agency
  • If agency=false: Campaign name should NOT have _Agency suffix

Wait for user to provide this value.

Call MCP tool to preview campaign configuration.

CRITICAL: All 6 parameters are REQUIRED for preview_campaign to work:

mcp__feedmob-reporting__preview_campaign
Parameters (ALL REQUIRED):
  1. campaign_name: string - from Step 1 (e.g., "TextNow_iOS_UK_CPA_Jampp_Agency")
  2. client_id: number - from Step 2 get_clients response (e.g., 86)
  3. client_uuid: string - from Step 2 get_clients response (e.g., "feb2e0857d9f4f8681033abeb79b212e")
  4. app_info_id: number - from Step 3 get_apps response (e.g., 463)
  5. os: string - MUST be one of: "iOS", "Android", "Web", "CTV"
  6. agency: boolean - true (MMP integration, name has "_Agency"), false (Direct integration, no "_Agency")

Parameter Checklist - Verify ALL 6 before calling:

  • ✅ campaign_name: string from Step 1
  • ✅ client_id: number from Step 2
  • ✅ client_uuid: string from Step 2
  • ✅ app_info_id: number from Step 3
  • ✅ os: string (iOS/Android/Web/CTV)
  • ✅ agency: boolean (true/false) - from user input (true=MMP/Agency, false=Direct)

Example call:

mcp__feedmob-reporting__preview_campaign(
  campaign_name="TextNow_iOS_UK_CPA_Jampp_Agency",
  client_id=86,
  client_uuid="feb2e0857d9f4f8681033abeb79b212e",
  app_info_id=463,
  os="iOS",
  agency=true
)

If preview succeeds: Display the preview data returned by the API.

If preview fails: Display manual preview using collected data:

Campaign Preview:
├─ Campaign Name: [campaign_name from Step 1]
├─ Client: [client_name] (ID: [client_id])
├─ Client UUID: [client_uuid]
├─ App: [app_name] (App Info ID: [app_info_id])
├─ Platform: [os]
├─ Agency: [agency] ([integration type: "MMP Integration" if true, "Direct Integration" if false])
└─ Status: Ready to create

Proceed to create campaign? (yes/no)

Wait for user confirmation before proceeding to Step 5.

Step 5: Create Campaign

If user confirms, call MCP tool to create campaign.

CRITICAL: All 6 parameters are REQUIRED for create_campaign to work:

mcp__feedmob-reporting__create_campaign
Parameters (ALL REQUIRED):
  1. campaign_name: string - from Step 1 (e.g., "TextNow_iOS_UK_CPA_Jampp_Agency")
  2. client_id: number - from Step 2 get_clients response (e.g., 86)
  3. client_uuid: string - from Step 2 get_clients response (e.g., "feb2e0857d9f4f8681033abeb79b212e")
  4. app_info_id: number - from Step 3 get_apps response (e.g., 463)
  5. os: string - MUST be one of: "iOS", "Android", "Web", "CTV"
  6. agency: boolean - true (MMP integration, name has "_Agency"), false (Direct integration, no "_Agency")

Parameter Checklist - Verify ALL 6 before calling:

  • ✅ campaign_name: string from Step 1
  • ✅ client_id: number from Step 2
  • ✅ client_uuid: string from Step 2
  • ✅ app_info_id: number from Step 3
  • ✅ os: string (iOS/Android/Web/CTV)
  • ✅ agency: boolean (true/false) - from user input (true=MMP/Agency, false=Direct) in Step 4

Example call:

mcp__feedmob-reporting__create_campaign(
  campaign_name="TextNow_iOS_UK_CPA_Jampp_Agency",
  client_id=86,
  client_uuid="feb2e0857d9f4f8681033abeb79b212e",
  app_info_id=463,
  os="iOS",
  agency=true
)

Display success message:

✅ Campaign created successfully!
Campaign ID: 4845
Campaign UUID: 6fbed37183cd494e96baaec9999677d9
Campaign Name: TextNow_iOS_UK_CPA_Jampp_Agency
Integration Type: MMP Integration (Agency=true)

Next steps:
- Generate tracking links
- Set up attribution
- Configure partner integration

MCP Tool Reference

All tools use prefix: mcp__feedmob-reporting__*

| Tool | Parameters (ALL REQUIRED) | Returns | |------|-----------|---------| | get_clients | client_name (string) | client_id, client_uuid, metadata | | get_apps | client_id (number) | Array of apps with app_info_id, app_name, os | | preview_campaign | campaign_name (string), client_id (number), client_uuid (string), app_info_id (number), os (string), agency (boolean) | Preview object with validation | | create_campaign | campaign_name (string), client_id (number), client_uuid (string), app_info_id (number), os (string), agency (boolean) | campaign_id, campaign_uuid, created object |

Error Handling

| Error | Solution | |-------|----------| | Client not found | Ask user to verify client name, suggest similar clients if available | | No apps found | Verify client has apps configured, check platform spelling | | Multiple apps match | Display list and ask user to select | | Preview validation fails | Display errors, ask user for corrections | | Creation fails | Display error message, suggest troubleshooting steps |

Complete Example

User Request:

"Create a campaign for Kraken iOS in US, partner Jampp pays on install, integrated via AppsFlyer MMP"

Execution:

Step 1: Generate Campaign Name

  • Auto-invoke feedmob-campaign-naming skill
  • Input: Client=Kraken, Platform=iOS, Geo=US, Partner=Jampp, PaymentModel=CPI, Integration=MMP (agency=true)
  • Output: Kraken_iOS_US_CPI_Jampp_Agency (add "_Agency" since agency=true/MMP integration)
  • Display: "Generated campaign name: Kraken_iOS_US_CPI_Jampp_Agency"

Step 2: Get Client Data

Call: mcp__feedmob-reporting__get_client(client_name="Kraken")
Response: {client_id: 123, client_uuid: "abc-def-ghi"}
Display: "Found client: Kraken (ID: 123)"

Step 3: Get App Data

Call: mcp__feedmob-reporting__get_apps(client_id=123)
Response: [{app_info_id: 456, app_name: "Kraken iOS App", platform: "iOS"}]
Display: "Selected app: Kraken iOS App (ID: 456)"

Step 4: Preview Campaign

First, ask user for agency parameter:

Is this an agency campaign?
- true (Agency campaign - MMP integration, name has "_Agency" suffix)
- false (Direct campaign - Direct integration, no "_Agency" suffix)

Assuming user selects: true (MMP integration)

Try: mcp__feedmob-reporting__preview_campaign(
  campaign_name="Kraken_iOS_US_CPI_Jampp_Agency",
  client_id=123,
  client_uuid="abc-def-ghi",
  app_info_id=456,
  os="iOS",
  agency=true
)

If successful, display API preview.

If fails, display manual preview:

Campaign Preview:
├─ Campaign Name: Kraken_iOS_US_CPI_Jampp_Agency
├─ Client: Kraken (ID: 123)
├─ Client UUID: abc-def-ghi
├─ App: Kraken iOS App (App Info ID: 456)
├─ Platform: iOS
├─ Agency: true (MMP Integration)
└─ Status: Ready to create

Proceed to create campaign? (yes/no)

Step 5: Create Campaign (if user confirms)

Call: mcp__feedmob-reporting__create_campaign(
  campaign_name="Kraken_iOS_US_CPI_Jampp_Agency",
  client_id=123,
  client_uuid="abc-def-ghi",
  app_info_id=456,
  os="iOS",
  agency=true
)

Response: {campaign_id: 789}

Display:
✅ Campaign created successfully!
Campaign ID: 789

Data Display Guidelines

Client Information:

Client: [Name] (ID: [client_id])
UUID: [client_uuid]

App Selection:

| App Name | Platform | App Info ID |
|----------|----------|-------------|
| App 1    | iOS      | 123         |
| App 2    | Android  | 456         |

Campaign Preview:

Campaign Preview:
├─ Name: [campaign_name]
├─ Client: [client_name] (ID: [client_id])
├─ App: [app_name] (ID: [app_info_id])
├─ Platform: [platform]
└─ Payment Model: [payment_model]

Anti-Hallucination Measures

  1. Always display raw tool responses before processing
  2. Explicitly show which fields are extracted from responses
  3. Ask user to verify data at each critical step
  4. Show preview before final creation
  5. Never assume values - always retrieve from MCP tools

Reference Files

For detailed information, see:

  • references/mcp_tools.md - Complete MCP tool API documentation
  • references/workflow-guide.md - Step-by-step workflow details
  • references/campaign-schema.md - Campaign data structure reference
FeedMob Campaign Creator Skill | Agent Skills