# RegisterMcpPrompt API Documentation
The RegisterMcpPrompt API allows you to register and manage prompts that structure AI model interactions in WordPress.
## Overview
Prompts are predefined templates for AI model interactions. They are registered using the `RegisterMcpPrompt` class and provide structured ways to interact with AI models.
## Basic Usage
```php
use Automattic\WordpressMcp\Core\RegisterMcpPrompt;
// Register a simple prompt
new RegisterMcpPrompt(
[
'name' => 'my-prompt',
'description' => 'A custom prompt for AI interaction',
'arguments' => [
[
'name' => 'param1',
'description' => 'First parameter',
'required' => true,
],
],
],
[
[
'role' => 'user',
'content' => [
'type' => 'text',
'text' => 'Process this data: {{param1}}',
],
],
]
);
```
## Prompt Registration Parameters
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ----------------------------------- |
| name | string | Yes | Unique identifier for the prompt |
| description | string | Yes | Description of the prompt's purpose |
| arguments | array | No | Array of argument definitions |
| messages | array | Yes | Array of message templates |
## Argument Structure
Each argument in the `arguments` array should have:
| Parameter | Type | Required | Description |
| ----------- | ------ | -------- | ------------------------------------------------- |
| name | string | Yes | Name of the argument |
| description | string | No | Description of the argument |
| required | bool | No | Whether the argument is required (default: false) |
| type | string | No | Type of the argument (default: string) |
## Message Structure
Each message in the `messages` array should have:
| Parameter | Type | Required | Description |
| ------------ | ------ | -------- | ------------------------------------------- |
| role | string | Yes | Role of the message ('user' or 'assistant') |
| content | array | Yes | Content of the message |
| content.type | string | Yes | Type of content ('text') |
| content.text | string | Yes | The message text |
## Example: Sales Analysis Prompt
```php
use Automattic\WordpressMcp\Core\RegisterMcpPrompt;
class McpAnalyzeSales {
public function __construct() {
add_action('wordpress_mcp_init', [$this, 'register_prompt']);
}
public function register_prompt() {
new RegisterMcpPrompt(
[
'name' => 'analyze-sales',
'description' => 'Analyze WooCommerce sales data',
'arguments' => [
[
'name' => 'time_span',
'description' => 'The time period to analyze (e.g., last_7_days, last_30_days, last_month, last_quarter, last_year)',
'required' => true,
'type' => 'string',
],
],
],
$this->messages()
);
}
public function messages() {
return [
[
'role' => 'user',
'content' => [
'type' => 'text',
'text' => 'Analyze the WooCommerce sales data for the time period: {{time_span}}. Include total sales, average order value, top-selling products, and sales trends.',
],
],
];
}
}
```
## Best Practices
1. **Unique Names**: Ensure prompt names are unique across all registered prompts
2. **Clear Descriptions**: Provide detailed descriptions of the prompt's purpose
3. **Well-Defined Arguments**: Clearly define all required and optional arguments
4. **Structured Messages**: Use consistent message structure and formatting
5. **Error Handling**: Include error handling in message templates
6. **Documentation**: Document the prompt's purpose and expected arguments
7. **Testing**: Test prompts with various argument combinations
## Example: Complete Prompt Implementation
```php
use Automattic\WordpressMcp\Core\RegisterMcpPrompt;
class MyCustomPrompt {
public function __construct() {
add_action('wordpress_mcp_init', [$this, 'register_prompt']);
}
public function register_prompt() {
new RegisterMcpPrompt(
[
'name' => 'my-custom-prompt',
'description' => 'A custom prompt for AI interaction',
'arguments' => [
[
'name' => 'input_data',
'description' => 'The data to process',
'required' => true,
'type' => 'string',
],
[
'name' => 'format',
'description' => 'The desired output format',
'required' => false,
'type' => 'string',
],
],
],
$this->messages()
);
}
private function messages() {
return [
[
'role' => 'user',
'content' => [
'type' => 'text',
'text' => 'Process the following data: {{input_data}}. Format the output as {{format|default:"JSON"}}. If there are any issues, please explain them clearly.',
],
],
];
}
}
```