{
  "name": "Attest",
  "description": "Small paid tools for AI agents, on one API key and one shared credit balance.",
  "auth": "Send the key as a bearer token in the authorization header. One key and one credit balance cover every service, including Attest Capture. A failed call is refunded automatically.",
  "issue_key_url": "https://getattest.com.au/api/v1/keys",
  "verify_key_url": "https://getattest.com.au/api/v1/keys/verify",
  "docs_url": "https://getattest.com.au/tools",
  "openapi_url": "https://getattest.com.au/openapi.yaml",
  "generated_from": "apps/api/svc/index.mjs",
  "count": 27,
  "services": [
    {
      "key": "airports",
      "title": "Airport reference data",
      "use_when": "a task needs the static facts about an airport: what an IATA or ICAO code means, where the airport is (city, region, country, coordinates, elevation), whether it has scheduled airline service, which airports a country has, or the straight-line distance and initial bearing between two of them.",
      "method": "GET",
      "path": "/api/v1/airports",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/airports"
    },
    {
      "key": "company_jobs",
      "title": "Company open roles",
      "use_when": "a task needs the roles one named company is hiring for right now: the live list from that company's own Greenhouse, Lever or Ashby job board, with title, location, department, team, employment type, remote flag, posted date and a link to apply, and optionally the description as plain text. Give a board token or the careers-page URL; the provider is detected either way.",
      "method": "POST",
      "path": "/api/v1/jobs/company",
      "cost": 2,
      "docs_url": "https://getattest.com.au/tools/company_jobs"
    },
    {
      "key": "currency_convert",
      "title": "Currency conversion (reference rates)",
      "use_when": "a task needs an indicative conversion of an amount between two of about 30 major currencies (AUD, USD, GBP, JPY, NZD, CAD, CNY and others) at the latest European Central Bank reference rates, for estimates or reports, not for transactions. The ECB publishes the euro rates free of charge on its website.",
      "method": "POST",
      "path": "/api/v1/currency/convert",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/currency_convert"
    },
    {
      "key": "currency_rates",
      "title": "Currency reference rates",
      "use_when": "a task needs today's European Central Bank reference exchange rates for about 30 major currencies (AUD, USD, GBP, JPY, NZD, CAD, CNY and others) against any of them as base, for information such as estimates or reports, not for transactions. The ECB publishes the euro rates free of charge on its website.",
      "method": "GET",
      "path": "/api/v1/currency/rates",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/currency_rates"
    },
    {
      "key": "design_tokens",
      "title": "Website design tokens",
      "use_when": "a task needs the design of a live web page as data: the colour palette with where each colour is used, the font families, weights, sizes and line heights actually rendering, the spacing steps, corner radii, box shadows, CSS custom properties on :root, container widths, and whether the page has a dark mode. It reads one page at one viewport width; it does not return the site's stylesheets or a screenshot unless you ask for one.",
      "method": "POST",
      "path": "/api/v1/design-tokens",
      "cost": 2,
      "docs_url": "https://getattest.com.au/tools/design_tokens"
    },
    {
      "key": "dev_utils",
      "title": "Developer utilities: cron, regex, UUID, slug and JSON",
      "use_when": "a task needs one of the small developer answers that would otherwise cost a round trip to a web tool: the next times a cron expression fires (in a named time zone and in UTC, with a plain-English reading and a note on which non-standard extensions it uses), what a regular expression matches in a piece of text (run on RE2, so no pattern can backtrack its way into exponential time, and a pattern whose compiled program is too large for the input it was given is refused rather than run), fresh UUIDs (version 4, or time-ordered version 7), a URL slug for a title, or JSON pretty-printed, minified or key-sorted with the line and column of a syntax error. Free, and no data is kept.",
      "method": "POST",
      "path": "/api/v1/dev",
      "cost": 0,
      "docs_url": "https://getattest.com.au/tools/dev_utils"
    },
    {
      "key": "directory_dataset",
      "title": "Directory dataset",
      "use_when": "an agent needs a paged export or change feed of verified Attest directory facts.",
      "method": "POST",
      "path": "/api/v1/directory/dataset",
      "cost": 10,
      "docs_url": "https://getattest.com.au/tools/directory_dataset"
    },
    {
      "key": "directory_search",
      "title": "Directory search",
      "use_when": "an agent needs to find AI-agent tools (MCP servers, frameworks, browser automation, memory, evals, voice, coding agents and more) by keyword or category before choosing one.",
      "method": "GET",
      "path": "/api/v1/directory/search",
      "cost": 0,
      "docs_url": "https://getattest.com.au/tools/directory_search"
    },
    {
      "key": "email_check",
      "title": "Email address check",
      "use_when": "an agent needs to screen an email address before a sign-up, lead import or send: syntax, whether the domain can receive mail (MX), disposable domains, role accounts and free mailbox providers — without contacting the mail server.",
      "method": "POST",
      "path": "/api/v1/email/check",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/email_check"
    },
    {
      "key": "email_domain_auth",
      "title": "Email sending-domain check",
      "use_when": "a task needs to know whether a domain is set up to send email that inboxes accept: MX, SPF (with the 10-lookup limit), DKIM keys, DMARC policy, MTA-STS, TLS-RPT and BIMI, with a 0-100 score and plain-English fixes.",
      "method": "POST",
      "path": "/api/v1/email/domain-auth",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/email_domain_auth"
    },
    {
      "key": "file_convert",
      "title": "File converter",
      "use_when": "a task has a file in one format and needs it in another: a Word document (.docx) to HTML, Markdown or plain text; HTML to Markdown or plain text; Markdown to HTML; CSV to JSON; JSON to CSV; or CSV and TSV either way. Send the file as a URL or base64, or paste the text. Input is capped at 6 MB, or 1 MB when the target is Markdown, and nothing is stored.",
      "method": "POST",
      "path": "/api/v1/files/convert",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/file_convert"
    },
    {
      "key": "image_transform",
      "title": "Image transform",
      "use_when": "a task needs an image resized, cropped to a box, rotated, flipped, greyscaled, blurred, tinted, trimmed, padded, compressed or converted between JPEG, PNG, WebP and AVIF; or needs a favicon set built from a logo; or needs to read a photo's EXIF and ICC details (with GPS withheld unless asked for) before the metadata is stripped.",
      "method": "POST",
      "path": "/api/v1/image/transform",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/image_transform"
    },
    {
      "key": "ip_lookup",
      "title": "IP address lookup",
      "use_when": "a task needs to know what an IPv4 or IPv6 address is: public or private/reserved (per IANA registries), which network (ASN) announced it in a recent public routing snapshot, and — for public addresses — the approximate country of that network. An IPv6 address that wraps an IPv4 one (IPv4-mapped, NAT64, 6to4, Teredo) returns it in embedded_ipv4; look that address up to get its network and country. The country describes the network, not a person or device. IP geolocation by DB-IP (CC BY 4.0).",
      "method": "POST",
      "path": "/api/v1/ip/lookup",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/ip_lookup"
    },
    {
      "key": "links_verify",
      "title": "Backlink check",
      "use_when": "a task needs to confirm that a page links to a site or URL: whether the link is there, whether it is followed (no nofollow, sponsored or ugc) and whether the linking page can be indexed, based on Google's published robots and link rules.",
      "method": "POST",
      "path": "/api/v1/links/verify",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/links_verify"
    },
    {
      "key": "media_probe",
      "title": "Media file probe",
      "use_when": "a task needs to know what a media file actually is: its container and codecs, how long it runs, its resolution and frame rate, its sample rate and channel count, and the bitrate of each stream — from a public URL or an inline upload, without downloading it into a media player.",
      "method": "POST",
      "path": "/api/v1/media/probe",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/media_probe"
    },
    {
      "key": "open_media_search",
      "title": "Public-domain art and media search",
      "use_when": "a task needs an image or artwork that is free to use: public-domain works from The Metropolitan Museum of Art and the Art Institute of Chicago, each with title, artist, date, medium, a full-size image URL, a thumbnail, the museum's page for the work, the licence the museum publishes and a ready-made credit line. Only items the museum itself flags as public domain are returned.",
      "method": "GET",
      "path": "/api/v1/media/open-search",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/open_media_search"
    },
    {
      "key": "pdf_inspect",
      "title": "PDF readability check",
      "use_when": "a task needs to know what automated software gets when it reads a PDF: whether there is a real text layer or only scanned pictures, which fonts are embedded, whether the page is multi-column, whether the text comes out in reading order, and — for a CV — whether contact details, section headings, bullets and dates can be found at all.",
      "method": "POST",
      "path": "/api/v1/pdf/inspect",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/pdf_inspect"
    },
    {
      "key": "pdf_tools",
      "title": "PDF tools",
      "use_when": "a task has a PDF to inspect or reshape without a desktop app: page count and page sizes, text extraction, merging several files, splitting or pulling out pages, rotating, or rendering pages to PNG.",
      "method": "POST",
      "path": "/api/v1/pdf",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/pdf_tools"
    },
    {
      "key": "phone_parse",
      "title": "Phone number check",
      "use_when": "a task needs to know whether a phone number is valid for its country, what kind of number it is (mobile, landline, toll-free, premium rate, VoIP) and its E.164, national and international formats. Formats, country and type are only returned for valid numbers; an invalid number keeps its E.164 form only when its length is possible, and e164 is null for any number longer than the 15 digits E.164 allows. The phone input may be a plain number or an RFC 3966 tel: URI, so the uri from an earlier answer can be fed straight back in. Checked offline: no carrier or live-line lookup.",
      "method": "POST",
      "path": "/api/v1/phone/parse",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/phone_parse"
    },
    {
      "key": "psd_inspect",
      "title": "Photoshop file inspector",
      "use_when": "a task needs to know what is inside a .psd or .psb without opening Photoshop: canvas size, colour mode and profile, the layer tree with blend modes and effects, which layers are text (and the fonts they need), smart objects, adjustment layers and guides, with an optional small PNG preview. Bitmap, grayscale, indexed and RGB files only.",
      "method": "POST",
      "path": "/api/v1/psd/inspect",
      "cost": 3,
      "docs_url": "https://getattest.com.au/tools/psd_inspect"
    },
    {
      "key": "sheets_build",
      "title": "Spreadsheet builder",
      "use_when": "a task has to hand back a real spreadsheet rather than a wall of rows: typed columns (text, number, date, currency, percent) with number formats applied, a bold header, optional frozen header row, column widths and an autofilter, returned as a base64 .xlsx or .csv. Up to 10 sheets and 50,000 cells in total (the header row counts). Values that could be read back as formulas are neutralised. Dates go in as YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS; percent cells store a fraction (0.15 is 15%) unless the column sets percent_basis to \"percent\". CSV takes one sheet.",
      "method": "POST",
      "path": "/api/v1/sheets/build",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/sheets_build"
    },
    {
      "key": "subtitle_tools",
      "title": "Subtitle tools: convert, retime, merge and read caption files",
      "use_when": "a task involves a subtitle or caption file: converting between SubRip (.srt), WebVTT (.vtt), ASS/SSA and YouTube SBV, shifting timings or rescaling them for a frame-rate change (23.976 to 25 and back), merging several files onto one timeline, pulling a plain-text transcript out of captions, or reporting a file's cue count, duration and reading speed. The converted file comes back in result_text; the info operation leaves result_text empty and answers in the info block. Send the file as text, as a public URL, or as base64 up to 4 MB.",
      "method": "POST",
      "path": "/api/v1/subtitles",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/subtitle_tools"
    },
    {
      "key": "techstack",
      "title": "Tech Stack lookup",
      "use_when": "a task depends on what a website is built with: CMS, ecommerce platform, hosting, analytics, ad pixels, payments, chat or forms.",
      "method": "POST",
      "path": "/api/v1/techstack",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/techstack"
    },
    {
      "key": "template_render",
      "title": "Document and card renderer",
      "use_when": "a task needs a PNG or PDF built from content the caller already has — HTML, Markdown, or a built-in social card, invoice, certificate or pull-quote template — for example an OG image, a receipt, a one-page report or a printable summary. It renders content you supply; it does not visit or screenshot a live website (use /api/v1/capture for that).",
      "method": "POST",
      "path": "/api/v1/render",
      "cost": 2,
      "docs_url": "https://getattest.com.au/tools/template_render"
    },
    {
      "key": "text_diff",
      "title": "Text and JSON compare",
      "use_when": "a task needs to know exactly what changed between two versions of a text, document, config file or JSON payload: line, word or character changes with a unified patch, or a JSON Pointer list of structural changes. Inputs are capped at 1,000,000 characters a side and 1,500,000 combined; lines and words mode handle that whole range, while chars mode on a heavily rewritten document falls back to block-level changes (coarse: true in the response) rather than taking longer.",
      "method": "POST",
      "path": "/api/v1/diff",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/text_diff"
    },
    {
      "key": "text_stats",
      "title": "Text Stats: words, characters, tokens and SMS segments",
      "use_when": "a task needs counts for a piece of text: words, user-perceived characters, bytes, sentences, paragraphs, lines, reading or speaking time, OpenAI token counts, SMS segments, or a check against length limits such as a character, word, SMS or prompt-token budget.",
      "method": "POST",
      "path": "/api/v1/text/stats",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/text_stats"
    },
    {
      "key": "url_markdown",
      "title": "Read a page as Markdown",
      "use_when": "a task needs the readable text of one web page instead of its HTML: an article, a documentation page, a changelog or a product page, returned as Markdown with its headings, lists, tables and code blocks intact, plus the page's title, byline, language and links.",
      "method": "POST",
      "path": "/api/v1/read",
      "cost": 1,
      "docs_url": "https://getattest.com.au/tools/url_markdown"
    }
  ]
}