mavis_cron_create
Create a scheduled cron job for recurring tasks or reminders by specifying an agent, schedule, and prompt.
Instructions
Create a scheduled cron job (self-reminder, recurring task, etc.)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| agentName | Yes | Agent name or ID to own the cron task | |
| cronName | Yes | Cron task name | |
| schedule | Yes | Cron schedule expression (e.g. "*/5 * * * *" for every 5 min) | |
| prompt | Yes | Prompt to send when the cron fires | |
| timezone | No | Timezone (e.g. Asia/Shanghai) | |
| sessionMode | No | Session mode: sessionId or new | |
| sessionId | No | Session ID when sessionMode=sessionId | |
| disable | No | Create the task disabled |
Implementation Reference
- src/index.js:300-323 (registration)Tool spec for 'mavis_cron_create' registered in the tools array. Defines name, description, inputSchema (Zod), outputMode, execFn (execMavis), and buildArgs (constructs CLI args 'cron create ...').
{ name: 'mavis_cron_create', description: 'Create a scheduled cron job (self-reminder, recurring task, etc.)', inputSchema: z.object({ agentName: z.string().describe('Agent name or ID to own the cron task'), cronName: z.string().describe('Cron task name'), schedule: z.string().describe('Cron schedule expression (e.g. "*/5 * * * *" for every 5 min)'), prompt: z.string().describe('Prompt to send when the cron fires'), timezone: z.string().optional().describe('Timezone (e.g. Asia/Shanghai)'), sessionMode: z.enum(['sessionId', 'new']).optional().describe('Session mode: sessionId or new'), sessionId: z.string().optional().describe('Session ID when sessionMode=sessionId'), disable: z.boolean().optional().describe('Create the task disabled') }), execFn: execMavis, outputMode: OUTPUT_RAW, buildArgs: ({ agentName, cronName, schedule, prompt, timezone, sessionMode, sessionId, disable }) => { const args = ['cron', 'create', agentName, cronName, '--schedule', schedule, '--prompt', prompt]; if (timezone) args.push('--timezone', timezone); if (sessionMode) args.push('--session-mode', sessionMode); if (sessionId) args.push('--session-id', sessionId); if (disable) args.push('--disable'); return args; } }, - src/index.js:303-312 (schema)Input schema (Zod) for mavis_cron_create: required fields agentName, cronName, schedule, prompt; optional fields timezone, sessionMode, sessionId, disable.
inputSchema: z.object({ agentName: z.string().describe('Agent name or ID to own the cron task'), cronName: z.string().describe('Cron task name'), schedule: z.string().describe('Cron schedule expression (e.g. "*/5 * * * *" for every 5 min)'), prompt: z.string().describe('Prompt to send when the cron fires'), timezone: z.string().optional().describe('Timezone (e.g. Asia/Shanghai)'), sessionMode: z.enum(['sessionId', 'new']).optional().describe('Session mode: sessionId or new'), sessionId: z.string().optional().describe('Session ID when sessionMode=sessionId'), disable: z.boolean().optional().describe('Create the task disabled') }), - src/index.js:32-53 (helper)execMavis helper: spawns the mavis CLI binary with args, pipes stdin, captures stdout/stderr, resolves with trimmed stdout on success. The cron command doesn't need session injection since 'cron' is not in SESSION_COMMANDS set.
function execMavis(args, input = '') { return new Promise((resolve, reject) => { const SESSION_COMMANDS = new Set(['communication', 'session', 'spawn']); const sessionId = process.env.__MAVIS_PARENT_SESSION_ID; const subcmd = args[0]; const needsSession = SESSION_COMMANDS.has(subcmd) && sessionId; const finalArgs = needsSession ? [...args, '--session', sessionId] : args; const proc = spawn(MAVIS_BIN, finalArgs, { stdio: ['pipe', 'pipe', 'pipe'] }); let stdout = ''; let stderr = ''; proc.stdout.on('data', d => stdout += d.toString()); proc.stderr.on('data', d => stderr += d.toString()); proc.on('close', code => { if (code === 0) resolve(stdout.trim()); else reject(new Error(stderr.split('\n')[0] || `exit code ${code}`)); }); proc.on('error', reject); if (input) proc.stdin.write(input), proc.stdin.end(); }); } - src/index.js:77-92 (handler)runTool handler: dispatches tool execution. For mavis_cron_create (which has execFn=execMavis), it calls execMavis with the CLI args built by buildArgs, then returns the raw output string (OUTPUT_RAW).
function runTool(spec, parsedArgs) { const { execFn, outputMode, stdin, buildArgs } = spec; const args = buildArgs(parsedArgs); const input = typeof stdin === 'function' ? stdin(parsedArgs) : stdin; const execPromise = execFn ? execMavis(args, input || '') : execMavisJSON(args); return execPromise.then(result => { const text = outputMode === OUTPUT_RAW ? (result || '') : JSON.stringify(result, null, 2); return [{ type: 'text', text }]; }); }