Why an agent would use this

AI models are good with language and unreliable with arithmetic, checksums, counting characters and anything that needs a live lookup. They can sound sure of a wrong GST figure, a mistyped ABN or a broken SPF record. A tool call gives the agent a dependable answer to check its own work against, or a fact it couldn’t know, such as what a domain’s DNS says right now.

If you use an assistant that can fetch web pages or call APIs, you can point it here: tell it to use digitalgreenhouse.com.au/api/tools to check GST, ABNs, DNS, email setup, dates, units or encodings.

Quick start

Call /api/tools/<tool> with the parameters in the query string:

GET https://digitalgreenhouse.com.au/api/tools/gst-calculator?amount=110&mode=remove

The answer comes back as JSON. Every tool uses the same envelope, and summary is one plain sentence an agent can quote:

{
  "ok": true,
  "tool": "gst-calculator",
  "input": { "amount": 110, "mode": "remove" },
  "result": { "ex_gst": 100, "gst": 10, "inc_gst": 110, "gst_rate": "10%" },
  "summary": "$110.00 including GST contains $10.00 GST, so the price excluding GST is $100.00.",
  "notes": [ "Assumes a standard taxable sale at Australia's 10% GST. …" ],
  "page": "https://digitalgreenhouse.com.au/tools/gst-calculator"
}
  • POST works too. Send the same parameters as JSON or form data. Use POST for long text, and for anything sensitive, so it never sits in a web address. The JWT decoder only accepts POST.
  • Plain text: add format=text to get the summary and results as lines of text instead of JSON.
  • Errors come back with "ok": false, an error code, the parameter at fault and a usage line, so an agent can correct itself and try again.
  • Machine-readable list: /api/tools lists every tool and its parameters, and /api/tools/openapi.json is an OpenAPI 3.1 description you can import into an agent framework, a custom GPT action or Postman.
curl -s https://digitalgreenhouse.com.au/api/tools/json-formatter \
  -H "Content-Type: application/json" \
  -d '{"text": "{\"name\": \"DG\", \"tools\": 32,}"}'

The tools

GST Calculator (Australia) — /api/tools/gst-calculator

Add Australia's 10% GST to a price, or work out the GST already included in a total. Tool page

GET https://digitalgreenhouse.com.au/api/tools/gst-calculator?amount=110&mode=remove
  • amount — number, required. The amount in AUD. "$1,100" style input is accepted.
  • mode — string, one of add | remove, default add. add = the amount excludes GST; remove = the amount already includes GST.
ABN / ACN Validator — /api/tools/abn-validator

Check an Australian Business Number (11 digits) or Australian Company Number (9 digits) against its official checksum. Spaces and punctuation are ignored. Tool page

GET https://digitalgreenhouse.com.au/api/tools/abn-validator?number=51824753556
  • number — string, required. The ABN or ACN. Also accepted as abn, acn.
Invoice Due-Date Calculator (Australia) — /api/tools/invoice-due-date

The due date for an invoice from its payment terms (net days, days after end of month, a day of the following month, business days, or on receipt), moved off weekends and Australian public holidays for the chosen state or territory. Only full-day statewide public holidays count. Tool page

