oddments, noun. Assorted small items left over. Once also the odd few pence left after a transaction.
We sell small parcels of work to software agents. Priced in cents. Paid per call. No account required.
An agent working through a task keeps hitting narrow sub-problems. It could attempt them itself. It would often get them quietly, plausibly wrong. Some of those are worth a fraction of a cent to have done correctly instead.
That is the whole business. Every service here:
Give it an RFC 5545 RRULE or a cron expression, plus an IANA timezone. It returns the exact UTC instants.
It flags the two things naive implementations get wrong. Some wall-clock times never happen, because the clock sprang forward. Some happen twice, because it fell back. Every response names the tzdata and library versions it used. Every response carries a signed receipt binding the input, the output and the engine. So any result can be reproduced and checked later.
POST https://s1.oddments.ai/v1/expand. $0.02 per call · USDC on BasePOST https://s1.oddments.ai/v1/preview. Same response shape, one rule, three occurrences/openapi.json · /.well-known/x402 · /v1/errors · x402scan listing/v1/metrics. Calls, previews and settlements. Public.# free sample. no payment, no key, no account curl -sS https://s1.oddments.ai/v1/preview \ -H 'Content-Type: application/json' \ -d '{"rules":[{"cron":"30 9 * * 1-5","tz":"America/New_York","start":"2026-03-06T00:00:00","count":3}]}' # the paid call answers 402 with the payment challenge curl -sS -i -X POST https://s1.oddments.ai/v1/expand \ -H 'Content-Type: application/json' -d '{}'
What you are not buying: secrecy. You could expand the rule yourself and check every instant we return. That is deliberate. What the fee buys:
Give it each participant's availability in their own timezone, plus hard constraints. Duration, working hours, blackouts, a recurrence rule, a minimum gap, a quorum. It returns meeting slots that satisfy them.
With the slots comes a per-constraint satisfaction certificate. One row per constraint per slot. Each row gives the required value, the observed value, and a verdict with its witness. You check the answer in one pass over that table instead of re-solving. When no slot exists you get an infeasibility diagnosis. It names, for every candidate it rejected, the constraint that eliminated it.
POST https://s2.oddments.ai/v1/solve. $0.05 per call · USDC on BasePOST https://s2.oddments.ai/v1/preview. Same response shape, same certificate, same signed receipt, three participants/openapi.json · /.well-known/x402 · /v1/errors · x402scan listing/v1/metrics. Calls, previews and settlements. Public.# free sample. no payment, no key, no account curl -sS https://s2.oddments.ai/v1/preview \ -H 'Content-Type: application/json' \ -d '{"participants":[{"id":"ana","tz":"Europe/London","available":[{"start":"2026-03-30T09:00:00","end":"2026-03-30T18:00:00"}]},{"id":"bo","tz":"America/New_York","available":[{"start":"2026-03-30T09:00:00","end":"2026-03-30T18:00:00"}]}],"constraints":{"duration_minutes":60,"count":1,"window":{"start":"2026-03-30T00:00:00Z","end":"2026-03-31T00:00:00Z"}}}' # the paid call answers 402 with the payment challenge curl -sS -i -X POST https://s2.oddments.ai/v1/solve \ -H 'Content-Type: application/json' -d '{}'
What you are not buying: optimality.
Give it strings you want matched and strings you want rejected. It returns a regular expression that provably accepts every one of the first and rejects every one of the second.
With the pattern comes the complete match matrix. One row per example, never a sample. Each row shows expected against observed, with the matching span. So you can re-check the whole claim in one pass. You also get a catastrophic-backtracking analysis. It names the worst-case input class if the pattern has one. Candidates that fail any example are discarded before anything is returned.
POST https://s3.oddments.ai/v1/synthesize. $0.10 per call · USDC on BasePOST https://s3.oddments.ai/v1/preview. Same response shape, same complete matrix, same ReDoS report, six examples each way/openapi.json · /.well-known/x402 · /v1/errors · x402scan listing/v1/metrics. Calls, previews and settlements. Public.# free sample. no payment, no key, no account curl -sS https://s3.oddments.ai/v1/preview \ -H 'Content-Type: application/json' \ -d '{"positives":["AB-1234","XY-9999","QQ-0001"],"negatives":["ab-1234","AB-123","AB1234"]}' # the paid call answers 402 with the payment challenge curl -sS -i -X POST https://s3.oddments.ai/v1/synthesize \ -H 'Content-Type: application/json' -d '{}'
What you are not buying: a pattern that matches your intent. The matrix proves the regex satisfies the examples you gave it, and nothing more. A near-miss probe report ships with every answer, so you can inspect how it generalised. The service does not use the word “safe” about a regex. Neither will we.
Give it a name or a domain label. It tells you whether the label is valid, whether it can be confused with a look-alike, and whether it is legal under a TLD's rules.
Every answer names its evidence. You get a character-by-character breakdown with codepoint, name and script, the scripts the label mixes, the UTS 39 skeleton, and the confusable characters themselves as named witnesses. It also lists near-identical variants in the same script that someone could register against you. Each response reports the version and date of every table it consulted, so you can judge how current the answer is. A signed receipt binds the input, the output and those table versions together.
POST https://s5.oddments.ai/v1/check. $0.03 per call · USDC on BasePOST https://s5.oddments.ai/v1/preview. Same response shape, same signed receipt, one name/openapi.json · /.well-known/x402 · /v1/errors · x402scan listing/v1/metrics. Calls, previews and settlements. Public.# free sample. no payment, no key, no account curl -sS https://s5.oddments.ai/v1/preview \ -H 'Content-Type: application/json' \ -d '{"names":["аpple","раypal","my-name"],"tld":"com"}' # the paid call answers 402 with the payment challenge curl -sS -i -X POST https://s5.oddments.ai/v1/check \ -H 'Content-Type: application/json' -d '{}'
What you are not buying: availability. This service makes no RDAP, WHOIS, DNS or registry query of any kind, so nothing it returns reflects who owns what. A name can pass every check here and already be registered. It applies no trademark or legal analysis, so a name can be technically safe and still infringe. Confusability is judged against the published Unicode table, which approximates human vision rather than testing your font. The variant list is capped and is a sample, never the full set. The signature proves origin and integrity, not correctness.
Over x402. Four steps:
No signup. No API key. No invoice. Nothing to cancel. The free preview needs none of it.
More of the same shape. Work that is expensive to produce and cheap to check. If the output cannot be verified without redoing the work, it probably does not belong here.
The services listed above are the ones that exist. Others are being built. This page adds a service the day it accepts a call, and not before.