{"asOf":"2026-10-03","doesNotChangeDepotPicks":true,"doesNotChangePriceSort":true,"doesNotRescore":true,"caps":{"needs":6,"freePerNeed":3,"caseStudies":3},"class":{"id":"scheduled-ops","name":"Scheduled and ops agent","definition":"Runs a job on a queue or a clock, is safe to retry, and alerts when the job or its traces go dark.","needs":{"jtbdIds":["event-driven-agent-jobs","serverless-agent-queue","agent-dlq-retry","durable-idempotency","llm-cost-anomaly-alerts","agent-error-observability","progressive-agent-rollout"],"freeKinds":["dev_tool"],"capabilityTags":["serverless","cost"],"plain":["Idempotency key on every retry","An alert when trace ingestion drops"]},"failureModeIds":["runaway-spend","partial-tool-success","tool-loop","observability-gap","non-determinism"],"exampleTasks":["Retry a failed job without applying the side effect twice","Alert when the night job's trace count falls"]},"needsConsidered":["event-driven-agent-jobs","serverless-agent-queue","agent-dlq-retry","durable-idempotency","llm-cost-anomaly-alerts","agent-error-observability"],"needsOmitted":["progressive-agent-rollout"],"jobs":[{"jtbdId":"event-driven-agent-jobs","decide":{"available":true,"unavailableReason":null,"providerId":"inngest","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"trigger-dev","cite":"Depot Pick for event-driven-agent-jobs: inngest (asOf 2026-09-14). See GET /api/jtbds/event-driven-agent-jobs + GET /api/methodology.","citePath":"/api/jtbds/event-driven-agent-jobs"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":{"providerId":"inngest","providerName":"Inngest","skuId":"inngest-free","item":"Free","plan":"Free — 50k executions","unit":"usd_per_month","amountUsd":0,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://www.inngest.com/pricing","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-27","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"inngest-free","item":"Free","plan":"Free — 50k executions","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.inngest.com/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."}},"representativeQuote":{"skuId":"inngest-free","item":"Free","plan":"Free — 50k executions","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.inngest.com/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."},"reason":"Nothing was compared. mixed_units: usd_per_100k_messages and usd_per_million_events are both stored. They were not ranked together and were not converted. Monthly plans were not included. cheapest stays null. pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. mixed_units: usd_per_100k_messages and usd_per_million_events are both stored. They were not ranked together and were not converted. Monthly plans were not included. cheapest stays null. pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"hatchet","name":"Hatchet","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/hatchet-dev/hatchet/main/LICENSE"},{"id":"upstash-qstash-free","name":"Upstash QStash Free plan","kind":"free_queue","cost":"free","substitutable":true,"sourceUrl":"https://upstash.com/pricing/qstash"}],"freeMatch":"jtbd"},{"jtbdId":"serverless-agent-queue","decide":{"available":true,"unavailableReason":null,"providerId":"upstash-qstash","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"inngest","cite":"Depot Pick for serverless-agent-queue: upstash-qstash (asOf 2026-09-14). See GET /api/jtbds/serverless-agent-queue + GET /api/methodology.","citePath":"/api/jtbds/serverless-agent-queue"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":{"providerId":"upstash-qstash","providerName":"Upstash QStash","skuId":"upstash-qstash-free","item":"Free","plan":"Free — 1,000 messages/day, 50 GB, 1 MB max message","unit":"usd_per_month","amountUsd":0,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-27","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"upstash-qstash-free","item":"Free","plan":"Free — 1,000 messages/day, 50 GB, 1 MB max message","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."}},"representativeQuote":{"skuId":"upstash-qstash-free","item":"Free","plan":"Free — 1,000 messages/day, 50 GB, 1 MB max message","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."},"reason":"Nothing was compared. mixed_units: usd_per_100k_messages and usd_per_million_events are both stored. They were not ranked together and were not converted. Monthly plans were not included. cheapest stays null. pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. mixed_units: usd_per_100k_messages and usd_per_million_events are both stored. They were not ranked together and were not converted. Monthly plans were not included. cheapest stays null. pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"upstash-qstash-free","name":"Upstash QStash Free plan","kind":"free_queue","cost":"free","substitutable":true,"sourceUrl":"https://upstash.com/pricing/qstash"}],"freeMatch":"jtbd"},{"jtbdId":"agent-dlq-retry","decide":{"available":true,"unavailableReason":null,"providerId":"upstash-qstash","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"aws-sqs","cite":"Depot Pick for agent-dlq-retry: upstash-qstash (asOf 2026-09-14). See GET /api/jtbds/agent-dlq-retry + GET /api/methodology.","citePath":"/api/jtbds/agent-dlq-retry"},"quote":{"available":true,"unavailableReason":null,"cheapest":{"providerId":"upstash-qstash","slug":"upstash-qstash","name":"Upstash QStash","skuId":"upstash-qstash-payg-messages","sku":"Pay as You Go messages","item":"Pay as You Go messages","plan":"Pay as You Go messages — Page header says retries are free and only published messages count","isFloorPrice":false,"floorWarning":null,"skuKind":"queue_message","unit":"usd_per_100k_messages","amountUsd":1,"comparison":"min sourced usd_per_100k_messages among candidates; one queue unit only; per-100k messages and per-million events were not mixed; monthly plans were not ranked; not quality-adjusted","usdPerMillionInputTokens":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03"},"recommendedWorkloadQuote":{"providerId":"upstash-qstash","providerName":"Upstash QStash","skuId":"upstash-qstash-payg-messages","item":"Pay as You Go messages","plan":"Pay as You Go messages — Page header says retries are free and only published messages count","unit":"usd_per_100k_messages","amountUsd":1,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-03","isFlagshipForJob":true,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"upstash-qstash-payg-messages","item":"Pay as You Go messages","plan":"Pay as You Go messages — Page header says retries are free and only published messages count","amountUsd":1,"inputOrUnitUsd":1,"unit":"usd_per_100k_messages","outputUsd":null,"outputUnit":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":1,"totalUsd":1.15,"estimatedTotalUsd":1.15,"perTaskUsd":0.00115,"estimatedCostPerTaskUsd":0.00115,"formula":"$1 (usd_per_100k_messages) * 1.15 overhead","assumptions":"1,000 tasks in job native unit with 1.15x retry overhead."}},"representativeQuote":{"skuId":"upstash-qstash-payg-messages","item":"Pay as You Go messages","plan":"Pay as You Go messages — Page header says retries are free and only published messages count","amountUsd":1,"inputOrUnitUsd":1,"unit":"usd_per_100k_messages","outputUsd":null,"outputUnit":null,"sourceUrl":"https://upstash.com/pricing/qstash","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":1,"totalUsd":1.15,"estimatedTotalUsd":1.15,"perTaskUsd":0.00115,"estimatedCostPerTaskUsd":0.00115,"formula":"$1 (usd_per_100k_messages) * 1.15 overhead","assumptions":"1,000 tasks in job native unit with 1.15x retry overhead."},"reason":null,"priceWinnerNote":"Only 1 candidate has a matching USD per 100k messages; nothing was compared, so pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[],"freeMatch":"none"},{"jtbdId":"durable-idempotency","decide":{"available":true,"unavailableReason":null,"providerId":"restate","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"temporal-cloud","cite":"Depot Pick for durable-idempotency: restate (asOf 2026-09-14). See GET /api/jtbds/durable-idempotency + GET /api/methodology.","citePath":"/api/jtbds/durable-idempotency"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"trigger-dev","name":"Trigger.dev","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/triggerdotdev/trigger.dev/main/LICENSE"}],"freeMatch":"jtbd"},{"jtbdId":"llm-cost-anomaly-alerts","decide":{"available":true,"unavailableReason":null,"providerId":"vantage","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"helicone","cite":"Depot Pick for llm-cost-anomaly-alerts: vantage (asOf 2026-09-14). See GET /api/jtbds/llm-cost-anomaly-alerts + GET /api/methodology.","citePath":"/api/jtbds/llm-cost-anomaly-alerts"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":{"providerId":"vantage","providerName":"Vantage","skuId":"vantage-starter","item":"Starter","plan":"Starter — Free","unit":"usd_per_month","amountUsd":0,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://www.vantage.sh/pricing","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-27","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"vantage-starter","item":"Starter","plan":"Starter — Free","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.vantage.sh/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."}},"representativeQuote":{"skuId":"vantage-starter","item":"Starter","plan":"Starter — Free","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.vantage.sh/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."},"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[],"freeMatch":"none"},{"jtbdId":"agent-error-observability","decide":{"available":true,"unavailableReason":null,"providerId":"sentry","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"honeycomb","cite":"Depot Pick for agent-error-observability: sentry (asOf 2026-09-14). See GET /api/jtbds/agent-error-observability + GET /api/methodology.","citePath":"/api/jtbds/agent-error-observability"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":{"providerId":"sentry","providerName":"Sentry","skuId":"sentry-developer","item":"Developer","plan":"Developer — Free","unit":"usd_per_month","amountUsd":0,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://sentry.io/pricing","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-27","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"sentry-developer","item":"Developer","plan":"Developer — Free","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://sentry.io/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."}},"representativeQuote":{"skuId":"sentry-developer","item":"Developer","plan":"Developer — Free","amountUsd":0,"inputOrUnitUsd":0,"unit":"usd_per_month","outputUsd":null,"outputUnit":null,"sourceUrl":"https://sentry.io/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0,"totalUsd":0,"estimatedTotalUsd":0,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"Monthly base plan $0/mo covering 1,000 tasks (1.15x overhead buffer)","assumptions":"Monthly subscription plan amortized over 1,000 tasks/month."},"reason":"Nothing was compared. per-error prices were not ranked against monthly plans. Candidates do not share one unit. cheapest stays null. pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. per-error prices were not ranked against monthly plans. Candidates do not share one unit. cheapest stays null. pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[{"id":"signoz","name":"SigNoz","kind":"dev_tool","cost":"oss","substitutable":true,"sourceUrl":"https://raw.githubusercontent.com/SigNoz/signoz/main/LICENSE"}],"freeMatch":"jtbd"}],"failures":[{"id":"runaway-spend","name":"Runaway spend","detection":"Set a budget and a tool-call cap per task. Alert when spend jumps. Stop the run at the cap instead of summarizing a partial trace as success."},{"id":"partial-tool-success","name":"Partial tool success","detection":"Require a per-item status and a failure count. Success for the task requires the failed count to be zero or explicitly handed to a retry queue."},{"id":"tool-loop","name":"Tool loop","detection":"Hash the last several tool names and arguments. Stop when the same call repeats and the observation did not change. Cap tool calls per task."},{"id":"observability-gap","name":"Observability gap","detection":"Alert on a drop in trace ingestion and on certificate expiry for the trace host. Do not treat a missing trace as a successful quiet run."},{"id":"non-determinism","name":"Non-determinism","detection":"Run the task more than once and compare the end state, not a single transcript. Record the trial count next to any success rate you cite."}],"failuresOmittedBecauseMissing":[],"caseStudies":[{"id":"langsmith-cert-incident-2025","title":"LangSmith incident on May 1, 2025","sourceUrl":"https://www.langchain.com/blog/langsmith-incident-on-may-1-2025","year":2025,"studyKind":"production_incident"}],"caseStudiesRelated":1,"caseStudiesOmitted":0,"caseStudiesReason":null,"links":{"kit":"/api/kit?class=scheduled-ops","page":"/agents/kit/scheduled-ops","agentClass":"/api/agent-classes/scheduled-ops","failures":"/api/failures","caseStudies":"/api/case-studies?class=scheduled-ops"},"recommendation":{"mode":"default"},"stackContext":{"host":null,"framework":null,"repo":null,"lang":null,"existing":[],"volume":null,"sender":null,"detectedFromTask":[]},"contextAdvice":[],"firstActions":["https://getagentdepot.com/api/hub","https://getagentdepot.com/api/decide?jtbd=event-driven-agent-jobs","https://getagentdepot.com/api/quote?jtbd=event-driven-agent-jobs","https://getagentdepot.com/api/kit?class=scheduled-ops","https://getagentdepot.com/api/failures"],"honesty":["Picks are the current Depot Pick from GET /api/decide. This kit does not rescore.","Cheapest SKU is copied from GET /api/quote for that job. Input and output are not blended. A chat SKU is not borrowed for a non-chat job. If quote.cheapest is null, there is no matching sourced price.","pickIsNotPriceWinner is true only when that job's Depot Pick and cheapest matching SKU both exist and the quote says the pick is not the price winner. If either is missing, the field is false.","freeResources are existing /api/free items whose jtbdIds include that job, up to 3, sorted by id. If none list the job, freeResources is [] and freeMatch is none. Kind, provider, and docs are not fallbacks. Free does not change the pick.","firstActions are endpoint URLs for this class: hub, decide for the first listed need, quote for that need, this kit, and /api/failures. No other step is added.","Failures are the modes already listed on the class. Case studies are the first 3 related studies in catalog order, with the source URL already stored. Omitted studies stay on GET /api/case-studies?class=."]}