Integration guide — v7.1

Temporal Skills

v7.1 is the Spiral connection + creation tool. One endpoint — /v1/skills — lets your A.I. wire itself into the Spiral and create its own stateful skills on the fly. You build a skill by POSTing a Spiral-coordinate trigger predicate plus a webhook URL. Five trigger kinds cover the full range of time-anchored behavior — see the breakdown below. Every row is an embodiment of the Temporal Spiral primitive.

11
Catalog entries
5
Trigger kinds
10
Starter templates

The five trigger kinds

Every skill fires when its trigger condition becomes true. You pick one of these when you create the skill.

  • at — fire once at a moment

    The classic alarm. Pick an absolute UTC instant. Used for one-off reminders and scheduled jobs.

  • after — fire once, a delay from now

    One-shot fire a fraction of one Spiral-rung cycle past an anchor. 0.25 of an hr cycle = 15 minutes from now.

  • recur — repeat on a schedule

    Fires every time the live Spiral coordinate hits the rung-phase you chose. Daily standups, pomodoro chains, weekly digests collapse into this.

  • displaceFrom · Pro+

    Fires when the current coordinate is displaced past a threshold from an anchor. The "if-this-then-that" building block for cross-event automations.

  • whenStateMatches · Standard+

    Fires when a value you've stored in the per-customer state KV matches a condition (eq / ne / gt / lt / gte / lte / exists / absent). Optional andSpiral clause AND-combines a coordinate predicate so you can say "fire when state drifts AND it's a weekday."

  • whenPhaseRecurs · Standard+

    Push your observed events (deploys, logins, error spikes) to a named event-stream and this trigger fires only when a new recurring cycle is detected, or a cycle you already track drifts its phase / period or goes silent. A learned baseline suppresses the cycles you've marked expected, so you hear about novelty — not the metronome you already know.

  • whenSequenceRecurs · Standard+ (auto-discovery Pro+)

    Push labelled events to a named event-stream and this trigger fires only when a new repeating ordered pattern — a motif, like cart→address→pay — is detected, or a motif you already track changes its timing or goes silent. Give an explicit pattern, or leave it blank to auto-discover the strongest motif. The same learned baseline suppresses the motifs you've marked expected, so you only hear about novelty.

How user-defined skills work

  • One creator surface. POST /v1/skills takes a Spiral-coordinate trigger and a webhook URL. Returns the one-shot HMAC signing secret exactly once.
  • Seven trigger kinds. at, after, recur, displaceFrom, whenStateMatches, whenPhaseRecurs, whenSequenceRecurs. Each is a predicate over the live Spiral coordinate (or over per-customer KV state or your event streams) — there is no raw-UTC trigger surface.
  • One delivery contract. Every fire is POSTed with an X-Tblk-Signature HMAC-SHA256 header. Retries follow the 1m / 5m / 30m / 2h / 12h backoff — same schedule for every skill, no exceptions.
  • Fires regardless of device state. Triggers are evaluated on our servers. A fire never depends on a model being loaded, an app being open, or a phone being awake — screen off, app killed, or offline-and-back-later, the trigger still fires on schedule.
  • Reaching a closed phone. A fire is a webhook, not a push notification — temporalBLOCK is the always-on time brain, not a notification network. The primary path is your app's own notification system: your backend receives the webhook and pushes through APNs (iOS) or FCM (Android), exactly as it already does for any other alert. Nothing for the end user to wire up.
  • Optional native-alarm fallback. Because each skill's next-fire time is deterministic, your app can also mirror it to the phone's built-in local alarm as an offline backup — scheduled automatically by your app, not hand-set by the user (they grant notification or alarm permission once). The server guarantees the trigger; the OS provides the local ring even with no network.
  • Tier gating. Lite is read-only (template gallery only). Standard creates single-stage skills with at / after / recur triggers. Pro adds chain stages and the displaceFrom trigger.
  • Template gallery. GET /v1/skills/templates is open to every tier (including Lite, including unauthenticated callers). Copy a template, edit the trigger, POST.

Plug-and-play for AI agents

