salesforce-metadata-mcp 2.0.0 → 2.1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ajay Semwal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/SECURITY.md ADDED
@@ -0,0 +1,106 @@
1
+ # Security Policy
2
+
3
+ ## Security Model
4
+
5
+ `salesforce-metadata-mcp` is a local MCP server. Understanding what it does and does not do:
6
+
7
+ **Credentials never leave your machine.** All Salesforce API calls are made directly from your local process to your Salesforce org. No credentials or metadata pass through Anthropic's servers or any third-party service.
8
+
9
+ **Claude sees tool results, not credentials.** The MCP protocol sends structured tool results (success/failure messages, component names) to Claude. Access tokens are never included in tool output.
10
+
11
+ **Zero outbound connections except Salesforce.** The package makes HTTP requests only to the `SF_INSTANCE_URL` you configure. There are no analytics, telemetry, or third-party API calls.
12
+
13
+ ---
14
+
15
+ ## Dependencies
16
+
17
+ This package intentionally uses a minimal dependency footprint:
18
+
19
+ | Package | Purpose | Why included |
20
+ |---------|---------|-------------|
21
+ | `@modelcontextprotocol/sdk` | MCP transport layer | Required to implement the MCP protocol |
22
+ | `jszip` | In-memory zip creation | Required for Metadata API zip-based deployment of Apex/LWC |
23
+ | `zod` | Input schema validation | Runtime type safety and input sanitization for all tool parameters |
24
+
25
+ **No HTTP client library is used.** All HTTP requests use the Node.js 18+ built-in `fetch` API. No `axios`, `got`, `node-fetch`, or similar library is included.
26
+
27
+ **No web framework is used.** The optional HTTP transport uses the Node.js built-in `http` module. No `express`, `fastify`, or similar library is included.
28
+
29
+ ---
30
+
31
+ ## Shell Access
32
+
33
+ This package optionally invokes the Salesforce CLI (`sf`) via `child_process.execSync` when the `SF_ALIAS` environment variable is set. This is the only shell access in the codebase.
34
+
35
+ **Protections in place:**
36
+
37
+ 1. **Input validation:** The alias value is validated against the regex `^[A-Za-z0-9_-]+$` before being passed to `execSync`. Any value containing spaces, semicolons, pipes, quotes, or other shell metacharacters is rejected with a clear error.
38
+
39
+ 2. **Minimal PATH:** The child process is spawned with `env: { PATH: process.env.PATH }` — no additional environment is inherited.
40
+
41
+ 3. **Timeout:** The `execSync` call has a 30-second timeout.
42
+
43
+ 4. **Clear opt-in:** This code path is only reached when `SF_ALIAS` is explicitly configured by the operator.
44
+
45
+ **To avoid shell access entirely:** Use OAuth refresh tokens (`SF_CLIENT_ID` + `SF_CLIENT_SECRET` + `SF_REFRESH_TOKEN`) or a static access token (`SF_ACCESS_TOKEN`). Neither of these strategies spawns any child process.
46
+
47
+ ---
48
+
49
+ ## Input Validation
50
+
51
+ All tool inputs are validated by Zod schemas before being used:
52
+
53
+ - **API names** are validated against Salesforce naming conventions (letters, numbers, underscores, appropriate suffixes like `__c`, `__mdt`, `__e`).
54
+ - **Large-content fields** (Apex code, HTML, JavaScript, CSS) have maximum length limits to prevent memory exhaustion.
55
+ - **URL fields** are validated as proper URLs.
56
+ - **Environment variables** are validated for maximum length: `SF_INSTANCE_URL` (255 chars), `SF_ALIAS` (50 chars), `SF_ACCESS_TOKEN` (4096 chars).
57
+ - **`SF_INSTANCE_URL` must be HTTPS.** HTTP URLs are rejected.
58
+
59
+ ---
60
+
61
+ ## Error Handling
62
+
63
+ - Error messages are sanitized before being returned to Claude. File system paths and stack traces are stripped.
64
+ - Access tokens are never included in error messages or logged to stderr.
65
+ - The `sanitizeError()` and `redactSensitive()` helpers are applied at all error boundaries.
66
+
67
+ ---
68
+
69
+ ## Supported Versions
70
+
71
+ | Version | Supported |
72
+ |---------|-----------|
73
+ | 2.1.x | ✅ Current |
74
+ | 2.0.x | ⚠️ Upgrade recommended |
75
+ | 1.x | ❌ No longer supported |
76
+
77
+ ---
78
+
79
+ ## Permissions Required
80
+
81
+ The Salesforce user account needs:
82
+
83
+ | Permission | Why |
84
+ |-----------|-----|
85
+ | Modify All Data / System Administrator | Required to create and deploy metadata via the Metadata API |
86
+ | Author Apex | Required for Apex class and trigger deployment |
87
+ | Customize Application | Required for custom objects, fields, and other metadata types |
88
+ | Manage Users | Required if creating permission sets and roles |
89
+
90
+ The minimum viable approach is a System Administrator profile in a sandbox or Developer Edition org. **Do not use production org System Administrator credentials unless you understand what you are deploying.**
91
+
92
+ ---
93
+
94
+ ## Reporting a Vulnerability
95
+
96
+ Please **do not** open a public GitHub issue for security vulnerabilities.
97
+
98
+ Report security issues by email to: **semwalajay@hotmail.com**
99
+
100
+ Include:
101
+ - A description of the vulnerability
102
+ - Steps to reproduce
103
+ - Potential impact
104
+ - Any suggested mitigations
105
+
106
+ You will receive an acknowledgment within 48 hours and a resolution timeline within 7 days for confirmed vulnerabilities.
package/dist/index.js CHANGED
@@ -1,52 +1,82 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
4
- import express from "express";
4
+ import { createServer } from "http";
5
5
  import { registerTools } from "./tools/index.js";
