Are these timing constraints satisfiable? Earliest/latest time per event, or the conflicting constraints
Solves a simple temporal network: up to 40 named time points, up to 200 difference constraints 'b is between min and max minutes after a' and optional fixed instants, relative to a caller origin instant. When consistent it returns each point's earliest and latest feasible instant (where bounded); when not, it returns the cycle of constraints that contradict each other, with the total impossible slack in minutes. Built for an agent checking an itinerary, project plan or SLA chain ('review within 2 days of draft, filing at least 3 days after review, filing fixed on a date'). Integer minutes only; no calendars or business days (compute those with business-deadline first), and disjunctions ('A before B or B before A') are not expressible.
What you get
Contradictory deadline chains are found in one call instead of by a failed plan.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/temporal-constraints. 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/temporal-constraints \
-H 'content-type: application/json' \
-d '{"origin":"2026-11-02T09:00:00Z","points":["draft","review","filing"],"constraints":[{"id":"c1","a":"draft","b":"review","minMinutes":0,"maxMinutes":2880},{"id":"c2","a":"review","b":"filing","minMinutes":4320}],"fixed":[{"point":"draft","at":"2026-11-02T09:00:00Z"},{"point":"filing","at":"2026-11-09T09:00:00Z"}]}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
origin | string; length 0..36 | yes | Instant that point 'origin' (an implicit extra point) is at; all minutes are relative to it. |
points | array<string; length 0..40>; max 40 items | yes | |
constraints | array<object>; max 200 items | yes | |
fixed | array<object>; max 40 items | no |
Example request body
{
"origin": "2026-11-02T09:00:00Z",
"points": [
"draft",
"review",
"filing"
],
"constraints": [
{
"id": "c1",
"a": "draft",
"b": "review",
"minMinutes": 0,
"maxMinutes": 2880
},
{
"id": "c2",
"a": "review",
"b": "filing",
"minMinutes": 4320
}
],
"fixed": [
{
"point": "draft",
"at": "2026-11-02T09:00:00Z"
},
{
"point": "filing",
"at": "2026-11-09T09:00:00Z"
}
]
}
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. |
consistent | boolean | no | |
windows | array<object> | no | |
unbounded | array<string> | no | Points with no finite earliest or latest time relative to the origin. |
conflict | array<object> | no | Constraints forming a contradictory cycle. |
impossibleByMinutes | integer | no | |
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 calendar-deadline-kit package.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent