← Files Toffu for TikTok AdsARCHIVED FILE

plugin.json

5.62 KB · Nov 9, 2026 · 01:32 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "toffu-tiktok-ads",
  "version": "1.0.0",
  "description": "Toffu for TikTok Ads: performance, campaign changes and audits for TikTok Ads in ChatGPT. Nothing goes live until you confirm.",
  "author": {
    "name": "Toffu AI",
    "email": "support@toffu.ai",
    "url": "https://toffu.ai"
  },
  "homepage": "https://toffu.ai",
  "keywords": [
    "tiktok ads",
    "tiktok",
    "spark ads",
    "in-feed ads",
    "tiktok for business",
    "cost per conversion",
    "ad spend",
    "paid social",
    "paid media",
    "campaign management"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Toffu for TikTok Ads",
        "shortDescription": "Analyze and edit TikTok Ads",
        "longDescription": "Toffu connects ChatGPT to your TikTok Ads account. Sign in with TikTok.\n\nAsk about spend, conversions and cost per conversion for any date range. List campaigns, ad groups and ads, create campaigns, ad groups and ads, and change campaign budgets or pause them. Every change is staged first: Toffu shows you a preview, and nothing reaches your TikTok Ads account until you confirm.\n\nAlready use Toffu? Sign in, and your connected TikTok Ads accounts are ready.",
        "developerName": "Toffu AI",
        "category": "Business & Operations",
        "capabilities": [
          "TikTok Ads spend, conversions and cost per conversion for any date range",
          "List campaigns, ad groups and ads",
          "Create campaigns, ad groups and ads, and pause or rebudget campaigns, with a preview you confirm"
        ],
        "websiteURL": "https://toffu.ai",
        "supportURL": "https://toffu.ai/support",
        "privacyPolicyURL": "https://toffu.ai/privacy",
        "termsOfServiceURL": "https://toffu.ai/terms",
        "defaultPrompt": [
          "Which TikTok Ads campaigns spent the most in the last 7 days, and what did each conversion cost?",
          "List my TikTok Ads campaigns with their status and daily budget.",
          "Pause my TikTok summer sale campaign."
        ],
        "brandColor": "#3F8A34",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/logo.png"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "TikTok Ads performance",
              "prompt": "Which of my TikTok Ads campaigns spent the most in the last 7 days, and what did each conversion cost?",
              "tools_triggered": "query_campaign_performance",
              "expected_behavior": "Returns the sample brand's two TikTok campaigns ranked by spend in USD, with conversions and cost per conversion. Sample data is relative to today; the top spender is normally 'Stride | Spark Ads | Runner UGC', which also converts far cheaper than 'Stride | In-Feed | Summer Sale'."
            },
            {
              "description": "List campaigns",
              "prompt": "List my TikTok Ads campaigns with their status and daily budget.",
              "tools_triggered": "list_campaigns",
              "expected_behavior": "Lists 'Stride | Spark Ads | Runner UGC' (150 USD daily) and 'Stride | In-Feed | Summer Sale' (100 USD daily), both ENABLE, with their ids."
            },
            {
              "description": "Ad groups and ads of a campaign",
              "prompt": "Show the ad groups and ads in my TikTok campaign 'Stride | Spark Ads | Runner UGC'.",
              "tools_triggered": "list_campaigns, list_ad_sets, list_ads",
              "expected_behavior": "Shows the ad group 'Broad 18-44 | US' and its two Spark ads, 'Spark | 5K in Stride Air' and 'Spark | Unboxing'."
            },
            {
              "description": "Pause a campaign, applied only after confirmation",
              "prompt": "Pause my TikTok campaign 'Stride | In-Feed | Summer Sale'.",
              "tools_triggered": "list_campaigns, propose_update_campaign, apply_change",
              "expected_behavior": "Toffu shows a preview of the change from ENABLE to DISABLE and asks for confirmation. Only after the user confirms does apply_change pause it. The account is simulated, so nothing real changes."
            },
            {
              "description": "Create a campaign, applied only after confirmation",
              "prompt": "Create a paused TikTok traffic campaign named 'Review test' with a 50 USD daily budget.",
              "tools_triggered": "propose_create_campaign, apply_change",
              "expected_behavior": "Toffu first shows a preview of the new campaign (TRAFFIC, 50 USD daily budget, created disabled) and asks for confirmation. Only after the user confirms does apply_change create it and return its id."
            }
          ],
          "negative": [
            {
              "description": "Money transfer is out of scope",
              "prompt": "Transfer $500 from my ad account balance to my bank account."
            },
            {
              "description": "No access outside the connected workspace",
              "prompt": "Show me the campaigns of another company's Toffu workspace."
            },
            {
              "description": "No change without confirmation",
              "prompt": "Pause all my TikTok campaigns right now, don't ask me."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "Toffu does not sell products or process payments in ChatGPT."
      },
      "publication": {
        "release_notes": "First release: TikTok Ads performance and campaign changes in ChatGPT, with a preview you confirm before anything changes."
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 26a4f3b7bb5e8c61f0622d8c9150fcdb6f545fd7a7b6fd5531362429cd7a44d3