<?php

namespace App\Mcp\Servers;

use App\Mcp\Tools\GoogleAds\AnalyzeLandingPage;
use App\Mcp\Tools\TikTok\CreateTikTokAd;
use App\Mcp\Tools\TikTok\CreateTikTokPixel;
use App\Mcp\Tools\TikTok\FinalizeTikTokCampaign;
use App\Mcp\Tools\TikTok\ListAdvertisers;
use App\Mcp\Tools\TikTok\ListIdentities;
use App\Mcp\Tools\TikTok\ListTikTokPosts;
use App\Mcp\Tools\TikTok\OfferCampaignOptions;
use App\Mcp\Tools\TikTok\RetryTikTokAdGroup;
use App\Mcp\Tools\TikTok\SaveTikTokDraft;
use App\Mcp\Tools\TikTok\SelectAdvertiser;
use App\Mcp\Tools\TikTok\SelectIdentity;
use App\Mcp\Tools\TikTok\SelectTikTokImageCreative;
use App\Mcp\Tools\TikTok\SelectTikTokVideoCreative;
use App\Mcp\Tools\TikTok\UpdateCampaignDraft;
use App\Mcp\Tools\TikTok\ValidateTikTokCampaignDraft;
use Laravel\Mcp\Server;
use Laravel\Mcp\Server\Attributes\Instructions;
use Laravel\Mcp\Server\Attributes\Name;
use Laravel\Mcp\Server\Attributes\Version;

#[Name('TikTok Ads MCP')]
#[Version('1.0.0')]
#[Instructions('Manage TikTok Ads for the authenticated user. Always list and select a TikTok advertiser before campaign operations.')]
class TikTokServer extends Server
{
    protected array $tools = [
        ListAdvertisers::class,
        SelectAdvertiser::class,
        ListIdentities::class,
        ListTikTokPosts::class,
        SelectIdentity::class,
        CreateTikTokAd::class,
        CreateTikTokPixel::class,
        RetryTikTokAdGroup::class,
        AnalyzeLandingPage::class,
        OfferCampaignOptions::class,
        SaveTikTokDraft::class,
        SelectTikTokImageCreative::class,
        SelectTikTokVideoCreative::class,
        UpdateCampaignDraft::class,
        ValidateTikTokCampaignDraft::class,
        FinalizeTikTokCampaign::class,
    ];
}
