-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsettings.schema.json
More file actions
129 lines (129 loc) · 5.55 KB
/
settings.schema.json
File metadata and controls
129 lines (129 loc) · 5.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://mainwp.com/schemas/mcp-settings.json",
"title": "MainWP MCP Server Settings",
"description": "Configuration file for MainWP MCP Server. All fields are optional. Environment variables take precedence over file settings.",
"type": "object",
"additionalProperties": false,
"properties": {
"_comment": {
"type": "string",
"description": "Optional comment field for documentation purposes. Ignored by the server."
},
"dashboardUrl": {
"type": "string",
"format": "uri",
"description": "Base URL of the MainWP Dashboard (e.g., https://dashboard.example.com). Required unless set via MAINWP_URL environment variable."
},
"username": {
"type": "string",
"description": "WordPress username for Basic Auth. Used with appPassword for WordPress Application Password authentication. When both Basic Auth and apiToken are provided, Basic Auth takes precedence."
},
"appPassword": {
"type": "string",
"description": "WordPress Application Password for Basic Auth. Generate from WordPress Dashboard > Users > Profile > Application Passwords. When both Basic Auth and apiToken are provided, Basic Auth takes precedence."
},
"apiToken": {
"type": "string",
"description": "MainWP REST API Bearer token. Alternative to username+appPassword authentication. Only used if username+appPassword are not set (Basic Auth takes precedence when both are provided)."
},
"skipSslVerify": {
"type": "boolean",
"default": false,
"description": "Skip SSL certificate verification. WARNING: Only use for local development with self-signed certificates. Enables man-in-the-middle attacks."
},
"allowHttp": {
"type": "boolean",
"default": false,
"description": "Allow HTTP URLs (insecure). WARNING: Credentials will be transmitted in plain text. Use HTTPS in production."
},
"safeMode": {
"type": "boolean",
"default": false,
"description": "Prevent destructive operations by stripping the 'confirm' parameter from tool calls. Useful for testing or read-only access."
},
"requireUserConfirmation": {
"type": "boolean",
"default": true,
"description": "Require explicit user confirmation for destructive operations. When enabled, destructive tools require a two-phase flow: first call with confirm:true to get a preview, then call with user_confirmed:true to execute. Set to false for automation scripts."
},
"rateLimit": {
"type": "integer",
"minimum": 0,
"default": 60,
"description": "Maximum API requests per minute. Set to 0 to disable rate limiting."
},
"requestTimeout": {
"type": "integer",
"minimum": 1,
"default": 30000,
"description": "Request timeout in milliseconds. Default is 30000 (30 seconds)."
},
"maxResponseSize": {
"type": "integer",
"minimum": 1,
"default": 10485760,
"description": "Maximum response size in bytes. Default is 10485760 (10MB)."
},
"maxSessionData": {
"type": "integer",
"minimum": 1,
"default": 52428800,
"description": "Maximum cumulative response data per server session in bytes. Default is 52428800 (50MB)."
},
"allowedTools": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Whitelist of tool names to expose. If set, only these tools are available. Cannot conflict with blockedTools."
},
"blockedTools": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Blacklist of tool names to hide. These tools are never exposed. Cannot conflict with allowedTools."
},
"schemaVerbosity": {
"type": "string",
"enum": ["compact", "standard"],
"default": "standard",
"description": "Schema verbosity level. 'compact' reduces token usage by ~30% with shorter descriptions. 'standard' provides full descriptions with examples and safety information. Default is 'standard'."
},
"responseFormat": {
"type": "string",
"enum": ["compact", "pretty"],
"default": "compact",
"description": "Response JSON format. 'compact' omits whitespace to reduce token usage. 'pretty' uses 2-space indentation for human-readable output. Default is 'compact'."
},
"retryEnabled": {
"type": "boolean",
"default": true,
"description": "Enable automatic retry for transient errors (network failures, HTTP 5xx, rate limits). Only retries read-only operations to preserve idempotency."
},
"maxRetries": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 2,
"description": "Maximum retry attempts including the initial request. Must be between 1 and 5. Default is 2 (1 retry). Total time across all retries will not exceed requestTimeout."
},
"retryBaseDelay": {
"type": "integer",
"minimum": 500,
"maximum": 10000,
"default": 1000,
"description": "Base delay between retries in milliseconds. Must be between 500ms and 10000ms. Actual delay uses exponential backoff with jitter. Default is 1000ms (1 second)."
},
"retryMaxDelay": {
"type": "integer",
"minimum": 500,
"maximum": 30000,
"default": 2000,
"description": "Maximum delay between retries in milliseconds. Must be between 500ms and 30000ms and >= retryBaseDelay. Caps exponential backoff to prevent excessive waits. Default is 2000ms (2 seconds)."
}
}
}