Croncool

Inspecione trabalhos agendados, execuções, workflows duráveis e a saúde dos webhooks; execute um trabalho confirmado.

Documentação

Drive seus trabalhos agendados a partir do seu próprio código: uma API REST com chaves com escopo e limites de taxa por chave, o histórico completo de execução de cada execução e webhooks assinados quando algo acontece.

Chaves de API

Obtenha uma chave e autentique

A API REST do Cron permite que seu próprio backend faça tudo o que o painel faz com suas tarefas agendadas: criá-las e editá-las, executar uma imediatamente e ler o que aconteceu em cada execução passada.

Abra seu projeto no painel do Cron e crie uma chave de API em Chaves de API. O segredo é mostrado uma vez, quando a chave é criada, e nunca mais — guarde-o em um local seguro. Uma chave pertence a um único projeto, então o projeto é implícito pela chave e nunca precisa ser enviado.

Autentique cada requisição com autenticação básica HTTP contendo apenas o segredo da chave, codificado em base64, no cabeçalho Authorization.

# The Authorization header is HTTP Basic auth carrying only the key secret,
# with no username and no colon.
Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)

Todo endpoint fica sob https://api.cron.cool. Requisições feitas com uma chave são limitadas por chave; exceder o limite retorna 429.

Início rápido

Suas três primeiras chamadas

Liste as tarefas do seu projeto, agende uma nova e leia seu histórico de execução.

# List the cron jobs of the project the key belongs to
curl https://api.cron.cool/api/jobs \
  -H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"

# Create a job that calls your endpoint every five minutes.
# expression is an EventBridge Scheduler expression — rate(5 minutes) or
# cron(0/5 * * * ? *), not a five-field unix crontab line.
curl -X POST https://api.cron.cool/api/jobs \
  -H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "warm-cache",
    "type": "webhook",
    "expression": "rate(5 minutes)",
    "url": "https://example.com/warm-cache",
    "httpMethod": "POST",
    "contentType": "application/json",
    "input": { "reason": "scheduled warm-up" }
  }'

# Read the last executions of that job
curl https://api.cron.cool/api/jobs/JOB_ID/executions?limit=20 \
  -H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"

Navegue pela referência completa da API — cada endpoint com seus parâmetros, corpo da requisição, respostas e escopo necessário.

CLI

Interface de linha de comando

Os mesmos projetos, tarefas e status de execução estão disponíveis no seu terminal através do croncool CLI. Instale-o globalmente com npm ou execute-o ad hoc com npx.

A autenticação é um comando: croncool login abre seu navegador para entrar na sua conta Croncool e armazena uma sessão para comandos posteriores — sem chave de API para colar.

# Install once, globally
npm install -g croncool
# or run it ad hoc without installing
npx croncool --help

# Log in — opens your browser to sign in and stores a session
croncool login

# List your projects with their ids
croncool projects list

# The jobs of one project, with schedule and id
croncool jobs list --projectId PROJECT_ID

# One job's schedule, target and last execution status
croncool jobs read JOB_ID

# Fire a job right now
croncool jobs execute JOB_ID

O CLI é open source em github.com/croncool/cli e publicado como croncool no npm. Execute qualquer comando com --help para ver suas opções.

Escopos

Menor privilégio por padrão

Cada chave carrega uma lista de escopos, então uma integração que só precisa observar suas tarefas nunca obtém a capacidade de alterá-las. Novas chaves começam somente leitura; amplie-as explicitamente no painel. Uma requisição cuja chave não possui o escopo que um endpoint exige é recusada com 403.

  • jobs:readListe suas tarefas cron e leia uma única tarefa.
  • jobs:writeCrie, atualize e exclua tarefas, e execute uma sob demanda.
  • executions:readLeia o histórico de execução de uma tarefa.
  • workflows:readLeia execuções de workflow hospedado, etapas, eventos e hooks.
  • workflows:writeCrie eventos de workflow, enfileire e despache trabalho, cancele e reproduza execuções.

Os escopos workflows:read e workflows:write controlam os endpoints que o runtime de workflow hospedado chama em seu nome. A referência em /api/ cobre os endpoints de tarefa e assinatura de webhook que você mesmo chama; os endpoints de workflow não fazem parte dela.

Conector MCP

Use o Croncool a partir do Claude e ChatGPT

O conector MCP remoto do Croncool permite que um assistente inspecione os projetos, tarefas, execuções, workflows duráveis e a saúde de entrega de webhooks já disponíveis para sua organização conectada. Adicione a mesma URL de produção em qualquer host que suporte MCP remoto sobre HTTP:

https://mcp.cron.cool/mcp

Escolha a opção do host para adicionar um conector personalizado ou servidor MCP, cole essa URL e conclua a tela de entrada e consentimento OAuth do Croncool. Nunca cole uma chave de API em uma conversa. OAuth mantém cada chamada dentro da organização e dos escopos aprovados para essa conta conectada.

