Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
100
💰 Paid API live JSON-RPC A2A 1.0 v1.0.0 x402 micropay

Duo Data Utilities

api.duoleads.com · Duo Leads

31 independent pay-per-call data utilities (identifiers, time, text, encodings, geodesy, blockchain primitives, reference tables, number arithmetic). $0.05 per call, payable over x402 (USDC on Base, eip155:8453). No account, no API key. A2A: JSON-RPC at https://api.duoleads.com/a2a; send a DataPart {"skill": "<skill id>", "params": {...}}; skill execution is paid through the a2a-x402 extension. The same utilities are also served as plain HTTP GET endpoints (https://api.duoleads.com/openapi.json) and as MCP tools over Streamable HTTP at https://api.duoleads.com/mcp (tools/list free, tools/call paid).

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain api.duoleads.com via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
65/100
grade C · 9 criteria
Uptime
accumulating
1/5 direct probes · 30d
~24 ms response
Observed inflow · 30d
not yet measured
wallet declared · scan pending
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
1 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

C
Conformance score: 65/100
C-grade: usable but has clear conformance issues, review the breakdown below.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe (answers in ~24 ms).
pass Protocol version 10/10
Declares A2A 1.0 with supportedInterfaces[] (current v1 card shape).
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 1 probe so far, need ≥5 for an uptime grade.
pass Skill declaration 10/10
Declares 31 skills with structured metadata.
partial Verified Identity 5/10
Provider declared: Duo Leads (https://api.duoleads.com). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 5/5
declares 1 modern capability flag(s) (x402); seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

1 snapshot Every change to agent-card.json
Captured Hash
2026-09-29 04:38:14 current 4109eeb02a64… view →
Uptime
accumulating
1 direct probes · 30d
Response
40ms
last direct probe
Skills
31
declared
Streaming
—
SSE-capable

Try it

Send a message to this agent live. Your prompt is proxied through Agenstry.

calling agent…

Endpoints

Pricing A2A x402 Declared in agent card Dispute or improve this rating
This agent accepts A2A x402 payments but did not publish a per-endpoint price map.
Try it ↗ Opens the operator's playground / docs in a new tab.
Settlement wallet: 0xcd673f7e1dad254347aeab6be0defe8b9c6b3a39 on Base · basescan ↗
Agent cardhttps://api.duoleads.com/.well-known/agent-card.json
Providerhttps://api.duoleads.com
Docshttps://api.duoleads.com/docs
Discovered via
agentic_market manifests

Skills · 31 declared · mapped to canonical taxonomy

National identity- and company-number validation, 23 countries

Validate a national identity, tax or company registration number against its country's official checksum rule. Covers 23 countries including NL BSN, ES NIF/NIE/…

canonical Company Registry Lookup match 85%
deterministicno-api-keyididentifiersvalidation
GS1 identifier validation: GTIN-8/12/13/14, GLN, SSCC

Validate and convert GS1 identifiers: GTIN-8, GTIN-12 (UPC-A), GTIN-13 (EAN-13), GTIN-14, GLN and SSCC. Returns the check-digit verdict, the computed correct ch…

canonical KYC and Identity Verification match 81%
deterministicno-api-keyididentifiersvalidation
ISIN, CUSIP, SEDOL and FIGI check-digit validation

Validate the check digit of a financial security identifier: ISIN (ISO 6166), CUSIP, SEDOL and FIGI. Returns the verdict, the computed correct check character, …

canonical Agent Profiles match 81%
deterministicno-api-keyididentifiersvalidation
Instant to wall-clock time in an IANA zone, with offset and DST state

Convert an instant to wall-clock time in a named IANA time zone, or a wall-clock time in a zone back to an instant. Returns the local date and time, the UTC off…

canonical Locale and Regional Primitives match 79%
no-api-keytimetimezones
Next daylight-saving transitions for an IANA time zone

List the daylight-saving transitions for an IANA time zone over a date range: the exact instant of each shift, the offset before and after, and whether local cl…

canonical Recurring Job Scheduling match 80%
no-api-keytimetimezonesdst
Business-day arithmetic with a caller-supplied weekend mask and holiday list

Business-day arithmetic with a caller-supplied calendar: add or subtract N working days from a date, or count the working days between two dates. The weekend is…

canonical Invoicing and Billing match 79%
deterministicno-api-keytimecalendarbusiness-days
RFC 5545 RRULE expansion into concrete occurrence timestamps

Expand an RFC 5545 recurrence rule into concrete occurrence timestamps. Accepts an RRULE string with DTSTART, an IANA time zone, and optional EXDATE and RDATE l…

canonical Recurring Job Scheduling match 81%
deterministicno-api-keytimecalendarrecurrence
Gregorian conversion to Hijri, Hebrew and Japanese-era dates, plus Easter

Convert a Gregorian date to other calendar systems and back: Islamic (both the tabular civil calendar and the Umm al-Qura variant), Hebrew, Japanese imperial er…

canonical Calendar Scheduling match 81%
deterministicno-api-keytimecalendar
Unicode-aware URL slug with transliteration

Turn arbitrary text into a URL-safe slug. Decomposes accents, transliterates German umlauts, Scandinavian and Turkish letters, and the ligatures that lose meani…

canonical Get Article match 81%
deterministicno-api-keytextunicodeslug
Cyrillic-to-Latin transliteration (ISO 9, BGN/PCGN)

Transliterate Cyrillic text into Latin using a named standard: ISO 9:1995 (one-to-one, with diacritics) or the BGN/PCGN Russian system. Returns the transliterat…

canonical Multilingual Translation match 80%
deterministicno-api-keytextunicodetransliteration
Unicode normalisation, script detection and confusable/homoglyph analysis

Analyse a string at the Unicode level: apply NFC, NFD, NFKC or NFKD normalisation, report which normalisation forms it is already in, list the scripts present, …

canonical Agent Profiles match 80%
deterministicno-api-keytextunicodesecurity
String distance and phonetic keys: Levenshtein, Jaro-Winkler, Soundex, Metaphone

Compare two strings and return every standard similarity measure in one call: Levenshtein and Damerau-Levenshtein edit distance, normalised similarity, Jaro and…

canonical Sentence Similarity match 81%
deterministicno-api-keytextsimilarityphonetic
URL parse, canonicalise, and registrable-domain (eTLD+1) extraction

Parse and canonicalise a URL, and extract its registrable domain using the Public Suffix List — the part an agent needs to decide whether two URLs belong to the…

canonical Web Scraping and Extraction match 82%
deterministicno-api-keycodeurldomains
IDNA2008 / punycode conversion and domain-label validation

Convert internationalised domain names between Unicode and ASCII punycode in either direction, label by label, and validate each label against IDNA2008: length,…

canonical Agent Profiles match 80%
deterministicno-api-keycodedomainsidna
Semantic-version parse, compare, and range satisfaction

Parse a semantic version into major, minor, patch, prerelease and build parts; compare two versions by precedence including prerelease ordering; or test whether…

canonical Semantic Code Search match 83%
deterministicno-api-keycodeversionssemver
SHA-2, SHA-3, BLAKE2 and HMAC digests of supplied text or base64 bytes

Compute a cryptographic digest of supplied data: SHA-256, SHA-384, SHA-512, SHA-1, SHA3-256, SHA3-512, Keccak-256, BLAKE2b-256 and BLAKE2b-512, plus HMAC with a…

canonical x402 Crypto Micropayment match 80%
deterministicno-api-keycodecryptohashing
JWT structural decode: header, claims, expiry state — no signature verification

Decode a JSON Web Token without verifying it: returns the header, the claims, the signature length and algorithm, and a computed view of the time claims — wheth…

canonical Agent Profiles match 80%
no-api-keycodejwtsecurity
Geohash encode and decode with neighbour cells

Encode a WGS-84 latitude and longitude to a geohash at a chosen precision, or decode a geohash back to its bounding box, centre point and error bounds in metres…

canonical Maps and Routing match 82%
deterministicno-api-keygeogeohash
Open Location Code (plus code) encode and decode

Encode coordinates as an Open Location Code (plus code) at a chosen length, or decode a full code back to its bounding box and centre. Also shortens a full code…

canonical Maps and Routing match 82%
deterministicno-api-keygeopluscode
Point-in-polygon, bounding box, centroid and area on supplied GeoJSON

Geometric predicates on a GeoJSON geometry supplied in the request: point-in-polygon with correct hole handling, bounding box, centroid, signed area in square m…

canonical Maps and Routing match 80%
deterministicno-api-keygeogeojsongeometry
Geodesic distance, initial bearing and destination point on WGS-84

Distance and direction between WGS-84 coordinates: geodesic distance by Vincenty with a haversine fallback, initial and final bearing, the midpoint, and the des…

canonical Maps and Routing match 80%
deterministicno-api-keygeogeodesydistance
Blockchain address format detection and checksum validation

Identify which blockchain an address belongs to and validate its encoding: EVM EIP-55 checksum, Bitcoin base58check and bech32/bech32m with witness version, Sol…

canonical Bitcoin Fee Estimation match 81%
deterministicno-api-keychainblockchainaddresses
Keccak-256 hash, 4-byte function selector and 32-byte event topic from a Solidity signature

Compute the Keccak-256 hash of a Solidity function or event signature and derive the 4-byte function selector and the 32-byte event topic. Normalises the signat…

canonical x402 Crypto Micropayment match 79%
deterministicno-api-keychainblockchainsolidity
NUTS statistical region code lookup for the EU

Look up a NUTS statistical region of the European Union: resolve a NUTS code to its name, country and level, walk up to its parents or down to its children, or …

canonical Locale and Regional Primitives match 79%
deterministicno-api-keyrefeustatistics
Airport lookup by IATA or ICAO code with coordinates and elevation

Look up an airport by IATA or ICAO code and get its name, city, country, ISO 3166-2 region code, WGS-84 coordinates and elevation, or find the nearest airports …

canonical Flight Search and Booking match 83%
deterministicno-api-keyreftravelairports
Currency record (ISO 4217 codes, CLDR minor units and cash rounding)

Look up a currency by ISO 4217 code: its alphabetic and numeric codes, English name, minor-unit exponent, the smallest cash denomination where it differs from t…

canonical Locale and Regional Primitives match 80%
deterministicno-api-keyreffinancecurrency
ISO 3166-1 country record: codes, currency, TLD, UN M49 region

Look up a country or territory by ISO 3166-1 alpha-2, alpha-3 or numeric code, or by name, and get the other codes, the English name, the UN M49 region and sub-…

canonical Locale and Regional Primitives match 81%
deterministicno-api-keyrefcountriesiso-3166
Integer conversion between arbitrary numeric bases 2–36

Convert an integer between any two numeric bases from 2 to 36, with arbitrary precision so values far beyond 2^53 are exact. Accepts an optional sign and common…

canonical Locale and Regional Primitives match 80%
deterministicno-api-keynumnumbersconversion
Number spelled out in words, 12 locales, with ordinal and currency forms

Spell a number out in words in English, Dutch, German, French, Spanish, Italian, Portuguese, Polish, Russian, Turkish, Swedish or Japanese, in cardinal, currenc…

canonical Locale and Regional Primitives match 81%
deterministicno-api-keynumnumberslocalisation
Descriptive statistics and percentiles for a supplied numeric array

Descriptive statistics for a supplied numeric array in one call: count, sum, mean, median, mode, variance and standard deviation with variance and standard devi…

canonical Locale and Regional Primitives match 80%
deterministicno-api-keynumnumbersstatistics
Split a money amount into shares with no rounding loss

Split a money amount into shares without losing or inventing a cent. Divide evenly into N parts, or by a list of ratios, and the remainder is distributed one mi…

canonical Payroll Processing match 80%
deterministicno-api-keynumfinancemoney

Health · last 1 probes

When HTTP Live JSON-RPC Latency
2026-09-29 04:38:08 200 ✓ 40ms

Similar agents embedding-nearest

x402-endpoints.onrender.com
Paid x402 API tools for AI agents (USDC on Base). Official EU/global registries (GLEIF LEI, VIES VAT, Companies House, INSEE, EUR-Lex, ECB,
x402-endpoints.onrender.com · q 65%
toolcall.click
Keyless pay-per-call APIs for AI agents: 30 tools across compliance (sanctions/AML, HS codes, company/VAT), safety (chemical, FDA drug/devic
toolcall.click · q 100%
Sirenic live
Pay-per-call French & European company data (official registers: INSEE Sirene and INPI RNE for France, the national company registers of BE,
Sirenic · q 100%
compliancepulse.theaslangroupllc.com
Who is this company, officially? Global LEI lookup and legal-entity search against GLEIF, the ISO 17442 registry behind KYB, MiFID and EMIR
compliancepulse.theaslangroupllc.com · q 65%
eltociear-tokenguard.hf.space
Pay-per-call data API for AI agents: ERC-20 rug/safety scanning, wallet + contract intelligence, DeFi/TVL/yields, market and macro data, new
eltociear-tokenguard.hf.space · q 65%
compliancepulse-eight.vercel.app
Global regulatory intelligence API. Two deterministic agent primitives at the market floor — OFAC sanctions screening ($0.02, SDN + Consolid
compliancepulse-eight.vercel.app · q 45%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime A2A protocol version
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/api.duoleads.com.svg)](https://agenstry.com/agents/api.duoleads.com)
[![Verified Business](https://agenstry.com/badge/api.duoleads.com/identity.svg)](https://agenstry.com/agents/api.duoleads.com)
[![Uptime](https://agenstry.com/badge/api.duoleads.com/uptime.svg)](https://agenstry.com/agents/api.duoleads.com)
[![A2A version](https://agenstry.com/badge/api.duoleads.com/protocol.svg)](https://agenstry.com/agents/api.duoleads.com)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "Duo Data Utilities",
  "description": "31 independent pay-per-call data utilities (identifiers, time, text, encodings, geodesy, blockchain primitives, reference tables, number arithmetic). $0.05 per call, payable over x402 (USDC on Base, eip155:8453). No account, no API key. A2A: JSON-RPC at https://api.duoleads.com/a2a; send a DataPart {\"skill\": \"<skill id>\", \"params\": {...}}; skill execution is paid through the a2a-x402 extension. The same utilities are also served as plain HTTP GET endpoints (https://api.duoleads.com/openapi.json) and as MCP tools over Streamable HTTP at https://api.duoleads.com/mcp (tools/list free, tools/call paid).",
  "supportedInterfaces": [
    {
      "url": "https://api.duoleads.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://api.duoleads.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "provider": {
    "organization": "Duo Leads",
    "url": "https://api.duoleads.com"
  },
  "version": "1.0.0",
  "documentationUrl": "https://api.duoleads.com/docs",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extensions": [
      {
        "uri": "https://github.com/google-agentic-commerce/a2a-x402/blob/main/spec/v0.2",
        "description": "Payment required per skill invocation: $0.05 in USDC on Base (eip155:8453), x402 v2, Standalone Flow. Required for skill execution (A2A-Extensions header); a message without a skill is answered for free.",
        "required": true
      }
    ]
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "id.national",
      "name": "National identity- and company-number validation, 23 countries",
      "description": "Validate a national identity, tax or company registration number against its country's official checksum rule. Covers 23 countries including NL BSN, ES NIF/NIE/CIF, IT codice fiscale, FR SIREN/SIRET, DE Steuer-ID, BE/PL/CZ national numbers, SE/NO/DK/FI personal numbers, BR CPF/CNPJ, AU ABN/TFN, UK NINo, IE PPS, US NPI/EIN. Structure and check digit only \u2014 no registry lookup, no personal data stored. Price: $0.05 per call. Also GET /v1/id/national.",
      "tags": [
        "deterministic",
        "no-api-key",
        "id",
        "identifiers",
        "validation",
        "checksum"
      ],
      "examples": [
        "{\"skill\":\"id.national\",\"params\":{\"country\":\"NL\",\"kind\":\"bsn\",\"value\":\"111222333\"}}",
        "https://api.duoleads.com/v1/id/national?country=NL&kind=bsn&value=111222333"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "id.gs1",
      "name": "GS1 identifier validation: GTIN-8/12/13/14, GLN, SSCC",
      "description": "Validate and convert GS1 identifiers: GTIN-8, GTIN-12 (UPC-A), GTIN-13 (EAN-13), GTIN-14, GLN and SSCC. Returns the check-digit verdict, the computed correct check digit, the GS1 company-prefix boundary where it is derivable, and conversion to GTIN-14. Also computes a missing check digit from a partial code. Structure only, no product database. Price: $0.05 per call. Also GET /v1/id/gs1.",
      "tags": [
        "deterministic",
        "no-api-key",
        "id",
        "identifiers",
        "validation",
        "barcodes"
      ],
      "examples": [
        "{\"skill\":\"id.gs1\",\"params\":{\"value\":\"5901234123457\"}}",
        "https://api.duoleads.com/v1/id/gs1?value=5901234123457"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "id.security",
      "name": "ISIN, CUSIP, SEDOL and FIGI check-digit validation",
      "description": "Validate the check digit of a financial security identifier: ISIN (ISO 6166), CUSIP, SEDOL and FIGI. Returns the verdict, the computed correct check character, and for an ISIN the issuing country prefix and the embedded NSIN. Also builds an ISIN from a country code plus a 9-character NSIN. Format and checksum only, no security master lookup. Price: $0.05 per call. Also GET /v1/id/security.",
      "tags": [
        "deterministic",
        "no-api-key",
        "id",
        "identifiers",
        "validation",
        "finance"
      ],
      "examples": [
        "{\"skill\":\"id.security\",\"params\":{\"value\":\"US0378331005\"}}",
        "https://api.duoleads.com/v1/id/security?value=US0378331005"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "time.zone",
      "name": "Instant to wall-clock time in an IANA zone, with offset and DST state",
      "description": "Convert an instant to wall-clock time in a named IANA time zone, or a wall-clock time in a zone back to an instant. Returns the local date and time, the UTC offset in \u00b1HH:MM and seconds, the zone abbreviation, whether DST is in effect, the ISO week date, and the day of year. Handles the ambiguous and skipped local times at DST boundaries explicitly rather than guessing. Price: $0.05 per call. Also GET /v1/time/zone.",
      "tags": [
        "no-api-key",
        "time",
        "timezones"
      ],
      "examples": [
        "{\"skill\":\"time.zone\",\"params\":{\"zone\":\"Europe/Amsterdam\",\"instant\":\"2026-10-25T00:30:00Z\"}}",
        "https://api.duoleads.com/v1/time/zone?zone=Europe%2FAmsterdam&instant=2026-10-25T00%3A30%3A00Z"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "time.dst",
      "name": "Next daylight-saving transitions for an IANA time zone",
      "description": "List the daylight-saving transitions for an IANA time zone over a date range: the exact instant of each shift, the offset before and after, and whether local clocks jump forward or back. Returns the current offset and DST state, and the next transition from a given instant. Zones without DST return an empty transition list rather than an error. Price: $0.05 per call. Also GET /v1/time/dst.",
      "tags": [
        "no-api-key",
        "time",
        "timezones",
        "dst"
      ],
      "examples": [
        "{\"skill\":\"time.dst\",\"params\":{\"zone\":\"Europe/Amsterdam\",\"from\":\"2026-01-01\",\"years\":\"1\"}}",
        "https://api.duoleads.com/v1/time/dst?zone=Europe%2FAmsterdam&from=2026-01-01&years=1"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "time.business-days",
      "name": "Business-day arithmetic with a caller-supplied weekend mask and holiday list",
      "description": "Business-day arithmetic with a caller-supplied calendar: add or subtract N working days from a date, or count the working days between two dates. The weekend is specified as a weekday mask so Friday-Saturday and Sunday-only weeks work, and holidays are passed in as an explicit date list, so the answer never depends on a holiday table that can go stale. Returns the result date, the day count, and the first 1,000 skipped dates with the reason each was skipped. Price: $0.05 per call. Also GET /v1/time/business-days.",
      "tags": [
        "deterministic",
        "no-api-key",
        "time",
        "calendar",
        "business-days"
      ],
      "examples": [
        "{\"skill\":\"time.business-days\",\"params\":{\"from\":\"2026-12-24\",\"days\":\"5\",\"holidays\":\"2026-12-25,2026-12-26,2027-01-01\"}}",
        "https://api.duoleads.com/v1/time/business-days?from=2026-12-24&days=5&holidays=2026-12-25%2C2026-12-26%2C2027-01-01"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "time.rrule",
      "name": "RFC 5545 RRULE expansion into concrete occurrence timestamps",
      "description": "Expand an RFC 5545 recurrence rule into concrete occurrence timestamps. Accepts an RRULE string with DTSTART, an IANA time zone, and optional EXDATE and RDATE lists, and returns up to 200 occurrences as both local wall-clock times and UTC instants. Supports FREQ, INTERVAL, COUNT, UNTIL, BYDAY, BYMONTHDAY, BYMONTH, BYSETPOS and WKST. Occurrences moved by a DST gap carry gap: true. Rules needing over 50,000 candidate evaluations are rejected. Price: $0.05 per call. Also GET /v1/time/rrule.",
      "tags": [
        "deterministic",
        "no-api-key",
        "time",
        "calendar",
        "recurrence"
      ],
      "examples": [
        "{\"skill\":\"time.rrule\",\"params\":{\"rrule\":\"FREQ=MONTHLY;BYDAY=-1FR;COUNT=3\",\"dtstart\":\"2026-01-01T09:00:00\",\"zone\":\"Europe/Amsterdam\"}}",
        "https://api.duoleads.com/v1/time/rrule?rrule=FREQ%3DMONTHLY%3BBYDAY%3D-1FR%3BCOUNT%3D3&dtstart=2026-01-01T09%3A00%3A00&zone=Europe%2FAmsterdam"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "time.calendar",
      "name": "Gregorian conversion to Hijri, Hebrew and Japanese-era dates, plus Easter",
      "description": "Convert a Gregorian date to other calendar systems and back: Islamic (both the tabular civil calendar and the Umm al-Qura variant), Hebrew, Japanese imperial era, Republic of China, Buddhist and Persian. Also computes Easter Sunday for a year in both the Gregorian and Julian reckonings. Uses the calendar support built into the runtime, with the algorithm named in every response. Price: $0.05 per call. Also GET /v1/time/calendar.",
      "tags": [
        "deterministic",
        "no-api-key",
        "time",
        "calendar"
      ],
      "examples": [
        "{\"skill\":\"time.calendar\",\"params\":{\"date\":\"2026-09-28\",\"to\":\"islamic,hebrew,japanese\"}}",
        "https://api.duoleads.com/v1/time/calendar?date=2026-09-28&to=islamic%2Chebrew%2Cjapanese"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "text.slug",
      "name": "Unicode-aware URL slug with transliteration",
      "description": "Turn arbitrary text into a URL-safe slug. Decomposes accents, transliterates German umlauts, Scandinavian and Turkish letters, and the ligatures that lose meaning under plain NFD, lowercases, collapses separators, and truncates on a word boundary. Options for separator character, maximum length and case preservation. Returns the slug plus what was removed. Price: $0.05 per call. Also GET /v1/text/slug.",
      "tags": [
        "deterministic",
        "no-api-key",
        "text",
        "unicode",
        "slug"
      ],
      "examples": [
        "{\"skill\":\"text.slug\",\"params\":{\"text\":\"Cr\u00e8me Br\u00fbl\u00e9e \u2014 \u00c6r\u00f8sk\u00f8bing, Stra\u00dfe 42\",\"lang\":\"de\"}}",
        "https://api.duoleads.com/v1/text/slug?text=Cr%C3%A8me+Br%C3%BBl%C3%A9e+%E2%80%94+%C3%86r%C3%B8sk%C3%B8bing%2C+Stra%C3%9Fe+42&lang=de"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "text.transliterate",
      "name": "Cyrillic-to-Latin transliteration (ISO 9, BGN/PCGN)",
      "description": "Transliterate Cyrillic text into Latin using a named standard: ISO 9:1995 (one-to-one, with diacritics) or the BGN/PCGN Russian system. Returns the transliteration, the detected source script, the standard actually applied, the fraction of non-ASCII characters that were mapped, and any characters passed through untouched. Other scripts are not supported yet and are rejected with UNSUPPORTED_VALUE. Price: $0.05 per call. Also GET /v1/text/transliterate.",
      "tags": [
        "deterministic",
        "no-api-key",
        "text",
        "unicode",
        "transliteration"
      ],
      "examples": [
        "{\"skill\":\"text.transliterate\",\"params\":{\"text\":\"\u0429\u0443\u043a\u0430\",\"standard\":\"iso-9\"}}",
        "https://api.duoleads.com/v1/text/transliterate?text=%D0%A9%D1%83%D0%BA%D0%B0&standard=iso-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "text.unicode",
      "name": "Unicode normalisation, script detection and confusable/homoglyph analysis",
      "description": "Analyse a string at the Unicode level: apply NFC, NFD, NFKC or NFKD normalisation, report which normalisation forms it is already in, list the scripts present, and flag confusable and homoglyph characters \u2014 Cyrillic \u0430 in a Latin word, zero-width joiners, bidirectional overrides, invisible characters. Returns per-character detail for anything suspicious, with code points, names and the ASCII character each one imitates. Price: $0.05 per call. Also GET /v1/text/unicode.",
      "tags": [
        "deterministic",
        "no-api-key",
        "text",
        "unicode",
        "security"
      ],
      "examples": [
        "{\"skill\":\"text.unicode\",\"params\":{\"text\":\"caf\u00e9\",\"form\":\"nfd\"}}",
        "https://api.duoleads.com/v1/text/unicode?text=caf%C3%A9&form=nfd"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "text.similarity",
      "name": "String distance and phonetic keys: Levenshtein, Jaro-Winkler, Soundex, Metaphone",
      "description": "Compare two strings and return every standard similarity measure in one call: Levenshtein and Damerau-Levenshtein edit distance, normalised similarity, Jaro and Jaro-Winkler, longest common subsequence, Dice coefficient on character bigrams, and the Soundex, Metaphone and NYSIIS phonetic keys of each string. Optional case folding, accent folding and whitespace normalisation before comparison. Price: $0.05 per call. Also GET /v1/text/similarity.",
      "tags": [
        "deterministic",
        "no-api-key",
        "text",
        "similarity",
        "phonetic"
      ],
      "examples": [
        "{\"skill\":\"text.similarity\",\"params\":{\"a\":\"kitten\",\"b\":\"sitting\"}}",
        "https://api.duoleads.com/v1/text/similarity?a=kitten&b=sitting"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "code.url",
      "name": "URL parse, canonicalise, and registrable-domain (eTLD+1) extraction",
      "description": "Parse and canonicalise a URL, and extract its registrable domain using the Public Suffix List \u2014 the part an agent needs to decide whether two URLs belong to the same owner. Returns scheme, host, port, path, decoded query parameters and fragment, the public suffix, the registrable domain (eTLD+1), the subdomain, whether the suffix is an ICANN or a private entry, plus a canonical form with default port, dot-segments and percent-encoding normalised. unicode_host uses WHATWG/UTS 46 (non-strict). Price: $0.05 per call. Also GET /v1/code/url.",
      "tags": [
        "deterministic",
        "no-api-key",
        "code",
        "url",
        "domains",
        "psl"
      ],
      "examples": [
        "{\"skill\":\"code.url\",\"params\":{\"url\":\"https://a.b.example.co.uk:443/x/../y?q=1&q=2#f\"}}",
        "https://api.duoleads.com/v1/code/url?url=https%3A%2F%2Fa.b.example.co.uk%3A443%2Fx%2F..%2Fy%3Fq%3D1%26q%3D2%23f"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "code.idn",
      "name": "IDNA2008 / punycode conversion and domain-label validation",
      "description": "Convert internationalised domain names between Unicode and ASCII punycode in either direction, label by label, and validate each label against IDNA2008: length, leading and trailing hyphens, the hyphen-hyphen rule at positions 3 and 4, disallowed code points and bidirectional rules. Returns both forms, the per-label breakdown and the first rule violated. Strict mode is IDNA2008 (UTS 46 non-transitional); it may reject names /v1/code/url displays. Price: $0.05 per call. Also GET /v1/code/idn.",
      "tags": [
        "deterministic",
        "no-api-key",
        "code",
        "domains",
        "idna",
        "punycode"
      ],
      "examples": [
        "{\"skill\":\"code.idn\",\"params\":{\"domain\":\"b\u00fccher.example\"}}",
        "https://api.duoleads.com/v1/code/idn?domain=b%C3%BCcher.example"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "code.semver",
      "name": "Semantic-version parse, compare, and range satisfaction",
      "description": "Parse a semantic version into major, minor, patch, prerelease and build parts; compare two versions by precedence including prerelease ordering; or test whether a version satisfies a range expression using caret, tilde, hyphen, x-ranges and comparator sets. Returns the parsed structure, the comparison result and the reason a range did not match. Price: $0.05 per call. Also GET /v1/code/semver.",
      "tags": [
        "deterministic",
        "no-api-key",
        "code",
        "versions",
        "semver"
      ],
      "examples": [
        "{\"skill\":\"code.semver\",\"params\":{\"version\":\"1.2.3-rc.1+build.5\"}}",
        "https://api.duoleads.com/v1/code/semver?version=1.2.3-rc.1%2Bbuild.5"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "code.hash",
      "name": "SHA-2, SHA-3, BLAKE2 and HMAC digests of supplied text or base64 bytes",
      "description": "Compute a cryptographic digest of supplied data: SHA-256, SHA-384, SHA-512, SHA-1, SHA3-256, SHA3-512, Keccak-256, BLAKE2b-256 and BLAKE2b-512, plus HMAC with any of them. Input is UTF-8 text, base64 or hex bytes; output is hex, base64, base64url or base32. Returns the digest, the byte length of the input, and the exact algorithm identifier used. Price: $0.05 per call. Also GET /v1/code/hash.",
      "tags": [
        "deterministic",
        "no-api-key",
        "code",
        "crypto",
        "hashing"
      ],
      "examples": [
        "{\"skill\":\"code.hash\",\"params\":{\"algo\":\"sha256\",\"data\":\"hello\"}}",
        "https://api.duoleads.com/v1/code/hash?algo=sha256&data=hello"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "code.jwt",
      "name": "JWT structural decode: header, claims, expiry state \u2014 no signature verification",
      "description": "Decode a JSON Web Token without verifying it: returns the header, the claims, the signature length and algorithm, and a computed view of the time claims \u2014 whether exp has passed, whether nbf is in the future, and the remaining lifetime in seconds against a supplied or current instant. Reports structural problems such as a missing part, invalid base64url or an alg of none. It does not and cannot verify the signature; do not use it to decide trust. Price: $0.05 per call. Also GET /v1/code/jwt.",
      "tags": [
        "no-api-key",
        "code",
        "jwt",
        "security"
      ],
      "examples": [
        "{\"skill\":\"code.jwt\",\"params\":{\"token\":\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\",\"at\":\"2026-09-28T00:00:00Z\"}}",
        "https://api.duoleads.com/v1/code/jwt?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c&at=2026-09-28T00%3A00%3A00Z"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "geo.geohash",
      "name": "Geohash encode and decode with neighbour cells",
      "description": "Encode a WGS-84 latitude and longitude to a geohash at a chosen precision, or decode a geohash back to its bounding box, centre point and error bounds in metres. Encoding also returns the eight neighbouring cells, which is what a caller needs to do proximity search over a geohash-indexed store without a spatial database. Price: $0.05 per call. Also GET /v1/geo/geohash.",
      "tags": [
        "deterministic",
        "no-api-key",
        "geo",
        "geohash"
      ],
      "examples": [
        "{\"skill\":\"geo.geohash\",\"params\":{\"op\":\"encode\",\"lat\":\"52.3728\",\"lon\":\"4.8936\",\"precision\":\"9\"}}",
        "https://api.duoleads.com/v1/geo/geohash?op=encode&lat=52.3728&lon=4.8936&precision=9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "geo.pluscode",
      "name": "Open Location Code (plus code) encode and decode",
      "description": "Encode coordinates as an Open Location Code (plus code) at a chosen length, or decode a full code back to its bounding box and centre. Also shortens a full code against a reference coordinate and recovers a shortened code given a reference, which is how plus codes are normally exchanged in text. Returns code length, precision in metres and validity. Price: $0.05 per call. Also GET /v1/geo/pluscode.",
      "tags": [
        "deterministic",
        "no-api-key",
        "geo",
        "pluscode"
      ],
      "examples": [
        "{\"skill\":\"geo.pluscode\",\"params\":{\"lat\":\"52.3728\",\"lon\":\"4.8936\"}}",
        "https://api.duoleads.com/v1/geo/pluscode?lat=52.3728&lon=4.8936"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "geo.polygon",
      "name": "Point-in-polygon, bounding box, centroid and area on supplied GeoJSON",
      "description": "Geometric predicates on a GeoJSON geometry supplied in the request: point-in-polygon with correct hole handling, bounding box, centroid, signed area in square metres, perimeter length, and ring winding order. Accepts Polygon and MultiPolygon, and a GeoJSON Feature wrapping either. Area and length are geodesic on the WGS-84 ellipsoid, correct at any latitude; containment is planar in lon/lat. Price: $0.05 per call. Also GET /v1/geo/polygon.",
      "tags": [
        "deterministic",
        "no-api-key",
        "geo",
        "geojson",
        "geometry"
      ],
      "examples": [
        "{\"skill\":\"geo.polygon\",\"params\":{\"geometry\":\"{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[4.85,52.35],[4.95,52.35],[4.95,52.40],[4.85,52.40],[4.85,52.35]]]}\",\"lat\":\"52.3728\",\"lon\":\"4.8936\"}}",
        "https://api.duoleads.com/v1/geo/polygon?geometry=%7B%22type%22%3A%22Polygon%22%2C%22coordinates%22%3A%5B%5B%5B4.85%2C52.35%5D%2C%5B4.95%2C52.35%5D%2C%5B4.95%2C52.40%5D%2C%5B4.85%2C52.40%5D%2C%5B4.85%2C52.35%5D%5D%5D%7D&lat=52.3728&lon=4.8936"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "geo.distance",
      "name": "Geodesic distance, initial bearing and destination point on WGS-84",
      "description": "Distance and direction between WGS-84 coordinates: geodesic distance by Vincenty with a haversine fallback, initial and final bearing, the midpoint, and the destination point reached from a start point on a given bearing and distance. Also computes the cumulative length of a supplied coordinate path. Results in metres, kilometres, nautical miles and miles. Price: $0.05 per call. Also GET /v1/geo/distance.",
      "tags": [
        "deterministic",
        "no-api-key",
        "geo",
        "geodesy",
        "distance"
      ],
      "examples": [
        "{\"skill\":\"geo.distance\",\"params\":{\"lat1\":\"52.3728\",\"lon1\":\"4.8936\",\"lat2\":\"40.7128\",\"lon2\":\"-74.0060\"}}",
        "https://api.duoleads.com/v1/geo/distance?lat1=52.3728&lon1=4.8936&lat2=40.7128&lon2=-74.0060"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "chain.address",
      "name": "Blockchain address format detection and checksum validation",
      "description": "Identify which blockchain an address belongs to and validate its encoding: EVM EIP-55 checksum, Bitcoin base58check and bech32/bech32m with witness version, Solana base58 and on-curve check, Cosmos bech32 with its HRP, Tron, XRP, Litecoin, Dogecoin, Cardano, Polkadot SS58 and Algorand. Returns the detected chains with a confidence note, the checksummed form for EVM addresses, and the exact reason an address failed. Price: $0.05 per call. Also GET /v1/chain/address.",
      "tags": [
        "deterministic",
        "no-api-key",
        "chain",
        "blockchain",
        "addresses",
        "validation"
      ],
      "examples": [
        "{\"skill\":\"chain.address\",\"params\":{\"address\":\"0xd8da6bf26964af9d7eed9e03e53415d37aa96045\"}}",
        "https://api.duoleads.com/v1/chain/address?address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "chain.selector",
      "name": "Keccak-256 hash, 4-byte function selector and 32-byte event topic from a Solidity signature",
      "description": "Compute the Keccak-256 hash of a Solidity function or event signature and derive the 4-byte function selector and the 32-byte event topic. Normalises the signature first \u2014 strips parameter names, expands uint to uint256 and the other aliases, flattens tuples \u2014 so a signature copied from source code produces the same selector as the canonical form. Also hashes arbitrary text or hex bytes with Keccak-256. Price: $0.05 per call. Also GET /v1/chain/selector.",
      "tags": [
        "deterministic",
        "no-api-key",
        "chain",
        "blockchain",
        "solidity",
        "keccak"
      ],
      "examples": [
        "{\"skill\":\"chain.selector\",\"params\":{\"signature\":\"transfer(address,uint256)\"}}",
        "https://api.duoleads.com/v1/chain/selector?signature=transfer%28address%2Cuint256%29"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "ref.nuts",
      "name": "NUTS statistical region code lookup for the EU",
      "description": "Look up a NUTS statistical region of the European Union: resolve a NUTS code to its name, country and level, walk up to its parents or down to its children, or search regions by name. Covers all four levels (country, major region, basic region, small region) for the 27 member states and 12 further reporting countries, from the NUTS 2024 classification. Returns the Latin-script and local-language names plus the urbanisation, coastal and mountain typologies. Price: $0.05 per call. Also GET /v1/ref/nuts.",
      "tags": [
        "deterministic",
        "no-api-key",
        "ref",
        "eu",
        "statistics",
        "regions"
      ],
      "examples": [
        "{\"skill\":\"ref.nuts\",\"params\":{\"code\":\"NL32B\",\"include\":\"parents,typology\"}}",
        "https://api.duoleads.com/v1/ref/nuts?code=NL32B&include=parents%2Ctypology"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "ref.airport",
      "name": "Airport lookup by IATA or ICAO code with coordinates and elevation",
      "description": "Look up an airport by IATA or ICAO code and get its name, city, country, ISO 3166-2 region code, WGS-84 coordinates and elevation, or find the nearest airports to a coordinate within a radius. Covers every airport worldwide that holds a three-letter IATA code and scheduled service. Returns the code type that matched and the distance in kilometres for proximity results. Time zones are not included. Price: $0.05 per call. Also GET /v1/ref/airport.",
      "tags": [
        "deterministic",
        "no-api-key",
        "ref",
        "travel",
        "airports"
      ],
      "examples": [
        "{\"skill\":\"ref.airport\",\"params\":{\"code\":\"AMS\"}}",
        "https://api.duoleads.com/v1/ref/airport?code=AMS"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "ref.currency",
      "name": "Currency record (ISO 4217 codes, CLDR minor units and cash rounding)",
      "description": "Look up a currency by ISO 4217 code: its alphabetic and numeric codes, English name, minor-unit exponent, the smallest cash denomination where it differs from the minor unit, and the territories that use it. Returns the correct rounding increment for cash amounts, which is what a caller needs to render or settle a price. This route returns currency facts only and never an exchange rate. Price: $0.05 per call. Also GET /v1/ref/currency.",
      "tags": [
        "deterministic",
        "no-api-key",
        "ref",
        "finance",
        "currency",
        "iso-4217"
      ],
      "examples": [
        "{\"skill\":\"ref.currency\",\"params\":{\"code\":\"EUR\",\"include\":\"territories\"}}",
        "https://api.duoleads.com/v1/ref/currency?code=EUR&include=territories"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "ref.country",
      "name": "ISO 3166-1 country record: codes, currency, TLD, UN M49 region",
      "description": "Look up a country or territory by ISO 3166-1 alpha-2, alpha-3 or numeric code, or by name, and get the other codes, the English name, the UN M49 region and sub-region, the currencies in use, and the country-code top-level domain. Names are matched case- and accent-insensitively. Country level only: ISO 3166-2 subdivisions are not included. Price: $0.05 per call. Also GET /v1/ref/country.",
      "tags": [
        "deterministic",
        "no-api-key",
        "ref",
        "countries",
        "iso-3166"
      ],
      "examples": [
        "{\"skill\":\"ref.country\",\"params\":{\"code\":\"NL\"}}",
        "https://api.duoleads.com/v1/ref/country?code=NL"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "num.radix",
      "name": "Integer conversion between arbitrary numeric bases 2\u201336",
      "description": "Convert an integer between any two numeric bases from 2 to 36, with arbitrary precision so values far beyond 2^53 are exact. Accepts an optional sign and common prefixes (0x, 0b, 0o), validates every digit against the source base, and returns the value in the target base, in decimal, and as its bit length and digit count. Price: $0.05 per call. Also GET /v1/num/radix.",
      "tags": [
        "deterministic",
        "no-api-key",
        "num",
        "numbers",
        "conversion"
      ],
      "examples": [
        "{\"skill\":\"num.radix\",\"params\":{\"value\":\"0xdeadbeef\",\"to\":\"10\"}}",
        "https://api.duoleads.com/v1/num/radix?value=0xdeadbeef&to=10"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "num.words",
      "name": "Number spelled out in words, 12 locales, with ordinal and currency forms",
      "description": "Spell a number out in words in English, Dutch, German, French, Spanish, Italian, Portuguese, Polish, Russian, Turkish, Swedish or Japanese, in cardinal, currency or year form, and ordinal form in English, Dutch, German and French. Currency form applies the correct grammatical agreement and the right minor-unit name and count for the supplied ISO 4217 code. Handles negatives and values up to 10^15. Price: $0.05 per call. Also GET /v1/num/words.",
      "tags": [
        "deterministic",
        "no-api-key",
        "num",
        "numbers",
        "localisation"
      ],
      "examples": [
        "{\"skill\":\"num.words\",\"params\":{\"value\":\"1234\",\"lang\":\"nl\"}}",
        "https://api.duoleads.com/v1/num/words?value=1234&lang=nl"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "num.stats",
      "name": "Descriptive statistics and percentiles for a supplied numeric array",
      "description": "Descriptive statistics for a supplied numeric array in one call: count, sum, mean, median, mode, variance and standard deviation with variance and standard deviation honouring ddof (default 1, the sample form; 0 gives the population form) and always-population *_population fields, min, max, range, the quartiles and interquartile range, skewness, kurtosis, and any requested percentiles. Percentiles use a named interpolation method so the result is reproducible rather than implementation-defined. Price: $0.05 per call. Also GET /v1/num/stats.",
      "tags": [
        "deterministic",
        "no-api-key",
        "num",
        "numbers",
        "statistics"
      ],
      "examples": [
        "{\"skill\":\"num.stats\",\"params\":{\"values\":\"1,2,3,4,5\"}}",
        "https://api.duoleads.com/v1/num/stats?values=1%2C2%2C3%2C4%2C5"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "num.allocate",
      "name": "Split a money amount into shares with no rounding loss",
      "description": "Split a money amount into shares without losing or inventing a cent. Divide evenly into N parts, or by a list of ratios, and the remainder is distributed one minor unit at a time by a named, deterministic rule \u2014 largest-remainder, first-wins or last-wins \u2014 so the parts always sum exactly to the original. Uses Unicode CLDR minor-unit digits, so zero- and three-decimal currencies work (CLDR differs from ISO 4217 for a few, e.g. IDR, HUF: 0). Price: $0.05 per call. Also GET /v1/num/allocate.",
      "tags": [
        "deterministic",
        "no-api-key",
        "num",
        "finance",
        "money",
        "allocation"
      ],
      "examples": [
        "{\"skill\":\"num.allocate\",\"params\":{\"amount\":\"100.00\",\"currency\":\"EUR\",\"parts\":\"3\"}}",
        "https://api.duoleads.com/v1/num/allocate?amount=100.00&currency=EUR&parts=3"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}