* Expose workspace webhooks through the API and MCP. The same create/update/test/rotate/replay/delete flow now lives in Actions so the web UI, REST API, and MCP tools stay in lockstep. * Keep webhook validation local to each web, API, and MCP entry point. * Extract MCP webhook rules into request classes and close remaining API/MCP review gaps. * Tighten webhook updates to a field whitelist and reset failures only on re-enable. * Treat a mismatched webhook replay as not found and mark secret rotation destructive.
124 lines
4.1 KiB
PHP
124 lines
4.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Mcp\Servers;
|
|
|
|
use App\Mcp\Tools\ApiKey\CreateApiKeyTool;
|
|
use App\Mcp\Tools\ApiKey\DeleteApiKeyTool;
|
|
use App\Mcp\Tools\ApiKey\ListApiKeysTool;
|
|
use App\Mcp\Tools\Asset\AttachExistingAssetTool;
|
|
use App\Mcp\Tools\Asset\GetAssetTool;
|
|
use App\Mcp\Tools\Asset\ListAssetsTool;
|
|
use App\Mcp\Tools\Label\CreateLabelTool;
|
|
use App\Mcp\Tools\Label\DeleteLabelTool;
|
|
use App\Mcp\Tools\Label\ListLabelsTool;
|
|
use App\Mcp\Tools\Label\UpdateLabelTool;
|
|
use App\Mcp\Tools\Platform\ListContentTypesTool;
|
|
use App\Mcp\Tools\Post\AttachMediaFromUploadTool;
|
|
use App\Mcp\Tools\Post\AttachMediaFromUrlTool;
|
|
use App\Mcp\Tools\Post\CreatePostTool;
|
|
use App\Mcp\Tools\Post\DeletePostTool;
|
|
use App\Mcp\Tools\Post\GetPostMetricsTool;
|
|
use App\Mcp\Tools\Post\GetPostTool;
|
|
use App\Mcp\Tools\Post\ListPostsTool;
|
|
use App\Mcp\Tools\Post\PreviewPostTool;
|
|
use App\Mcp\Tools\Post\PublishPostTool;
|
|
use App\Mcp\Tools\Post\RequestMediaUploadTool;
|
|
use App\Mcp\Tools\Post\UpdatePostTool;
|
|
use App\Mcp\Tools\Signature\CreateSignatureTool;
|
|
use App\Mcp\Tools\Signature\DeleteSignatureTool;
|
|
use App\Mcp\Tools\Signature\ListSignaturesTool;
|
|
use App\Mcp\Tools\Signature\UpdateSignatureTool;
|
|
use App\Mcp\Tools\SocialAccount\ListDiscordChannelsTool;
|
|
use App\Mcp\Tools\SocialAccount\ListPinterestBoardsTool;
|
|
use App\Mcp\Tools\SocialAccount\ListSocialAccountsTool;
|
|
use App\Mcp\Tools\SocialAccount\ToggleSocialAccountTool;
|
|
use App\Mcp\Tools\Webhook\CreateWebhookTool;
|
|
use App\Mcp\Tools\Webhook\DeleteWebhookTool;
|
|
use App\Mcp\Tools\Webhook\GetWebhookTool;
|
|
use App\Mcp\Tools\Webhook\ListWebhookLogsTool;
|
|
use App\Mcp\Tools\Webhook\ListWebhooksTool;
|
|
use App\Mcp\Tools\Webhook\ReplayWebhookLogTool;
|
|
use App\Mcp\Tools\Webhook\RotateWebhookSecretTool;
|
|
use App\Mcp\Tools\Webhook\SendWebhookTestTool;
|
|
use App\Mcp\Tools\Webhook\UpdateWebhookTool;
|
|
use App\Mcp\Tools\Workspace\GetWorkspaceTool;
|
|
use Laravel\Mcp\Server;
|
|
use Laravel\Mcp\Server\Attributes\Icon;
|
|
use Laravel\Mcp\Server\Attributes\Instructions;
|
|
use Laravel\Mcp\Server\Attributes\Name;
|
|
use Laravel\Mcp\Server\Attributes\Version;
|
|
|
|
#[Name('TryPost')]
|
|
#[Version('1.0.0')]
|
|
#[Icon('images/trypost/icon.png', mimeType: 'image/png')]
|
|
#[Instructions('TryPost is a social media scheduling platform. Use this server to manage posts, the Asset Library, signatures, labels, social accounts, workspaces, outgoing webhooks, and API keys.')]
|
|
class TryPostServer extends Server
|
|
{
|
|
public int $defaultPaginationLength = 100;
|
|
|
|
protected array $tools = [
|
|
// Posts
|
|
ListPostsTool::class,
|
|
GetPostTool::class,
|
|
CreatePostTool::class,
|
|
UpdatePostTool::class,
|
|
PublishPostTool::class,
|
|
PreviewPostTool::class,
|
|
DeletePostTool::class,
|
|
AttachMediaFromUrlTool::class,
|
|
RequestMediaUploadTool::class,
|
|
AttachMediaFromUploadTool::class,
|
|
GetPostMetricsTool::class,
|
|
|
|
// Assets
|
|
ListAssetsTool::class,
|
|
GetAssetTool::class,
|
|
AttachExistingAssetTool::class,
|
|
|
|
// Platforms (read-only metadata)
|
|
ListContentTypesTool::class,
|
|
|
|
// Signatures
|
|
ListSignaturesTool::class,
|
|
CreateSignatureTool::class,
|
|
UpdateSignatureTool::class,
|
|
DeleteSignatureTool::class,
|
|
|
|
// Labels
|
|
ListLabelsTool::class,
|
|
CreateLabelTool::class,
|
|
UpdateLabelTool::class,
|
|
DeleteLabelTool::class,
|
|
|
|
// Social Accounts
|
|
ListSocialAccountsTool::class,
|
|
ListPinterestBoardsTool::class,
|
|
ListDiscordChannelsTool::class,
|
|
ToggleSocialAccountTool::class,
|
|
|
|
// Webhooks
|
|
ListWebhooksTool::class,
|
|
GetWebhookTool::class,
|
|
CreateWebhookTool::class,
|
|
UpdateWebhookTool::class,
|
|
DeleteWebhookTool::class,
|
|
SendWebhookTestTool::class,
|
|
RotateWebhookSecretTool::class,
|
|
ListWebhookLogsTool::class,
|
|
ReplayWebhookLogTool::class,
|
|
|
|
// Workspace
|
|
GetWorkspaceTool::class,
|
|
|
|
// API Keys
|
|
ListApiKeysTool::class,
|
|
CreateApiKeyTool::class,
|
|
DeleteApiKeyTool::class,
|
|
];
|
|
|
|
protected array $resources = [];
|
|
|
|
protected array $prompts = [];
|
|
}
|