mcp-wordpress 2.6.4 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/README.md +1 -1
  2. package/dist/cache/CacheInvalidation.d.ts +25 -6
  3. package/dist/cache/CacheInvalidation.d.ts.map +1 -1
  4. package/dist/cache/CacheInvalidation.js +168 -16
  5. package/dist/cache/CacheInvalidation.js.map +1 -1
  6. package/dist/cache/HttpCacheWrapper.d.ts.map +1 -1
  7. package/dist/cache/HttpCacheWrapper.js +3 -4
  8. package/dist/cache/HttpCacheWrapper.js.map +1 -1
  9. package/dist/cache/SEOCacheManager.d.ts +150 -0
  10. package/dist/cache/SEOCacheManager.d.ts.map +1 -0
  11. package/dist/cache/SEOCacheManager.js +275 -0
  12. package/dist/cache/SEOCacheManager.js.map +1 -0
  13. package/dist/client/SEOWordPressClient.d.ts +164 -0
  14. package/dist/client/SEOWordPressClient.d.ts.map +1 -0
  15. package/dist/client/SEOWordPressClient.js +674 -0
  16. package/dist/client/SEOWordPressClient.js.map +1 -0
  17. package/dist/client/api.d.ts.map +1 -1
  18. package/dist/client/api.js +50 -20
  19. package/dist/client/api.js.map +1 -1
  20. package/dist/client/auth.js +19 -19
  21. package/dist/client/auth.js.map +1 -1
  22. package/dist/client/index.d.ts +11 -0
  23. package/dist/client/index.d.ts.map +1 -0
  24. package/dist/client/index.js +14 -0
  25. package/dist/client/index.js.map +1 -0
  26. package/dist/client/managers/AuthManager.d.ts +39 -0
  27. package/dist/client/managers/AuthManager.d.ts.map +1 -0
  28. package/dist/client/managers/AuthManager.js +142 -0
  29. package/dist/client/managers/AuthManager.js.map +1 -0
  30. package/dist/client/managers/AuthenticationManager.d.ts.map +1 -1
  31. package/dist/client/managers/AuthenticationManager.js +10 -9
  32. package/dist/client/managers/AuthenticationManager.js.map +1 -1
  33. package/dist/client/managers/BaseManager.d.ts.map +1 -1
  34. package/dist/client/managers/BaseManager.js +12 -0
  35. package/dist/client/managers/BaseManager.js.map +1 -1
  36. package/dist/client/managers/ComposedAuthenticationManager.d.ts +94 -0
  37. package/dist/client/managers/ComposedAuthenticationManager.d.ts.map +1 -0
  38. package/dist/client/managers/ComposedAuthenticationManager.js +340 -0
  39. package/dist/client/managers/ComposedAuthenticationManager.js.map +1 -0
  40. package/dist/client/managers/ComposedManagerFactory.d.ts +104 -0
  41. package/dist/client/managers/ComposedManagerFactory.d.ts.map +1 -0
  42. package/dist/client/managers/ComposedManagerFactory.js +180 -0
  43. package/dist/client/managers/ComposedManagerFactory.js.map +1 -0
  44. package/dist/client/managers/ComposedRequestManager.d.ts +82 -0
  45. package/dist/client/managers/ComposedRequestManager.d.ts.map +1 -0
  46. package/dist/client/managers/ComposedRequestManager.js +260 -0
  47. package/dist/client/managers/ComposedRequestManager.js.map +1 -0
  48. package/dist/client/managers/JWTAuthImplementation.d.ts +86 -0
  49. package/dist/client/managers/JWTAuthImplementation.d.ts.map +1 -0
  50. package/dist/client/managers/JWTAuthImplementation.js +240 -0
  51. package/dist/client/managers/JWTAuthImplementation.js.map +1 -0
  52. package/dist/client/managers/ManagersIndex.d.ts +6 -0
  53. package/dist/client/managers/ManagersIndex.d.ts.map +1 -0
  54. package/dist/client/managers/ManagersIndex.js +6 -0
  55. package/dist/client/managers/ManagersIndex.js.map +1 -0
  56. package/dist/client/managers/RequestManager.d.ts.map +1 -1
  57. package/dist/client/managers/RequestManager.js +5 -3
  58. package/dist/client/managers/RequestManager.js.map +1 -1
  59. package/dist/client/managers/composed/MigrationAdapter.d.ts +80 -0
  60. package/dist/client/managers/composed/MigrationAdapter.d.ts.map +1 -0
  61. package/dist/client/managers/composed/MigrationAdapter.js +214 -0
  62. package/dist/client/managers/composed/MigrationAdapter.js.map +1 -0
  63. package/dist/client/managers/composed/index.d.ts +23 -0
  64. package/dist/client/managers/composed/index.d.ts.map +1 -0
  65. package/dist/client/managers/composed/index.js +26 -0
  66. package/dist/client/managers/composed/index.js.map +1 -0
  67. package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts +27 -0
  68. package/dist/client/managers/implementations/ConfigurationProviderImpl.d.ts.map +1 -0
  69. package/dist/client/managers/implementations/ConfigurationProviderImpl.js +41 -0
  70. package/dist/client/managers/implementations/ConfigurationProviderImpl.js.map +1 -0
  71. package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts +31 -0
  72. package/dist/client/managers/implementations/ErrorHandlerImpl.d.ts.map +1 -0
  73. package/dist/client/managers/implementations/ErrorHandlerImpl.js +73 -0
  74. package/dist/client/managers/implementations/ErrorHandlerImpl.js.map +1 -0
  75. package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts +47 -0
  76. package/dist/client/managers/implementations/ParameterValidatorImpl.d.ts.map +1 -0
  77. package/dist/client/managers/implementations/ParameterValidatorImpl.js +141 -0
  78. package/dist/client/managers/implementations/ParameterValidatorImpl.js.map +1 -0
  79. package/dist/client/managers/interfaces/ManagerInterfaces.d.ts +147 -0
  80. package/dist/client/managers/interfaces/ManagerInterfaces.d.ts.map +1 -0
  81. package/dist/client/managers/interfaces/ManagerInterfaces.js +6 -0
  82. package/dist/client/managers/interfaces/ManagerInterfaces.js.map +1 -0
  83. package/dist/config/Config.d.ts +30 -0
  84. package/dist/config/Config.d.ts.map +1 -1
  85. package/dist/config/Config.js +30 -0
  86. package/dist/config/Config.js.map +1 -1
  87. package/dist/config/ConfigurationSchema.d.ts +75 -198
  88. package/dist/config/ConfigurationSchema.d.ts.map +1 -1
  89. package/dist/config/ConfigurationSchema.js +17 -17
  90. package/dist/config/ConfigurationSchema.js.map +1 -1
  91. package/dist/config/ServerConfiguration.d.ts +2 -2
  92. package/dist/config/ServerConfiguration.d.ts.map +1 -1
  93. package/dist/config/ServerConfiguration.js +15 -13
  94. package/dist/config/ServerConfiguration.js.map +1 -1
  95. package/dist/config/index.d.ts +8 -0
  96. package/dist/config/index.d.ts.map +1 -0
  97. package/dist/config/index.js +11 -0
  98. package/dist/config/index.js.map +1 -0
  99. package/dist/docs/DocumentationGenerator.js +2 -2
  100. package/dist/docs/DocumentationGenerator.js.map +1 -1
  101. package/dist/dxt-entry.js +3 -3
  102. package/dist/dxt-entry.js.map +1 -1
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +38 -37
  106. package/dist/index.js.map +1 -1
  107. package/dist/performance/MetricsCollector.d.ts.map +1 -1
  108. package/dist/performance/MetricsCollector.js +5 -4
  109. package/dist/performance/MetricsCollector.js.map +1 -1
  110. package/dist/security/AISecurityScanner.js +7 -7
  111. package/dist/security/AISecurityScanner.js.map +1 -1
  112. package/dist/security/AutomatedRemediation.d.ts.map +1 -1
  113. package/dist/security/AutomatedRemediation.js +11 -11
  114. package/dist/security/AutomatedRemediation.js.map +1 -1
  115. package/dist/security/InputValidator.d.ts +50 -126
  116. package/dist/security/InputValidator.d.ts.map +1 -1
  117. package/dist/security/InputValidator.js +9 -9
  118. package/dist/security/InputValidator.js.map +1 -1
  119. package/dist/security/SecurityCIPipeline.d.ts +47 -5
  120. package/dist/security/SecurityCIPipeline.d.ts.map +1 -1
  121. package/dist/security/SecurityCIPipeline.js +390 -49
  122. package/dist/security/SecurityCIPipeline.js.map +1 -1
  123. package/dist/security/SecurityConfigManager.js +10 -10
  124. package/dist/security/SecurityConfigManager.js.map +1 -1
  125. package/dist/security/SecurityMonitoring.js +4 -4
  126. package/dist/security/SecurityMonitoring.js.map +1 -1
  127. package/dist/security/SecurityReviewer.d.ts.map +1 -1
  128. package/dist/security/SecurityReviewer.js +13 -6
  129. package/dist/security/SecurityReviewer.js.map +1 -1
  130. package/dist/security/index.js +3 -3
  131. package/dist/security/index.js.map +1 -1
  132. package/dist/server/ConnectionTester.js +5 -5
  133. package/dist/server/ConnectionTester.js.map +1 -1
  134. package/dist/server/ToolRegistry.d.ts +2 -2
  135. package/dist/server/ToolRegistry.d.ts.map +1 -1
  136. package/dist/server/ToolRegistry.js +7 -6
  137. package/dist/server/ToolRegistry.js.map +1 -1
  138. package/dist/server/index.d.ts +7 -0
  139. package/dist/server/index.d.ts.map +1 -0
  140. package/dist/server/index.js +9 -0
  141. package/dist/server/index.js.map +1 -0
  142. package/dist/tools/BaseToolManager.d.ts.map +1 -1
  143. package/dist/tools/BaseToolManager.js +11 -11
  144. package/dist/tools/BaseToolManager.js.map +1 -1
  145. package/dist/tools/auth.d.ts.map +1 -1
  146. package/dist/tools/auth.js +7 -7
  147. package/dist/tools/auth.js.map +1 -1
  148. package/dist/tools/comments.d.ts.map +1 -1
  149. package/dist/tools/comments.js +14 -14
  150. package/dist/tools/comments.js.map +1 -1
  151. package/dist/tools/index.d.ts +1 -0
  152. package/dist/tools/index.d.ts.map +1 -1
  153. package/dist/tools/index.js +1 -0
  154. package/dist/tools/index.js.map +1 -1
  155. package/dist/tools/media.d.ts.map +1 -1
  156. package/dist/tools/media.js +14 -11
  157. package/dist/tools/media.js.map +1 -1
  158. package/dist/tools/pages.d.ts.map +1 -1
  159. package/dist/tools/pages.js +12 -12
  160. package/dist/tools/pages.js.map +1 -1
  161. package/dist/tools/performance.d.ts.map +1 -1
  162. package/dist/tools/performance.js +13 -11
  163. package/dist/tools/performance.js.map +1 -1
  164. package/dist/tools/posts/PostHandlers.d.ts.map +1 -1
  165. package/dist/tools/posts/PostHandlers.js +16 -16
  166. package/dist/tools/posts/PostHandlers.js.map +1 -1
  167. package/dist/tools/posts/PostToolDefinitions.d.ts.map +1 -1
  168. package/dist/tools/posts/index.d.ts.map +1 -1
  169. package/dist/tools/seo/BulkOperations.d.ts +113 -0
  170. package/dist/tools/seo/BulkOperations.d.ts.map +1 -0
  171. package/dist/tools/seo/BulkOperations.js +398 -0
  172. package/dist/tools/seo/BulkOperations.js.map +1 -0
  173. package/dist/tools/seo/SEOHandlers.d.ts +55 -0
  174. package/dist/tools/seo/SEOHandlers.d.ts.map +1 -0
  175. package/dist/tools/seo/SEOHandlers.js +255 -0
  176. package/dist/tools/seo/SEOHandlers.js.map +1 -0
  177. package/dist/tools/seo/SEOToolDefinitions.d.ts +59 -0
  178. package/dist/tools/seo/SEOToolDefinitions.d.ts.map +1 -0
  179. package/dist/tools/seo/SEOToolDefinitions.js +385 -0
  180. package/dist/tools/seo/SEOToolDefinitions.js.map +1 -0
  181. package/dist/tools/seo/SEOTools.d.ts +203 -0
  182. package/dist/tools/seo/SEOTools.d.ts.map +1 -0
  183. package/dist/tools/seo/SEOTools.js +708 -0
  184. package/dist/tools/seo/SEOTools.js.map +1 -0
  185. package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts +94 -0
  186. package/dist/tools/seo/analyzers/ContentAnalyzer.d.ts.map +1 -0
  187. package/dist/tools/seo/analyzers/ContentAnalyzer.js +402 -0
  188. package/dist/tools/seo/analyzers/ContentAnalyzer.js.map +1 -0
  189. package/dist/tools/seo/auditors/SiteAuditor.d.ts +121 -0
  190. package/dist/tools/seo/auditors/SiteAuditor.d.ts.map +1 -0
  191. package/dist/tools/seo/auditors/SiteAuditor.js +600 -0
  192. package/dist/tools/seo/auditors/SiteAuditor.js.map +1 -0
  193. package/dist/tools/seo/generators/MetaGenerator.d.ts +128 -0
  194. package/dist/tools/seo/generators/MetaGenerator.d.ts.map +1 -0
  195. package/dist/tools/seo/generators/MetaGenerator.js +547 -0
  196. package/dist/tools/seo/generators/MetaGenerator.js.map +1 -0
  197. package/dist/tools/seo/generators/SchemaGenerator.d.ts +204 -0
  198. package/dist/tools/seo/generators/SchemaGenerator.d.ts.map +1 -0
  199. package/dist/tools/seo/generators/SchemaGenerator.js +670 -0
  200. package/dist/tools/seo/generators/SchemaGenerator.js.map +1 -0
  201. package/dist/tools/seo/index.d.ts +17 -0
  202. package/dist/tools/seo/index.d.ts.map +1 -0
  203. package/dist/tools/seo/index.js +18 -0
  204. package/dist/tools/seo/index.js.map +1 -0
  205. package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts +186 -0
  206. package/dist/tools/seo/optimizers/InternalLinkingSuggester.d.ts.map +1 -0
  207. package/dist/tools/seo/optimizers/InternalLinkingSuggester.js +683 -0
  208. package/dist/tools/seo/optimizers/InternalLinkingSuggester.js.map +1 -0
  209. package/dist/tools/site.d.ts.map +1 -1
  210. package/dist/tools/site.js +12 -12
  211. package/dist/tools/site.js.map +1 -1
  212. package/dist/tools/taxonomies.d.ts.map +1 -1
  213. package/dist/tools/taxonomies.js +20 -20
  214. package/dist/tools/taxonomies.js.map +1 -1
  215. package/dist/tools/users.d.ts.map +1 -1
  216. package/dist/tools/users.js +12 -12
  217. package/dist/tools/users.js.map +1 -1
  218. package/dist/types/client.d.ts +8 -6
  219. package/dist/types/client.d.ts.map +1 -1
  220. package/dist/types/client.js.map +1 -1
  221. package/dist/types/seo.d.ts +473 -0
  222. package/dist/types/seo.d.ts.map +1 -0
  223. package/dist/types/seo.js +94 -0
  224. package/dist/types/seo.js.map +1 -0
  225. package/dist/utils/enhancedError.js +1 -1
  226. package/dist/utils/enhancedError.js.map +1 -1
  227. package/dist/utils/error.d.ts.map +1 -1
  228. package/dist/utils/error.js +0 -1
  229. package/dist/utils/error.js.map +1 -1
  230. package/dist/utils/index.d.ts +12 -0
  231. package/dist/utils/index.d.ts.map +1 -0
  232. package/dist/utils/index.js +18 -0
  233. package/dist/utils/index.js.map +1 -0
  234. package/dist/utils/logger.js +3 -3
  235. package/dist/utils/logger.js.map +1 -1
  236. package/dist/utils/toolWrapper.d.ts +2 -2
  237. package/dist/utils/toolWrapper.js +8 -8
  238. package/dist/utils/toolWrapper.js.map +1 -1
  239. package/dist/utils/validation/core.d.ts.map +1 -1
  240. package/dist/utils/validation/core.js.map +1 -1
  241. package/dist/utils/validation/index.d.ts.map +1 -1
  242. package/dist/utils/validation/index.js.map +1 -1
  243. package/dist/utils/validation/network.js +3 -3
  244. package/dist/utils/validation/network.js.map +1 -1
  245. package/dist/utils/validation/rateLimit.js.map +1 -1
  246. package/dist/utils/validation/security.js.map +1 -1
  247. package/dist/utils/validation/wordpress.js.map +1 -1
  248. package/dist/utils/version.d.ts +144 -0
  249. package/dist/utils/version.d.ts.map +1 -0
  250. package/dist/utils/version.js +318 -0
  251. package/dist/utils/version.js.map +1 -0
  252. package/package.json +21 -55
  253. package/src/cache/CacheInvalidation.ts +183 -20
  254. package/src/cache/HttpCacheWrapper.ts +8 -5
  255. package/src/cache/SEOCacheManager.ts +330 -0
  256. package/src/cache/__tests__/CacheInvalidation.test.ts +6 -11
  257. package/src/cache/__tests__/CachedWordPressClient.test.ts +37 -62
  258. package/src/client/SEOWordPressClient.ts +876 -0
  259. package/src/client/api.ts +50 -21
  260. package/src/client/auth.ts +19 -19
  261. package/src/client/index.ts +16 -0
  262. package/src/client/managers/AuthManager.ts +175 -0
  263. package/src/client/managers/AuthenticationManager.ts +16 -14
  264. package/src/client/managers/BaseManager.ts +24 -5
  265. package/src/client/managers/ComposedAuthenticationManager.ts +409 -0
  266. package/src/client/managers/ComposedManagerFactory.ts +231 -0
  267. package/src/client/managers/ComposedRequestManager.ts +336 -0
  268. package/src/client/managers/JWTAuthImplementation.ts +326 -0
  269. package/src/client/managers/ManagersIndex.ts +6 -0
  270. package/src/client/managers/RequestManager.ts +9 -7
  271. package/src/client/managers/composed/MigrationAdapter.ts +263 -0
  272. package/src/client/managers/composed/index.ts +47 -0
  273. package/src/client/managers/implementations/ConfigurationProviderImpl.ts +52 -0
  274. package/src/client/managers/implementations/ErrorHandlerImpl.ts +102 -0
  275. package/src/client/managers/implementations/ParameterValidatorImpl.ts +221 -0
  276. package/src/client/managers/interfaces/ManagerInterfaces.ts +171 -0
  277. package/src/config/Config.ts +63 -0
  278. package/src/config/ConfigurationSchema.ts +17 -17
  279. package/src/config/ServerConfiguration.ts +18 -16
  280. package/src/config/index.ts +13 -0
  281. package/src/docs/DocumentationGenerator.ts +2 -2
  282. package/src/dxt-entry.ts +3 -3
  283. package/src/index.ts +43 -43
  284. package/src/performance/MetricsCollector.ts +15 -11
  285. package/src/security/AISecurityScanner.ts +7 -7
  286. package/src/security/AutomatedRemediation.ts +13 -11
  287. package/src/security/InputValidator.ts +10 -9
  288. package/src/security/SecurityCIPipeline.ts +494 -56
  289. package/src/security/SecurityConfigManager.ts +10 -10
  290. package/src/security/SecurityMonitoring.ts +5 -5
  291. package/src/security/SecurityReviewer.ts +13 -6
  292. package/src/security/index.ts +3 -3
  293. package/src/server/ConnectionTester.ts +5 -5
  294. package/src/server/ToolRegistry.ts +9 -8
  295. package/src/server/index.ts +10 -0
  296. package/src/tools/BaseToolManager.ts +55 -83
  297. package/src/tools/auth.ts +21 -12
  298. package/src/tools/comments.ts +23 -19
  299. package/src/tools/index.ts +1 -0
  300. package/src/tools/media.ts +23 -20
  301. package/src/tools/pages.ts +20 -13
  302. package/src/tools/performance.ts +101 -32
  303. package/src/tools/posts/PostHandlers.ts +23 -23
  304. package/src/tools/posts/PostToolDefinitions.ts +1 -1
  305. package/src/tools/posts/index.ts +2 -2
  306. package/src/tools/seo/BulkOperations.ts +557 -0
  307. package/src/tools/seo/SEOHandlers.ts +296 -0
  308. package/src/tools/seo/SEOToolDefinitions.ts +402 -0
  309. package/src/tools/seo/SEOTools.ts +871 -0
  310. package/src/tools/seo/analyzers/ContentAnalyzer.ts +493 -0
  311. package/src/tools/seo/auditors/SiteAuditor.ts +787 -0
  312. package/src/tools/seo/generators/MetaGenerator.ts +694 -0
  313. package/src/tools/seo/generators/SchemaGenerator.ts +955 -0
  314. package/src/tools/seo/index.ts +47 -0
  315. package/src/tools/seo/optimizers/InternalLinkingSuggester.ts +934 -0
  316. package/src/tools/site.ts +27 -26
  317. package/src/tools/taxonomies.ts +29 -25
  318. package/src/tools/users.ts +20 -13
  319. package/src/types/client.ts +8 -6
  320. package/src/types/seo.ts +546 -0
  321. package/src/utils/enhancedError.ts +1 -1
  322. package/src/utils/error.ts +1 -2
  323. package/src/utils/index.ts +23 -0
  324. package/src/utils/logger.ts +3 -3
  325. package/src/utils/toolWrapper.ts +10 -10
  326. package/src/utils/validation/core.ts +2 -2
  327. package/src/utils/validation/index.ts +2 -2
  328. package/src/utils/validation/network.ts +5 -5
  329. package/src/utils/validation/rateLimit.ts +1 -1
  330. package/src/utils/validation/security.ts +1 -1
  331. package/src/utils/validation/wordpress.ts +1 -1
  332. package/src/utils/version.ts +402 -0
