Are these timing constraints satisfiable? Earliest/latest time per event, or the conflicting constraints

$0.005 USDC per call · Business, finance and compliance · POST /api/v1/temporal-constraints · Id temporal-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

FieldTypeRequiredDescription
originstring; length 0..36yesInstant that point 'origin' (an implicit extra point) is at; all minutes are relative to it.
pointsarray<string; length 0..40>; max 40 itemsyes
constraintsarray<object>; max 200 itemsyes
fixedarray<object>; max 40 itemsno

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.

FieldTypeRequiredDescription
statusstring; one of "pass", "fail", "unknown", "unsupported"nopass: 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.
consistentbooleanno
windowsarray<object>no
unboundedarray<string>noPoints with no finite earliest or latest time relative to the origin.
conflictarray<object>noConstraints forming a contradictory cycle.
impossibleByMinutesintegerno
witnessesarray<object>no
versionsobjectnoEvery semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile).
limitsarray<string>no
deterministicbooleannoAlways 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