refactor: annotation presets (L5)

The 41 abilities return Annotations::read(), ::write(idempotent) or
::destructive(idempotent) instead of hand-written arrays (same arrays, same
key order).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
2026-09-26 18:33:14 +02:00
co-authored by Claude Opus 5.5
parent 9ed5d9d2fa
commit e04a5304f7
43 changed files with 133 additions and 41 deletions
+31
View File
@@ -0,0 +1,31 @@
<?php
declare(strict_types=1);
namespace LIT\MCP\Abilities;
/**
* The MCP annotations of an ability (Ability::annotations()), in three presets. "readonly"
* drives the "nur lesen" group switch (ExposurePolicy::disabledByReadonly()) and, with
* "destructive", the Art column of the Tools tab (ruling S47).
*/
final class Annotations
{
/** @return array{readonly: bool, destructive: bool, idempotent: bool} Reads only. */
public static function read(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
}
/** @return array{readonly: bool, destructive: bool, idempotent: bool} Writes, removes or overwrites nothing. */
public static function write(bool $idempotent): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => $idempotent];
}
/** @return array{readonly: bool, destructive: bool, idempotent: bool} Removes or overwrites something. */
public static function destructive(bool $idempotent): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => $idempotent];
}
}
+2 -1
View File
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Core;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Guides\GuideRepository;
use WP_Error;
@@ -61,7 +62,7 @@ final class GuideAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
+2 -1
View File
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Core;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Access;
use WP_Error;
@@ -52,7 +53,7 @@ final class SiteStatusAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Design;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use WP_Error;
@@ -89,7 +90,7 @@ final class DiviDesignSystemAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Integrations\Divi\BlockTree\Block;
use LIT\MCP\Integrations\Divi\BlockTree\NodeSummary;
@@ -55,7 +56,7 @@ final class DiviDeleteAbility extends DiviWriteAbility
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => false];
return Annotations::destructive(false);
}
protected function change(DiviPage $page, array $input, DiviComposition $composition): DiviChange|WP_Error
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Integrations\Divi\BlockTree\AttrMap;
use WP_Error;
@@ -44,7 +45,7 @@ final class DiviDuplicateNodeAbility extends DiviWriteAbility
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
public function isDirect(): bool
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use WP_Error;
@@ -56,7 +57,7 @@ final class DiviInsertAbility extends DiviWriteAbility
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
protected function change(DiviPage $page, array $input, DiviComposition $composition): DiviChange|WP_Error
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use WP_Error;
@@ -46,7 +47,7 @@ final class DiviMoveAbility extends DiviWriteAbility
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
protected function change(DiviPage $page, array $input, DiviComposition $composition): DiviChange|WP_Error
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\JsonMap;
use LIT\MCP\Abilities\Rev;
@@ -89,7 +90,7 @@ final class DiviNodeGetAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Integrations\Divi\BlockTree\NodeIndex;
@@ -116,7 +117,7 @@ final class DiviOutlineAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -6,6 +6,7 @@ namespace LIT\MCP\Integrations\Divi\Pages;
use InvalidArgumentException;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Cursor;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\ToolResult;
@@ -115,7 +116,7 @@ final class DiviReplaceTextAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => false];
return Annotations::destructive(false);
}
public function isDirect(): bool
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Pages;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Integrations\Divi\BlockTree\Block;
use LIT\MCP\Integrations\Divi\Compose\ColumnWidths;
@@ -73,7 +74,7 @@ final class DiviUpdateAbility extends DiviWriteAbility
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
protected function change(DiviPage $page, array $input, DiviComposition $composition): DiviChange|WP_Error
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Divi\Schema;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\JsonMap;
use WP_Error;
@@ -101,7 +102,7 @@ final class DiviCatalogAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\ToolResult;
@@ -81,7 +82,7 @@ final class MediaDeleteAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => false];
return Annotations::destructive(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Limits;
use WP_Error;
@@ -60,7 +61,7 @@ final class MediaDownloadAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
+2 -1
View File
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use WP_Error;
final class MediaGetAbility implements Ability
@@ -56,7 +57,7 @@ final class MediaGetAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use WP_Error;
@@ -61,7 +62,7 @@ final class MediaPreviewAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Cursor;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Integrations\WordPress\PostGuard;
@@ -81,7 +82,7 @@ final class MediaSearchAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\Rollback;
@@ -125,7 +126,7 @@ final class MediaUpdateAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Limits;
use WP_Error;
@@ -69,7 +70,7 @@ final class MediaUploadAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\Media;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use WP_Error;
/**
@@ -61,7 +62,7 @@ final class MediaUploadFromUrlAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Content;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Abilities\ToolResult;
@@ -86,7 +87,7 @@ final class ContentCreateAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Content;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Integrations\WordPress\PostGuard;
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
use WP_Error;
@@ -49,7 +50,7 @@ final class ContentGetAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Content;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Cursor;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Integrations\WordPress\PostGuard;
@@ -100,7 +101,7 @@ final class ContentQueryAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Content;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
use WP_Error;
@@ -59,7 +60,7 @@ final class ContentTypesAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Content;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Abilities\Rollback;
@@ -89,7 +90,7 @@ final class ContentUpdateAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Menus;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\ToolResult;
@@ -64,7 +65,7 @@ final class MenuAssignLocationAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => true];
return Annotations::destructive(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Menus;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\ToolResult;
@@ -57,7 +58,7 @@ final class MenuCreateAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Menus;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use WP_Error;
@@ -64,7 +65,7 @@ final class MenuGetAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Menus;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use WP_Error;
@@ -49,7 +50,7 @@ final class MenuListAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Menus;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\Rev;
@@ -124,7 +125,7 @@ final class MenuSetItemsAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => false];
return Annotations::destructive(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Render;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Integrations\WordPress\PostGuard;
use LIT\MCP\Integrations\WordPress\Schema\ContentSchema;
use WP_Error;
@@ -70,7 +71,7 @@ final class PageRenderSummaryAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Revisions;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Abilities\ToolResult;
@@ -74,7 +75,7 @@ final class RevisionRestoreAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => true];
return Annotations::destructive(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Revisions;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Cursor;
use LIT\MCP\Integrations\WordPress\Content\PostPresenter;
use LIT\MCP\Integrations\WordPress\PostGuard;
@@ -88,7 +89,7 @@ final class RevisionsListAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Settings;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use WP_Error;
@@ -65,7 +66,7 @@ final class WpSettingsGetAbility implements Ability
public function annotations(): array
{
return ['readonly' => true, 'destructive' => false, 'idempotent' => true];
return Annotations::read();
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Settings;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\JsonMap;
@@ -71,7 +72,7 @@ final class WpSettingsUpdateAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Status;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\ToolResult;
use LIT\MCP\ChangeLog\ChangeLog;
use LIT\MCP\Integrations\WordPress\PostSaveFollowUp;
@@ -62,7 +63,7 @@ final class PostDuplicateAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => false];
return Annotations::write(false);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Status;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Abilities\ToolResult;
@@ -59,7 +60,7 @@ final class PostPublishAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Status;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\FollowUp;
use LIT\MCP\Abilities\Rev;
@@ -94,7 +95,7 @@ final class PostReplaceWithCopyAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => false];
return Annotations::destructive(false);
}
public function isDirect(): bool
@@ -7,6 +7,7 @@ namespace LIT\MCP\Integrations\WordPress\Status;
use DateTimeImmutable;
use DateTimeZone;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\ToolResult;
use LIT\MCP\ChangeLog\ChangeLog;
@@ -71,7 +72,7 @@ final class PostScheduleAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Status;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Abilities\ToolResult;
@@ -74,7 +75,7 @@ final class PostTrashAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => true, 'idempotent' => true];
return Annotations::destructive(true);
}
public function isDirect(): bool
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace LIT\MCP\Integrations\WordPress\Status;
use LIT\MCP\Abilities\Ability;
use LIT\MCP\Abilities\Annotations;
use LIT\MCP\Abilities\Errors;
use LIT\MCP\Abilities\Rev;
use LIT\MCP\Abilities\ToolResult;
@@ -59,7 +60,7 @@ final class PostUnpublishAbility implements Ability
public function annotations(): array
{
return ['readonly' => false, 'destructive' => false, 'idempotent' => true];
return Annotations::write(true);
}
public function isDirect(): bool