Verifique com IA se seus jobs agendados realmente rodaram
Um agente lê uma lista de cron jobs com os horários da última execução e sinaliza, em linguagem clara, os atrasados e os que estão falhando.
- Conexão somente leitura
- Agendado
- Callback
- Limite de orçamento
Veja uma execução real
Uma execução real em 7 de out. de 2026, reproduzida. Modelo: openai/gpt-6-luna.
- Na filaorçamento de $0.025 reservado
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web off
- Conexãoops GET /jobs
- Resultado
ops GET → 200 - MicroVMmicroVM destroyed
- Concluída2 chamadas ao modelo, 3,246 tokensSaída gravada (em inglês)
Ops check at 2026-10-07 09:00 UTC: 2 jobs need attention; 6 are healthy.
- invoice-export — Overdue: last ran 2026-10-05 03:00 UTC, 54 hours ago; expected every 24 hours (overdue threshold: more than 36 hours). No run is recorded on Oct 6 or 7. Next step: investigate the missed runs and trigger an export if needed.
- sync-inventory — Failing: last ran 2026-10-07 08:30 UTC and status is
failed; error:401 Unauthorized from supplier API: token expired. Next step: renew the supplier API token and retry.
- Worker destruído$0.002811 cobrados, $0.022189 liberados
Execute você mesmo
Abra o exemplo no playground com a requisição inteira preenchida. Ele roda na sua própria conta, dentro do orçamento indicado, contra os mesmos sistemas de exemplo somente leitura.
Orçamento deste exemplo: $0.025
Como funciona
Falhas silenciosas de cron são as mais caras. O agente compara a última execução de cada job com o intervalo esperado e relata os jobs atrasados ou com falha, com as evidências. A API de jobs é somente leitura e informa o próprio relógio, então a resposta não depende do calendário do agente.
O que o agente pode e não pode fazer
As permissões fazem parte da requisição. Tudo o que não está listado aqui não está disponível para a execução.
| Configuração | Permitido |
|---|---|
| Conexões | ops: somente GET, em ephemer.al/api/samples/ops-api |
| Web | Desativado |
| Shell | Desativado |
| Arquivos | Nenhuma |
| Retenção zero de dados | Desativada: o registro é mantido por 30 dias |
| Orçamento | $0.025, um limite rígido |
| Tempo limite | 60 segundos |
As credenciais nunca entram na máquina: um broker as adiciona a cada chamada e aplica os métodos acima.
O código
Esta é a requisição exata que o exemplo envia. Defina EPHEMERAL_API_KEY com uma chave de membro da sua organização.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.jsonCorpo completo da requisição workflow.json
O mesmo corpo, com os arquivos inline.
{
"prompt": "Read GET /jobs on the ops connection. Use the 'now' value in the response as the current time. A job is overdue when more than 1.5 times expected_every_hours have passed since last_run_at. A job is failing when last_status is failed. Reply in Markdown, at most 150 words: one headline sentence, then a bullet for each overdue or failing job with its name, the evidence (times and error) and a likely next step. Do not list healthy jobs, just say how many there are. Use only what the data returns and never guess; if a call fails or a field is missing, say so.",
"connections": {
"ops": {
"type": "http",
"url": "https://ephemer.al/api/samples/ops-api",
"auth": {
"type": "bearer",
"token": "sample_read_key"
},
"allowed_methods": [
"GET"
],
"instructions": "GET /jobs returns now (the current time) and items with name, schedule, expected_every_hours, last_run_at, last_status, last_error, recent_statuses (newest first) and sometimes a note."
}
},
"shell": false,
"timeout_seconds": 60
}Este exemplo roda em um horário fixo: 0 * * * * em UTC. Um agendamento inicia um fluxo de trabalho salvo, então salve a requisição como fluxo de trabalho primeiro e depois crie o agendamento.