opnsense_acme_add_account
Register a new ACME account with a certificate authority to automate certificate renewal and configuration.
Instructions
Register a new ACME account with a certificate authority (Let's Encrypt, ZeroSSL, etc.). Run opnsense_acme_apply afterwards.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Account name (e.g. 'Let\'s Encrypt Production') | |
| Yes | Contact email address for the account | ||
| ca | No | Certificate authority (default: letsencrypt) |
Implementation Reference
- src/tools/acme.ts:359-370 (handler)Handler for opnsense_acme_add_account: parses input via AddAccountSchema, sends POST to /acmeclient/accounts/add with account fields (enabled, name, email, ca), returns JSON result.
case "opnsense_acme_add_account": { const parsed = AddAccountSchema.parse(args); const result = await client.post("/acmeclient/accounts/add", { account: { enabled: "1", name: parsed.name, email: parsed.email, ca: parsed.ca, }, }); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } - src/tools/acme.ts:101-114 (schema)Zod schema for input validation: requires name (non-empty) and email (valid email), optional ca defaults to letsencrypt.
const AddAccountSchema = z.object({ name: z.string().min(1, "Account name is required"), email: z.string().email("Valid email address is required"), ca: z.enum([ "letsencrypt", "letsencrypt-staging", "zerossl", "buypass", "buypass-test", "sslcom", "google", "googletest", ], { message: "Unsupported certificate authority" }).optional().default("letsencrypt"), }); - src/tools/acme.ts:160-177 (registration)Tool registration in acmeToolDefinitions array with name, description, and inputSchema (name, email required; ca optional enum).
{ name: "opnsense_acme_add_account", description: "Register a new ACME account with a certificate authority (Let's Encrypt, ZeroSSL, etc.). Run opnsense_acme_apply afterwards.", inputSchema: { type: "object" as const, properties: { name: { type: "string", description: "Account name (e.g. 'Let\\'s Encrypt Production')" }, email: { type: "string", description: "Contact email address for the account" }, ca: { type: "string", enum: ["letsencrypt", "letsencrypt-staging", "zerossl", "buypass", "buypass-test", "sslcom", "google", "googletest"], description: "Certificate authority (default: letsencrypt)", }, }, required: ["name", "email"], }, }, - src/index.ts:65-65 (registration)Maps the 'opnsense_acme_add_account' tool name to the handleAcmeTool handler function in the toolHandlers registry.
for (const def of acmeToolDefinitions) toolHandlers.set(def.name, handleAcmeTool);