loaditout.ai
SkillsPacksTrendingLeaderboardAPI DocsBlogSubmitRequestsCompareAgentsXPrivacyDisclaimer
{}loaditout.ai
Skills & MCPPacksBlog

clocktower

MCP Tool

sathergate/clocktower

Cron jobs for Next.js. Serverless-native.

Install

$ npx loaditout add sathergate/clocktower

Platform-specific configuration:

.claude/settings.json
{
  "mcpServers": {
    "clocktower": {
      "command": "npx",
      "args": [
        "-y",
        "clocktower"
      ]
    }
  }
}

Add the config above to .claude/settings.json under the mcpServers key.

About

croncall

Cron jobs for Next.js. Serverless-native.

Zero runtime dependencies. TypeScript-first. Works with Vercel Cron out of the box.

Install
npm install croncall
Quick Start
1. Define your jobs
// lib/jobs.ts
import { createClockTower } from "croncall";

export const tower = createClockTower({
  jobs: {
    syncUsers: {
      schedule: "0 * * * *", // every hour
      handler: async () => {
        await db.syncUsersFromExternalAPI();
      },
      description: "Sync users from external API",
      retry: { maxAttempts: 3, backoff: "exponential" },
      timeout: 30_000,
    },
    sendDigest: {
      schedule: "0 9 * * 1", // Mondays at 9 AM UTC
      handler: async () => {
        await email.sendWeeklyDigest();
      },
      description: "Send weekly digest email",
    },
    cleanupSessions: {
      schedule: "@daily",
      handler: async () => {
        await db.deleteExpiredSessions();
      },
    },
  },
  secret: process.env.CRON_SECRET,
});
2. Create a route handler
// app/api/cron/route.ts
import { createCronHandler } from "croncall/next";
import { tower } from "@/lib/jobs";

export const GET = createCronHandler(tower);
3. Deploy

Add cron schedules to vercel.json:

{
  "crons": [
    { "path": "/api/cron?job=syncUsers", "schedule": "0 * * * *" },
    { "path": "/api/cron?job=sendDigest", "schedule": "0 9 * * 1" },
    { "path": "/api/cron?job=cleanupSessions", "schedule": "0 0 * * *" }
  ]
}

Or generate it programmatically:

import { generateVercelCron } from "croncall/next";
import { tower } from "./lib/jobs";

console.log(JSON.stringify(generateVercelCron(tower, "/api/cron"), null, 2));
Job Definition

Each job has:

| Field | Type | Required | Description | |---------------|--------------------------------|----------|--------------------------------------| | schedule | string

Tags

ai-codingmcpnextjstypescript

Reviews

Loading reviews...

Quality Signals

0
Installs
Last updated17 days ago
Security: AREADME

Safety

Risk Levelmedium
Data Access
read
Network Accessnone

Details

Sourcegithub-crawl
Last commit3/27/2026
View on GitHub→

Embed Badge

[![Loaditout](https://loaditout.ai/api/badge/sathergate/clocktower)](https://loaditout.ai/skills/sathergate/clocktower)