Ferramentas disponíveis

  • list_projectsEncontre projetos acessíveis e seus ids exatos.
  • list_jobsNavegue por agendamentos de tarefas seguros e origens de destino dentro da organização autenticada.
  • get_jobInspecione o agendamento, método, origem de destino e status mais recente de uma tarefa.
  • get_job_runsRevise o status de execução limitado, código HTTP, duração e metadados de tempo.
  • list_workflowsResuma contagens de execuções de workflow hospedado para um projeto exato.
  • list_workflow_runsNavegue por status de workflow seguro e metadados de tempo.
  • get_workflow_runInspecione uma execução de workflow e um rastreamento de etapas limitado sem payloads.
  • list_webhook_subscriptionsAudite origens de endpoints, filtros de eventos e saúde de entrega sem segredos.
  • show_project_overviewRenderize uma visão geral limitada de projeto e tarefa em hosts MCP compatíveis.
  • run_jobExecute uma tarefa existente agora após confirmação explícita; cada chamada pode causar efeitos reais a jusante.

Limite seguro de dados

Os resultados do conector usam listas de permissão campo a campo. Entradas de requisição de tarefa, userinfo da URL de destino, caminhos, consultas e fragmentos, corpos de resposta de execução e erros, entradas e saídas de workflow, caminhos e consultas de endpoints de webhook, segredos de assinatura, credenciais, tokens e campos de propriedade da organização nunca são visíveis ao modelo. Destinos de destino e webhook são reduzidos à sua origem HTTP ou HTTPS.

Executando uma tarefa agora

run_job é a única ferramenta do conector que altera o estado. Ela invoca a requisição já configurada em uma tarefa exata. Esse serviço a jusante pode gravar dados, enviar mensagens, cobrar por trabalho ou acionar outro terceiro. O Croncool não adiciona uma chave de idempotência ou timeout de aplicação, então o resultado pode ser desconhecido após um timeout de transporte e repetir a chamada pode duplicar efeitos. O assistente deve primeiro mostrar a tarefa exata e a origem de destino, pedir confirmação explícita, invocá-la uma vez e usar get_job_runs para verificar o resultado registrado em vez de tentar novamente automaticamente.

Exemplos de solicitações

  • “Liste meus projetos Croncool e mostre a visão geral do primeiro projeto.”
  • “Mostre execuções com falha do workflow nightly-sync neste projeto e inspecione a falha mais recente.”
  • “Audite minhas assinaturas de webhook e sinalize qualquer uma desabilitada após falhas repetidas de entrega.”

Habilidades do Agente

Ensine seu agente de codificação a usar o Croncool

O Croncool oferece Habilidades do Agente — guias que seguem o padrão agentskills.io e ensinam agentes de codificação a inspecionar e operar tarefas agendadas com o croncool CLI e o conector MCP, em vez de adivinhar comandos e ferramentas.

# Install the Croncool skills into your coding agent
npx skills add croncool/skills

Um comando instala as habilidades no Claude Code, Cursor, Codex, Gemini CLI e em qualquer outro agente que siga o padrão Skills. O CLI também inclui os mesmos guias, com versão correspondente aos comandos que ele fornece: croncool skills get <name> imprime um sob demanda.

As habilidades são open source em github.com/croncool/skills. Usuários do Claude também podem instalar o plugin Croncool Claude, que agrupa o conector junto com as habilidades: github.com/croncool/claude-plugin.

Webhooks

Webhooks assinados

Adicione uma assinatura de webhook ao seu projeto e o Cron envia via POST os eventos que você escolheu para o seu servidor conforme eles acontecem.

  • job.createdUma tarefa foi criada.
  • job.updatedUma tarefa foi editada, pausada ou retomada.
  • job.deletedUma tarefa foi excluída.
  • job.executedUma tarefa foi executada; o payload é a execução, com seu status, status http, duração e corpo de resposta truncado.
POST https://your-server.com/cron-webhook

{
  "event": "job.executed",
  "timestamp": 1719000000,
  "data": { "...": "..." }
}

Verifique a assinatura

Cada entrega carrega um cabeçalho X-Croncool-Signature no formato t=timestamp,v1=signature, onde a assinatura é um HMAC-SHA256 de timestamp.body com chave no segredo da assinatura mostrado a você uma vez quando a assinatura foi criada. Recalcule-o sobre o corpo bruto e compare antes de confiar no payload.

import crypto from 'node:crypto'

// body must be the RAW request body, byte for byte
function verify(header, body, secret) {
  const [t, v1] = (header || '').split(',').map(part => part.split('=')[1])
  if (!t || !v1) return false

  const expected = crypto
    .createHmac('sha256', secret)
    .update(\`${t}.${body}\`)
    .digest('hex')

  // timingSafeEqual throws on a length mismatch, so a malformed signature
  // has to be rejected before the comparison rather than by it.
  if (v1.length !== expected.length) return false

  return crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
}

A entrega é uma tentativa de melhor esforço com timeout de cinco segundos e sem novas tentativas, então responda 2xx rapidamente e faça o trabalho de forma assíncrona. Um endpoint que falha vinte vezes seguidas é desabilitado automaticamente e precisa ser reabilitado no painel.

Comece a construir