package/src/tools/site.ts CHANGED
@@ -14,7 +14,14 @@ export class SiteTools {
14
14
  public getTools(): Array<{
15
15
  name: string;
16
16
  description: string;
17
- parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
17
+ parameters?: Array<{
18
+ name: string;
19
+ type?: string;
20
+ description?: string;
21
+ required?: boolean;
22
+ enum?: string[];
23
+ items?: unknown;
24
+ }>;
18
25
  handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
19
26
  }> {
20
27
  return [
@@ -126,10 +133,7 @@ export class SiteTools {
126
133
  ];
127
134
  }
128
135
 
129
- public async handleGetSiteSettings(
130
- client: WordPressClient,
131
- _params: Record<string, unknown>,
132
- ): Promise<unknown> {
136
+ public async handleGetSiteSettings(client: WordPressClient, _params: Record<string, unknown>): Promise<unknown> {
133
137
  try {
134
138
  const settings = await client.getSiteSettings();
135
139
  const siteUrl = client.getSiteUrl();
@@ -182,27 +186,21 @@ export class SiteTools {
182
186
  content += `**📊 Retrieved:** ${new Date().toLocaleString()}`;
183
187
 
184
188
  return content;
185
- } catch (error) {
186
- throw new Error(`Failed to get site settings: ${getErrorMessage(error)}`);
189
+ } catch (_error) {
190
+ throw new Error(`Failed to get site settings: ${getErrorMessage(_error)}`);
187
191
  }
188
192
  }
189
193
 
190
- public async handleUpdateSiteSettings(
191
- client: WordPressClient,
192
- params: Record<string, unknown>,
193
- ): Promise<unknown> {
194
+ public async handleUpdateSiteSettings(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
194
195
  try {
195
196
  const updatedSettings = await client.updateSiteSettings(params);
196
197
  return `✅ Site settings updated successfully. New title: ${updatedSettings.title}`;
197
- } catch (error) {
198
- throw new Error(`Failed to update site settings: ${getErrorMessage(error)}`);
198
+ } catch (_error) {
199
+ throw new Error(`Failed to update site settings: ${getErrorMessage(_error)}`);
199
200
  }
200
201
  }
201
202
 
202
- public async handleSearchSite(
203
- client: WordPressClient,
204
- params: Record<string, unknown>,
205
- ): Promise<unknown> {
203
+ public async handleSearchSite(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
206
204
  try {
207
205
  const { term, type } = params as { term: string; type?: "posts" | "pages" | "media" };
208
206
  const results = await client.search(term, type ? [type] : undefined);
@@ -213,12 +211,15 @@ export class SiteTools {
213
211
  `Found ${results.length} results for "${term}":\n\n` +
214
212
  results.map((r) => `- [${r.type}] **${r.title}**\n Link: ${r.url}`).join("\n");
215
213
  return content;
216
- } catch (error) {
217
- throw new Error(`Failed to perform search: ${getErrorMessage(error)}`);
214
+ } catch (_error) {
215
+ throw new Error(`Failed to perform search: ${getErrorMessage(_error)}`);
218
216
  }
219
217
  }
220
218
 
221
- public async handleGetApplicationPasswords(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
219
+ public async handleGetApplicationPasswords(
220
+ client: WordPressClient,
221
+ params: Record<string, unknown>,
222
+ ): Promise<unknown> {
222
223
  try {
223
224
  const { user_id } = params as { user_id: number };
224
225
  const passwords = await client.getApplicationPasswords(user_id);
@@ -234,8 +235,8 @@ export class SiteTools {
234
235
  )
235
236
  .join("\n");
236
237
  return content;
237
- } catch (error) {
238
- throw new Error(`Failed to get application passwords: ${getErrorMessage(error)}`);
238
+ } catch (_error) {
239
+ throw new Error(`Failed to get application passwords: ${getErrorMessage(_error)}`);
239
240
  }
240
241
  }
241
242
 
@@ -252,8 +253,8 @@ export class SiteTools {
252
253
  `**Password:** \`${result.password}\`\n\n` +
253
254
  "**IMPORTANT:** This password is shown only once. Please save it securely.";
254
255
  return content;
255
- } catch (error) {
256
- throw new Error(`Failed to create application password: ${getErrorMessage(error)}`);
256
+ } catch (_error) {
257
+ throw new Error(`Failed to create application password: ${getErrorMessage(_error)}`);
257
258
  }
258
259
  }
259
260
 
@@ -265,8 +266,8 @@ export class SiteTools {
265
266
  const { user_id, uuid } = params as { user_id: number; uuid: string };
266
267
  await client.deleteApplicationPassword(user_id, uuid);
267
268
  return `✅ Application password with UUID ${uuid} has been revoked.`;
268
- } catch (error) {
269
- throw new Error(`Failed to delete application password: ${getErrorMessage(error)}`);
269
+ } catch (_error) {
270
+ throw new Error(`Failed to delete application password: ${getErrorMessage(_error)}`);
270
271
  }
271
272
  }
272
273
  }
@@ -19,7 +19,14 @@ export class TaxonomyTools {
19
19
  public getTools(): Array<{
20
20
  name: string;
21
21
  description: string;
22
- parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
22
+ parameters?: Array<{
23
+ name: string;
24
+ type?: string;
25
+ description?: string;
26
+ required?: boolean;
27
+ enum?: string[];
28
+ items?: unknown;
29
+ }>;
23
30
  handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
24
31
  }> {
25
32
  return [
@@ -187,8 +194,8 @@ export class TaxonomyTools {
187
194
  `Found ${categories.length} categories:\n\n` +
188
195
  categories.map((c) => `- ID ${c.id}: **${c.name}** (Posts: ${c.count})`).join("\n");
189
196
  return content;
190
- } catch (error) {
191
- throw new Error(`Failed to list categories: ${getErrorMessage(error)}`);
197
+ } catch (_error) {
198
+ throw new Error(`Failed to list categories: ${getErrorMessage(_error)}`);
192
199
  }
193
200
  }
194
201
 
@@ -203,8 +210,8 @@ export class TaxonomyTools {
203
210
  `- **Description:** ${category.description || "None"}\n` +
204
211
  `- **Post Count:** ${category.count}`;
205
212
  return content;
206
- } catch (error) {
207
- throw new Error(`Failed to get category: ${getErrorMessage(error)}`);
213
+ } catch (_error) {
214
+ throw new Error(`Failed to get category: ${getErrorMessage(_error)}`);
208
215
  }
209
216
  }
210
217
 
@@ -213,21 +220,18 @@ export class TaxonomyTools {
213
220
  try {
214
221
  const category = await client.createCategory(createParams);
215
222
  return `✅ Category "${category.name}" created successfully with ID: ${category.id}.`;
216
- } catch (error) {
217
- throw new Error(`Failed to create category: ${getErrorMessage(error)}`);
223
+ } catch (_error) {
224
+ throw new Error(`Failed to create category: ${getErrorMessage(_error)}`);
218
225
  }
219
226
  }
220
227
 
221
- public async handleUpdateCategory(
222
- client: WordPressClient,
223
- params: Record<string, unknown>,
224
- ): Promise<unknown> {
228
+ public async handleUpdateCategory(client: WordPressClient, params: Record<string, unknown>): Promise<unknown> {
225
229
  const updateParams = params as unknown as UpdateCategoryRequest;
226
230
  try {
227
231
  const category = await client.updateCategory(updateParams);
228
232
  return `✅ Category ${category.id} updated successfully.`;
229
- } catch (error) {
230
- throw new Error(`Failed to update category: ${getErrorMessage(error)}`);
233
+ } catch (_error) {
234
+ throw new Error(`Failed to update category: ${getErrorMessage(_error)}`);
231
235
  }
232
236
  }
233
237
 
@@ -236,8 +240,8 @@ export class TaxonomyTools {
236
240
  try {
237
241
  await client.deleteCategory(id);
238
242
  return `✅ Category ${id} has been deleted.`;
239
- } catch (error) {
240
- throw new Error(`Failed to delete category: ${getErrorMessage(error)}`);
243
+ } catch (_error) {
244
+ throw new Error(`Failed to delete category: ${getErrorMessage(_error)}`);
241
245
  }
242
246
  }
243
247
 
@@ -252,8 +256,8 @@ export class TaxonomyTools {
252
256
  `Found ${tags.length} tags:\n\n` +
253
257
  tags.map((t) => `- ID ${t.id}: **${t.name}** (Posts: ${t.count})`).join("\n");
254
258
  return content;
255
- } catch (error) {
256
- throw new Error(`Failed to list tags: ${getErrorMessage(error)}`);
259
+ } catch (_error) {
260
+ throw new Error(`Failed to list tags: ${getErrorMessage(_error)}`);
257
261
  }
258
262
  }
259
263
 
@@ -267,8 +271,8 @@ export class TaxonomyTools {
267
271
  `- **Slug:** ${tag.slug}\n` +
268
272
  `- **Post Count:** ${tag.count}`;
269
273
  return content;
270
- } catch (error) {
271
- throw new Error(`Failed to get tag: ${getErrorMessage(error)}`);
274
+ } catch (_error) {
275
+ throw new Error(`Failed to get tag: ${getErrorMessage(_error)}`);
272
276
  }
273
277
  }
274
278
 
@@ -277,8 +281,8 @@ export class TaxonomyTools {
277
281
  try {
278
282
  const tag = await client.createTag(createParams);
279
283
  return `✅ Tag "${tag.name}" created successfully with ID: ${tag.id}.`;
280
- } catch (error) {
281
- throw new Error(`Failed to create tag: ${getErrorMessage(error)}`);
284
+ } catch (_error) {
285
+ throw new Error(`Failed to create tag: ${getErrorMessage(_error)}`);
282
286
  }
283
287
  }
284
288
 
@@ -287,8 +291,8 @@ export class TaxonomyTools {
287
291
  try {
288
292
  const tag = await client.updateTag(updateParams);
289
293
  return `✅ Tag ${tag.id} updated successfully.`;
290
- } catch (error) {
291
- throw new Error(`Failed to update tag: ${getErrorMessage(error)}`);
294
+ } catch (_error) {
295
+ throw new Error(`Failed to update tag: ${getErrorMessage(_error)}`);
292
296
  }
293
297
  }
294
298
 
@@ -297,8 +301,8 @@ export class TaxonomyTools {
297
301
  try {
298
302
  await client.deleteTag(id);
299
303
  return `✅ Tag ${id} has been deleted.`;
300
- } catch (error) {
301
- throw new Error(`Failed to delete tag: ${getErrorMessage(error)}`);
304
+ } catch (_error) {
305
+ throw new Error(`Failed to delete tag: ${getErrorMessage(_error)}`);
302
306
  }
303
307
  }
304
308
  }
@@ -15,7 +15,14 @@ export class UserTools {
15
15
  public getTools(): Array<{
16
16
  name: string;
17
17
  description: string;
18
- parameters?: Array<{ name: string; type?: string; description?: string; required?: boolean; enum?: string[]; items?: unknown }>;
18
+ parameters?: Array<{
19
+ name: string;
20
+ type?: string;
21
+ description?: string;
22
+ required?: boolean;
23
+ enum?: string[];
24
+ items?: unknown;
25
+ }>;
19
26
  handler: (client: WordPressClient, params: Record<string, unknown>) => Promise<unknown>;
20
27
  }> {
21
28
  return [
@@ -218,8 +225,8 @@ export class UserTools {
218
225
  })
219
226
  .join("\n\n");
220
227
  return content;
221
- } catch (error) {
222
- throw new Error(`Failed to list users: ${getErrorMessage(error)}`);
228
+ } catch (_error) {
229
+ throw new Error(`Failed to list users: ${getErrorMessage(_error)}`);
223
230
  }
224
231
  }
225
232
 
@@ -234,8 +241,8 @@ export class UserTools {
234
241
  `- **Email:** ${user.email}\n` +
235
242
  `- **Roles:** ${user.roles?.join(", ") || "N/A"}`;
236
243
  return content;
237
- } catch (error) {
238
- throw new Error(`Failed to get user: ${getErrorMessage(error)}`);
244
+ } catch (_error) {
245
+ throw new Error(`Failed to get user: ${getErrorMessage(_error)}`);
239
246
  }
240
247
  }
241
248
 
@@ -300,8 +307,8 @@ export class UserTools {
300
307
  `- **Profile Link:** ${user.link || `${siteUrl}/wp-admin/profile.php`}`;
301
308
 
302
309
  return { content };
303
- } catch (error) {
304
- throw new Error(`Failed to get current user: ${getErrorMessage(error)}`);
310
+ } catch (_error) {
311
+ throw new Error(`Failed to get current user: ${getErrorMessage(_error)}`);
305
312
  }
306
313
  }
307
314
 
@@ -310,8 +317,8 @@ export class UserTools {
310
317
  try {
311
318
  const user = await client.createUser(createParams);
312
319
  return `✅ User "${user.name}" created successfully with ID: ${user.id}.`;
313
- } catch (error) {
314
- throw new Error(`Failed to create user: ${getErrorMessage(error)}`);
320
+ } catch (_error) {
321
+ throw new Error(`Failed to create user: ${getErrorMessage(_error)}`);
315
322
  }
316
323
  }
317
324
 
@@ -320,8 +327,8 @@ export class UserTools {
320
327
  try {
321
328
  const user = await client.updateUser(updateParams);
322
329
  return `✅ User ${user.id} updated successfully.`;
323
- } catch (error) {
324
- throw new Error(`Failed to update user: ${getErrorMessage(error)}`);
330
+ } catch (_error) {
331
+ throw new Error(`Failed to update user: ${getErrorMessage(_error)}`);
325
332
  }
326
333
  }
327
334
 
@@ -334,8 +341,8 @@ export class UserTools {
334
341
  content += ` Their content has been reassigned to user ID ${reassign}.`;
335
342
  }
336
343
  return content;
337
- } catch (error) {
338
- throw new Error(`Failed to delete user: ${getErrorMessage(error)}`);
344
+ } catch (_error) {
345
+ throw new Error(`Failed to delete user: ${getErrorMessage(_error)}`);
339
346
  }
340
347
  }