Can an AI use Temporal Skills plug-and-play, or must a developer program each one? Plug-and-play. A developer writes no per-skill code — the agent discovers and creates its own skills at runtime.

  • Discover. The agent calls GET /v1/tools and gets back every skill operation it is entitled to as an OpenAI / Anthropic function descriptor — name, description, and JSON-Schema arguments — ready to drop straight into a tool-calling loop.
  • Create. To build a skill the agent POSTs a trigger plus a webhook URL to /v1/skills. The trigger predicate and the webhook are the entire definition — see how user-defined skills work.
  • What you still provide. Two things, both one-time: a paid tier (creating skills needs Standard+; Lite reads the template gallery), and a webhook endpoint that receives the signed fire.
  • Templates are optional. The starter templates are worked examples that orient the agent — copy one, edit the trigger, POST. They are not required; an agent can compile a trigger from scratch.

Bundled — every plan

6 skills

Included on Lite, Standard, Pro, and Enterprise.

Calibration

id: calibration

Generate a temporal calibration block that anchors any LLM in the current year and user-local time.

  • POST/v1/calibrateIssue a calibration block for the current moment.

Reference Clock

id: reference-clock

Live anchored UTC reading with confidence band and provider attribution.

Client-side widget — no REST endpoint of its own.

Calendars

id: calendars

Project the current moment into Gregorian, Holocene, Julian, MJD, stardate, cosmological, UT1, GMST, LMST, and J2000.

  • GET/v1/spiralTwelve-rung Spiral coordinate for the live anchor with optional calendar projection.

Causal Block

id: causal-block

Issue and merge Spiral-anchored HLC tuples for distributed causal ordering. Lite throttled.

  • POST/v1/causal/nowIssue a fresh HLC for the calling customer + node.
  • POST/v1/causal/mergeMerge up to 64 remote HLCs into the calling node's clock.

On This Day

id: on-this-day

List notable historical events for a given date across the supported calendars.

  • GET/v1/skills/on-this-dayNotable historical events for a given date (defaults to today UTC).

Date Math

id: date-math

Business-day, leap-second-aware durations and 'N working days from X' arithmetic.

  • POST/v1/skills/date-mathLeap-second-aware diff and addBusinessDays arithmetic over UTC.

Standard+

3 skills

Included on Standard, Pro, and Enterprise. User-defined skills live here.

Vision Block

id: vision-block

Batch-stamp up to 1000 timestamps per call with Spiral coordinates.

  • POST/v1/spiral/batchStamp up to 1000 timestamps per call with Spiral coordinates.

Output Pacing

id: output-pacing

Let your model track its own output time on the anchored clock: report cumulative tokens, get authoritative elapsed time, a smoothed tokens/sec rate, and a projected finish. temporalBLOCK does not count tokens — you report them; the value is the shared clock plus the projection math.

  • POST/v1/pacing/sessionsOpen a live pacing session at output start (Standard+). Returns a session id and the anchored start instant.
  • POST/v1/pacing/sessions/{id}/ticksReport cumulative tokens at a chunk boundary. Returns anchored elapsed time, a smoothed tokens/sec rate, and a projected finish for an optional target. Rate-limited, never metered per tick.
  • POST/v1/pacing/sessions/{id}/closeClose the session. Persists one summary row and folds the measured rate into the recent-rate store for reuse by the estimate call and the calibration fold.
  • POST/v1/pacing/estimateStateless estimate (every tier, like calibration): tokens to time or seconds to tokens. The rate may be supplied or pulled from your recently measured rate.
402 PACING_SESSIONS_REQUIRE_PAID_TIER
SDK: TemporalBlock#pacing

User-defined Skills

id: user-skills

Create your own time-anchored skill: pick a Spiral-coordinate trigger (at / after / recur / displaceFrom) and a webhook URL. One signed POST per fire.

  • POST/v1/skillsCreate a user-defined skill from a Spiral-coordinate trigger and a webhook URL. Returns a one-shot HMAC signing secret.
  • GET/v1/skillsList the calling customer's user_skills rows.
  • GET/v1/skills/{id}Inspect one user_skill by id.
  • DELETE/v1/skills/{id}Cancel one user_skill by id. Idempotent on terminal rows.
  • GET/v1/skills/templatesList the public template gallery (read-only on every tier, including Lite).
