Date arithmetic
POST /api/add-timeAdd (or subtract) a duration to a date. duration like "2d", "-3h", "1w 2d", "90m". Send POST /api/add-time with the required field duration and pay $0.001 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with result.
Returns the resulting UTC ISO timestamp.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
date | any | no | Base date (default now) |
duration | string | yes | e.g. "2d", "-3h", "1w" |
Example request
curl -i -X POST https://agent402.tools/api/add-time \
-H "Content-Type: application/json" \
-d '{"date":"2026-06-11T12:00:00Z","duration":"2d 3h"}'
Without payment this returns HTTP 402 Payment Required with the exact price for add-time; any x402 v2 or MPP client pays it and retries.
Example response
{
"result": "2026-06-13T15:00:00.000Z"
}
| Field | Type | Always present | In the example |
|---|---|---|---|
result | string | yes | 2026-06-13T15:00:00.000Z |
From an MCP client
catalog.call {
"slug": "add-time",
"params": {
"date": "2026-06-11T12:00:00Z",
"duration": "2d 3h"
}
}
On the hosted connector at https://agent402.tools/mcp, catalog.call runs add-time free (rate-limited, no wallet). Local install: npx -y agent402-mcp.
Errors and behavior
durationis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement is cancelled when the tool fails. The exception is a Tempo push credential, a transfer the buyer sent before the call: it settles before the tool runs, so if the tool then fails the payment is recorded as a refund owed to the paying wallet.
- Free tier: no outbound network call leaves the server for this tool, so proof-of-work (16 leading zero bits of sha256) pays for it.
- A
GETorHEADto /api/add-time returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB is not replayed).
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
client.setSpendControls?.(false); // keep your own spending ceiling in code
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/api/add-time", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"date": "2026-06-11T12:00:00Z",
"duration": "2d 3h"
}),
});
No wallet? Pay with compute
Fetch a challenge, solve the sha256 puzzle (16 leading zero bits, a fraction of a second of CPU), and resend with the X-Pow-Solution header:
import { createHash } from "node:crypto";
const lz = (b) => { let t = 0; for (const x of b) { if (!x) { t += 8; continue; } t += Math.clz32(x) - 24; break; } return t; };
const c = await (await fetch("https://agent402.tools/api/pow/challenge?slug=add-time")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/add-time", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"date":"2026-06-11T12:00:00Z","duration":"2d 3h"}) });
Part of these workflows
Date arithmetic is one step in this skill pack, each sold as a single call:
- Multi-stop trip planner - Plan a multi-stop journey deterministically: geocode each stop, sum the pairwise haversine distances, estimate arrival times by adding driving hours per leg, count business days from today to each arrival, and pull the weather forecast at every US stop. Six tools - three pure-CPU (math + time), three egress (geocoding + weather) - covering the deterministic skeleton of every road-trip / sales-tour / delivery-route planning problem.
Related tools
Age calculator
POST /api/ageCompute a precise age (years, months, days) from a birth date to today (or a given date), plus total days.
Business days
POST /api/business-daysCount business days (Mon–Fri) between two dates, inclusive of the start, exclusive of the end. Optional list of holiday …
Date difference
POST /api/date-diffDifference between two dates/times in ms, seconds, minutes, hours, days, and a human summary.
Duration parse/humanize
POST /api/durationParse a duration like "2h30m" / "1d4h" / "90s" to seconds, or humanize a number of seconds.
Relative time
POST /api/relative-timeFormat a timestamp as a human relative phrase ("3 hours ago", "in 2 days") versus now or a reference time.
Cron next runs
POST /api/cron-nextParse a 5-field cron expression and return the next N run times (UTC).