# TaskMint Number Normalize

> TaskMint Number Normalize is a paid API for AI agents from taskmint-sign-proof-node22-production.up.railway.app, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-10).

Normalizes locale-specific number strings (including currency amounts) into canonical decimal values using the specified locale's formatting conventions.

## Facts

- Endpoint: POST https://taskmint-sign-proof-node22-production.up.railway.app/api/agent/number_normalize?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/taskmint-number-normalize-72e7c710
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_0-SiAme8zFUWly9qxtDqs

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability taskmint-number-normalize-72e7c710 -d '<json body>'
```

Example prompt: Normalize these German-formatted numbers — '1.234,50', '9.876,00', and '0,99' — using the de-DE locale, and treat the currency as EUR.

## When to prefer this

Choose this endpoint when you need to batch-parse locale-formatted number strings (with locale-specific thousand separators and decimal points) into canonical decimal representations, especially across multiple international locales. It is purpose-built for the exact parsing ambiguity that arises from locale conventions (e.g. European comma-as-decimal vs US period-as-decimal). Prefer it over generic parsing libraries when you need deterministic, auditable results with a precise token-based result retrieval model and support for up to 12 fractional digits.

## Known failure modes

- Invalid locale enum value returns validation error
- Number string that cannot be parsed in the given locale returns a row with a null value and a reason explaining the failure
- request_token missing or malformed (not 64-char hex) causes rejection
- Exceeding 100 values in the array returns a schema validation error
- Payment failure or HTTP 402 means payment must be retried with identical body
- HTTP 202 or transport uncertainty requires recovery with the same body and token, not a new purchase
- Results expire after 24 hours from job submission

## How this service works

Exact native USDC on Base; externally owned wallets only. Generate a private 32-byte random request_token for each new job, persist the entire body, and reuse it for challenge/retry and recovery. The token grants result access. Do not log or share it. HTTP 202 or an uncertain transport failure requires recovery with the identical body without a signature, never a new purchase. Results expire after 24 hours. Ten bounded deterministic services. Local execution is free; hosted jobs require customer-authorized payment only when billable.

## Output

Returns a JSON object with state ('paid'), and a result containing an array of rows — each with an index, normalized decimal value string, original source string, and a reason if unresolvable — plus summary metadata including locale, currency, version, service name, precision details, and any flags.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "payload": {
   "type": "object",
   "required": [
    "values",
    "locale"
   ],
   "properties": {
    "locale": {
     "enum": [
      "en-US",
      "en-GB",
      "en-AU",
      "en-IN",
      "de-DE",
      "fr-FR",
      "es-ES",
      "pt-BR",
      "ja-JP",
      "zh-CN",
      "ar-EG",
      "th-TH"
     ]
    },
    "values": {
     "type": "array",
     "items": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1
     },
     "maxItems": 100,
     "minItems": 1
    },
    "currency": {
     "type": "string",
     "pattern": "^[A-Z]{3}$"
    }
   },
   "additionalProperties": false
  },
  "request_token": {
   "type": "string",
   "pattern": "^[a-f0-9]{64}$",
   "description": "Generate 32 cryptographically random bytes as lowercase hex for each new job. Keep this private result credential and reuse the identical body for retries. Replace the synthetic example token."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "state": "paid",
  "result": {
   "rows": [
    {
     "index": 0,
     "value": "1234.5",
     "reason": null,
     "source": "1.234,50"
    },
    {
     "index": 1,
     "value": "9876",
     "reason": null,
     "source": "9.876,00"
    },
    {
     "index": 2,
     "value": "0.99",
     "reason": null,
     "source": "0,99"
    }
   ],
   "flags": [],
   "scope": "Supplied data only; no external lookup or verification.",
   "locale": "de-DE",
   "status": "resolved",
   "service": "number_normalize",
   "summary": "3 of 3 values resolved",
   "version": "0.5.0",
   "currency": "EUR",
   "precision": "Exact decimal strings, up to 24 integer and 12 fractional digits. Currency is caller-supplied metadata; no FX conversion or minor-unit rounding."
  },
  "service": "number_normalize"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/taskmint-number-normalize-72e7c710/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from taskmint-sign-proof-node22-production.up.railway.app](https://www.zero.xyz/host/taskmint-sign-proof-node22-production.up.railway.app/llms.txt)