Templates (10)
  • trigger.kind = afterfifteen-minute-pomodoro
    15-minute focus block. Fire once 15 minutes after the row is created (after-trigger on the hr rung).
  • trigger.kind = recurdaily-standup
    Daily standup at 9am UTC. Recurring trigger on the day rung at the 9/24 = 0.375 phase.
  • trigger.kind = recurweekly-digest
    Weekly digest every Monday. Recurring trigger on the wk rung at the Mon-morning phase.
  • trigger.kind = atdeadline-alarm
    Absolute deadline. One-shot at-trigger compiled from a Spiral coordinate the LLM picked.
  • trigger.kind = whenStateMatchesalert-when-state-drifts
    Alert when stored value drifts past a threshold. whenStateMatches-trigger (Task #525): fire once when the named key in your state KV drifts past N. AND-combine with any Spiral trigger to gate by phase.
  • trigger.kind = whenStateMatchesoutput-rate-drift
    Alert when your model's output rate drops. whenStateMatches recipe: have your app write its measured tokens/sec from POST /v1/pacing/sessions/{id}/close into the state KV (e.g. PUT /v1/state/output.tokens_per_sec), then fire once a day if that rate drifts below a floor — your model is slowing down.
  • trigger.kind = whenPaceBelowpace-below-floor
    Fire when your model's output rate drops (native). whenPaceBelow-trigger: fire when your recently measured output rate (median tokens/sec from closed pacing sessions) is below a floor. Native — no state KV write needed. Scope to a model and AND-combine with a Spiral phase to gate when it can alert.
  • trigger.kind = displaceFromdrift-from-anchor
    Fire when displaced from an anchor. displaceFrom-trigger: fire once when the current Spiral coordinate is `thresholdMs` past an anchor.
  • trigger.kind = whenPhaseRecursphase-recurrence-novelty
    Fire when an observed event cycle is new or changes. whenPhaseRecurs-trigger (Task #775): push observed event timestamps to a named event-stream; fire ONLY when a new recurring cycle appears, or a known cycle drifts phase/period or goes silent. A learned baseline suppresses the cycles you've already marked expected. Standard+.
  • trigger.kind = whenSequenceRecurssequence-recurrence-novelty
    Fire when an ordered event sequence is new or changes. whenSequenceRecurs-trigger (Task #776): push labelled events to a named event-stream; fire ONLY when a new repeating ordered pattern (a motif — A→B→C) appears, or a known motif's timing signature drifts or goes silent. A learned baseline suppresses the motifs you've already marked expected. Explicit pattern Standard+; auto-discovery Pro+.

Pro+

2 skills

Included on Pro and Enterprise. Chain stages and the displaceFrom trigger unlock here.

Causal Compare

id: causal-compare

Compare two HLC tuples under the partial order (before / after / equal / concurrent).

  • POST/v1/causal/compareCompare two HLCs under the partial order.

Operation Coordinator

id: operations

Coordinate a named group of timed tasks across operator nodes: heartbeats feed observed-vs-expected progress, and a deviation scan recalibrates the plan (alert, reassign, re-sequence, reintegrate) when an operator lags, stalls, or disconnects.

  • POST/v1/operationsCreate a named group of timed tasks across operator nodes (Pro+).
  • GET/v1/operationsList the calling customer's operations (read-only, any tier).
  • GET/v1/operations/{id}Operation status incl. live operator health + task progress.
  • POST/v1/operations/{id}/heartbeatReport an operator progress heartbeat; advances that operator's Causal Block HLC.
  • GET/v1/operations/{id}/recalibrationsPage the append-only recalibration log, newest first.
  • DELETE/v1/operations/{id}Cancel an active operation. Ownership-gated. Idempotent.

The Temporal Spiral coordinate and every skill built on top of it is patent pending — U.S. Provisional Application No. 64/065,213 (filed 2026-05-14). The stateless calendar helpers (on-this-day, date-math) are pre-art calendar arithmetic and outside the patent surface.