341
348
  }
@@ -58,8 +58,10 @@ export interface AppPasswordCredentials {
58
58
  }
59
59
 
60
60
  export interface JwtCredentials {
61
- jwtToken: string;
62
- username?: string;
61
+ username: string;
62
+ password: string;
63
+ jwtToken?: string;
64
+ jwtSecret?: string;
63
65
  }
64
66
 
65
67
  export interface BasicCredentials {
@@ -76,11 +78,10 @@ export type AuthCredentials = AppPasswordCredentials | JwtCredentials | BasicCre
76
78
 
77
79
  // Authentication status interface
78
80
  export interface AuthStatus {
79
- method: AuthMethod;
80
- username?: string | undefined;
81
81
  isAuthenticated: boolean;
82
- tokenExpired: boolean;
83
- tokenExpiry?: number;
82
+ method: AuthMethod;
83
+ lastAuthAttempt?: Date | null;
84
+ tokenExpiry?: Date | null;
84
85
  }
85
86
 
86
87
  // Client Configuration
@@ -134,6 +135,7 @@ export interface ClientStats {
134
135
  lastRequestTime?: number;
135
136
  rateLimitHits: number;
136
137
  authFailures: number;
138
+ errors: number;
137
139
  }
138
140
 
139
141
  // WordPress API Client Interface