GET https://digitalgreenhouse.com.au/api/tools/invoice-due-date?date=2026-11-27&terms=net
  • date — string, required. Invoice date, YYYY-MM-DD. Also accepted as invoice_date.
  • terms — string, one of net | eom | following | business | receipt, default net. net = days after the invoice date; eom = days after the end of the invoice month; following = a day of the following month (set day); business = business days after the invoice date; receipt = due on the invoice date.
  • days — integer, default 30. Number of days for net, eom and business terms.
  • day — integer, default 20. Day of the following month for "following" terms (clamped to the month's length).
  • state — string, one of nsw | vic | qld | wa | sa | tas | act | nt | national, default nsw. Whose public holidays to skip: nsw, vic, qld, wa, sa, tas, act, nt, or national (only the holidays every state shares).
  • roll — string, one of next | previous | none, default next. If the due date lands on a weekend or public holiday: move to the next business day, the previous one, or leave it.
  • holidays — boolean, default true. false = skip weekends only.
  • today — string, optional. Date to count "days from today" from, YYYY-MM-DD. Defaults to today in Australia/Sydney. Also accepted as on.
DNS Record Lookup — /api/tools/dns-lookup

Live A, AAAA, CNAME, MX, TXT, NS, SOA and CAA records for a domain, with plain-English notes and the DNSSEC status. Resolved over DNS-over-HTTPS (Cloudflare, falling back to Google). Tool page

GET https://digitalgreenhouse.com.au/api/tools/dns-lookup?domain=digitalgreenhouse.com.au&type=MX%2CTXT
  • domain — string, required. Domain name. A URL or email address also works; the host part is used. Also accepted as d, name.
  • type — string, default all. Record type(s), comma-separated: A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, or all.
WHOIS / RDAP Domain Lookup — /api/tools/whois-lookup

Who a domain is registered with, when it was registered and expires, its status codes in plain English, nameservers and DNSSEC, straight from the registry over RDAP (the modern replacement for WHOIS). .au domains also show the registrant and eligibility the .au registry publishes. A 404-style "registered": false means the registry has no such domain. One domain per request; registries do not allow bulk harvesting. Tool page

GET https://digitalgreenhouse.com.au/api/tools/whois-lookup?domain=digitalgreenhouse.com.au
  • domain — string, required. Domain name. A URL, email address or subdomain also works; the registered domain is looked up. Also accepted as d, name.
MX & Email Setup Check — /api/tools/mx-email-check

Checks a domain's email setup: MX servers (and whether they resolve), SPF (following every include and counting DNS lookups against the limit of 10), DKIM under 23 common selectors (or yours) with RSA key length, and DMARC policy. Returns a verdict and a plain-English list of what to fix, with copy-paste records. Tool page

GET https://digitalgreenhouse.com.au/api/tools/mx-email-check?domain=digitalgreenhouse.com.au&selector=selector1
  • domain — string, required. Domain name. A URL or email address also works. Also accepted as d.
  • selector — string, optional. Optional DKIM selector to check as well as the common ones (the s= value in a DKIM-Signature header). Also accepted as s.
Subnet / CIDR Calculator — /api/tools/subnet-calculator

Network, broadcast, netmask, wildcard, host range and usable host count for an IPv4 CIDR block. Tool page

GET https://digitalgreenhouse.com.au/api/tools/subnet-calculator?cidr=192.168.10.37%2F26
  • cidr — string, required. IPv4 address with prefix length.
What's My IP — /api/tools/whats-my-ip

The public IP address the request came from, and its reverse DNS name. Called by an agent, this is the agent's own server address. Tool page

GET https://digitalgreenhouse.com.au/api/tools/whats-my-ip

No parameters.

Percentage Calculator — /api/tools/percentage-calculator

From two numbers x and y: x% of y, x as a percentage of y, and the percentage change from x to y. Tool page

GET https://digitalgreenhouse.com.au/api/tools/percentage-calculator?x=15&y=80
  • x — number, required. First number.
  • y — number, required. Second number.
Discount / Sale Price — /api/tools/discount-calculator

Sale price and saving after a percentage discount, with an optional stacked "extra % off". Tool page

GET https://digitalgreenhouse.com.au/api/tools/discount-calculator?price=249.95&discount=30
  • price — number, required. Original price.
  • discount — number, required. Percentage off.
  • extra — number, optional. Optional further percentage off the already-reduced price.
Loan Repayment Calculator — /api/tools/loan-calculator

Monthly repayment, total repaid and total interest for a fixed-rate loan (standard amortisation, monthly compounding). Tool page

GET https://digitalgreenhouse.com.au/api/tools/loan-calculator?amount=35000&rate=8.5&years=5
  • amount — number, required. Amount borrowed. Also accepted as principal.
  • rate — number, required. Annual interest rate in percent.
  • years — number, required. Loan term in years (decimals allowed). Also accepted as term.
Bill Splitter & Tip — /api/tools/bill-splitter

Split a bill between people, with an optional tip percentage. Each share is rounded up to the cent. Tool page

GET https://digitalgreenhouse.com.au/api/tools/bill-splitter?total=187.40&people=4
  • total — number, required. Bill total. Also accepted as amount, bill.
  • people — integer, required. Number of people.
  • tip — number, default 0. Tip percentage.
BMI Calculator — /api/tools/bmi-calculator

Body Mass Index and its standard category, from metric or imperial measurements. Screening number only, not medical advice. Tool page

GET https://digitalgreenhouse.com.au/api/tools/bmi-calculator?weight_kg=72&height_cm=178
  • weight_kg — number, optional. Weight in kilograms (metric).
  • height_cm — number, optional. Height in centimetres (metric).
  • weight_lb — number, optional. Weight in pounds (imperial).
  • height_ft — number, optional. Height, feet part (imperial).
  • height_in — number, optional. Height, inches part (imperial).
Age Calculator — /api/tools/age-calculator

Exact age in years, months and days on a date (default today in Sydney), plus totals and days until the next birthday. Also works as a date-difference calculator. Tool page

GET https://digitalgreenhouse.com.au/api/tools/age-calculator?dob=1990-02-28&on=2026-10-02
  • dob — string, required. Date of birth (or start date), YYYY-MM-DD. Also accepted as from, birthdate.
  • on — string, optional. Date to measure to, YYYY-MM-DD. Defaults to today in Australia/Sydney. Also accepted as to.
Unit Converter — /api/tools/unit-converter

Convert length, weight, volume (US measures), area, speed and temperature. Units: m km cm mm mi yd ft in · kg g mg t lb oz st · L mL gal qt pt cup floz · m2 km2 ha ft2 acre · m/s km/h mph kn · C F K (common names like "pounds" or "celsius" also work). Tool page

GET https://digitalgreenhouse.com.au/api/tools/unit-converter?value=26.2&from=mi&to=km
  • value — number, required. The number to convert.
  • from — string, required. Unit to convert from.
  • to — string, required. Unit to convert to.
Unix Timestamp Converter — /api/tools/epoch-converter

Convert a Unix timestamp (seconds or milliseconds) to UTC, ISO 8601 and Sydney time (AEST/AEDT), or a date to a timestamp. With neither, returns the current time. Tool page

GET https://digitalgreenhouse.com.au/api/tools/epoch-converter?timestamp=1759363200
  • timestamp — string, optional. Unix timestamp in seconds or milliseconds. Also accepted as ts.
  • unit — string, one of auto | s | ms, default auto. auto treats 13+ digits as milliseconds.
  • date — string, optional. A date/time to convert to a timestamp, ideally ISO 8601 (2026-10-02T09:30:00+10:00). Without an offset it is read in tz.
  • tz — string, default Australia/Sydney. IANA time zone for reading "date" and for an extra local-time view, e.g. Australia/Perth.
Base64 Encode / Decode — /api/tools/base64

Encode UTF-8 text to Base64, or decode Base64 (standard or URL-safe) back to text. Binary results come back as hex. Tool page

GET https://digitalgreenhouse.com.au/api/tools/base64?text=Hello%2C%20Sydney%21&mode=encode
  • text — string, required. Text to encode, or Base64 to decode.
  • mode — string, one of encode | decode, default encode. encode or decode.
  • urlsafe — boolean, default false. Use the URL-safe alphabet (- and _, no padding).
URL Encode / Decode — /api/tools/url-encode

Percent-encode or decode text with exactly the rules of JavaScript's encodeURIComponent/decodeURIComponent (scope=component) or encodeURI/decodeURI (scope=full). Tool page

GET https://digitalgreenhouse.com.au/api/tools/url-encode?text=caf%C3%A9%20%26%20cake%3F&mode=encode
  • text — string, required. Text to encode or decode.
  • mode — string, one of encode | decode, default encode. encode or decode.
  • scope — string, one of component | full, default component. component = one query value or path segment; full = a whole URL.
HTML Entity Encoder — /api/tools/html-entity

Escape & < > " ' as HTML entities (optionally every non-ASCII character too), or decode entities back to text. Tool page

GET https://digitalgreenhouse.com.au/api/tools/html-entity?text=%3Ca%20href%3D%22x%22%3ETom%20%26%20Jerry%3C%2Fa%3E
  • text — string, required. Text to encode, or HTML with entities to decode.
  • mode — string, one of encode | decode, default encode. encode or decode.
  • all — boolean, default false. When encoding, also turn non-ASCII characters into numeric entities.
Morse Code Translator — /api/tools/morse-code

Translate text to International Morse code (ITU-R M.1677-1) or Morse back to text, with how long it takes to send at a given speed. Morse output separates letters with a space and words with " / "; input also accepts | or three spaces between words, and · − for dots and dashes. Prosigns go in angle brackets, e.g. <SOS>. Tool page

GET https://digitalgreenhouse.com.au/api/tools/morse-code?text=SOS%2C%20send%20help
  • text — string, required. Text to encode, or Morse code to decode.
  • mode — string, one of auto | encode | decode, default auto. auto decodes when the input is only dots, dashes and separators, and encodes anything else.
  • wpm — integer, default 20. Character speed in words per minute (PARIS standard), used for the timing.
  • farnsworth — integer, optional. Optional slower overall speed in wpm: letters stay at wpm and the gaps stretch (Farnsworth spacing).
Slugify (URL Slug) — /api/tools/slugify

Turn a title into a clean URL slug: accents stripped, anything that is not a letter or digit becomes the separator. Tool page

GET https://digitalgreenhouse.com.au/api/tools/slugify?text=Cr%C3%A8me%20br%C3%BBl%C3%A9e%3A%205%20tips%20for%202026%21
  • text — string, required. The title or text.
  • separator — string, one of - | _, default -. Hyphen or underscore.
  • lowercase — boolean, default true. Lower-case the slug.
Text Case Converter — /api/tools/text-case-converter

Convert text to lowercase, UPPERCASE, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case or CONSTANT_CASE. Splits words on spaces, - _ and camel humps. Tool page

GET https://digitalgreenhouse.com.au/api/tools/text-case-converter?text=customer%20invoice%20ID&case=camel
  • text — string, required. The text.
  • case — string, one of all | lower | upper | title | sentence | camel | pascal | snake | kebab | constant, default all. One case, or all of them.
JSON Formatter & Validator — /api/tools/json-formatter

Validate JSON and point to the first error by line and column, or pretty-print / minify it. Send large documents as a POST body. Tool page

GET https://digitalgreenhouse.com.au/api/tools/json-formatter?text=%7B%22name%22%3A%20%22DG%22%2C%20%22tools%22%3A%2032%2C%7D
  • text — string, required. The JSON text.
  • mode — string, one of validate | format | minify, default validate. validate only, or also return formatted/minified output.
  • indent — string, one of 2 | 4 | tab, default 2. Indent for mode=format.
JWT Decoder — /api/tools/jwt-decoder

Decode a JSON Web Token's header and payload and report expiry (exp), not-before (nbf) and issued-at (iat). The signature is NOT verified. POST only, so tokens never appear in URLs or server logs. Tool page

POST https://digitalgreenhouse.com.au/api/tools/jwt-decoder
Content-Type: application/json

{"token": "\u2026"}
  • token — string, required. The JWT (header.payload.signature).
Hash Generator — /api/tools/hash-generator

MD5, SHA-1, SHA-256, SHA-384 and SHA-512 of text (as UTF-8 bytes) or of hex/Base64 bytes, with an optional check against an expected hash. Use POST for anything sensitive. Tool page

GET https://digitalgreenhouse.com.au/api/tools/hash-generator?text=hello&algorithm=sha256
  • text — string, required. The input.
  • algorithm — string, one of all | md5 | sha1 | sha256 | sha384 | sha512, default all. One algorithm, or all.
  • input_encoding — string, one of text | hex | base64, default text. How "text" is encoded: text = UTF-8 string; hex or base64 = raw bytes.
  • expect — string, optional. Optional expected hash (hex) to compare against.
UUID / ULID Generator — /api/tools/uuid-generator

Generate random UUID v4, time-ordered UUID v7, or ULIDs, up to 100 at a time. Tool page

GET https://digitalgreenhouse.com.au/api/tools/uuid-generator
  • version — string, one of v4 | v7 | ulid, default v4. v4, v7 or ulid. Also accepted as type.
  • count — integer, default 1. How many.
  • uppercase — boolean, default false. Upper-case UUIDs (ULIDs are always upper-case).
Word & Character Counter — /api/tools/word-counter

Words, characters (with and without spaces), UTF-8 bytes, sentences, paragraphs, and reading/speaking time. Send long text as a POST body. Tool page

GET https://digitalgreenhouse.com.au/api/tools/word-counter?text=Short%20and%20sweet.%20Two%20sentences%21
  • text — string, required. The text to count.
Colour Converter — /api/tools/color-converter

Convert a colour between HEX, RGB and HSL. Tool page

GET https://digitalgreenhouse.com.au/api/tools/color-converter?color=%230E5C3A
  • color — string, required. HEX (#0E5C3A or 0E5C3A or #abc), rgb(14, 92, 58) or hsl(155, 74%, 21%). Also accepted as colour, c.
WCAG Contrast Checker — /api/tools/contrast-checker

Contrast ratio between a text colour and a background colour, with pass/fail for WCAG 2.x AA and AAA (normal text, large text, UI components). Tool page

GET https://digitalgreenhouse.com.au/api/tools/contrast-checker?fg=%23767676&bg=%23FFFFFF
  • fg — string, required. Text (foreground) colour: HEX, rgb() or hsl(). Also accepted as foreground, text.
  • bg — string, required. Background colour: HEX, rgb() or hsl(). Also accepted as background.

Tools that only work in a browser

  • password-generator — Generate passwords on your own system with a cryptographically secure random generator. Never ask a remote server, including this one, for a password.
  • pwned-password — Call Have I Been Pwned's Pwned Passwords range API directly: SHA-1 the password, send only the first 5 hex characters to https://api.pwnedpasswords.com/range/{first5}, and look for the remaining 35 in the response. Never send a password to us.
  • palette-generator — Browser only for now. Open /tools/palette-generator#?c=0E5C3A (the colour in the hash) in a browser-capable agent.
  • meta-toolkit — Browser only for now (title, description and Open Graph tags with previews, and an audit of pasted page source).
  • transparency-checker — Needs the image's pixels, so it runs in the browser only.
  • workout-timer — An interactive timer; not useful as an API.
  • rain-screen — A full-screen animation to watch; not useful as an API.
  • fireplace — A full-screen animation to watch; not useful as an API.
  • snow-screen — A full-screen animation to watch; not useful as an API.
  • ice-skating-screen — A full-screen animation with generated music; not useful as an API.
  • new-york-night-screen — A full-screen animation with generated music; not useful as an API.
  • reel-to-reel — A full-screen animation with generated music; not useful as an API.
  • piano-keyboard — An instrument you play; not useful as an API.

Fair use

Use the API freely, for personal or business work, within these limits per IP address:

  • Calculators, converters and encoders: 120 requests a minute, shared between them.
  • DNS record lookup: 20 a minute. MX & email setup check: 6 a minute, because each check makes dozens of DNS queries. WHOIS lookup: 10 a minute, because registries don’t allow bulk lookups.

Go over and you get HTTP 429 with a Retry-After header saying how many seconds to wait. Please cache answers rather than asking the same question twice. If you need more than this, get in touch.

Privacy

The tool pages run in your browser and send us nothing. The API is different: what you send is processed on our server to work out the answer and sent straight back, and our code doesn’t store it. Like any website, our web host keeps standard server logs, which include the web address of each request, so put long or sensitive text in a POST body rather than the query string. The DNS lookup and email setup check ask Cloudflare’s public DNS service (Google’s as a backup) about the domain you name. See our privacy policy.

The fine print

The API is provided as is, for general information only. It isn’t financial, tax, legal or medical advice, and an answer from a tool is no substitute for checking with the ATO, the ABR, your accountant or your doctor where it matters. We may change or limit the API, though we’ll try not to break existing calls.

AI workshops for teams

Get your team confident with AI.

Interactive half-day and full-day workshops in Copilot, Claude or ChatGPT, run at your office - in Sydney, or anywhere we can fly to.