Can this plan of steps finish inside the remaining time, in the expected case and the worst case?
Takes steps with expected and worst-case durations, dependencies (steps with no dependency between them run in parallel), retries with backoff, and the time remaining, and computes the critical path for both cases. Verdict guaranteed (worst case fits: pass), likely (only the expected case fits: unknown) or infeasible (even the expected case does not fit: fail), with the slack and the critical-path steps. Takes durations as given and uses no clock; does not measure, schedule or cap anything.
What you get
Tells an agent to drop or parallelise work before it blows a hard deadline.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/deadline-feasibility. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/deadline-feasibility \
-H 'content-type: application/json' \
-d '{"steps":[{"id":"fetch-a","expectedMs":800,"worstMs":3000,"retries":1,"backoffMs":500},{"id":"fetch-b","expectedMs":600,"worstMs":2500},{"id":"merge","expectedMs":100,"worstMs":400,"after":["fetch-a","fetch-b"]}],"remainingMs":8000,"overheadMs":500}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
steps | array<object>; max 100 items | yes | |
remainingMs | integer; 0..604800000 | yes | Time left to the hard deadline, measured by the caller. |
overheadMs | integer; 0..3600000 | no | Fixed time to reserve for settlement, serialization, etc. |
Example request body
{
"steps": [
{
"id": "fetch-a",
"expectedMs": 800,
"worstMs": 3000,
"retries": 1,
"backoffMs": 500
},
{
"id": "fetch-b",
"expectedMs": 600,
"worstMs": 2500
},
{
"id": "merge",
"expectedMs": 100,
"worstMs": 400,
"after": [
"fetch-a",
"fetch-b"
]
}
],
"remainingMs": 8000,
"overheadMs": 500
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
status | string; one of "pass", "fail", "unknown", "unsupported" | no | pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass. |
verdict | string; one of "guaranteed", "likely", "infeasible" | no | |
expectedMs | integer | no | Critical-path length, expected case, plus overhead. |
worstMs | integer | no | Critical-path length, worst case with all retries, plus overhead. |
slackExpectedMs | integer | no | |
slackWorstMs | integer | no | May be negative. |
criticalPath | array<string> | no | Worst-case critical path. |
witnesses | array<object> | no | |
versions | object | no | Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile). |
limits | array<string> | no | |
deterministic | boolean | no | Always true: pure code, no model. |
Pay and connect
Available through: x402 (USDC on Base), MCP. MCP clients reach it through the execution-safety-kit package.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent