PluginProbe ʕ •ᴥ•ʔ
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). / trunk
CommerceBird – AI Command Center, ERP Integrations & B2B for WooCommerce (Zoho, Exact Online). vtrunk
3.0.3 3.0.2 3.0.1 trunk 2.2.14 2.2.15 2.2.16 2.2.17 2.2.18 2.2.19 2.3.0 2.3.1 2.3.10 2.3.11 2.3.12 2.3.13 2.3.14 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.7.91 2.7.92 2.7.93 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0
commercebird / vendor / wordpress / mcp-adapter / includes / Domain / Utils / AbilityArgumentNormalizer.php
commercebird / vendor / wordpress / mcp-adapter / includes / Domain / Utils Last commit date
AbilityArgumentNormalizer.php 2 months ago ContentBlockHelper.php 2 months ago McpAnnotationMapper.php 2 months ago McpNameSanitizer.php 2 months ago McpValidator.php 2 months ago SchemaTransformer.php 2 months ago
AbilityArgumentNormalizer.php
46 lines
1 <?php
2 /**
3 * Normalizes ability arguments for MCP protocol compatibility.
4 *
5 * @package McpAdapter
6 */
7
8 declare( strict_types=1 );
9
10 namespace WP\MCP\Domain\Utils;
11
12 /**
13 * Normalizes ability arguments between MCP and WordPress Abilities API.
14 *
15 * MCP clients send {} (empty object) for tools without arguments.
16 * PHP decodes this as [] (empty array).
17 * Abilities without input_schema expect null, not empty array.
18 *
19 * @since 0.5.0
20 */
21 class AbilityArgumentNormalizer {
22
23 /**
24 * Normalize parameters for an ability based on its input schema.
25 *
26 * If the ability has no input schema, empty arrays are converted to null.
27 * This ensures compatibility with abilities that don't accept parameters.
28 *
29 * @param \WP_Ability $ability The ability to normalize parameters for.
30 * @param mixed $parameters The parameters to normalize.
31 *
32 * @return mixed Normalized parameters (null if ability has no schema and params are empty).
33 * @since 0.5.0
34 *
35 */
36 public static function normalize( \WP_Ability $ability, $parameters ) {
37 $input_schema = $ability->get_input_schema();
38
39 if ( empty( $input_schema ) && is_array( $parameters ) && empty( $parameters ) ) {
40 return null;
41 }
42
43 return $parameters;
44 }
45 }
46