pulsemcp-cms-admin-mcp-server 0.9.1 → 0.9.2

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.
@@ -64,6 +64,9 @@ export async function createMCPImplementation(apiKey, baseUrl, params) {
64
64
  if (params.recommended !== undefined) {
65
65
  formData.append('mcp_implementation[recommended]', params.recommended.toString());
66
66
  }
67
+ if (params.verified_no_remote_canonicals !== undefined) {
68
+ formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
69
+ }
67
70
  // Date overrides
68
71
  if (params.created_on_override !== undefined) {
69
72
  formData.append('mcp_implementation[created_on_override]', params.created_on_override);
@@ -74,6 +74,9 @@ export async function saveMCPImplementation(apiKey, baseUrl, id, params) {
74
74
  if (params.recommended !== undefined) {
75
75
  formData.append('mcp_implementation[recommended]', params.recommended.toString());
76
76
  }
77
+ if (params.verified_no_remote_canonicals !== undefined) {
78
+ formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
79
+ }
77
80
  // Date overrides
78
81
  if (params.created_on_override !== undefined) {
79
82
  formData.append('mcp_implementation[created_on_override]', params.created_on_override);
@@ -47,6 +47,7 @@ export function mapToUnifiedServer(impl) {
47
47
  package_name: impl.package_name,
48
48
  // Flags
49
49
  recommended: impl.recommended,
50
+ verified_no_remote_canonicals: mcpServer.verified_no_remote_canonicals,
50
51
  // Canonical URLs
51
52
  canonical_urls: impl.canonical,
52
53
  // Remote endpoints
@@ -49,6 +49,8 @@ export async function updateUnifiedMCPServer(apiKey, baseUrl, implementationId,
49
49
  // Flags
50
50
  if (params.recommended !== undefined)
51
51
  implParams.recommended = params.recommended;
52
+ if (params.verified_no_remote_canonicals !== undefined)
53
+ implParams.verified_no_remote_canonicals = params.verified_no_remote_canonicals;
52
54
  // Date overrides
53
55
  if (params.created_on_override !== undefined)
54
56
  implParams.created_on_override = params.created_on_override;
@@ -102,6 +102,9 @@ Example response:
102
102
  if (server.recommended !== undefined) {
103
103
  content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
104
104
  }
105
+ if (server.verified_no_remote_canonicals !== undefined) {
106
+ content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
107
+ }
105
108
  if (server.short_description) {
106
109
  content += `\n**Short Description:**\n${server.short_description}\n`;
107
110
  }
@@ -27,6 +27,8 @@ const PARAM_DESCRIPTIONS = {
27
27
  remote: 'Array of remote endpoint configurations for MCP servers. Each remote can have: id (existing remote ID or blank for new), url_direct, url_setup, transport (e.g., "sse"), host_platform (e.g., "smithery"), host_infrastructure (e.g., "cloudflare"), authentication_method (e.g., "open"), cost (e.g., "free"), status (defaults to "live"), display_name, and internal_notes.',
28
28
  // Canonical URLs
29
29
  canonical: 'Array of canonical URL configurations. Each entry must have: url (the canonical URL), scope (one of "domain", "subdomain", or "url"), and optional note for additional context.',
30
+ // Flags
31
+ verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
30
32
  // Other fields
31
33
  internal_notes: 'Admin-only notes. Not displayed publicly. Used for tracking submission sources, reviewer comments, etc.',
32
34
  };
@@ -88,6 +90,11 @@ const SaveMCPImplementationSchema = z.object({
88
90
  }))
89
91
  .optional()
90
92
  .describe(PARAM_DESCRIPTIONS.canonical),
93
+ // Flags
94
+ verified_no_remote_canonicals: z
95
+ .boolean()
96
+ .optional()
97
+ .describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
91
98
  // Other fields
92
99
  internal_notes: z.string().optional().describe(PARAM_DESCRIPTIONS.internal_notes),
93
100
  });
@@ -301,6 +308,11 @@ Use cases:
301
308
  },
302
309
  description: PARAM_DESCRIPTIONS.canonical,
303
310
  },
311
+ // Flags
312
+ verified_no_remote_canonicals: {
313
+ type: 'boolean',
314
+ description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
315
+ },
304
316
  // Other fields
305
317
  internal_notes: {
306
318
  type: 'string',
@@ -16,6 +16,7 @@ const PARAM_DESCRIPTIONS = {
16
16
  package_registry: 'Package registry: npm, pypi, cargo, etc.',
17
17
  package_name: 'Package name on the registry (e.g., "@modelcontextprotocol/server-filesystem")',
18
18
  recommended: 'Mark this server as recommended by PulseMCP',
19
+ verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
19
20
  created_on_override: 'Override the automatically derived created date (ISO date string, e.g., "2025-01-15")',
20
21
  tags: 'Tags for the server. Replaces all existing tags when provided. Use tag slugs.',
21
22
  canonical_urls: 'Authoritative URLs for the server. Replaces all existing canonical URLs when provided.',
@@ -82,6 +83,10 @@ const UpdateMCPServerSchema = z.object({
82
83
  package_registry: z.string().optional().describe(PARAM_DESCRIPTIONS.package_registry),
83
84
  package_name: z.string().optional().describe(PARAM_DESCRIPTIONS.package_name),
84
85
  recommended: z.boolean().optional().describe(PARAM_DESCRIPTIONS.recommended),
86
+ verified_no_remote_canonicals: z
87
+ .boolean()
88
+ .optional()
89
+ .describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
85
90
  created_on_override: z.string().optional().describe(PARAM_DESCRIPTIONS.created_on_override),
86
91
  tags: z.array(z.string()).optional().describe(PARAM_DESCRIPTIONS.tags),
87
92
  canonical_urls: z
@@ -220,6 +225,10 @@ Create new provider:
220
225
  package_registry: { type: 'string', description: PARAM_DESCRIPTIONS.package_registry },
221
226
  package_name: { type: 'string', description: PARAM_DESCRIPTIONS.package_name },
222
227
  recommended: { type: 'boolean', description: PARAM_DESCRIPTIONS.recommended },
228
+ verified_no_remote_canonicals: {
229
+ type: 'boolean',
230
+ description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
231
+ },
223
232
  created_on_override: {
224
233
  type: 'string',
225
234
  description: PARAM_DESCRIPTIONS.created_on_override,
@@ -318,6 +327,9 @@ Create new provider:
318
327
  if (server.recommended !== undefined) {
319
328
  content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
320
329
  }
330
+ if (server.verified_no_remote_canonicals !== undefined) {
331
+ content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
332
+ }
321
333
  if (server.updated_at) {
322
334
  content += `**Updated:** ${server.updated_at}\n`;
323
335
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pulsemcp-cms-admin-mcp-server",
3
- "version": "0.9.1",
3
+ "version": "0.9.2",
4
4
  "description": "Local implementation of PulseMCP CMS Admin MCP server",
5
5
  "mcpName": "com.pulsemcp.servers/pulsemcp-cms-admin",
6
6
  "main": "build/index.js",
@@ -64,6 +64,9 @@ export async function createMCPImplementation(apiKey, baseUrl, params) {
64
64
  if (params.recommended !== undefined) {
65
65
  formData.append('mcp_implementation[recommended]', params.recommended.toString());
66
66
  }
67
+ if (params.verified_no_remote_canonicals !== undefined) {
68
+ formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
69
+ }
67
70
  // Date overrides
68
71
  if (params.created_on_override !== undefined) {
69
72
  formData.append('mcp_implementation[created_on_override]', params.created_on_override);
@@ -74,6 +74,9 @@ export async function saveMCPImplementation(apiKey, baseUrl, id, params) {
74
74
  if (params.recommended !== undefined) {
75
75
  formData.append('mcp_implementation[recommended]', params.recommended.toString());
76
76
  }
77
+ if (params.verified_no_remote_canonicals !== undefined) {
78
+ formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
79
+ }
77
80
  // Date overrides
78
81
  if (params.created_on_override !== undefined) {
79
82
  formData.append('mcp_implementation[created_on_override]', params.created_on_override);
@@ -45,6 +45,8 @@ export interface RailsImplementation {
45
45
  downloads_estimate_last_30_days?: number;
46
46
  downloads_estimate_total?: number;
47
47
  mcp_server_remotes_count?: number;
48
+ recommended?: boolean;
49
+ verified_no_remote_canonicals?: boolean;
48
50
  tags?: MCPServerTag[];
49
51
  remotes?: MCPServerRemote[];
50
52
  created_at?: string;
@@ -47,6 +47,7 @@ export function mapToUnifiedServer(impl) {
47
47
  package_name: impl.package_name,
48
48
  // Flags
49
49
  recommended: impl.recommended,
50
+ verified_no_remote_canonicals: mcpServer.verified_no_remote_canonicals,
50
51
  // Canonical URLs
51
52
  canonical_urls: impl.canonical,
52
53
  // Remote endpoints
@@ -49,6 +49,8 @@ export async function updateUnifiedMCPServer(apiKey, baseUrl, implementationId,
49
49
  // Flags
50
50
  if (params.recommended !== undefined)
51
51
  implParams.recommended = params.recommended;
52
+ if (params.verified_no_remote_canonicals !== undefined)
53
+ implParams.verified_no_remote_canonicals = params.verified_no_remote_canonicals;
52
54
  // Date overrides
53
55
  if (params.created_on_override !== undefined)
54
56
  implParams.created_on_override = params.created_on_override;
@@ -102,6 +102,9 @@ Example response:
102
102
  if (server.recommended !== undefined) {
103
103
  content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
104
104
  }
105
+ if (server.verified_no_remote_canonicals !== undefined) {
106
+ content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
107
+ }
105
108
  if (server.short_description) {
106
109
  content += `\n**Short Description:**\n${server.short_description}\n`;
107
110
  }
@@ -151,6 +151,10 @@ export declare function saveMCPImplementation(_server: Server, clientFactory: Cl
151
151
  };
152
152
  description: "Array of canonical URL configurations. Each entry must have: url (the canonical URL), scope (one of \"domain\", \"subdomain\", or \"url\"), and optional note for additional context.";
153
153
  };
154
+ verified_no_remote_canonicals: {
155
+ type: string;
156
+ description: "Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)";
157
+ };
154
158
  internal_notes: {
155
159
  type: string;
156
160
  description: "Admin-only notes. Not displayed publicly. Used for tracking submission sources, reviewer comments, etc.";
@@ -27,6 +27,8 @@ const PARAM_DESCRIPTIONS = {
27
27
  remote: 'Array of remote endpoint configurations for MCP servers. Each remote can have: id (existing remote ID or blank for new), url_direct, url_setup, transport (e.g., "sse"), host_platform (e.g., "smithery"), host_infrastructure (e.g., "cloudflare"), authentication_method (e.g., "open"), cost (e.g., "free"), status (defaults to "live"), display_name, and internal_notes.',
28
28
  // Canonical URLs
29
29
  canonical: 'Array of canonical URL configurations. Each entry must have: url (the canonical URL), scope (one of "domain", "subdomain", or "url"), and optional note for additional context.',
30
+ // Flags
31
+ verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
30
32
  // Other fields
31
33
  internal_notes: 'Admin-only notes. Not displayed publicly. Used for tracking submission sources, reviewer comments, etc.',
32
34
  };
@@ -88,6 +90,11 @@ const SaveMCPImplementationSchema = z.object({
88
90
  }))
89
91
  .optional()
90
92
  .describe(PARAM_DESCRIPTIONS.canonical),
93
+ // Flags
94
+ verified_no_remote_canonicals: z
95
+ .boolean()
96
+ .optional()
97
+ .describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
91
98
  // Other fields
92
99
  internal_notes: z.string().optional().describe(PARAM_DESCRIPTIONS.internal_notes),
93
100
  });
@@ -301,6 +308,11 @@ Use cases:
301
308
  },
302
309
  description: PARAM_DESCRIPTIONS.canonical,
303
310
  },
311
+ // Flags
312
+ verified_no_remote_canonicals: {
313
+ type: 'boolean',
314
+ description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
315
+ },
304
316
  // Other fields
305
317
  internal_notes: {
306
318
  type: 'string',
@@ -88,6 +88,10 @@ export declare function updateMCPServer(_server: Server, clientFactory: ClientFa
88
88
  type: string;
89
89
  description: "Mark this server as recommended by PulseMCP";
90
90
  };
91
+ verified_no_remote_canonicals: {
92
+ type: string;
93
+ description: "Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)";
94
+ };
91
95
  created_on_override: {
92
96
  type: string;
93
97
  description: "Override the automatically derived created date (ISO date string, e.g., \"2025-01-15\")";
@@ -16,6 +16,7 @@ const PARAM_DESCRIPTIONS = {
16
16
  package_registry: 'Package registry: npm, pypi, cargo, etc.',
17
17
  package_name: 'Package name on the registry (e.g., "@modelcontextprotocol/server-filesystem")',
18
18
  recommended: 'Mark this server as recommended by PulseMCP',
19
+ verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
19
20
  created_on_override: 'Override the automatically derived created date (ISO date string, e.g., "2025-01-15")',
20
21
  tags: 'Tags for the server. Replaces all existing tags when provided. Use tag slugs.',
21
22
  canonical_urls: 'Authoritative URLs for the server. Replaces all existing canonical URLs when provided.',
@@ -82,6 +83,10 @@ const UpdateMCPServerSchema = z.object({
82
83
  package_registry: z.string().optional().describe(PARAM_DESCRIPTIONS.package_registry),
83
84
  package_name: z.string().optional().describe(PARAM_DESCRIPTIONS.package_name),
84
85
  recommended: z.boolean().optional().describe(PARAM_DESCRIPTIONS.recommended),
86
+ verified_no_remote_canonicals: z
87
+ .boolean()
88
+ .optional()
89
+ .describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
85
90
  created_on_override: z.string().optional().describe(PARAM_DESCRIPTIONS.created_on_override),
86
91
  tags: z.array(z.string()).optional().describe(PARAM_DESCRIPTIONS.tags),
87
92
  canonical_urls: z
@@ -220,6 +225,10 @@ Create new provider:
220
225
  package_registry: { type: 'string', description: PARAM_DESCRIPTIONS.package_registry },
221
226
  package_name: { type: 'string', description: PARAM_DESCRIPTIONS.package_name },
222
227
  recommended: { type: 'boolean', description: PARAM_DESCRIPTIONS.recommended },
228
+ verified_no_remote_canonicals: {
229
+ type: 'boolean',
230
+ description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
231
+ },
223
232
  created_on_override: {
224
233
  type: 'string',
225
234
  description: PARAM_DESCRIPTIONS.created_on_override,
@@ -318,6 +327,9 @@ Create new provider:
318
327
  if (server.recommended !== undefined) {
319
328
  content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
320
329
  }
330
+ if (server.verified_no_remote_canonicals !== undefined) {
331
+ content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
332
+ }
321
333
  if (server.updated_at) {
322
334
  content += `**Updated:** ${server.updated_at}\n`;
323
335
  }
package/shared/types.d.ts CHANGED
@@ -124,6 +124,8 @@ export interface MCPServer {
124
124
  downloads_estimate_last_four_weeks?: number;
125
125
  visitors_estimate_total?: number;
126
126
  mcp_server_remotes_count?: number;
127
+ recommended?: boolean;
128
+ verified_no_remote_canonicals?: boolean;
127
129
  tags?: MCPServerTag[];
128
130
  remotes?: MCPServerRemote[];
129
131
  }
@@ -203,6 +205,7 @@ export interface SaveMCPImplementationParams {
203
205
  package_registry?: string;
204
206
  package_name?: string;
205
207
  recommended?: boolean;
208
+ verified_no_remote_canonicals?: boolean;
206
209
  created_on_override?: string;
207
210
  tags?: string[];
208
211
  remote?: RemoteEndpointParams[];
@@ -238,6 +241,7 @@ export interface CreateMCPImplementationParams {
238
241
  package_registry?: string;
239
242
  package_name?: string;
240
243
  recommended?: boolean;
244
+ verified_no_remote_canonicals?: boolean;
241
245
  created_on_override?: string;
242
246
  tags?: string[];
243
247
  remote?: RemoteEndpointParams[];
@@ -515,6 +519,7 @@ export interface UnifiedMCPServer {
515
519
  package_registry?: string;
516
520
  package_name?: string;
517
521
  recommended?: boolean;
522
+ verified_no_remote_canonicals?: boolean;
518
523
  canonical_urls?: CanonicalUrl[];
519
524
  remotes?: RemoteEndpoint[];
520
525
  tags?: MCPServerTag[];
@@ -564,6 +569,7 @@ export interface UpdateUnifiedMCPServerParams {
564
569
  package_registry?: string;
565
570
  package_name?: string;
566
571
  recommended?: boolean;
572
+ verified_no_remote_canonicals?: boolean;
567
573
  created_on_override?: string;
568
574
  tags?: string[];
569
575
  canonical_urls?: CanonicalUrl[];