PluginProbe
ZIP AI – AI Website Builder & AI Agent (Beta) / 0.0.8
ZIP AI – AI Website Builder & AI Agent (Beta) v0.0.8
0.0.10 0.0.9 trunk 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8
zip-ai / lib / php-mcp-schema / src / Server / Tools / DTO / ListToolsRequest.php

ListToolsRequest.php in ZIP AI – AI Website Builder & AI Agent (Beta) 0.0.8, at lib/php-mcp-schema/src/Server/Tools/DTO/ListToolsRequest.php

96 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WP\McpSchema\Server\Tools\DTO;
6
7 use WP\McpSchema\Common\Protocol\DTO\PaginatedRequest;
8 use WP\McpSchema\Common\Protocol\DTO\PaginatedRequestParams;
9 use WP\McpSchema\Common\Protocol\Union\ClientRequestInterface;
10 use WP\McpSchema\Common\Traits\ValidatesRequiredFields;
11
12 /**
13 * Sent from the client to request a list of tools the server has.
14 *
15 * Note: This class is structurally identical to PaginatedRequest.
16 * It exists as a separate type for semantic distinction per MCP specification.
17 *
18 * @since 2024-11-05
19 * @last-updated 2025-11-25 (modified property: params)
20 *
21 * @mcp-domain Server
22 * @mcp-subdomain Tools
23 * @mcp-version 2025-11-25
24 * @see PaginatedRequest
25 */
26 class ListToolsRequest extends PaginatedRequest implements ClientRequestInterface
27 {
28 use ValidatesRequiredFields;
29
30 public const METHOD = 'tools/list';
31
32 public const DISCRIMINATOR_FIELD = 'method';
33 public const DISCRIMINATOR_VALUE = 'tools/list';
34
35 /**
36 * @param '2.0' $jsonrpc @since 2025-11-25
37 * @param string|number $id @since 2025-11-25
38 * @param \WP\McpSchema\Common\Protocol\DTO\PaginatedRequestParams|null $params @since 2024-11-05
39 */
40 public function __construct(
41 string $jsonrpc,
42 $id,
43 ?PaginatedRequestParams $params = null
44 ) {
45 parent::__construct($jsonrpc, $id, self::METHOD, $params);
46 }
47
48 /**
49 * Creates an instance from an array.
50 *
51 * @param array{
52 * params?: array<string, mixed>|\WP\McpSchema\Common\Protocol\DTO\PaginatedRequestParams|null,
53 * jsonrpc: '2.0',
54 * id: string|number,
55 * method: 'tools/list'
56 * } $data
57 * @phpstan-param array<string, mixed> $data
58 * @return self
59 */
60 public static function fromArray(array $data): self
61 {
62 self::assertRequired($data, ['jsonrpc', 'id']);
63
64 /** @var '2.0' $jsonrpc */
65 $jsonrpc = self::asString($data['jsonrpc']);
66
67 /** @var string|number $id */
68 $id = self::asStringOrNumber($data['id']);
69
70 /** @var \WP\McpSchema\Common\Protocol\DTO\PaginatedRequestParams|null $params */
71 $params = isset($data['params'])
72 ? (is_array($data['params'])
73 ? PaginatedRequestParams::fromArray(self::asArray($data['params']))
74 : $data['params'])
75 : null;
76
77 return new self(
78 $jsonrpc,
79 $id,
80 $params
81 );
82 }
83
84 /**
85 * Converts the instance to an array.
86 *
87 * @return array<string, mixed>
88 */
89 public function toArray(): array
90 {
91 $result = parent::toArray();
92
93 return $result;
94 }
95 }
96