6
- // ─── Server init ──────────────────────────────────────────────────────────────
7
6
  const server = new McpServer({
8
7
  name: "salesforce-metadata-mcp",
9
- version: "2.0.0",
8
+ version: "2.1.0",
10
9
  });
11
10
  registerTools(server);
12
11
  // ─── Transport: stdio ─────────────────────────────────────────────────────────
13
12
  async function runStdio() {
14
13
  const transport = new StdioServerTransport();
15
14
  await server.connect(transport);
16
- console.error("Salesforce Metadata MCP server v2.0.0 running on stdio");
15
+ console.error("Salesforce Metadata MCP server v2.1.0 running on stdio");
17
16
  }
18
17
  // ─── Transport: HTTP ──────────────────────────────────────────────────────────
19
- async function runHTTP() {
20
- const app = express();
21
- app.use(express.json());
22
- app.post("/mcp", async (req, res) => {
23
- const transport = new StreamableHTTPServerTransport({
24
- sessionIdGenerator: undefined,
25
- enableJsonResponse: true,
18
+ function readBody(req) {
19
+ return new Promise((resolve, reject) => {
20
+ const chunks = [];
21
+ req.on("data", (chunk) => chunks.push(chunk));
22
+ req.on("end", () => {
23
+ try {
24
+ const raw = Buffer.concat(chunks).toString("utf-8");
25
+ resolve(raw ? JSON.parse(raw) : {});
26
+ }
27
+ catch {
28
+ reject(new Error("Invalid JSON body"));
29
+ }
26
30
  });
27
- res.on("close", () => transport.close());
28
- await server.connect(transport);
29
- await transport.handleRequest(req, res, req.body);
31
+ req.on("error", reject);
30
32
  });
31
- app.get("/health", (_req, res) => {
32
- res.json({ status: "ok", server: "salesforce-metadata-mcp", version: "2.0.0" });
33
+ }
34
+ async function runHTTP() {
35
+ const port = parseInt(process.env["PORT"] ?? "3000", 10);
36
+ const httpServer = createServer(async (req, res) => {
37
+ const url = req.url ?? "/";
38
+ if (url === "/health" && req.method === "GET") {
39
+ res.writeHead(200, { "Content-Type": "application/json" });
40
+ res.end(JSON.stringify({ status: "ok", server: "salesforce-metadata-mcp", version: "2.1.0" }));
41
+ return;
42
+ }
43
+ if (url === "/mcp" && req.method === "POST") {
44
+ let body;
45
+ try {
46
+ body = await readBody(req);
47
+ }
48
+ catch {
49
+ res.writeHead(400, { "Content-Type": "application/json" });
50
+ res.end(JSON.stringify({ error: "Invalid JSON body" }));
51
+ return;
52
+ }
53
+ const transport = new StreamableHTTPServerTransport({
54
+ sessionIdGenerator: undefined,
55
+ enableJsonResponse: true,
56
+ });
57
+ res.on("close", () => transport.close());
58
+ await server.connect(transport);
59
+ await transport.handleRequest(req, res, body);
60
+ return;
61
+ }
62
+ res.writeHead(404, { "Content-Type": "application/json" });
63
+ res.end(JSON.stringify({ error: "Not found" }));
33
64
  });
34
- const port = parseInt(process.env.PORT ?? "3000", 10);
35
- app.listen(port, () => {
36
- console.error(`Salesforce Metadata MCP server v2.0.0 running on http://localhost:${port}/mcp`);
65
+ httpServer.listen(port, () => {
66
+ console.error(`Salesforce Metadata MCP server v2.1.0 running on http://localhost:${port}/mcp`);
37
67
  });
38
68
  }
39
69
  // ─── Entry point ──────────────────────────────────────────────────────────────
40
- const transport = process.env.TRANSPORT ?? "stdio";
70
+ const transport = process.env["TRANSPORT"] ?? "stdio";
41
71
  if (transport === "http") {
42
72
  runHTTP().catch((err) => {
43
- console.error("Server error:", err);
73
+ console.error("Server error:", err instanceof Error ? err.message : String(err));
44
74
  process.exit(1);
45
75
  });
46
76
  }
47
77
  else {
48
78
  runStdio().catch((err) => {
49
- console.error("Server error:", err);
79
+ console.error("Server error:", err instanceof Error ? err.message : String(err));
50
80
  process.exit(1);
51
81
  });
52
82
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,iFAAiF;AAEjF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,yBAAyB;IAC/B,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtB,iFAAiF;AAEjF,KAAK,UAAU,QAAQ;IACrB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC1E,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,OAAO;IACpB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,yBAAyB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,qEAAqE,IAAI,MAAM,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC;AACnD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAChC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { z } from "zod";
2
2
  // ─── Shared sub-schemas ───────────────────────────────────────────────────────
3
3
  export const PicklistValueSchema = z.object({
4
- fullName: z.string().min(1).describe("API name for the picklist value (e.g. 'New')"),
5
- label: z.string().min(1).describe("Display label for the value"),
4
+ fullName: z.string().min(1).max(255).describe("API name for the picklist value (e.g. 'New')"),
5
+ label: z.string().min(1).max(255).describe("Display label for the value"),
6
6
  default: z.boolean().default(false).describe("Whether this is the default value"),
7
7
  isActive: z.boolean().optional().describe("Whether the value is active (default true)"),
8
8
  color: z.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe("Hex color code, e.g. '#FF0000'"),
9
- description: z.string().optional().describe("Optional description for the value"),
9
+ description: z.string().max(1000).optional().describe("Optional description for the value"),
10
10
  });
11
11
  export const ValueSetSchema = z.object({
12
12
  restricted: z.boolean().default(false).describe("If true, only values in the list are allowed"),
@@ -17,14 +17,15 @@ export const ValueSetSchema = z.object({
17
17
  export const CreateCustomObjectSchema = z.object({
18
18
  fullName: z
19
19
  .string()
20
- .min(1)
20
+ .min(1).max(80)
21
21
  .regex(/^[A-Za-z][A-Za-z0-9_]*__c$/, "Must end with __c, e.g. 'Invoice__c'")
22
22
  .describe("API name of the custom object, e.g. 'Invoice__c'"),
23
- label: z.string().min(1).describe("Singular label shown in the UI, e.g. 'Invoice'"),
24
- pluralLabel: z.string().min(1).describe("Plural label, e.g. 'Invoices'"),
25
- description: z.string().optional().describe("Optional description for the object"),
23
+ label: z.string().min(1).max(255).describe("Singular label shown in the UI, e.g. 'Invoice'"),
24
+ pluralLabel: z.string().min(1).max(255).describe("Plural label, e.g. 'Invoices'"),
25
+ description: z.string().max(1000).optional().describe("Optional description for the object"),
26
26
  nameFieldLabel: z
27
27
  .string()
28
+ .max(255)
28
29
  .default("Name")
29
30
  .describe("Label for the standard Name field, e.g. 'Invoice Name'"),
30
31
  nameFieldType: z
@@ -71,16 +72,16 @@ export const CreateCustomFieldSchema = z
71
72
  .object({
72
73
  objectName: z
73
74
  .string()
74
- .min(1)
75
+ .min(1).max(80)
75
76
  .describe("API name of the parent object, e.g. 'Account' or 'Invoice__c'"),
76
77
  fieldName: z
77
78
  .string()
78
- .min(1)
79
+ .min(1).max(80)
79
80
  .regex(/^[A-Za-z][A-Za-z0-9_]*__c$/, "Must end with __c, e.g. 'Status__c'")
80
81
  .describe("API name of the field, e.g. 'Status__c'"),
81
- label: z.string().min(1).describe("Display label for the field, e.g. 'Status'"),
82
+ label: z.string().min(1).max(255).describe("Display label for the field, e.g. 'Status'"),
82
83
  type: FieldTypeSchema.describe("Salesforce field type"),
83
- description: z.string().optional().describe("Optional description for the field"),
84
+ description: z.string().max(1000).optional().describe("Optional description for the field"),
84
85
  required: z.boolean().optional().describe("Whether the field is required on page layouts"),
85
86
  unique: z.boolean().optional().describe("Whether values must be unique (Text, Number, Email)"),
86
87
  externalId: z.boolean().optional().describe("Whether this field is an external ID"),
@@ -145,7 +146,7 @@ export const AddPicklistValuesSchema = z.object({
145
146
  }).strict();
146
147
  // ─── Create Flow ──────────────────────────────────────────────────────────────
147
148
  export const FlowVariableSchema = z.object({
148
- name: z.string().min(1).describe("Variable API name, e.g. 'myVariable'"),
149
+ name: z.string().min(1).max(80).describe("Variable API name, e.g. 'myVariable'"),
149
150
  dataType: z.enum(["String", "Number", "Boolean", "Date", "DateTime", "SObject"])
150
151
  .describe("Data type of the variable"),
151
152
  objectType: z.string().optional().describe("Object API name when dataType is SObject, e.g. 'Account'"),
@@ -731,11 +732,11 @@ export const CreateEmailTemplateSchema = z.object({
731
732
  senderName: z.string().optional().describe("Sender display name"),
732
733
  }).strict();
733
734
  export const CreateStaticResourceSchema = z.object({
734
- fullName: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Static resource API name, e.g. 'MyLibrary'"),
735
- contentType: z.string().default("text/plain").describe("MIME type, e.g. 'application/json', 'text/css', 'application/javascript'"),
736
- content: z.string().min(1).describe("The file content as a string (text, JSON, JS, CSS, etc.)"),
735
+ fullName: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Static resource API name, e.g. 'MyLibrary'"),
736
+ contentType: z.string().max(128).default("text/plain").describe("MIME type, e.g. 'application/json', 'text/css', 'application/javascript'"),
737
+ content: z.string().min(1).max(5_000_000).describe("The file content as a string (text, JSON, JS, CSS, etc.)"),
737
738
  cacheControl: z.enum(["Public", "Private"]).default("Public").describe("Cache control setting"),
738
- description: z.string().optional().describe("Description of this resource"),
739
+ description: z.string().max(1000).optional().describe("Description of this resource"),
739
740
  }).strict();
740
741
  export const CreateCustomNotificationTypeSchema = z.object({
741
742
  fullName: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Custom notification type API name"),
@@ -781,40 +782,40 @@ export const CreateDashboardSchema = z.object({
781
782
  }).strict();
782
783
  // ─── APEX DEVELOPMENT ────────────────────────────────────────────────────────
783
784
  export const CreateApexClassSchema = z.object({
784
- className: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Apex class name, e.g. 'AccountService'"),
785
- classBody: z.string().min(1).describe("Full Apex class source code including the class declaration"),
786
- apiVersion: z.string().default("62.0").describe("API version for this class, e.g. '62.0'"),
785
+ className: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Apex class name, e.g. 'AccountService'"),
786
+ classBody: z.string().min(1).max(1_000_000).describe("Full Apex class source code including the class declaration"),
787
+ apiVersion: z.string().max(10).default("62.0").describe("API version for this class, e.g. '62.0'"),
787
788
  }).strict();
788
789
  export const CreateApexTriggerSchema = z.object({
789
- triggerName: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Trigger name, e.g. 'AccountTrigger'"),
790
- objectName: z.string().min(1).describe("Object API name the trigger fires on, e.g. 'Account'"),
790
+ triggerName: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Trigger name, e.g. 'AccountTrigger'"),
791
+ objectName: z.string().min(1).max(80).describe("Object API name the trigger fires on, e.g. 'Account'"),
791
792
  events: z.array(z.enum(["before insert", "before update", "before delete",
792
793
  "after insert", "after update", "after delete", "after undelete"]))
793
794
  .min(1).describe("Trigger events, e.g. ['before insert', 'before update']"),
794
- triggerBody: z.string().min(1).describe("Full trigger body code (the code between the trigger { })"),
795
- apiVersion: z.string().default("62.0").describe("API version for this trigger"),
795
+ triggerBody: z.string().min(1).max(1_000_000).describe("Full trigger body code (the code between the trigger { })"),
796
+ apiVersion: z.string().max(10).default("62.0").describe("API version for this trigger"),
796
797
  }).strict();
797
798
  export const CreateApexTestClassSchema = z.object({
798
- className: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Test class name, e.g. 'AccountServiceTest'"),
799
- classBody: z.string().min(1).describe("Full test class source code including @isTest annotation and class declaration"),
800
- apiVersion: z.string().default("62.0").describe("API version for this test class"),
799
+ className: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Test class name, e.g. 'AccountServiceTest'"),
800
+ classBody: z.string().min(1).max(1_000_000).describe("Full test class source code including @isTest annotation and class declaration"),
801
+ apiVersion: z.string().max(10).default("62.0").describe("API version for this test class"),
801
802
  runAfterDeploy: z.boolean().default(false).describe("Immediately run the tests after deploying"),
802
803
  }).strict();
803
804
  export const RunApexTestsSchema = z.object({
804
- testClasses: z.array(z.string()).min(1).describe("List of test class names to run, e.g. ['AccountServiceTest', 'ContactTriggerTest']"),
805
+ testClasses: z.array(z.string().max(80)).min(1).describe("List of test class names to run, e.g. ['AccountServiceTest', 'ContactTriggerTest']"),
805
806
  waitMinutes: z.number().int().min(1).max(15).default(5).describe("Max minutes to wait for test results"),
806
807
  }).strict();
807
808
  export const ExecuteAnonymousApexSchema = z.object({
808
- apexCode: z.string().min(1).describe("Anonymous Apex code to execute, e.g. 'System.debug(Date.today());'"),
809
+ apexCode: z.string().min(1).max(1_000_000).describe("Anonymous Apex code to execute, e.g. 'System.debug(Date.today());'"),
809
810
  }).strict();
810
811
  // ─── LWC DEVELOPMENT ─────────────────────────────────────────────────────────
811
812
  export const CreateLwcSchema = z.object({
812
- componentName: z.string().min(1).regex(/^[a-z][a-zA-Z0-9]*$/, "Must start lowercase, no underscores or hyphens")
813
+ componentName: z.string().min(1).max(80).regex(/^[a-z][a-zA-Z0-9]*$/, "Must start lowercase, no underscores or hyphens")
813
814
  .describe("LWC component name in camelCase, e.g. 'accountCard', 'opportunityList'"),
814
- html: z.string().min(1).describe("HTML template content (the content of the .html file, including <template> tags)"),
815
- javascript: z.string().min(1).describe("JavaScript controller content (the content of the .js file, including import statements and class)"),
816
- css: z.string().optional().describe("Optional CSS styles content"),
817
- description: z.string().optional().describe("Description of the component"),
815
+ html: z.string().min(1).max(500_000).describe("HTML template content (the content of the .html file, including <template> tags)"),
816
+ javascript: z.string().min(1).max(500_000).describe("JavaScript controller content (the content of the .js file, including import statements and class)"),
817
+ css: z.string().max(200_000).optional().describe("Optional CSS styles content"),
818
+ description: z.string().max(1000).optional().describe("Description of the component"),
818
819
  targets: z.array(z.enum([
819
820
  "lightning__AppPage",
820
821
  "lightning__RecordPage",
@@ -829,11 +830,11 @@ export const CreateLwcSchema = z.object({
829
830
  apiVersion: z.string().default("62.0").describe("API version for this component"),
830
831
  }).strict();
831
832
  export const UpdateLwcSchema = z.object({
832
- componentName: z.string().min(1).regex(/^[a-z][a-zA-Z0-9]*$/).describe("Existing LWC component name to update"),
833
- html: z.string().optional().describe("Updated HTML template (leave undefined to keep existing)"),
834
- javascript: z.string().optional().describe("Updated JavaScript controller (leave undefined to keep existing)"),
835
- css: z.string().optional().describe("Updated CSS (leave undefined to keep existing)"),
836
- apiVersion: z.string().default("62.0").describe("API version"),
833
+ componentName: z.string().min(1).max(80).regex(/^[a-z][a-zA-Z0-9]*$/).describe("Existing LWC component name to update"),
834
+ html: z.string().max(500_000).optional().describe("Updated HTML template (leave undefined to keep existing)"),
835
+ javascript: z.string().max(500_000).optional().describe("Updated JavaScript controller (leave undefined to keep existing)"),
836
+ css: z.string().max(200_000).optional().describe("Updated CSS (leave undefined to keep existing)"),
837
+ apiVersion: z.string().max(10).default("62.0").describe("API version"),
837
838
  }).strict();
838
839
  // ─── EXPERIENCE CLOUD ────────────────────────────────────────────────────────
839
840
  export const CreateExperienceSiteSchema = z.object({
@@ -857,54 +858,54 @@ export const CreateExperiencePageSchema = z.object({
857
858
  }).strict();
858
859
  // ─── AGENTFORCE ───────────────────────────────────────────────────────────────
859
860
  export const CreateAgentSchema = z.object({
860
- agentName: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Agent API name, e.g. 'SupportAgent'"),
861
- label: z.string().min(1).describe("Agent display name"),
862
- description: z.string().optional().describe("Agent description shown to users"),
861
+ agentName: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Agent API name, e.g. 'SupportAgent'"),
862
+ label: z.string().min(1).max(255).describe("Agent display name"),
863
+ description: z.string().max(1000).optional().describe("Agent description shown to users"),
863
864
  type: z.enum(["Default", "EinsteinCopilot"]).default("EinsteinCopilot").describe("Agent type"),
864
- company: z.string().optional().describe("Company name for the agent's context"),
865
- persona: z.string().optional().describe("Agent persona description, e.g. 'A helpful customer service representative'"),
865
+ company: z.string().max(255).optional().describe("Company name for the agent's context"),
866
+ persona: z.string().max(5000).optional().describe("Agent persona description, e.g. 'A helpful customer service representative'"),
866
867
  tone: z.enum(["Formal", "Neutral", "Casual"]).default("Neutral").describe("Communication tone"),
867
- instructions: z.string().optional().describe("System-level instructions for the agent"),
868
+ instructions: z.string().max(10000).optional().describe("System-level instructions for the agent"),
868
869
  }).strict();
869
870
  export const CreateAgentTopicSchema = z.object({
870
- agentName: z.string().min(1).describe("Parent agent API name"),
871
- topicName: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Topic API name, e.g. 'OrderManagement'"),
872
- label: z.string().min(1).describe("Topic label"),
873
- description: z.string().min(1).describe("What this topic covers"),
874
- scope: z.string().min(1).describe("Scope of this topic — what kind of requests it handles"),
875
- instructions: z.string().optional().describe("Step-by-step instructions for handling this topic"),
876
- actions: z.array(z.string()).optional().describe("Action API names to associate with this topic"),
871
+ agentName: z.string().min(1).max(80).describe("Parent agent API name"),
872
+ topicName: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Topic API name, e.g. 'OrderManagement'"),
873
+ label: z.string().min(1).max(255).describe("Topic label"),
874
+ description: z.string().min(1).max(5000).describe("What this topic covers"),
875
+ scope: z.string().min(1).max(5000).describe("Scope of this topic — what kind of requests it handles"),
876
+ instructions: z.string().max(10000).optional().describe("Step-by-step instructions for handling this topic"),
877
+ actions: z.array(z.string().max(80)).optional().describe("Action API names to associate with this topic"),
877
878
  }).strict();
878
879
  export const CreateAgentActionSchema = z.object({
879
- agentName: z.string().min(1).describe("Parent agent API name"),
880
- topicName: z.string().min(1).describe("Parent topic API name"),
881
- actionName: z.string().min(1).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Action API name"),
882
- label: z.string().min(1).describe("Action label"),
883
- description: z.string().min(1).describe("What this action does"),
880
+ agentName: z.string().min(1).max(80).describe("Parent agent API name"),
881
+ topicName: z.string().min(1).max(80).describe("Parent topic API name"),
882
+ actionName: z.string().min(1).max(80).regex(/^[A-Za-z][A-Za-z0-9_]*$/).describe("Action API name"),
883
+ label: z.string().min(1).max(255).describe("Action label"),
884
+ description: z.string().min(1).max(5000).describe("What this action does"),
884
885
  type: z.enum(["Flow", "ApexClass", "PromptTemplate", "DataCategoryGroup", "ExternalService"])
885
886
  .describe("Action type"),
886
- reference: z.string().min(1).describe("API name of the Flow, Apex class, or Prompt Template to invoke"),
887
+ reference: z.string().min(1).max(255).describe("API name of the Flow, Apex class, or Prompt Template to invoke"),
887
888
  inputs: z.array(z.object({
888
- name: z.string().describe("Input parameter name"),
889
- value: z.string().describe("Value or reference, e.g. '{!Agent.Topic.Entities.accountName}'"),
889
+ name: z.string().max(255).describe("Input parameter name"),
890
+ value: z.string().max(1000).describe("Value or reference, e.g. '{!Agent.Topic.Entities.accountName}'"),
890
891
  })).optional().describe("Input parameter mappings"),
891
892
  }).strict();
892
893
  // ─── MCP SERVER MANAGEMENT ───────────────────────────────────────────────────
893
894
  export const CreateMcpServerSchema = z.object({
894
- serverName: z.string().min(1).describe("Name for the new MCP server, e.g. 'my-salesforce-server'"),
895
- outputDirectory: z.string().min(1).describe("Absolute path to directory where files will be created, e.g. 'C:/projects/my-server'"),
896
- description: z.string().optional().describe("Server description"),
897
- salesforceInstanceUrl: z.string().optional().describe("Salesforce instance URL to pre-configure, e.g. 'https://myorg.salesforce.com'"),
895
+ serverName: z.string().min(1).max(214).describe("Name for the new MCP server, e.g. 'my-salesforce-server'"),
896
+ outputDirectory: z.string().min(1).max(1024).describe("Absolute path to directory where files will be created, e.g. 'C:/projects/my-server'"),
897
+ description: z.string().max(1000).optional().describe("Server description"),
898
+ salesforceInstanceUrl: z.string().max(255).optional().describe("Salesforce instance URL to pre-configure, e.g. 'https://myorg.salesforce.com'"),
898
899
  }).strict();
899
900
  export const CreateMcpToolSchema = z.object({
900
- projectDirectory: z.string().min(1).describe("Absolute path to the MCP server project directory"),
901
- toolName: z.string().min(1).describe("Tool API name, e.g. 'get_account_data'"),
902
- toolDescription: z.string().min(1).describe("Detailed description of what the tool does"),
901
+ projectDirectory: z.string().min(1).max(1024).describe("Absolute path to the MCP server project directory"),
902
+ toolName: z.string().min(1).max(80).describe("Tool API name, e.g. 'get_account_data'"),
903
+ toolDescription: z.string().min(1).max(2000).describe("Detailed description of what the tool does"),
903
904
  inputSchema: z.record(z.unknown()).describe("JSON Schema for the tool's input parameters"),
904
- handlerCode: z.string().min(1).describe("TypeScript handler function body code"),
905
+ handlerCode: z.string().min(1).max(100_000).describe("TypeScript handler function body code"),
905
906
  }).strict();
906
907
  export const ListMcpToolsSchema = z.object({
907
- projectDirectory: z.string().min(1).describe("Absolute path to the MCP server project directory"),
908
+ projectDirectory: z.string().min(1).max(1024).describe("Absolute path to the MCP server project directory"),
908
909
  }).strict();
909
910
  // ─── EXTERNAL APPS & INTEGRATIONS ────────────────────────────────────────────
910
911
  export const CreateConnectedAppSchema = z.object({